【Umbrel】ラズパイ4からミニPCへの移行作業記録
ラズパイ4で運用していたUmbrel一式をミニPCへ移行することになった。その作業記録をメモしました。
ちなみに購入したミニPCはこちらのUM450。ベアボーンで買ってメモリとNVMe SSDはアマゾンで買った。
この移行作業はUmbrel Homeのマイグレーション機能を参考にしました。
【重要】移行作業は自己責任でお願いします。
<手順流れ>
- ミニPCにUbuntu ServerとUmbrelをインストール
- ミニPCのUmrelを停止
- ラズパイUmbrelで使っていたSSDをミニPCに接続
- SSDからミニPCへファイル一式をコピー
- Dockerイメージをダウンロード
- TunnelSatsをインストール
- ミニPCのUmbrelをstart
- SSDを切断
<手順 詳細>
1.ミニPCにUbuntu ServerとUmbrelをインストール
Ubuntu Serverのインストールはこちらの記事を参照ください。
私の場合は以下の箇所で記事と異なる設定をしました。
- 6.「Choose type of install」でデフォルトの「Ubuntu Server」を選びました。ミニマイズだとviとか入ってないし使いづらい。
- 16.「Guided storage configuration」で 「Set up this disk as an LVM group」のチェックを外しました。論理ボリューム管理はややこしくなるので使いたくない
- 23.「SSH Setup」でチェックを入れる。ラズパイUmbrelのようにヘッドレス構成にして作業用PCでSSHログインできるようにしたいから。
- <補記>24.「Featured Server Snaps」にはDockerがあるけどチェックは入れない。Umbrelのインストールスクリプトで入れるから。
- Umbrelのインストールスクリプト実行完了したらWebブラウザで接続しない。移行すれば上書きされて無くなってしまうのでやる意味がない。
2.ミニPCのUmrelをstop
以下コマンドを実行してUmbrelを停止する。
cd ~/umbrel/scripts
sudo ./stop
3.ラズパイUmbrelを停止
普通にダッシュボードからSHUTDOWNする。
USB-SSDを引っこ抜いておく。
4.ラズパイUmbrelで使っていたSSDをミニPCに接続
SSDをミニPCのUSBに接続。
dmesgコマンドを見てデバイスファイル名を確認。
以下は私の場合。直近にUSBに何も接続してないのでこのログはSSDを接続したから出力された。どうやらデバイスファイル名はsdaのようだ。
[ 206.040795] usb 2-2.2: new SuperSpeed USB device number 3 using xhci_hcd
[ 206.061623] usb 2-2.2: New USB device found, idVendor=13fd, idProduct=3456, bcdDevice= 0.56
[ 206.061634] usb 2-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 206.061638] usb 2-2.2: Product: 3639S
[ 206.061641] usb 2-2.2: Manufacturer: sage
[ 206.061643] usb 2-2.2: SerialNumber: 2222222222222222005B
[ 206.071693] usbcore: registered new interface driver usb-storage
[ 206.074781] scsi host2: uas
[ 206.074933] usbcore: registered new interface driver uas
[ 206.140497] scsi 2:0:0:0: Direct-Access sage 3639S 0056 PQ: 0 ANSI: 6
[ 206.141820] sd 2:0:0:0: Attached scsi generic sg0 type 0
[ 206.143047] sd 2:0:0:0: [sda] 1953525167 512-byte logical blocks: (1.00 TB/932 GiB) ★sdaのようだ
[ 206.143255] sd 2:0:0:0: [sda] Write Protect is off
[ 206.143258] sd 2:0:0:0: [sda] Mode Sense: 47 00 00 08
[ 206.143550] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 206.143840] sd 2:0:0:0: [sda] Optimal transfer size 33553920 bytes
[ 206.216186] Alternate GPT is invalid, using primary GPT.
[ 206.216203] sda: sda1★第1パーテーションということでsda1
[ 206.218085] sd 2:0:0:0: [sda] Attached SCSI disk
さらに以下コマンドを実行
ls /dev/sd*
私の場合は/dev/sdaと/dev/sda1と表示されたので接続したSSDは/dev/sdaで確定。
このSSDを/mntにマウントをファイル操作できるようにする。
sudo mount -t ext4 /dev/sda1 /mnt
/mntにマウントしたことによって/mnt/umbrelにUmbrelとアプリが全て置かれている状態になる。
5.SSDからミニPCへファイル一式をコピー
以下コマンドを実行する。
BTCPay Serverとtailscaleの一部データが所有者rootになっているのでsudoを付けて実行する。
sudo rsync --info=progress2 --archive --delete \
--include=".env" \
--include="db/***" \
--include="tor/***" \
--include="repos/***" \
--include="app-data/***" \
--include="data/***" \
--exclude="*" \
/mnt/umbrel/ /home/【あなたのユーザー名】/umbrel
オプションの意味
--info=progress2 ざっくり進捗表示。
--archive コピー元の権限などそのまま維持する。
--delete コピー先にコピー元にないファイルがあれば削除。
--includeと--exclude includeに指定されたファイル・ディレクトリはコピーするがそれ以外はコピーしない。
5.Dockerイメージをダウンロード
今の状態でUmbrelを開始すると複数アプリが一斉にDockerイメージをdocker hubからダウンロードする。ダウンロードするにも時間がかかり、起動タイミングがぐちゃぐちゃで正常に起動できないかもしれない。そこで予めダウンロードしておく。
cd ~/umbrel/app-data
yq .services.*.image */docker-compose.yml | sort | uniq | grep -v '\---' | while read line ; do docker pull "${line}" ; done
2番めのコマンドでやっていること
- yq コマンドでダウンロードすべきDockerイメージ(image)の名前をdocker-compose.ymlから抽出。重複分含めて複数ある。
- ソートし、重複とyqが入れた---というスペーサーを除去。
- 複数あるDockerイメージ名を一つずつ指定してdocker pull でダウンロードする。
6.TunnelSatsをインストールする。
※これはTunnelSatsを導入している人向け。導入してない人は次へ。
通常通りのインストールでよい。
/home/【ユーザー名】の場所にtunnelsatsディレクトリを作って、そこにtunnelsatsv2.confをコピーしてきて、setupv2.shを実行すれば良い。
7.ミニPCのUmbrelをstartする。
以下コマンドを実行してUmbrelを開始する。
cd ~/umbrel/scripts
sudo ./start
8.SSDを切断する。
以下コマンドを実行してSSDをシステムから切り離して抜き取れるようにする。
sudo umount /mnt
完了したらSSDを抜き取る。