NAS 与服务器面板
在群晖、1Panel、宝塔、CasaOS、Unraid 等带图形界面的系统上,用同一份 compose 部署 ImgYoung,以及数据目录权限的处理。
这些系统都能运行 Docker 镜像,ImgYoung 在上面和在普通主机上是同一个程序,只是创建容器的入口换成了图形界面。下面先给出一份通用的 compose,再按系统说明入口和注意事项。
通用的 compose
# 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 版本里套件的名称略有差别):
- 在「项目」里点「创建」,来源选在编辑器里创建 compose 文件,把上面的内容粘贴进去。
- 安装 Container Manager 时会建立共享文件夹
docker,数据目录建在它下面,比如/volume1/docker/imgyoung,对应上面volumes:里冒号左边的路径。 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 标签不会自动更新。要升级,先在后台「设置 → 备份与导出」点「立即备份」,再在系统的界面里拉取新镜像并重建容器,具体按钮因系统而异。数据在数据目录里,不受重建影响。回滚与注意事项见升级。