# セルフホスト 自分で管理しているコンピュータ上のフォルダに、SSH でバックアップします。Linux サーバー、NAS、Raspberry Pi、VPS のほか、SSH サーバーをオンにした Mac や Windows のコンピュータも使えます。Frost はお使いのコンピュータにすでにある SSH クライアントを使うので、サーバーに何かをインストールする必要はありません。 ## 始める前に - サーバーで SSH と SFTP がオンになっている必要があります。ほとんどの Linux サーバーでは両方とも使えます。NAS では、ターミナルやファイルサービスの設定を探してください。 - 使うフォルダに書き込めるアカウントがサーバー上に必要です。バックアップ専用のアカウントを作るのがおすすめです。 - Windows では、OpenSSH クライアントがインストールされている必要があります。通常はすでに入っています。入っていない場合は、設定のシステム > オプション機能から追加します。 ## セットアップでの入力 `frost init` を実行し、**Self-hosted** を選びます。 | セットアップの質問 | 答え | | --- | --- | | What is the server SSH address? | `me@nas.local` のようなユーザーとホスト、または SSH 設定の `Host`。ポートが違う場合は `:2222` のように付け足します | | Which folder on the server? | 既定は `frost` で、サーバー上のホームフォルダの中にあります。`/srv/backups/frost` のような絶対パスも使えます | フォルダの最後の部分がなければ、セットアップが作ります。その親フォルダはあらかじめ存在している必要があります。 ## Frost の SSH キー Frost は専用の SSH キーを用意します。セットアップが初回に作成するため、個人のキーや SSH エージェントは不要です。パスワードを求めることもなく、スケジュールされたバックアップでも毎回同じ方法でログインします。 サーバーはまだ Frost のキーを知らないので、初回はセットアップがキーの追加方法を尋ねます。 - **Add it for me** (代わりに追加する) は、ターミナルを ssh に引き渡します。初めて接続するサーバーでは、ssh がそのフィンガープリントを表示し、信頼するかどうかを尋ねます。続いてサーバーでのパスワードを尋ね、Frost のキーを追加すると、セットアップが再開します。パスワードは ssh にだけ渡ります。Frost がそれを見たり保存したりすることはありません。 - **I'll add it myself** (自分で追加する) は、Frost の公開鍵ファイルの場所を表示します。そのファイルの行をサーバーの `~/.ssh/authorized_keys` に追加し、`[enter]` を押します。 | コンピュータ | Frost の公開鍵 | | --- | --- | | macOS と Linux | `~/.config/frost/ssh/frost_ed25519.pub` | | Windows | `%AppData%\frost\ssh\frost_ed25519.pub` | セットアップがキーを追加した場合、その行は `restrict` で始まります。これにより接続の転送と端末の割り当ては無効になりますが、Frost はファイルの読み書きを続けられます。サーバー側でアカウントを SFTP のみに制限しない限り、シェルコマンドは実行できます。 ### キーを手動で追加する macOS や Linux では、次のコマンドで先頭に `restrict` を付けたキーを追加できます。サーバーでのパスワードを尋ねられます。 ```sh (printf 'restrict '; cat ~/.config/frost/ssh/frost_ed25519.pub) | ssh me@nas.local 'umask 077; mkdir -p .ssh; cat >> .ssh/authorized_keys' ``` NAS によっては、アカウントの設定画面に SSH キーを貼り付けられるものもあります。 Windows のサーバーはキーを別の場所に置くので、**Add it for me** は使えません。標準アカウントなら `C:\Users\\.ssh\authorized_keys` に、管理者なら `C:\ProgramData\ssh\administrators_authorized_keys` に行を追加します。 ## ポートと SSH 設定 Frost は ssh と同じように `~/.ssh/config` を読み込みます。`Host` エントリでユーザー、ポート、その他のオプションを指定し、その名前をアドレスとして入力できます。Frost は専用のキーを指定しますが、SSH 設定に `IdentityFile` で明示したキーも提示される場合があります。 ## 知っておきたいこと - サーバーのファイルシステムがハードリンクに対応している必要があります。Frost はハードリンクを使って、2 台のコンピュータが互いのバックアップ記録を上書きしないようにしています。ext4、Btrfs、XFS、ZFS、APFS、NTFS はどれも対応しています。セットアップは接続時にこれを確認します。 - サーバーのホストキーが変わると、Frost は ssh と同じように接続を拒否します。サーバーを再インストールした場合は、`ssh-keygen -R ` で古いキーを削除し、もう一度 `frost init` を実行します。 - `frost status` はサーバーのディスクの使用状況を表示し、`frost backup` はほぼいっぱいになると警告します。 - フォルダがサーバーのマウントするディスク上にある場合、バックアップの実行時にそのディスクがマウントされている必要があります。フォルダが見つからない場合、バックアップはほかの場所に書き込むことなく失敗します。