コンテンツにスキップ

Upgrade/Backup/Restore

アップグレード~

ページ: [歯車アイコン] -> Upgrade

すでにAoTをインストール済みの場合は、Webインターフェースのアップグレードオプションを使う方法(推奨)か、ターミナルで次のコマンドを実行する方法のいずれかで、最新のAoTリリースにアップグレードできます。アップグレード処理のログは/var/log/aot/aotupgrade.logに作成され、[歯車アイコン] -> AoT Logsページからも確認できます。

sudo aot-commands upgrade-aot

Docker環境のアップグレード~

ページ: [歯車アイコン] -> Upgrade

Docker環境は、ディスク上のファイルを置き換える形ではアップグレードされません。公開されたイメージを実行しているため、アップグレードとは新しいイメージを取得してコンテナを再作成することを意味します。Upgradeページはこれを検知して、動作を変えます。

更新できるかどうかは、リリース一覧ではなくコンテナレジストリから判断します。リリースタグはプッシュした瞬間にGitHub上に現れますが、イメージは数分後にマルチアーキテクチャビルドが完了して初めてダウンロード可能になります。そのためこのページは、実際に存在するイメージをレジストリに問い合わせます。「更新あり」と表示されれば、その更新はすぐにインストールできる状態です。

アップデーターサービス(任意)~

ワンクリック更新と自動更新には、小さな追加サービスが必要です。このサービスがなくてもUpgradeページは正確な状態を表示しますが、更新自体はホスト上で自分で適用することになります。

docker compose -f docker/docker-compose.prod.yml pull
docker compose -f docker/docker-compose.prod.yml up -d

アプリケーションは自分自身の更新をインストールできません。コンテナを再作成すると、そのコマンドを実行しているプロセス自体が途中で終了させられてしまうためです。そのため、この作業は別のサービスが担当します。

有効にするには、docker/.envに2つの値を追加します。

AOT_PROJECT_DIR=/opt/AoT                  # このチェックアウトの絶対パス
AOT_HEALTH_KEY=$(openssl rand -hex 24)    # アップデーターが新しいビルドを確認するためのキー

そのうえで、アップデーターのオーバーレイと一緒にスタックを起動します。

docker compose -f docker/docker-compose.prod.yml \
               -f docker/docker-compose.updater.yml up -d

このサービスはホストのDockerを操作できます

アップデーターはDockerソケットを保持しており、これはホストのroot権限と同等です。意図的に極めて小さく作られており、公式のAoTイメージしか取得しませんが、有効にするのはそれを受け入れられる場合に限ってください。特権コンテナを動かしたくない場合は、同じ作業をホストのsystemdタイマーで行うこともできます — install/aot-docker-update.serviceを参照してください。

更新中に起こること~

  1. まずデータベースとアップロードされたファイルのバックアップを取得します。
  2. 新しいイメージをダウンロードします。
  3. デーモンを正常に停止します。停止前に出力を終了時の状態へ切り替える時間を確保します。
  4. 新しいイメージでコンテナを再作成し、スキーマを自動的にマイグレーションします。
  5. 新しいバージョンが、サービスを提供していることかつマイグレーションが反映されたことを報告して初めて、更新は完了したとみなされます。
  6. 正常に起動しない場合は、以前のバージョンに自動的に復元されます——マイグレーションがすでに実行されていた場合は、データベースも一緒に復元されます。イメージだけを復元すると、古いコードが新しいスキーマの上で動作する状態になってしまうためです。

Upgradeページには進行状況がリアルタイムに表示され、終了後には直前の試行結果が表示されます。

更新中は制御が一時停止します

コンテナが再起動している間(通常は数分間)、出力は制御されません。その時点で動作していたもの(灌水、補光、シーケンスなど)は停止します。

自動更新~

アップデーターサービスが起動していると、Upgradeページには次の項目が表示されます。

  • 更新を自動的にインストール — デフォルトではオフです。
  • 更新時刻 — この時刻に1日1回、確認が行われます。時刻は[歯車アイコン] -> Configurationで設定したローカルタイムゾーン基準です。

その時刻になると、AoTはレジストリを確認し、新しいバージョンが公開されていれば、ボタンを押した場合とまったく同じ方法でインストールします。新しいものがなければ何もせず、その旨を1行ログに記録します。

重要な処理が動いていない時間帯を選んでください。「稼働中は延期する」という機能はまだありません。設定した時刻になると、出力がオンかどうかにかかわらずコンテナが再作成されます。

データ~

データベース、アップロードされたファイル、施設の3Dモデル、バックアップ、ユーザースクリプトはすべてDockerボリュームに保存されており、イメージを入れ替えても失われません。以前のバージョンに戻すには、docker/.envAOT_IMAGE_TAGを設定してコンテナを再作成するだけです——アップデーターは最後に正常動作したタグを、同じファイルにAOT_IMAGE_TAG_PREVとして記録します。

バックアップ・復元~

ページ: [歯車アイコン] -> Backup Restore

システムがアップグレードされたとき、または[歯車アイコン] -> Backup RestoreページのWebインターフェースから指示されたときに、/var/AoT-backupsへバックアップが作成されます。

バックアップを復元する必要がある場合は、[歯車アイコン] -> Backup Restoreページで行うことができます(推奨)。復元したいバックアップを見つけて、その横のRestoreボタンを押してください。Webインターフェースにアクセスできない場合は、コマンドラインからも復元を開始できます。復元を開始するには、次のコマンドを使用してください。[backup_location]には、復元するバックアップの完全なパスを指定する必要があります(例: 引用符なしで「/var/AoT-backups/AoT-backup-2018-03-11_21-19-15-5.6.4/」)。

sudo aot-commands backup-restore [backup_location]