猎隼丶止戈

nn200433
关注
29078 号成员,2018-09-07 13:48:13 加入
632
个人主页 浏览
46h37m
在线时长
  • 求群晖 Docker 部署思源,PC 端 Drive 无法同步解决方案

    2022-02-03 22:28

    把用户去掉就行了,看我主业的其他帖子

  • 去除服务器版思源笔记默认用户镜像

    2022-01-16 18:21

    自行编译方法

    1. 拉取官方镜像
    docker pull b3log/siyuan
    1. 运行
    docker run -itd --name=siyuan b3log/siyuan:latest
    1. 拷贝文件
    docker cp siyuan:/opt/siyuan /home/siyuan
    1. 打包新镜像
    FROM alpine:latest MAINTAINER 1649991905@qq.com # 定义环境变量 #ENV USER_UID=1000 #ENV USER_GID=1000 ENV TZ=Asia/Shanghai ENV LANG=zh_CN.UTF-8 ENV LC_ALL=zh_CN.UTF-8 ENV LANGUAGE=zh_CN.UTF-8 # 拷贝编译文件 COPY siyuan /opt/siyuan/ WORKDIR /opt/siyuan/ # 设置时区为上海 RUN sed -i "s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g" /etc/apk/repositories && \ apk add -U --no-cache ca-certificates tzdata && \ cp /usr/share/zoneinfo/${TZ} /etc/localtime && \ echo ${TZ} > /etc/timezone && \ apk del tzdata # 添加用户 #RUN addgroup --gid ${USER_GID} siyuan && \ # adduser --uid ${USER_UID} --ingroup siyuan --disabled-password siyuan && \ # chown -R siyuan:siyuan /opt/siyuan/ #USER siyuan EXPOSE 6806 ENTRYPOINT ["/opt/siyuan/kernel"]
  • 求群晖 Docker 部署思源,PC 端 Drive 无法同步解决方案

    2022-01-14 22:47

    那能说下 Dockerfile 里的 Linux 系统时基于哪个 image 镜像么?
    比如 FROME centos:latest

  • 求群晖 Docker 部署思源,PC 端 Drive 无法同步解决方案

    2022-01-14 19:06

    可以给个 Dockerfile 么?

  • 代码块选择和剪藏插件

    2022-01-13 10:10

    第二个问题,那肯定不是 bug 。本身设计就是剪藏整个网页。不像 Web Clipper 一样可以个性化选择剪藏块的

  • 求群晖 Docker 部署思源,PC 端 Drive 无法同步解决方案

    2022-01-11 13:48

    三、参考 Gitea Dockerfile

    环境变量

    您可以通过环境变量配置 Gitea 的一些设置:

    ################################### #Build stage FROM golang:1.17-alpine3.13 AS build-env ARG GOPROXY ENV GOPROXY ${GOPROXY:-direct} ARG GITEA_VERSION ARG TAGS="sqlite sqlite_unlock_notify" ENV TAGS "bindata timetzdata $TAGS" ARG CGO_EXTRA_CFLAGS #Build deps RUN apk --no-cache add build-base git nodejs npm #Setup repo COPY . ${GOPATH}/src/code.gitea.io/gitea WORKDIR ${GOPATH}/src/code.gitea.io/gitea #Checkout version if set RUN if [ -n "${GITEA_VERSION}" ]; then git checkout "${GITEA_VERSION}"; fi \ && make clean-all build # Begin env-to-ini build RUN go build contrib/environment-to-ini/environment-to-ini.go FROM alpine:3.13 LABEL maintainer="maintainers@gitea.io" EXPOSE 22 3000 RUN apk --no-cache add \ bash \ ca-certificates \ curl \ gettext \ git \ linux-pam \ openssh \ s6 \ sqlite \ su-exec \ gnupg RUN addgroup \ -S -g 1000 \ git && \ adduser \ -S -H -D \ -h /data/git \ -s /bin/bash \ -u 1000 \ -G git \ git && \ echo "git:*" | chpasswd -e ENV USER git ENV GITEA_CUSTOM /data/gitea VOLUME ["/data"] ENTRYPOINT ["/usr/bin/entrypoint"] CMD ["/bin/s6-svscan", "/etc/s6"] COPY docker/root / COPY --from=build-env /go/src/code.gitea.io/gitea/gitea /app/gitea/gitea COPY --from=build-env /go/src/code.gitea.io/gitea/environment-to-ini /usr/local/bin/environment-to-ini RUN ln -s /app/gitea/gitea /usr/local/bin/gitea

    entrypoint:

    #!/bin/sh if [ "${USER}" != "git" ]; then # rename user sed -i -e "s/^git\:/${USER}\:/g" /etc/passwd fi if [ -z "${USER_GID}" ]; then USER_GID="`id -g ${USER}`" fi if [ -z "${USER_UID}" ]; then USER_UID="`id -u ${USER}`" fi ## Change GID for USER? if [ -n "${USER_GID}" ] && [ "${USER_GID}" != "`id -g ${USER}`" ]; then sed -i -e "s/^${USER}:\([^:]*\):[0-9]*/${USER}:\1:${USER_GID}/" /etc/group sed -i -e "s/^${USER}:\([^:]*\):\([0-9]*\):[0-9]*/${USER}:\1:\2:${USER_GID}/" /etc/passwd fi ## Change UID for USER? if [ -n "${USER_UID}" ] && [ "${USER_UID}" != "`id -u ${USER}`" ]; then sed -i -e "s/^${USER}:\([^:]*\):[0-9]*:\([0-9]*\)/${USER}:\1:${USER_UID}:\2/" /etc/passwd fi for FOLDER in /data/gitea/conf /data/gitea/log /data/git /data/ssh; do mkdir -p ${FOLDER} done if [ $# -gt 0 ]; then exec "$@" else exec /bin/s6-svscan /etc/s6 fi
  • 求群晖 Docker 部署思源,PC 端 Drive 无法同步解决方案

    2022-01-11 13:48

    二、# 如何优雅的在 Docker 容器中指定用户及组权限的三种方式

    如果平常有在玩 Docker 的用户肯定知道透过 docker command 启动的容器预设是使用 root 用户来当作预设使用者及群组的。这样就会遇到一个问题,当主机环境你拥有 root 权限时就没有此问题。如果你没有 root 权限,又有需求在 Docker 容器內挂上 Volume,会发现产生出来的文件皆会是 root 权限,这时候在主机完全是无法写入的。本篇文章将教大家三种方式来设定容器使用者权限,以解决上述遇到的问题。

    使用 docker 指令时指定使用者

    以进入一个 Ubuntu 容器为例,通过以下指令:

    $ docker run -ti ubuntu /bin/bash

    这时候我们可以通过 -u 方式将使用者 uid 及群组 gid 传入容器内。

    $ mkdir tmp $ docker run -ti -v $PWD/tmp:/test \ -u uid:gid ubuntu /bin/bash

    如何找到目前使用者 uid 及 gid 呢,可以通过下面的方式。

    $ id -u $ id -g

    为了更加方便,上述指令可以改成:

    $ docker run -ti -v $PWD/tmp:/test \ -u $(id -u):$(id -g) ubuntu /bin/bash

    使用 Dockerfile 指定使用者

    除了在 Docker 命令行指定外,你也可以在 dockerfile 内直接指定使用者。

    # Dockerfile USER 1000:1000

    我个人不是很推荐这方式,除非是在 container 内独立建立使用者,并且指定权限。

    通过 docker-compose 指定权限

    通过 docker-compose 可以一次启动多个服务。用 user 可以指定使用者权限来写入特定的 volume。

    services: agent: image: xxxxxxxx restart: always networks: - proxy logging: options: max-size: "100k" max-file: "3" volumes: - ${STORAGE_PATH}:/data user: ${CURRENT_UID}

    接着可以通过 .env 来指定变量的值。

    STORAGE_PATH=/home/deploy/xxxx CURRENT_UID=1001:1001

    总结

    以上场景通常会发生在有挂载主机 Volume 进入容器内,但是你又没有 root 用户权限时。如果此时不指定使用者权限,这样生成出来的文件都会是 root 权限,一般用户无法写入,只能读取。

  • 求群晖 Docker 部署思源,PC 端 Drive 无法同步解决方案

    2022-01-11 13:48

    一、修改容器用户 UID 和 GID

    docker 容器内的用户也算是千奇百怪了……一般情况下是没有什么影响的,但是有时我们想通过 volume 把内容挂在出来的时候,就会出现权限的问题了。如果都改成 777 明显是不合适的。如 LinuxServer 提供的容器一般都会提供通过环境变量的方式来修改 UIDGID。当然如果你千年不变的用 root 那么当我什么也没说了……

    通过给 TiddlyWiki 制作 docker 镜像的时候,实现了一个动态修改 UIDGID 的方案。通过启动 entrypoint.sh 来修改容器内用户的信息达到和容器外用户一致的 UIDGID

    dockerfile

    FROM node:lts-alpine3.13 MAINTAINER liuwentao@gmail.com RUN \ echo "https://mirrors.cloud.tencent.com/alpine/v3.11/main/" > /etc/apk/repositories && \ echo "https://mirrors.cloud.tencent.com/alpine/v3.13/community/" >> /etc/apk/repositories && \ apk add shadow && \ useradd -u 666 -U -d /config -s /bin/false abc && \ usermod -G users abc && \ npm install -g tiddlywiki@5.1.23 --registry=https://registry.npm.taobao.org EXPOSE 8080 VOLUME [ "/app" ] WORKDIR /app COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh CMD [ "/entrypoint.sh" ]

    #!/usr/bin/env sh PUID=${PUID:-911} PGID=${PGID:-911} groupmod -o -g "$PGID" abc usermod -o -u "$PUID" abc groupmod -o -g "$PGID" abc usermod -o -u "$PUID" abc chown abc:abc /app if [ ! -f "/app/tiddlywiki.info" ]; then tiddlywiki /app --init server fi tiddlywiki /app --listen host=0.0.0.0

    核心是通过 groupmodusermod 修改用户 abcUIDGID。这两个软件在 alpine 中对应的软件包是 shadow

  • 求群晖 Docker 部署思源,PC 端 Drive 无法同步解决方案

    2022-01-11 08:27

    @88250 希望放开 Docker 用户权限,或则增加环境变量,可让用户自定义归属用户权限组

  • 纪录片推荐

    2020-12-31 11:10

    😋 虽然主流媒体平台我几乎都有会员,但是还是上 b 站看纪录片

    我在故宫 600 年(我在故宫修文物姊妹篇)可以期待下

    ---- 以下有些 b 站曾经有过 😭

    守护解放西系列
    人生一串系列
    贡嘎
    第三极
    香巴拉深处
    航拍中国系列
    本草中国系列
    本草中华系列
    布衣中国
    丝路百工
    万物滋养
    大唐帝陵
    风云战国之列国
    ......

  • 希望思源笔记增加分屏预览功能

    2020-12-25 11:55

    外部写完导入,图片/附件 还要重新弄,费不费事?

    剪藏功能更费事

    复制到思源笔记 -> 导出markdown文件 -> 导入第三方markdown编辑器 -> 删掉块id -> 整理编辑 -> 导入思源笔记
  • 希望思源笔记增加分屏预览功能

    2020-12-25 11:50

    这有啥好惊的,这需求不是很正常么?
    用这笔记软件的人不说多,至少 60% 是码农吧。更习惯源码操作也没毛病啊。
    论坛里发帖编辑模式还能让用户选择,为啥笔记就不行呢,你说对不对?

    image.png

  • 关于思源笔记的小建议

    2020-12-24 13:46

    静态站点还是可以有的,这样可以单篇分享出去给别人在线查看(目前笔记导出 html 存在的缺陷就是所有的 script 引用都是本地地址,别人打开压根就没法看)😭 。关于静态站,个人觉得 @88250 可以借鉴下蚂蚁笔记的优点
    image.png
    image.png

  • 在公司使用家里树莓派的 ftp 服务

    2020-12-24 08:19

    云服务器小水管当然慢了,大水管又买不起。所以动态域名代理是个好东西,让运营商给你开公网 ip,买个域名吧trollface

  • 自建内网可用 JRebel 激活服务器

    2020-12-23 09:37

    补充 docker 方式

    docker 方便,完事trollface

    前提

    服务器已安装 docker

    部署

    1. 下载文件: jrebel.zip 提取码:kwe8
    2. 上传到服务器
    3. dockerFile 编译
    docker build -t jrebel-ls .
    1. 运行
    docker run -itd --name jrebel-ls --restart always -e PORT=9001 -p 9001:9001 jrebel-ls