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

相关推荐
爱写代码的森5 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
Elastic 中国社区官方博客6 小时前
将你的 Grafana Kubernetes 仪表板迁移到 Elastic Observability:相同的 PromQL,30 倍更快的查询
大数据·人工智能·elasticsearch·搜索引擎·容器·kubernetes·grafana
中微极客6 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能
AOwhisky7 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
重生的黑客7 小时前
Linux 进程优先级、切换与调度:从孤儿进程到 O(1) 调度模型
linux·运维·服务器·进程优先级·nice
Urbano7 小时前
夹克与商务单西口袋工序自动化技改研究报告
运维·自动化
风曦Kisaki8 小时前
#企业级docker私有仓库构建:harbor仓库与阿里云镜像仓库
阿里云·docker·容器
期待着20138 小时前
docker 安装 ,在centos7.9
运维·docker·容器
踏月的造梦星球8 小时前
DM8 DSC 单机双实例部署
运维·开发语言·数据库
MXsoft6189 小时前
平台化是智能运维发展的必然趋势吗?
运维