安装

NAS 与服务器面板

在群晖、1Panel、宝塔、CasaOS、Unraid 等带图形界面的系统上,用同一份 compose 部署 ImgYoung,以及数据目录权限的处理。

这些系统都能运行 Docker 镜像,ImgYoung 在上面和在普通主机上是同一个程序,只是创建容器的入口换成了图形界面。下面先给出一份通用的 compose,再按系统说明入口和注意事项。

通用的 compose

deploy/compose.nas.yaml
# ImgYoung 的 Docker Compose 示例:数据放在宿主机目录,适合群晖、1Panel、宝塔、CasaOS 等带图形界面的系统。
# 用法:改下面标了「改」的两处,粘贴进系统的 Compose 编辑器后启动,浏览器打开 http://<设备地址>:8721/,
# 用 admin 和容器日志里打印的初始密码登录(首次登录强制改密)。
services:
  imgyoung:
    image: haose/imgyoung:latest # 生产环境建议固定主次版本(如 0.1)或具体版本
    # 后台「从快照恢复」会让服务优雅退出,靠重启策略重新拉起后换入快照;正常退出也要拉起
    restart: unless-stopped
    # 优雅停机最多约 8 秒,15 秒留有余量
    stop_grace_period: 15s
    # 改:以拥有数据目录的用户运行,取值为该用户的 uid:gid。镜像默认以 uid 65532 运行,
    # 数据目录的属主不是它时进程无法创建数据库;进程不依赖特定 uid,只要求对 /data 可读写
    user: "1000:1000"
    ports:
      - "8721:8721"
    volumes:
      # 改:换成你的数据目录。数据库、本地存储渠道与自动生成的 master.key 都在这里;
      # 丢了 master.key,渠道凭证与加密数据不可恢复
      - /path/to/imgyoung:/data
    # environment:
    #   # 管理员 admin 的初始密码,至少 8 个字符;不设置时首次启动随机生成并打印在日志里
    #   IMGYOUNG_ADMIN_PASSWORD: 换成你的初始密码
    #   # 前面有反向代理时(含系统自带的网站或反向代理功能),ImgYoung 看到的对端是 Docker 网络里的地址,
    #   # 填该网络的网段(docker network inspect 查看);否则登录限速与 /metrics 放行会把所有请求都当成来自代理本身
    #   IMGYOUNG_TRUSTED_PROXIES: 172.16.0.0/12

必须改的是标了「改」的两处:数据目录的路径,以及 user: 的 uid 与 gid,含义见下一节。注释掉的环境变量按需启用。

启动后,浏览器打开 http://<设备地址>:8721/,用 admin 和初始密码登录,首次登录会要求立即修改密码。初始密码打印在首次启动的日志里,在系统的容器日志页面里找「初始密码」。

数据目录的权限

镜像默认以 uid 65532 运行。数据目录的属主不是它时,进程无法在目录里创建数据库,启动即失败。

NAS 上的共享文件夹通常属于你的登录用户,不方便改属主。ImgYoung 不依赖特定的 uid,只要求对 /data 有读写权限,所以有两种做法:

  • 加 user:(推荐):填拥有数据目录的用户的 uid 与 gid,进程就以该用户运行,数据目录里的文件也归该用户。通过 SSH 登录设备,执行 id <用户名> 可以查到这两个数字。
  • 改属主:把数据目录的属主改成 65532:65532,不加 user:。

只能填写具名卷、不能指定宿主机目录的系统,不用处理权限:具名卷第一次挂载时会沿用镜像里 /data 的属主。

单独备份 master.key

渠道凭证和加密渠道里的数据都要用主密钥解密,主密钥在数据目录的 master.key 里,不包含在元数据库快照里。启动后把它复制到别处保存,详见 Docker 镜像的「数据卷」一节。

群晖 Container Manager

DSM 7.2 及以上的 Container Manager(不同 DSM 版本里套件的名称略有差别):

  1. 在「项目」里点「创建」,来源选在编辑器里创建 compose 文件,把上面的内容粘贴进去。
  2. 安装 Container Manager 时会建立共享文件夹 docker,数据目录建在它下面,比如 /volume1/docker/imgyoung,对应上面 volumes: 里冒号左边的路径。
  3. user: 的 uid 与 gid 用 id 命令查你的登录用户。

1Panel

在「容器」的「编排」里创建。1Panel 提供三种方式:用网页编辑器编辑、选择服务器上已有的 docker-compose.yml、使用编排模板。选编辑,粘贴上面的内容即可。

用 1Panel 的网站功能做反向代理时,见下文「放在反向代理后面」。

宝塔面板

在 Docker 模块的「容器编排」里新建项目,内容用上面的 compose。

用宝塔的网站功能做反向代理时,见下文「放在反向代理后面」。

CasaOS 与 ZimaOS

在仪表盘应用区旁点「+」,选自定义安装,用导入功能粘贴上面的 compose,CasaOS 会把它转成自己的应用格式。安装前确认主机端口没有冲突:8721 已被占用时,安装可能不报错而直接失败,把 ports: 里冒号左边的数字改成空闲端口。

Unraid

Unraid 自带的方式是「Add Container」逐项填写:镜像填 haose/imgyoung,容器端口 8721,再添加一条路径映射,容器内路径为 /data,宿主机路径指向你的阵列共享。也可以在社区应用里安装 Compose Manager Plus 这类插件,直接使用上面的 compose。无论哪种方式,数据目录都要让进程可写,见上文「数据目录的权限」。

其他系统

只要系统能运行 Docker 镜像,并允许你指定镜像、端口、数据目录映射这几项,就可以部署:镜像 haose/imgyoung,端口 8721,数据目录映射到容器内的 /data。有 Compose 入口的直接用上面的文件。

放在反向代理后面

系统自带的网站或反向代理功能,通常运行在宿主机上,经发布的端口转发进来,ImgYoung 看到的对端是 Docker 网桥的网关地址,不是回环地址。要把代理所在的网段设为可信,否则登录限速会把所有访客当成同一个来源,返回的图片链接也会以 http:// 开头。做法见 Docker 镜像,代理本身的配置见反向代理。

升级

latest 标签不会自动更新。要升级,先在后台「设置 → 备份与导出」点「立即备份」,再在系统的界面里拉取新镜像并重建容器,具体按钮因系统而异。数据在数据目录里,不受重建影响。回滚与注意事项见升级。

本页目录