Home

rfriends3  - For all radio lovers -

LXD版rfriends3でラジオ録音

 LXDでrfriends3の環境を作ってみました。

[!CAUTION] ホスト側とコンテナ側を混同しやすいので注意が必要です。

1.ホスト側の設定

 ホストはUbuntu 24.04.1 LTSで行いました。

1)LXDインストールと初期化

lxd導入済みの場合は飛ばしてください。

初期化(init)に関しては、基本的に省略時設定で進めます。
すべてリターンでOK.

ホスト:  
$ sudo snap install lxd  
$ sudo lxd init   

2)コンテナ作成

rfriends3というubuntu 24.04のコンテナを作成します。

ホスト:  
$ sudo lxc launch ubuntu:24.04 rfriends3  
Creating rfriends3
Starting rfriends3

2.タイムゾーンの設定とユーザの作成

以下のコマンドを実行し、コンテナにrootでログインします。

ホスト:  
$ sudo lxc exec rfriends3 -- /bin/bash  

以下のコマンドを実行し、タイムゾーンを設定します。

コンテナ:    
root@rfriends3:~# timedatectl set-timezone Asia/Tokyo
root@rfriends3:~# timedatectl  
               Local time: Thu 2025-01-30 06:36:18 JST  
           Universal time: Wed 2025-01-29 21:36:18 UTC  
                 RTC time: n/a  
                Time zone: Asia/Tokyo (JST, +0900)  
System clock synchronized: yes  
              NTP service: inactive  
          RTC in local TZ: no  

以下のコマンドを実行し、ユーザを作成します。
ユーザはradio、パスワードはpassと仮定します。

コンテナ:
root@rfriends3:~# adduser radio
info: Adding user `radio' ...
...  
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for radio
Enter the new value, or press ENTER for the default
...  
Is the information correct? [Y/n] 
info: Adding new user `radio' to supplemental / extra groups `users' ...
info: Adding user `radio' to group `users' ...

radioユーザをsudoユーザに追加します。

コンテナ:
root@rfriends3:~# gpasswd -a radio sudo
Adding user radio to group sudo

ユーザの作成が完了したら、exitでコンテナからホストに戻ってください。

コンテナ:
root@rfriends3:~# exit  

3.rfriendsのインストール

以下のコマンドを実行し、ユーザradioでログインします。

ホスト:  
$ sudo lxc exec rfriends3 -- su radio  

以下のコマンドを実行し、rfriends3をインストールします。

コンテナ:
  
cd ~/  
sudo apt-get install git -y  
rm -rf rfriends3_core  
git clone https://github.com/rfriends/rfriends3_core.git  
cd rfriends3_core  
sh install_ubuntu.sh  

インストールには時間がかかるので気長にお待ちください。  
...  
IP address : 10.117.74.193/24
Thu Jan 30 06:44:39 JST 2025
end install common
finished  

このIP addressをメモしてください。
exitでコンテナからホストに戻ってください。

コンテナ:
radio@rfriends3:~$ exit  

exitしてもコンテナは動作したままです。

4.rfriends3の起動

ホストのWEBブラウザから上記で表示されたIPアドレスを入力します。

10.117.74.193:8000  

でrfriends3が使えるようになります。

使用法についてはマニュアルを参照してください。
https://rfriends.github.io/rfriends/manual/index.html

なお、コンテナを停止する場合は、

ホスト:
$ sudo lxc stop rfriends3

です。

[!NOTE] 以下は必要に応じて実行してください。

5.外部PCからアクセス

作成したコンテナに外部(home)からsshでアクセスできるようにします。

[home] —– (internet) —– [ホスト:50022] - [コンテナ1:22]

[home] —– (internet) —– [ホスト:50122] - [コンテナ2:22]

5.1 コンテナにssh serverのインストール

コンテナ側で以下のコマンドを実行

$ sudo apt install openssh-sever  
$ exit  

ホスト側で以下のコマンドを実行

$ sudo lxc list  

rfriendsコンテナのIPV4アドレスが表示される。 xxx.xxx.xxx.xxx.xxxはrfriendsコンテナのIPアドレスとする。

