先日、LinuxとPX-W3U4という環境でDocker+EPGStation v2+Mirakurun 3.5.0を用いた録画サーバ構築手順について解説しました。
これから録画サーバを構築する場合は、上記の記事のとおりの手順を踏めば、迷わず構築可能です。
しかし、現在Docker+EPGStation v1環境を既に運用中の場合はどうすればよいのでしょうか?
gitにはEPGStation v1→v2への移行方法が公開されています。
ここで悩ましいのは、EPGstation v1環境を捨ててv2環境に移行してよいのかということです。
EPGStationに限らないのですが、私はソフトウェアのメジャーアップデート直後はかなり警戒して更新します。
それは、ソフトウェアのメジャーアップデート直後はバグが出やすい傾向があるからです。
そのため、EPGStationについてもv2に移行した後で「やっぱりv1に戻したい」と思うかもしれません。
仮にそうならなかったとしても、v1に復元できる状況にできるならしておきたいものです。

備えあれば憂いなし
幸いにしてEPGStationはDockerコンテナで動きますので、v1環境を残しつつ、v2に移行すことができます。
今回は、その手順についてのお話です。
Contents
メジャーアップデート直後のソフトウェアの安定性
一般的な話ですが、これまで安定していたソフトウェアでもメジャーアップデートとなるとソフトウェア設計に大きな変更があります。
そうなってしまうと、メジャーアップデート直後は「新設計になったソフトウェアでの十分な稼働実績が無い」ということになります。
そのため、アーリーアダプターは新しいサービスを早く享受できる一方、未知のバグを踏む可能性が高いです。
そして場合によってはそれが、致命的なバグじゃないとも言えません。
それ故、メジャーアップデート直後のソフトウェアの安定性は高くありません。
EPGStationについて言えば、私は新しいUIや機能を使いたくてv1からv2に移行するわけですが、稼働実績が短いことで録画が失敗するなバグが潜在している可能性はあります。
断っておきますが、これは私の経験と一般的な話から可能性を述べており、EPGStation v2にバグがあると言いたいわけではありません。

あしからず
EPGstation v1→v2にすることの懸念
gitに公開されているオフィシャルな移行手順では、v1のコンテナに潜り込んでv2に移行する手順となっています。
つまり、EPGStation v1環境を失うということです。
この手順で移行することの懸念は、v1環境に戻せくなくなるということです。
これは先ほど述べたようなEPGStation v2に致命的なバグが潜在していた場合において、「やっぱりv1に戻したい」と思っても戻すことがすぐに出来ないという懸念があるということです。

じゃあ、Docker環境なんだから別コンテナでv2環境を新規で作ればいいじゃん
その通りです。
EPGstation v1環境は手元に残したうえで、EPGstation v2を新規で別建てするのが私はベストだと思います。
EPGstation v2を別建てした際の課題
EPGstation v2を新規構築してしまうと、これまで運用していた録画予約ルールや録画予約情報等が無くてなってしまいます。
EPGstation v2を別建てすることは、録画した番組こそ消えませんが初期化されたEPGStationを運用するのとイコールです。
特に録画予約ルールについてはEPGstationを運用するうえでは非常に重要なデータなのですが、Chinachuのようにルールを設定ファイルで抜き出すことができません。
(個人的には録画予約ルールをファイルにエクスポート/インポートできる機能があると非常に嬉しいです。)
私は約50以上のルール(有効/無効問わず)を作っていましたので、これを手作業で書き写すのはかなりしんどいです。
こうした、EPGStation v1での運用データが無くなってしまうというのが課題になります。
でも心配なかれ。
録画予約ルールや予約情報等の運用データを別建てしたEPGStation v2に引き継ぐ方法があります。
- 予約情報
- 録画済み番組情報
- 録画履歴
- 録画予約ルール
EPGStation v2を構築後、v1環境から運用データを引き継ぐ方法
前置きが長くなりましたが、以下の手順により別建てしたEPGStation v2に運用データを引き継ぐことができます。
EPGStation v2を別建てで構築する
まずは普通にEPGStation v2を構築します。
この時のプロジェクト名がv1と重複しないようにしておきます。
具体的には、gitリポジトリからEPGStationのダウンロード先を別名にしておきます。
ここでは、EPGStation v2のプロジェクトのパスを「~/docker-mirakurun-epgstation-v2」としておきます。
1 2 |
su - docker #dockerユーザにスイッチ git clone https://github.com/l3tnun/docker-mirakurun-epgstation -b v2 docker-mirakurun-epgstation-v2 |
EPGStation v1の運用データをバックアップする
EPGStation v1の運用データを引っこ抜くために、v1のコンテナ上で運用データのバックアップを取得します。
以下の記事で録画サーバを構築した場合は、プロジェクトのパスだけ読み替えてください。
ここでは、EPGStation v1のプロジェクトのパスを「~/docker-mirakurun-epgstation」とし、コンテナ名を「epgstation」とします。
1 |
docker exec -it epgstation npm run backup config/backup-v1 |
EPGStation v1の運用データをv2にリストアする
EPGStation v2のプロジェクト配下で、v1のバックアップファイルのリストアします。
1 2 3 |
cd ~/docker-mirakurun-epgstation-v2 cp ~/docker-mirakurun-epgstation/config/backup-v1 config/ docker exec -it epgstation-v2 npm run v1migrate config/backup-v1 |
これでv1→v2にDB上の運用データは移行出来ました
なお、v2にはサムネイル画像が無いのでコピーします。
1 |
cp -ra ~docker-mirakurun-epgstation/epgstation/thumbnail epgstation/ |
これで、v1→v2に運用データの移行は完了です。


問題なさそうです。

完全復活!
まとめ
本記事ではEPGStation v2を構築後、v1環境から予約情報と録画ルールを引き継ぐ方法について解説しました。
一般的にソフトウェアのメジャーアップデート直後は安定性が高くありません。
そのため、更新する場合は今の環境に戻せる状況で実施したいものです。
今回の話とは直接関係はありませんが、手順を後悔するときに私が再現性にこだわってできるだけdocker-composeで完結する手順にしているのは、ソフトウェアやハードウェアを変更した時に「最悪壊れても、“簡単に”元の状態に戻せる」という保険をもたせるためです。
備えあれば憂いなしです。
趣味とはいえ、これまで自宅サーバをいじくり倒して幾度となく痛い目を見たからこそのマインドです。

無駄にこだわってる節もありますが
参考になれば幸いです。
コメント