2022/05/05

ラズパイでRadiko録音サーバを立てるっ!
(UbuntuServer22.04 + radcast)

祝!UbuntuServer22.04LTSリリース!
ということで、ラズパイ4でradcastサーバを構築しましょ。

OSの準備はRaspberry Pi Imagerにお任せ。
OSを選んで、、、
-> [Other general-purpose OS] -> [Ubuntu] -> [Ubuntu Server 22.04 LTS](64-bit)
ストレージを選んで、、、
細かい設定をしましょう。
ホスト名を適当に設定
SSHを有効化して、パスワード認証を使う
ユーザー名とパスワードを設定(以降、「作業ユーザ」と表記)
#radcastというシステムユーザーを作ってradcastを起動させるため、
#radcast以外のユーザー名を設定する
ロケールもついでに設定
設定が完了したら、書き込むボタンで、いざ!書き込み!!

書き込みが完了したら、固定IPアドレスを設定
system-boot パーティションの network-config を編集
ethernets:
  eth0:
    addresses:
      - 192.168.1.81/24
    gateway4: 192.168.1.1
    nameservers:
      addresses: [192.168.1.1]
    optional: true
メディアをラズパイにつないで電源オン!
数分後に母艦からSSHでつないでみる。
$ ssh 作成ユーザ@192.168.1.81

お約束その他
$ sudo apt update
$ sudo apt -y upgrade
$ sudo update-alternatives --config editor
→ vim.basic を選択

システムユーザの追加 radcast
$ sudo useradd --system radcast
作業ユーザにグループを追加
$ sudo usermod -aG radcast 作業ユーザ

必須ソフトのインストール
$ sudo apt -y install ffmpeg

golangのインストール
公式サイトから Linux ARM64 の最新版をダウンロード
https://golang.org/dl/
$ wget https://go.dev/dl/goX.XX.X.linux-arm64.tar.gz
解凍して配置
$ sudo tar -C /usr/local -xzf goX.XX.X.linux-arm64.tar.gz
環境変数の設定
$ sudo vi /etc/profile
最終行に追加
export PATH=$PATH:/usr/local/go/bin

反映のために再起動
$ sudo reboot

公開鍵認証にするために鍵をインストール ※公開鍵は別途作成(ggr)
母艦$ ssh-copy-id 作業ユーザ@192.168.1.81

作業再開
母艦$ ssh 作業ユーザ@192.168.1.81

radcastの取得
$ go install github.com/omiso46/radcast@latest
radcastの動作確認
$ ./go/bin/radcast -setup
地元ラジオ局がつらつらと表示されればOK

radcastのインストール
$ sudo cp ./go/bin/radcast /usr/local/bin/radcast
$ sudo chown radcast:radcast /usr/local/bin/radcast

録音ファイル格納先ディレクトリ作成
$ sudo mkdir /var/radcast
$ sudo chown radcast:radcast /var/radcast
$ sudo chmod 775 /var/radcast

過去ファイル破棄設定
$ sudo crontab -e
0 5 * * * find /var/radcast/ -type d -mtime +28 | xargs rm -rf
※毎日05時に、録音から28日経過した番組を削除
RAMDiskの有効化
$ sudo vi /etc/fstab
tmpfs      /tmp          tmpfs  defaults,size=1024m 0     0
反映のために再起動
$ sudo reboot

作業再開
母艦$ ssh 作業ユーザ@192.168.1.81

設定ファイルの構築
$ radcast -setup > /var/radcast/radcast.json
$ sudo chown radcast:radcast /var/radcast/radcast.json

録音番組編集
$ vi /var/radcast/radcast.json

チャンネルアイコン
アイコンにしたいお好み画像ファイル(pngフォーマット)を
「 radcast.png 」にリネームして、
/var/radcast/
に格納する。

radicastの自動起動設定
サービス定義ファイル
$ sudo systemctl edit --force --full radcast.service
[Unit]
Description=radcast [recording radiko and serving rss for podcast]
After=network.target multi-user.target

[Service]
Type=simple
Restart=always
User=radcast
ExecStartPer=/bin/sleep 60
ExecStart=/usr/local/bin/radcast
            -config /var/radcast/radcast.json
            -host 192.168.1.81
            -output /var/radcast
            -buffer 30
ExecStop=/bin/kill -WINCH ${MAINPID}
ExecReload=/bin/kill -HUP ${MAINPID}

[Install]
WantedBy=multi-user.target
※ExecStart行は1行で記述すること
systemctlに読み込ませる
$ sudo systemctl daemon-reload

サービスの自動起動設定
$ sudo systemctl enable radcast.service

再起動してエラー確認
$ sudo reboot

完成です!

2021/01/25

radcastをなんとか修正した

radikoの仕様変更(2021/01 HLSストリーミング)に対応できるようにradcastを修正しました。

$ go get -u github.com/omiso46/radcast
$ go install github.com/omiso46/radcast
$ sudo cp ~/go/bin/radcast /usr/local/bin/radcast

これに伴い「rtmpdump」が不要に。

修正ゴミだらけのソースを綺麗にしないと…。

2021/01/16

また録音できなくなってる

また仕様変更かな?
認証手順が間違ってるような感じ?
Go言語をよくわかってないから改修できるか謎。


プロトコルが完全に移行したって解釈でいいのかな?
ガッツリと改修しないとダメなんだけど、、、
果たして対応できるんだろうか・・・?

はぁ、誰かやってくんねーかな。

2020/12/06

radcast 修正

radikoの仕様変更(2020/12)に対応できるようにradcastを修正しました。

$ go get -u github.com/omiso46/radcast
$ go install github.com/omiso46/radcast
$ sudo cp ~/go/bin/radcast /usr/local/bin/radcast

これに伴い「swftools」が不要に(なったハズ)。
#Ubuntu 64bit でも動くようになった!

2020/08/23

ラズパイメモ

ROM化するときはfake-hwclockを止めてしまうのが健康的 
$ sudo systemctl disable fake-hwclock 

起動時のシステムクロックは対象ファイルのタイムスタンプを読み取っているので
ROM化したときはそのファイルのタイムスタンプを弄っておく(無意味)
/var/lib/systemd/timesync/clock

 母艦$ sudo touch -d "2020-01-01 00:00:00" \
     /[マウントポイント]/rootfs/var/lib/systemd/timesync/clock  

フォロワー