群晖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 精简/生产版

相关推荐
小p7 小时前
docker学习: 1. docker基本使用
docker
蝎子莱莱爱打怪13 小时前
Centos7中一键安装K8s集群以及Rancher安装记录
运维·后端·kubernetes
崔小汤呀15 小时前
Docker部署Nacos
docker·容器
缓解AI焦虑15 小时前
Docker + K8s 部署大模型推理服务:资源划分与多实例调度
docker·容器
1candobetter1 天前
Docker Compose Build 与 Up 的区别:什么时候必须重建镜像
docker·容器·eureka
DianSan_ERP1 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
シ風箏1 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
呉師傅1 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
不是二师兄的八戒1 天前
Linux服务器挂载OSS存储的完整实践指南
linux·运维·服务器
zhangfeng11331 天前
趋动云 如何ssh登录 服务区 项目server
运维·人工智能·ssh