アップグレードとバックアップ

ThirtyFile を最新に保ち、安全な場所にデータのコピーを保存します。

このページの内容
  1. アップグレード
  2. バックアップ
  3. 別の場所へのファイルバックアップ
  4. 復元
  5. データベースの容量
  6. 保存パスワードの暗号化キー
  7. バックアップを安全に保つ

アップグレード

先に バックアップ してください。ファイルと設定は保持し、新しいバージョンの起動時にデータベースを更新します。変更前に data/backups/drive-before-<version>.db にコピーを保存します(最新 3 件を保持)。

docker run

docker pull ghcr.io/thirtyfile/thirtyfile:latest
docker stop thirtyfile && docker rm thirtyfile
docker run -d --name thirtyfile --restart unless-stopped …   # the same options as when you installed it

Docker Compose

docker compose pull && docker compose up -d

リリースページの compose.yaml は ghcr.io/thirtyfile/thirtyfile:0.4 のように、そのリリース系列の修正を受け取ります。新しい系列へは、リリースノートを読んでから image: のタグを :0.5 などに変え、同じコマンドを実行します。

0.4.0 以降は同じ data と storage で起動して、その場で更新できます。0.3 以前はその後にデータベースを作り直したため更新できません。空の data と storage フォルダーで新しい版をインストールし、ファイルをコピーしてください。古いデータで起動すると、data と storage に何も書く前に停止し、ログに理由を示すので、データは変わりません。新しい版が変更したデータベースでも、明確なメッセージで停止します(古い版に戻す)。

取得するバージョン

ghcr.io/thirtyfile/thirtyfile と Docker Hub の thirtyfile/thirtyfile は同じ検証済みイメージとタグを提供します。倉庫を変えるには、コマンドや Compose のイメージ名だけを変え、タグとデータボリュームは保持します。署名付き GitHub 来歴証明は GHCR に付くため、Docker Hub のコピーを確認するときは、一致する digest を GHCR で検証してください。

タグ内容
1同じメジャー版の最新リリース(1.0.0 以降)。機能と修正を受け取り、互換性に影響する 2.0.0 へは移らないため、自動更新向けです
latest新しいメジャー版を含む最新リリース。更新前にノートを読んでください
1.2、1.2.3リリース系列、または正確な版。次へ進む時期を自分で決める場合
1.2.3-rc.1今後の変更を試すプレリリース。独自の番号のみで提供し、ほかのタグはプレリリースを指しません

1.0.0 より前にメジャー版のタグはありません。0.x はどのリリースでも動作が変わり得るため、0.4 のような系列が最も近いものです。リリースページ に変更一覧、compose.yaml、Linux amd64、arm64 向けの単体サーバーと SHA256SUMS の SHA-256 チェックサムがあります。

各イメージに内容一覧(SBOM)とビルド方法の署名付き記録があります。ThirtyFile の正式ワークフローで作ったかは GitHub CLI で検証できます。

gh attestation verify oci://ghcr.io/thirtyfile/thirtyfile:1.2.3 --repo ThirtyFile/ThirtyFile
gh attestation verify thirtyfile-1.2.3-linux-amd64 --repo ThirtyFile/ThirtyFile

ライブラリのライセンスは、イメージ内の /usr/share/licenses/thirtyfile/THIRD-PARTY-NOTICES とリリースページの THIRD-PARTY-NOTICES にあります。

古い版に戻す

新しい版で変更したデータベースでは古い版は起動しません。停止し、data/drive.db を更新前の data/backups/drive-before-<new version>.db に置き換え、あれば drive.db-wal と drive.db-shm を削除してから古いイメージを起動します。更新後のアカウント、アップロード、名前変更などは失われます。更新後のファイルは保存フォルダーに残りますが、一覧には載りません。

バックアップ

data と storage を合わせて、ファイル、アカウント、設定、ログを含みます。storage/company、storage/teams、storage/users は通常のファイルなので、一般のバックアップツールでコピーし、個別に復元できます。共有リンク、権限、ごみ箱、以前のバージョンにはデータベースも必要です。data のデータベースは常時書き込むため、稼働中に drive.db をコピーせず、バックアップコマンドを使うか停止してコピーしてください。

