インストールしたのはこれの通り。
「Mattermost を Docker でローカルサーバにインストール」
https://qiita.com/nanbuwks/items/b20e2df483f6806909ab
バックアップ
バックアップディレクトリを作り、$BACKUP
をそのディレクトリに定義します。
$ export BACKUP=~/backupmattermost20251010
$ mkdir -p $BACKUP
設定のバックアップ
docker-compose.yml
をバックアップ
$ cp docker-compose.yml $BACKUP
docker volume ファイルシステムからのバックアップ
また、volumes 指定はどこかな? docker-compose.yml
中を調べてみたら
postgres:
image: postgres:${POSTGRES_IMAGE_TAG}
restart: ${RESTART_POLICY}
security_opt:
- no-new-privileges:true
pids_limit: 100
read_only: true
tmpfs:
- /tmp
- /var/run/postgresql
volumes:
- ${POSTGRES_DATA_PATH}:/var/lib/postgresql/data
.
.
.
mattermost:
depends_on:
- postgres
image: mattermost/${MATTERMOST_IMAGE}:${MATTERMOST_IMAGE_TAG}
restart: ${RESTART_POLICY}
security_opt:
- no-new-privileges:true
pids_limit: 200
read_only: ${MATTERMOST_CONTAINER_READONLY}
tmpfs:
- /tmp
volumes:
- ${MATTERMOST_CONFIG_PATH}:/mattermost/config:rw
- ${MATTERMOST_DATA_PATH}:/mattermost/data:rw
- ${MATTERMOST_LOGS_PATH}:/mattermost/logs:rw
- ${MATTERMOST_PLUGINS_PATH}:/mattermost/plugins:rw
- ${MATTERMOST_CLIENT_PLUGINS_PATH}:/mattermost/client/plugins:rw
- ${MATTERMOST_BLEVE_INDEXES_PATH}:/mattermost/bleve-indexes:rw
うーん ?
.env
を調べてみたら、こちらが正解かな。
$ grep PATH .env
POSTGRES_DATA_PATH=./volumes/db/var/lib/postgresql/data
NGINX_CONFIG_PATH=./nginx/conf.d
CERT_PATH=./volumes/web/cert/cert.pem
KEY_PATH=./volumes/web/cert/key-no-password.pem
#GITLAB_PKI_CHAIN_PATH=<path_to_your_gitlab_pki>/pki_chain.pem
#CERT_PATH=./certs/etc/letsencrypt/live/${DOMAIN}/fullchain.pem
#KEY_PATH=./certs/etc/letsencrypt/live/${DOMAIN}/privkey.pem
MATTERMOST_CONFIG_PATH=./volumes/app/mattermost/config
MATTERMOST_DATA_PATH=./volumes/app/mattermost/data
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
docker を止めて
$ docker stop docker_mattermost_1
$ docker stop docker_postgres_1
から以下でバックアップ
$ sudo cp -a ./volumes/db/var/lib/postgresql/data $BACKUP/postgresql
$ sudo cp -a ./volumes/app/mattermost $BACKUP/mattermost
postgresql については以下でバックアップするのだけれど、ファイルとしても念の為。
postgresql のバックアップ
$ docker start docker_postgres_1
.env にユーザ名とデータベース名が書いてあったため、それを使い以下でバックアップ
$ docker exec docker_postgres_1 pg_dump -U mmuser -F p mattermost > $BACKUP/db_dump_file.sql
$ docker exec docker_postgres_1 pg_dump -U mmuser -Fc mattermost > $BACKUP/db_dump_file.backup
念のためにスクリプト形式、アーカイブ形式両方で。
復元
「Mattermost を Docker でローカルサーバにインストール」
https://qiita.com/nanbuwks/items/b20e2df483f6806909ab
のように進め、以下の画面が出てくるところまで進めます。
mattermost 側のコンテナを止めておきます。
$ docker stop docker_mattermost_1
$BACKUP
を定義
$ export BACKUP=~/Downloads/backupmattermost202509
## ファイルを復元
$ sudo cp -a $BACKUP/mattermost/* ./volumes/app/mattermost/
$ sudo chown -R 2000:2000 ./volumes/app/mattermost
## postgresql を復元
psql にログインして操作
$ docker exec -it docker_postgres_1 psql -U mmuser mattermost
psql (13.21)
Type "help" for help.
mattermost=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
------------+--------+----------+------------+------------+-------------------
mattermost | mmuser | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | mmuser | UTF8 | en_US.utf8 | en_US.utf8 |
template0 | mmuser | UTF8 | en_US.utf8 | en_US.utf8 | =c/mmuser +
| | | | | mmuser=CTc/mmuser
template1 | mmuser | UTF8 | en_US.utf8 | en_US.utf8 | =c/mmuser +
| | | | | mmuser=CTc/mmuser
(4 rows)
mattermost データベースの中身を初期化し、docker から出ます。
mattermost=# \c mattermost
You are now connected to database "mattermost" as user "mmuser".
mattermost=# drop schema public cascade;
DROP SCHEMA
mattermost=# create schema public;
CREATE SCHEMA
mattermost=# \q
postgresql のデータを復元します。
$ cat $BACKUP/db_dump_file.sql | docker exec -i docker_postgres_1 psql -U mmuser mattermost
mattermost コンテナを起動します。
$ docker start docker_mattermost_1
Web画面からログオンすれば、復元した mattermost が使用できます。
# ログオンできない
原因は不明ですが、復元した mattermost の Web画面からログインできないことがありました。
あれれーと思って、以下を試してみました。
docker に入って
$ docker exec -it docker_mattermost_1 /bin/bash
mmctl コマンドでパスワードを変更しようとしてみたら・・・
$ mmctl user change-password
Error: accepts 1 arg(s), received 0
うーん、それではユーザリストを表示しようとしたら、ログインしろと出てきます。
$ mmctl user list
Error: failed to create client: cannot read user credentials, maybe you need to use login first: stat /mattermost/.config/m
以下のようにしてログインしてみました。
$ mmctl auth login http://localhost:8065
Connection name: test
Username: nanbuwks
Password:
credentials for "test": "nanbuwks@http://localhost:8065" stored
credentials はなんでもいいみたいです。
これができたら、Web画面からログインできるようになりました。