门店一台小主机,用 Docker + Portainer 搭出“本地NAS私有云盘”
想要门店资料不丢、员工分权限共享、还能从外网安全访问,用 Docker + Portainer 很顺手。典型配置:一台小主机(4核CPU、8GB内存、1块2TB硬盘),跑云盘+备份+反向代理。员工用浏览器或手机App就能传文件,比U盘和微信文件靠谱多了。
部署组合:Nextcloud(云盘)+ S3/本地备份 + 反向代理HTTPS
Portainer 里一键上 Stack(核心容器)
在 Portainer 新建 Stack,建议用这套结构:nextcloud + postgres + redis + cron。数据盘用宿主机目录挂载,比如 /data/nextcloud,数据库单独放 /data/db。Redis 打开能明显加速,门店 10 人同时用也不卡。
- Nextcloud:文件、分享链接、版本回滚、手机自动上传
- Postgres:比 SQLite 稳定,文件量上来不容易出问题
- Redis:预览、锁文件更顺
- Cron:自动跑后台任务,避免“上传后不生成预览”
权限分级共享怎么做(门店常见用法)
在 Nextcloud 里建组:店长、收银、库房、设计。共享文件夹时按组授权,库房只给“只读”,设计给“可编辑”。外发资料用“分享链接 + 密码 + 7天过期”,减少误转发风险。
外网安全访问:HTTPS + 访问控制更关键
推荐用 Nginx Proxy Manager(NPM) 做反向代理,在 Portainer 里再加一个 Stack。域名解析到门店公网IP;如果没有固定公网IP,就用动态DNS。NPM 里申请 Let’s Encrypt 证书,勾选强制 HTTPS。
- 路由器只转发 80/443 到 NPM,不要直接暴露 Nextcloud 端口
- Nextcloud 管理里把 trusted_domains 和反代头配置好
- 强烈建议开 双因素登录(2FA),店员离职立刻停用账号
自动备份与常见故障排查(门店最容易踩坑的点)
备份别只备“文件目录”,要把 数据库 + 配置 + 数据一起备。实操:每天凌晨 02:00 导出 Postgres(pg_dump),再把 /data/nextcloud 打包增量备份到一块外接硬盘或另一台NAS。门店案例:每天新增 3GB 进货照片,保留 30 天版本,硬盘至少预留 500GB 缓冲。
- 打不开或无限重定向:反代没加 X-Forwarded-Proto/Host,或 Nextcloud trusted_domains 缺域名
- 上传大文件失败:NPM/NGINX 默认限制,调大 client_max_body_size;Nextcloud 同步调 php.ini 的 upload_max_filesize
- 性能慢:没上 Redis、硬盘是SMR叠瓦、或数据库和数据放同一慢盘
- 证书申请失败:80端口没通、域名没解析到公网、运营商屏蔽入站
建议你今天就做三件事:用 Portainer 把 Nextcloud + Postgres + Redis 跑起来;用 NPM 配好 HTTPS 并只开放 80/443;设置“店长/员工”两级权限+开启2FA,再把备份任务设成每天自动跑并每周抽查一次能否还原。