猎隼丶止戈

nn200433
关注
29078 号成员,2018-09-07 13:48:13 加入
584
个人主页 浏览
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