サーバーソフトウェア更新 3

自宅サーバーでは、当ブログ以外にもプライベートで使用するソフトウェアをいくつか稼働させていました。それぞれの移行手段について纏めてみました。

Wordpress

当ブログ公開用に運用。ただし全然使いこなせていないしコードを載せるには標準のエディタは使いにくく、以前からMarkdownあたりで書ける別のソフトウェアに乗り換えようと考えていました。

たまたま知ったHugoが良さそうだったので、デザインをちょっと寄せたテーマを自作してWordpressから移行してみました。内容は直接移行する手段がないため、WordpressでエクスポートしたXMLを個別のファイルに分割するスクリプトを書き、手作業で調整しました。1

内容やテーマは後述のGitLabで管理することにしたので、更新もGitLab CI/CD機能を利用することにしました。

GitLab

GitLabは、かつてGitHubがフリープランでプライベートリポジトリを作成できなかった時代に個人用のリポジトリを管理するために使い始めました。 そのままGitHubとは使い分けながら使い続けています。

今まではOmnibus版をインストールしていましたが、幸い開発元によるDockerイメージが公開されている2ので、活用することにします。

データの移行については、公式ドキュメントのBack up and restore GitLabに沿って今までのサーバーでバックアップを作成、コンテナにバックアップデータを入れたディレクトリをマウントしてリストア実施でできました。

GitLabそのものの制約としてリストア先のGitLabのバージョンはバックアップ取得時点のものと一致していなければなりません。DockerHubに各バージョンがタグ付きで公開されていますので、リストアを実施するときはきちんとタグを指定してコンテナを起動するのが間違いないでしょう。

リストア完了後、タグ指定を新しいバージョンに変更するかlatestにしてしまえば、コンテナ起動時にデータのマイグレーションが実行されます。

FreshRSS

かつてはGoogle Readerを使っていて、Feedlyに流れ着くもWeb UIが合わずセルフホスティングの安心感に惹かれたのも相まってFreshRSSに落ち着きました。

私が重視しているのはデスクトップとスマートフォンで既読フラグとブックマークが共有できること、そしてスマートフォンで使用しているReederが連携できることでした。FreshRSSを知ったきっかけもReederのバージョンアップで新たな対応サービスとして追加されたことです。

こちらも開発元によるDockerイメージが公開されているので、今まで直接インストールしていた環境からデータを移行させました。と言っても設定ファイル以外の実データはデータベースの中なので実質データベースのダンプとリストアに終始することになりました。

ownCloud

Web UIでファイル管理できるし、簡単な世代バックアップも付いているしそれ以上の込み入ったことはしないのでとNextCloudがフォークされた後もそのまま使い続けていたのですが流石に限界3だったので、この機会にNextCloudに移行することにしました。

NextCloudはDockerによる公式イメージを使用しました。ownCloudからの移行も公式ページにMigration guideがあり、この文書に沿って作業すれば良いです。

ただし、私が作業した時(2023/3頃)にはマイグレーションスクリプトのownCloudバージョン判定が正しく機能せず、使用中のownCloud 10.10に対応した移行先のNextCloudバージョン選定に失敗していたため一筋縄ではいきませんでした。 現在(2023/5/5)はドキュメントが整備され、Migrating from ownCloudにownCloud 10.11.xからの移行について書かれているので、私が作業した時から状況が改善されたようです。

Mattermost

2022年9月からSlackのフリープランの内容が変更されたことから、セルフホスティングのMattermostに移行していました。

時期的には既に今回のコンテナ化を見据えていたので、最初からコンテナで稼働させています。ですのでデータの移行もコンテナにマウントしているディレクトリをコピーするだけでした。

なお、Slackからの移行についてはMattermost側でmmetlというツールが用意されているのですが、一部のデータが変換されず欠落してしまったので移行ツールを自作しました。

移行ツールはGitHubにてmmconverterという名称で公開しています。


  1. 良くも悪くも、元々の投稿数が少なくコード以外の書式設定が少なかったからできたことです。 ↩︎

  2. どうやらOmnibus版をそのままコンテナに押し込めたようで、GitLab本体とデータベースが同一のコンテナで稼働するなかなか強引な作りですが、更新頻度が高いのは安心材料です。 ↩︎

  3. 移行後に知ったのですが、ownCloud自体もownCloud Infinite Scaleとして作り直されていました。 ↩︎

<<サーバーソフトウェア更新 2 WSL2にAlpine Linuxをインストールする>>