ssh radio@xxx.xxx.xxx.xxx  

でrfriendsコンテナにユーザradioでログインできるのを確認。

$ exit  

5.2 コンテナにproxyデバイスを追加

外部からrfriendsコンテナにSSHできるようにする。

ホストのport:50022 -> rfriendsコンテナのport:22

xxx.xxx.xxx.xxx.xxxはrfriendsコンテナのIPアドレス

p50022の名前は任意。

ポートが使われていないか調べる。使われていない場合、表示なし。

$ lsof -i:50022  

proxyデバイスを追加

$ sudo lxc config device add rfriends p50022 \  
  proxy listen=tcp:0.0.0.0:50022 connect=tcp:xxx.xxx.xxx.xxx.xxx:22  

設定を削除したいときは

$ sudo lxc config device remove rfriends p50022  

5.3 外部からrfriendsコンテナにssh

ssh radio@yyy.yyy.yyy.yyy:50022  

yyy.yyy.yyy.yyyはホストのIPアドレス

アクセスできない場合、firewall等でポートが閉じられていないか調べる。

6.LXDで作成したコンテナを複製する方法

6.1 現状確認

以下はrootで操作しています。

# lxc list  
rfriends | RUNNING | XXX.XXX.XXX.XXX (eth0) | 省略 (eth0) | CONTAINER | 0    
# lxc config device show rfriends  
p50022:  
 connect: tcp:XXX.XXX.XXX.XXX:22  
 listen: tcp:0.0.0.0:50022  
 type: proxy  

6.2 rfriendsコンテナを複製

# lxc copy rfriends rfriends_copy  
# lxc list  
NAME STATE IPV4
rfriends RUNNING XXX.XXX.XXX.XXX (eth0)
rfriends_copy STOPPED  

6.3 proxyデバイスの設定

1)rfriendsのproxy設定もcopyされているのを確認

# lxc config device show rfriends_copy  
p50022:  
 connect: tcp:XXX.XXX.XXX.XXX:22  
 listen: tcp:0.0.0.0:50022  
 type: proxy  

2)rfriends_copyのproxy設定を削除

ポート番号が重複することになるので削除

# lxc config device remove rfriends_copy p50022  
Device p50022 removed from rfriends_copy  

3)rfriends_copyコンテナをスタートさせる

# lxc start rfriends_copy  

IPアドレスが振られているのを確認。

# lxc list  
NAME STATE IPV4
rfriends RUNNING XXX.XXX.XXX.XXX (eth0)
rfriends_copy RUNNING  

4)proxyデバイスを追加

ポートが使われていないか調べる。使われていない場合、表示なし。

$ lsof -i:50122  

proxyデバイスを追加

$ sudo lxc config device add rfriends_copy p500122 \  
  proxy listen=tcp:0.0.0.0:50122 connect=tcp:zzz.zzz.zzz.zzz:22  
  
Device p500122 added to rfriends_copy  

6.4 外部からrfriends_copyコンテナにssh

ssh radio@yyy.yyy.yyy.yyy:50122  

yyy.yyy.yyy.yyyはホストのIPアドレス アクセスできない場合、firewall等でポートが閉じられていないか調べる。 データの転送は、teraterm(scp),Rlogin(sftp)が便利。

6.5 その他

以上でrfriendsコンテナと同じ環境のrfriends_copyコンテナが作成できました。  同様の操作で、PCの能力が許す限りいくらでも複製できます。 rfriendsコンテナとrfriends_copyコンテナはポート番号の違いでアクセスできます。

ssh radio@yyy.yyy.yyy.yyy:50022 (rfriends)
ssh radio@yyy.yyy.yyy.yyy:50122 (rfriends_copy)

7.補足

LXDに関しては、以下のサイトが非常に参考になります。

[Dockerに疲れた人のためのLXDではじめるシステムコンテナ入門] https://speakerdeck.com/devops_vtj/dockernipi-retaren-notamenolxddehazimerusisutemukontenaru-men

以上