群晖docker部署Mattermost,对接openclaw

群晖(DSM)Docker 部署 Mattermost 总结

一、环境说明

  • NAS:Synology 群晖(DSM6 / DSM7 均适用)

  • 存储卷:/volume2

  • 容器管理:Docker / Container Manager

  • 部署方式:docker-compose

  • Mattermost 版本:10.11.8

  • 数据库:PostgreSQL

  • 访问方式:HTTP + 8065 端口(未使用 nginx)


二、目录结构规划(宿主机)

在群晖上使用 Docker,目录规划非常重要。本次使用如下结构:

复制代码
/volume2/mattermost/
└── docker-main/
    ├── docker-compose.yml
    ├── .env
    └── volumes/
        ├── app/
        │   └── mattermost/
        │       ├── config/
        │       ├── data/
        │       ├── logs/
        │       ├── plugins/
        │       ├── client/plugins/
        │       └── bleve-indexes/
        └── db/
            └── var/lib/postgresql/data/

volumes/ 下的目录 都是宿主机真实路径,用于数据持久化。


三、准备 docker-compose 与环境变量

1️⃣ .env 关键配置(示例)

复制代码
把 .env 里改成 Team 版:

MATTERMOST_IMAGE=mattermost-team-edition
MATTERMOST_IMAGE_TAG=10.11.8

DOMAIN=NAS_IP

POSTGRES_USER=mmuser
POSTGRES_PASSWORD=StrongPassword
POSTGRES_DB=mattermost

APP_PORT=8065

MATTERMOST_DATA_PATH=./volumes/app/mattermost/data
MATTERMOST_CONFIG_PATH=./volumes/app/mattermost/config
MATTERMOST_LOGS_PATH=./volumes/app/mattermost/logs
MATTERMOST_PLUGINS_PATH=./volumes/app/mattermost/plugins
MATTERMOST_CLIENT_PLUGINS_PATH=./volumes/app/mattermost/client/plugins
MATTERMOST_BLEVE_INDEXES_PATH=./volumes/app/mattermost/bleve-indexes

MM_SQLSETTINGS_DRIVERNAME=postgres
MM_SQLSETTINGS_DATASOURCE=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}?sslmode=disable

MM_SERVICESETTINGS_SITEURL=http://${DOMAIN}:8065

2️⃣ 端口映射(非常关键)

docker-compose.yml 中为 Mattermost 添加端口映射:

复制代码
services:
  mattermost:
    ports:
      - "8065:8065"

否则容器虽然启动成功,但 外部无法访问


四、创建宿主机目录并处理权限

在群晖 SSH 中执行(位于 docker-main 目录):

复制代码
mkdir -p ./volumes/db/var/lib/postgresql/data
mkdir -p ./volumes/app/mattermost/{config,data,logs,plugins,client/plugins,bleve-indexes}

chmod -R 777 ./volumes

群晖没有传统 root 权限,使用 chmod 777 是最省事、成功率最高的方式

后续稳定运行后可以再收紧权限。


五、启动容器(群晖注意事项)

✅ 正确方式

复制代码
docker-compose up -d

或(DSM7):

复制代码
docker compose up -d

⚠️ 注意:

  • 群晖环境中 不要强行用 sudo + docker compose

  • admin 用户默认就可以启动容器


六、验证部署状态

1️⃣ 查看容器状态

复制代码
sudo docker ps

关键标志:

  • Mattermost:Up (healthy)

  • Postgres:Up


2️⃣ 浏览器访问

复制代码
http://NAS_IP:8065

出现 Mattermost 初始化页面,说明部署成功 ✅


七、踩过的坑 & 经验总结(重点)

❌ 1. 以为 ./volumes/... 是容器路径

❗ 实际是 宿主机路径

Docker 只是把它映射进容器。


❌ 2. Postgres 18 权限 / 初始化问题

  • postgres:18-alpine 在群晖 + bind mount 下容易出现权限问题

  • 推荐稳定版本:postgres:16-alpine


❌ 3. 容器启动了却访问不到

原因:

  • 没有 ports: 8065:8065

❌ 4. 群晖 admin ≠ Linux root

  • 没有 apt

  • 不能 su

  • 权限问题要用 File Station 或 chmod


八、当前部署状态总结

  • ✅ Mattermost 服务正常

  • ✅ PostgreSQL 正常

  • ✅ 数据已持久化到 /volume2

  • ✅ 可通过浏览器访问

  • ⏭️ 后续可扩展:

    • nginx / HTTPS

    • 备份 volumes

    • 升级 Mattermost

    • 接入 LDAP / 邮件


如果你愿意,我可以下一步帮你整理:

  • HTTPS + 443(群晖反代 / nginx)

  • Mattermost 升级流程

  • 完整备份 & 迁移方案

  • docker-compose 精简/生产版

相关推荐
SkyWalking中文站1 天前
认识 Horizon UI · 6/17:Trace 探索器
运维·监控·自动化运维
程序员老赵1 天前
Docker 部署 Redmine:老牌开源项目管理部署实测记录
docker·开源·团队管理
程序员老赵1 天前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
火车叼位1 天前
写给初级开发者:SSL、SSH、HTTPS 与证书体系全解析
运维
小猿姐2 天前
唯品会大规模数据库云原生实践:基于 KubeBlocks 管理数千实例的统一运维之路
运维·elasticsearch·云原生
SkyWalking中文站2 天前
认识 Horizon UI · 5/17:3D 基础设施地图
运维·监控·自动化运维
SkyWalking中文站3 天前
认识 Horizon UI · 1/17:SkyWalking 新一代可观测性控制台
运维·前端·监控
雪梨酱QAQ3 天前
Kubeneters HA Cluster部署
运维
lichenyang4534 天前
Docker 学习笔记(五):Docker Compose,用一个 YAML 启动前端、后端和 MongoDB
docker
lichenyang4534 天前
Docker 学习笔记(四):Dockerfile,把项目打成自己的镜像
docker·容器