停止せずに行う

  1. 整合性のあるデータベースのコピーを保存します(上書き不可なので毎回別名を使います)。
    docker exec thirtyfile thirtyfile backup /data/backups/drive-$(date +%F).db
  2. storage と、drive.db*、thumbs、tmp を除いた data をコピーします(サムネイルは再作成でき、tmp は進行中のアップロードだけです)。
    sudo tar czf thirtyfile-$(date +%F).tar.gz -C /srv/thirtyfile \
      --exclude='data/drive.db*' --exclude=data/secret.key --exclude=data/thumbs --exclude=data/tmp data storage

アーカイブ作成中のアップロードは、アーカイブだけ、または保存データベースだけに含まれる場合がありますが、どちらも復元できます。毎晩実行するなら両コマンドをスクリプトにし、0 3 * * * /usr/local/bin/thirtyfile-backup.sh のように cron に追加して、数週間を過ぎたアーカイブもそこで削除します。

ThirtyFile を停止して行う

docker stop thirtyfile
sudo tar czf thirtyfile-backup.tar.gz -C /srv/thirtyfile data storage
docker start thirtyfile

Docker Compose なら compose.yaml のフォルダーで docker compose stop、docker compose start を使い、その場所からの data storage を指定します。

別途バックアップするもの:/storage 以外のマウント先(ローカルフォルダー の NAS、フォルダースペース)と、S3、SFTP、FTP のファイルは、その保存先のツールで保存してください。このバックアップはファイル一覧とアクセス権を持ちますが、内容は含みません。

保存場所のファイルのコピー

ThirtyFile 自身でも、コントロールパネル › 保存場所 の すべてをコピー… で一度(別の場所へ全ファイルをコピー)、または ファイルのバックアップ で繰り返しコピーできます。ミラー は現在の状態を他の場所にも保持して障害時に読み取れるようにしますが、過去を残さないためバックアップの代わりにはなりません。サーバー全体ではなくファイルのコピーなので、アカウント、設定、共有リンク、ログには上記の data のバックアップを続けてください。

別の場所へのファイルバックアップ

1 つの保存場所のスペースのスナップショットを、NAS、別のディスク、S3、SFTP、FTP に保存します。各スナップショットは、ある時点のフォルダー、ファイル、ごみ箱、以前のバージョンを持つ復元ポイントです。指定期間だけ過去を保持し、誤って削除、変更したファイルを戻せます。管理者のみ表示、管理できます。

バックアップを作る

コントロールパネル › バックアップ の 新しいバックアップ…(または保存場所のメニューの バックアップ…)で設定します。

初回はすぐに全件をコピーし、以後はまだ保存先にない内容だけをコピーします(どのスナップショットにも同じ内容は一度だけ保存)。コピーや復元と合わせて 1 ジョブずつバックグラウンドで動き、ページを閉じたり再起動しても続きます。

スナップショットに含まれるもの

状態を確認する

各バックアップに 保護済み(最新が全変更を含む)、変更待ち と待ち時間、バックアップ中、保存場所を待機中(接続不可。数分ごとと復旧検出時に再試行)、失敗(エラーで停止。1 時間ごと、または 今すぐバックアップ で再試行)、期限超過(設定時間を超えて新規作成なし)、一時停止、保護済みの時点を表示します。失敗、場所待ち、期限超過の開始と復旧時に管理者へ一度ずつ通知し、設定済みならメールも送ります。詳細 に復元ポイント、ジョブ、エラーを表示します。完了ジョブは 90 日、各バックアップ最大最新 1,000 件で、最新 20 件は古くても残します。失敗ジョブは再開、キャンセルまで残します。

バックアップを一時停止 は新規作成を止め、既存分を保持します。バックアップの削除 は確認後に停止し、全スナップショットとフォルダーを削除します。一時停止はできますがキャンセルはできません。バックアップを持つ保存場所は、先にバックアップを削除する必要があります。

必要な容量

