NAS 用户进阶版
本文档面向已完成 NAS 快速上手 或需要自定义存储、资源、备份与排错的用户,补充数据卷、资源限制、反向代理与常见问题。
一、适用型号与前置
1.1 支持的 NAS 与 Docker 入口
| 品牌 | 要求 | Docker 入口 |
|---|---|---|
| 群晖 Synology | DSM 7.0+,支持 Btrfs 的机型 | 套件中心 → Container Manager(原 Docker) |
| 威联通 QNAP | QTS 4.3.4+ 或 QuTS | Container Station |
| 绿联、极空间等 | 系统内提供 Docker / 容器功能 | 按品牌说明进入容器管理 |
1.2 前置条件
- 已安装并启用 Docker / Container Manager / Container Station。
- 若需在 NAS 上执行
docker compose等命令,可开启 SSH(群晖:控制面板 → 终端机和 SNMP → 启动 SSH);仅用 Web 创建项目则不必。 - 端口 3880、9000、9001 未被占用;防火墙需放行或仅内网访问。
1.3 资源建议
- 内存:至少 2GB,推荐 4GB;lifeframe 建议不少于 1GB。
- 存储:系统与镜像约 2–5GB;数据库与 MinIO 按使用量预留。
二、获取编排与 .env
从项目仓库获取 docker-compose.yml。
.env 可不创建:镜像与各项均有默认。若需覆盖(如 POSTGRES_PASSWORD、MINIO_ROOT_USER、MINIO_PUBLIC_URL 等),在同目录创建 .env 并填写。部署后内网访问 **http://你的NAS的IP:3880**。
三、在 NAS 上创建并启动
3.1 群晖(Container Manager)
- Container Manager → 项目 → 新增
- 项目名称:如
lifeframe - 路径:选择
docker-compose.yml所在目录(若有.env可同目录,非必须),如/volume1/docker/lifeframe - 若提供 配置文件 / 环境文件,指定
docker-compose.yml或.env - 勾选 启动时启用此项目,创建并启动
若项目不支持从 .env 加载,可不填变量,使用 compose 默认;需覆盖时在 编辑 中为对应容器添加环境变量。
3.2 威联通(Container Station)
- Container Station → 创建 → 创建应用程序(或 Compose)
- 粘贴或选择
docker-compose.yml - 若支持
.env可选用;不必填NEXT_PUBLIC_APP_URL等,镜像已写死在docker-compose.yml - 创建并启动
3.3 绿联、极空间等
- 支持 Compose / docker-compose:选择
docker-compose.yml所在目录并启动。 - 仅 单容器:需分别创建 postgres、minio、lifeframe,并手动配置网络、数据卷与环境变量;建议用支持 Compose 的型号或 SSH 执行
docker compose up -d。
3.4 通过 SSH 使用命令行
在存放 docker-compose.yml 的目录执行:
cd /path/to/lifeframe # 如 /volume1/docker/lifeframe
docker compose up -d迁移与 MinIO 建桶已自动完成,无需额外命令。
四、数据卷与存储位置
默认使用 Docker 命名卷(postgres_data、minio_data、lifeframe_data、lifeframe_uploads),数据由 Docker 管理。
若要将数据放到 指定共享文件夹(便于备份、扩容),可修改 docker-compose.yml 中对应服务的 volumes,例如:
# 示例:群晖,需先在控制面板创建共享文件夹
volumes:
- /volume1/docker/lifeframe/postgres_data:/var/lib/postgresql/data
- /volume1/docker/lifeframe/minio_data:/data
- /volume1/docker/lifeframe/lifeframe_data:/app/data
- /volume1/docker/lifeframe/lifeframe_uploads:/app/uploads路径按 NAS 实际共享目录填写,并确保容器有读写权限。
五、首次部署:迁移与 MinIO 建桶(已自动完成)
- 数据库迁移:lifeframe 启动时自动执行
prisma migrate deploy。 - MinIO 桶:
init-minio-bucket会在 minio 就绪后自动创建lifeframe桶。
无需任何终端或手动操作。创建并启动项目后,访问 http://你的NAS的IP:3880 即可。
5.1 初始化套餐(可选)
用于应用内配额与首用户;自托管无需配置付费。多数 NAS 用户可跳过。
若确需执行,需在能访问数据库且安装 Node/pnpm 的环境运行 pnpm run init:plans,详见 Docker 自托管部署指南。
六、访问与端口
| 服务 | 地址 |
|---|---|
| LifeFrame 应用 | http://你的NAS的IP:3880 |
| MinIO 控制台 | http://你的NAS的IP:9001 |
应用端口 3880 以降低与 3000、8080 等的冲突。
若经 Nginx / 域名:在 控制面板 → 登录门户 → 高级 → 反向代理服务器 将 80/443 转到 NAS:3880;HTTPS 需证书(Let's Encrypt 或 DSM 证书)。
七、资源限制(可选)
在 docker-compose.yml 中为 lifeframe 增加,例如:
lifeframe:
deploy:
resources:
limits:
memory: 1536M群晖、威联通等若在 UI 提供「内存限制」,也可在界面设置。
八、备份与更新
- 备份:定期备份
postgres_data、minio_data所在卷或共享文件夹,以及.env、docker-compose.yml。 - 更新:在项目目录执行
docker compose pull后docker compose up -d。lifeframe 每次启动会自动执行数据库迁移。
九、常见问题
9.1 容器反复重启
- 查看
lifeframe、postgres日志(Container Manager / Container Station 的「日志」,或 SSH:docker compose logs lifeframe、docker compose logs postgres)。 - 常见原因:镜像拉取失败、端口 3880/9000/9001 被占用或防火墙拦截。
9.2 无法访问 3880 / 9000 / 9001
- 检查 NAS 防火墙、路由器端口转发;群晖在 控制面板 → 网络 → 防火墙 中放行 3880、9000、9001。
9.3 照片上传或列表异常
- MinIO 桶已自动创建;检查
MINIO_PUBLIC_URL:仅内网时可填http://NAS的IP:9000,经 Nginx 代理时填实际访问根地址。
9.4 群晖「项目」中看不到 .env
- 可不填任何变量,使用 compose 默认;仅在需覆盖(如自定义
POSTGRES_PASSWORD)时在 编辑 中添加。
相关链接
- NAS 快速上手 — 最简部署步骤
- Docker 自托管部署指南 — 完整编排、Nginx、HTTPS、环境变量
- 快速开始
- 常见问题