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

相关推荐
博客-小覃2 小时前
内网穿透/端口映射之二层穿透访问”FTP共享文件“示例操作教程
运维·服务器·网络
珠海西格2 小时前
光伏电站全景感知体系:数据采集与设备状态监测技术
大数据·运维·服务器·数据库·人工智能
周航宇JoeZhou3 小时前
JB2-7-HTML
java·前端·容器·html·h5·标签·表单
大黄说说3 小时前
深入理解 Linux 权限机制:文件、用户与访问控制全解析
linux·运维·服务器
2301_772204283 小时前
Linux 驱动开发:杂项设备驱动与自动设备号管理
linux·运维·驱动开发
黄昏晓x3 小时前
Linux----缓冲区
linux·运维·服务器
2501_924878733 小时前
AdAgent 能力成熟度模型:从 L1 自动化到 L5 自主增长引擎
运维·自动化
寄存器漫游者3 小时前
Linux 软件编程 命令、内核与 Shell
linux·运维·服务器
Kaede64 小时前
服务器硬件防火墙和软件防火墙的区别
运维·服务器