複数に含まれる内容は一度だけ保存するので、スペース容量と、保存期間中の変更、削除分ほどが必要です。作成後に保存期間外の古いものを削除し(最新の保持分は除く)、残りにない内容を削除します。コントロールパネル › ストレージ使用量 に場所ごとのバックアップ容量を表示します。

バックアップから復元する

既存内容を再利用する前に検証します。欠落、破損したコンテンツストアの内容は、確認済みバックアップから回復し、同じ内容を共有するファイルも保持します。重複名の選択は各ファイルの書き込み時に適用し、読み取り中に新たに重複したものも対象です。

バックアップの 復元… で、復元ポイントとスペースを選びます。会社、チームはフォルダーや個別アイテムを選べます。個人用は管理者が内容を見られないため、全体を所有者の個人用スペースにのみ戻します。

サーバー自体を失った場合

ファイルのバックアップは元サーバーに依存しません。保存先の manifest はスペース、フォルダー、ファイル、内容を持ちます(.thirtyfile-backups/<id>/、構造 を参照)。サーバーとデータベースを失った後は次の手順です。

  1. ThirtyFile をインストールし、戻す個人用スペースのアカウントを同じユーザー名で作ります。
  2. バックアップの場所を同じ設定で追加します。.thirtyfile-location は旧サーバーの場所を示すため、新しい登録を拒否します。旧サーバーがなくなっているので、先にそのファイルをフォルダー、バケット最上位、サーバーフォルダーから削除します。
  3. コントロールパネル › バックアップ の 保存場所からバックアップを検索… でその場所を選びます。検出分を一覧にし、バックグラウンドで検証後、完全なスナップショットから復元できます。

戻るのはファイルです。アカウント、グループ、権限、共有リンク、設定、ログは data のバックアップから(バックアップ)、保存場所やシングルサインオンのパスワードは secret.key(以下)または再入力が必要です。場所のキーとパスワードを ThirtyFile の外に安全に保管してください。ときどき新しいフォルダーに復元し、数ファイルを確認して練習してください。

復元

  1. 停止して元の場所へ展開します。sudo tar xzf thirtyfile-backup.tar.gz -C /srv/thirtyfile(Compose は compose.yaml の場所)。
  2. 稼働中のバックアップなら、data/backups/drive-<date>.db を data/drive.db へコピーし、drive.db-wal と drive.db-shm を削除します。
  3. バックアップ時と同じか新しい版を起動し、サインインして、最近アップロードしたものを含む数ファイルを開きます。

データベースにはセッションと解除済み共有リンクの署名シークレットもあります。secret.key(以下)も戻せばサインイン状態を保持します。なければ全員が再サインインし、保存場所とシングルサインオンのパスワードも再入力します。共有リンク自体はどちらでも使えます。新サーバーへの移行も同じで、インストール、復元し、アドレスが変わったらサイトの URL を更新します。

別のコンピューターでときどき復元を試してください。バックアップの信頼性は、最後に復元できた確認に基づきます。

データベースの容量

data/drive.db と最近の書き込みログ drive.db-wal は、起動時と毎日、不要な容量を返します。ログを空にし、バックアップの一覧作成など長い読み取りの後は 64 MB を超えたままになりません。新しいデータベースは古いログなどの削除領域も返し、次の書き込み用に数 MB を残します。古い版のデータベースは領域を次の書き込みに再利用するため、縮小して以後も返すには、停止して docker compose run --rm thirtyfile compact(または docker run --rm -v …same volumes… ghcr.io/thirtyfile/thirtyfile compact)を実行します。全体を書き直すので同程度の空き容量が必要です。

保存パスワードの暗号化キー

保存場所のパスワード、キー、シングルサインオンのシークレット、2 段階認証のシークレット、セッションと共有リンクの署名シークレットは暗号化して保存します。キーは初回作成の data/secret.key、または THIRTYFILE_SECRET_KEY、THIRTYFILE_SECRET_KEY_FILE です。データベースだけを入手しても読めません。

バックアップを安全に保つ

バックアップにはファイル、アカウント、IP アドレスを含むログがあり、secret.key があれば保存パスワードを読むための情報もあります。パスワードと同様に扱い、管理者だけがアクセスできる場所に保存してください。