# NAS 与服务器面板 (/zh/docs/install/nas-panel)

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

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

## 通用的 compose [#通用的-compose]

```yaml title="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` 的属主。

<Callout type="warn" title="单独备份 master.key">
  渠道凭证和加密渠道里的数据都要用主密钥解密，主密钥在数据目录的 `master.key` 里，不包含在元数据库快照里。启动后把它复制到别处保存，详见 [Docker 镜像](./docker.mdx)的「数据卷」一节。
</Callout>

## 群晖 Container Manager [#群晖-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]

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

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

## 宝塔面板 [#宝塔面板]

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

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

## CasaOS 与 ZimaOS [#casaos-与-zimaos]

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

## Unraid [#unraid]

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

## 其他系统 [#其他系统]

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

## 放在反向代理后面 [#放在反向代理后面]

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

## 升级 [#升级]

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