succi0303 blog

This is my personal blog. All posts are my own.

ProxmoxのLXCでMattermost環境を構築、既存のMattermostからデータを移行する

Mattermost環境を新設して既存環境からデータを移行した。次回の環境移行に生かすために手順を記録しておく。

Mattermost環境の構築

Proxmox VE Helper-ScriptsのMattermostスクリプトを使ってLXCコンテナでMattermost環境を構築した。

community-scripts.github.io

Proxmox VEホストのシェルで以下のコマンドを実行する。Advanced Settingsでディスクサイズとメモリサイズを指定。

bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/mattermost.sh)"

とりあえず実行したところ、W: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/noble-security/InRelease Temporary failure resolving 'archive.ubuntu.com'のエラーが発生した。

http://archive.ubuntu.comの名前解決が失敗しているようなので、Advanced SettingsのDNSサーバにCloudflareのパブリックDNS 1.1.1.1を指定して再実行し、スクリプト実行が成功した。

続けてTailscaleスクリプトを実行し、MattermostのLXCコンテナにTailscaleをインストールする。

bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/add-tailscale-lxc.sh)"

Mattermostコンテナを再起動、コンテナのコンソールでTailscale upを実行し、 Tailscaleネットワークに参加する。

tailscale serveでMattermostのサービスをTailscaleネットワークに公開する。

Tailscale serve --bg --https=443 localhost:8065

/opt/mattermost/config/config.jsonSiteURLをTailscale Serveで公開したURLに更新、データ移行作業の際にmmctlからローカルモード接続するために/opt/mattermost/config/config.jsonEnableLocalModetrueに変更。コンテナを再起動する。

ブラウザでTailscale ServeのURLにアクセス、Mattermostの初期設定ページが表示されることを確認。Mattermostコンテナ内部の~/mattermost.credsを参照してPostgreSQLのデータベース認証情報を確認、ブラウザに戻って初期設定を実行する。

以上でMattermost環境を構築できた。


mmctlでデータ移行

先ほど構築したMattermost環境のmmctlコマンドを使ってデータ移行を進める。

まず、既存のMattermost環境からmmccl exportでデータをエクスポートする。

mmccl auth login <古いMattermostのURL>
# システム管理者でログイン

mmctl export create
# 実行結果からIDを取得

mmctl export job show <ID>
# Statusがsuccessになっていることを確認

mmctl export list
# 表示されたzipファイルのファイル名を取得

Mmccl export download <zipファイル名>

続けて新環境へのインポートを実施する。

# エラーを防ぐためにインポートファイルサイズの最大値を増やす
mmctl config set TeamSettings.MaxUsersPerTeam {ファイルサイズ}

mmmccl import upload <先ほどエクスポートしたzipファイル名>

mmctl import list available
# 表示されたzipファイル名を取得

mmctl import process <zipファイル名>
# 表示結果からIDを取得

mmctl import job show <ID>
# Statusがin_progressになっていることを確認
# 時間をおいて再実行し、Statusがsuccessになったことを確認

mmctlで仮のシステム管理者ユーザーを作成する。

mmctl user create --email user@example.com --username userexample --password Password1 --system-admin

ブラウザでMattermostにアクセスし追加したシステム管理者ユーザーでログイン、システム統計でユーザー、チャンネル、メッセージ等がインポートされていることを確認する。

既存ユーザのパスワードを再設定するなど、必要な設定を終えた後、仮のシステム管理者ユーザを削除する。

mctl user delete user@example.com --local

以上でデータ移行が成功した。

添付ファイルを含めてシンプルにエクスポート、インポートできるのが嬉しかった。インポートジョブは割と時間がかかり、インポート進行中にチャンネルを表示するとメッセージが空っぽで失敗したかと不安になった。ジョブの完了後に再確認すると無事にメッセージが表示された。

mmccl command line tool - Mattermost docs.mattermost.com