Git サーバの設定と PC のバックアップ
前回は Synology DS220+ の設定と基本的なパッケージのインストールを行いました。今回は Git サーバと公開鍵認証、PC のバックアップなどを行っていきます。
Git サーバ
基本的な設定
ssh 接続が必要なので事前に設定しておきます。ポート22のままだとセキュリティアドバイザーに怒られるので変えておいたほうが良いでしょう。何番でも良いのですが 0~1023 は Well Known Ports と呼ばれ他のサービスで使われるので避けます。また、1024~49151 は Registered Ports と呼ばれこれも可能なら避けたほうが良いらしいです。49152-65535 が Dynamic/Private Ports なのでここを使うことが推奨されています。
- ssh 可能なのは Administrator グループ(個別に設定したいところではありますが)。私はアクセスできるフォルダや DSM アプリの使用権限を極力制限した ssh/git 専用アカウントを作りました。
- ホームディレクトリは /var/services/homes ですが /volume1/homes へのシンボリックリンクなのでどちらを編集しても構いません。
- ログインしてディレクトリを見ると admin ユーザーだと777に見えてビビりますが sudo -i で root になると本来のパーミッションが見えます。(これどういう仕組なんでしょうね? 知ってたら教えて下さい)
これで ssh/git は使えるようになりますが毎回パスワード入れたくないので公開鍵認証にしてみます。
公開鍵認証
公式マニュアル : SSH 経由で RSA キー ペアで DSM にサインインする方法
- ホームディレクトリが 711 ですがこれはこのままで構いません。
- ssh フォルダは 700 にします。中の authorized_keys などは 644 でも良いのですが私は 600 にしました。
- ググると /etc/sshd_config や .ssh/ 以外の既存のディレクトリのパーミッションを変更している方がいますが基本的には必要ないはずです。
私は PuTTY や Windows10 標準の OpenSSH ではなく cygwin の ssh を使っているのでキーエージェントは昔から https://github.com/ganaware/win-ssh-agent を使わせて頂いています。
最近は Windows10 に標準で OpenSSH が入ったり、WSL や Git For Windows など選択肢が増えた (カオスになったとも言う) ので全部に対応したエージェントがあると良いのだけど… 頑張ればできるみたいですが調べきれていません。
(例えば GitHub Desktop に NAS のリポジトリを追加するには c:/Users/***/.ssh/ に cygwin の ~/.ssh/ と同じ設定を書けば良いのですがパスフレーズは別途 GitHub Desktop に聞かれるので入力する必要があります)
以上でパスワード入力無しで ssh や git が使えるようになりました。
PC のバックアップ
私の求めるバックアップは何かあった時「PCまるごとリストア」できるタイプではなく「ブラウザが記憶しているパスワード」や「めったに見返すことは無いけど記念に保存している物」です。
本当は NAS に置かずに普段は繋いでいない外付け HDD などに保存したほうが安全なのですが面倒で忘れたりすると困るので NAS に自動バックアップすることにします。そのため暗号化などセキュリティには気を使いたい感じ。
バックアップツール
Synology の Drive Client と Active Backup for Business、PC 用の Duplicati を試してみました。ついでに NAS のバックアップに Hyper Backup も。
Synology Drive Server/Client
いちばんお手軽なのはこれ。PCにインストールしたクライアントソフトでバックアップと同期するフォルダを設定できます。
- バックアップはファイルコピータイプ、世代管理あり。
- バックアップするフォルダは選べる。
- 暗号化は無い? (暗号化フォルダは盗難に対する耐性は上がりますが今回のニーズには合いません)
- 同期する場合、ファイルにマークが付くのは良いけど AppData/Local などショートカットアイコンがあるフォルダを同期するとデスクトップのアイコンにもマークが付くので煩いw
ファイルコピータイプなので小さいファイルが多いと不利ですね。あとパスワードなど機微な情報が含まれるのでNASにアクセスされても内容を取り出せない暗号化の機能は欲しいかなぁ…
Active Backup for Business
- 単一ファイルにバックアップするタイプ。ファイル/フォルダ単位のバックアップは出来ずドライブまるごとのバックアップになる。(試してないが共有フォルダならPCではなくファイルサーバとして登録すればフォルダ単位でできるらしい)
- リストアはファイル/フォルダ単位で行える。
- ソースタイプが「システムボリューム」だとCドライブのみ。D:に移したホームディレクトリなどは含まれないので注意。
DS File から見えないのは良いのですがドライブまるごとなので Google ドライブなども含まれるのが嫌な感じ。これはちょっと私の目的には合わないかなぁ…
Duplicati
ちょっと良い感じのツールが無かったので以前から自宅や会社でバックアップに使っていたオープンソースのソフトも試してみました。NASでなくPCにインストールして使うタイプです。
- 指定サイズ(50MBとか)の複数ファイルにまとめるタイプ。
- バックアップするフォルダ、リストアするフォルダとも選べる。
- バックアップ先はSMBマウントしたドライブか sftp、WebDAV などが選べる。(クラウドにもバックアップできる)
- ログが見やすい。(追加/変更されたファイル数がメイン)
Duplicati の設定
バックアップフォルダを見せたくないので NAS には sftp で接続することにします。
- NASの設定でsftpサービスを有効に。sshポート変更している場合は注意
- Path on server には /volume1 を含めない (sftpの仕様)
Microsoft Visual C++ 2015-2019 Redistributable が必要ですが開発者の方なら入っている気がします。ない場合はインストールしておきましょう。
Duplicati as a service として実行するならいくつか方法がありますが普通にインストールしてトレイアイコンのショートカットに --no-hosted-server オプションを追加。Duplicati.WindowsService.exe install を実行。
これでロックファイルも警告が出なくなりますが代わりに cygwin の .bash_history や .ssh フォルダなどパーミッションが600なファイルがバックアップできないようです。なにか方法ないのかな? まぁ他人が読めてはいけないファイルをバックアップに残すのはどうなんだって話になりますが…
Chrome は \AppData\Local\Google\Chrome\User Data\Default 、 Edge は \AppData\Local\Microsoft\Edge\User Data\Default ですがこちらは Roaming でなく Local なのでハード固有の暗号化が行われているため他のPCに持っていっても取り出せません。パスワードなどは必ずエクスポートしておきましょう。
Hyper Backup
- USBドライブやクラウドへバックアップできる。
- 世代管理ありと上書き1世代が選べる。アプリ設定は世代管理ありじゃないとバックアップできないものもある。
- バックアップタスクは複数作れるので、機密データはUSBドライブに、写真などはGoogleドライブにといった事もできる。
- 暗号化できるのでバックアップ先にアクセスされてもパスワードか暗号化キーが無いと見えない。
Cloud Sync
Android や Chromebook ではやはり Google ドライブの方が使い勝手が良かったので出先で編集したいメモのみ NAS と Google ドライブを双方向に同期して Android/Chromebook からは Google ドライブの方を編集するようにしました。
同期間隔はデフォルトで1分ですがそんなに頻繁でなくて良いので10分にして夜間は同期を停止するようにしてみました。
今まで散らばっていたり複数箇所に同じデータがあったりした物もこの機会に整理したし、デバイスとNAS、クラウドの3箇所に保存されている安心感は良いです。その分、万一流出してしまうと大変なことになるので注意が必要ですが。