0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker 版 Mattermost をバックアップ・リストアする

Last updated at Posted at 2025-10-10

インストールしたのはこれの通り。
「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
のように進め、以下の画面が出てくるところまで進めます。

image.png

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画面からログインできるようになりました。


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?