・RaspberryPi で radikoを録音して Podcastで配信する(OS編)
・RaspberryPi で radikoを録音して Podcastで配信する(構築編)
・RaspberryPi で radikoを録音して Podcastで配信する(改造編)
・RaspberryPi で radikoを録音して Podcastで配信する(改造編2)
Raspberry Pi zero W に Raspbian Stretch Lite で radicast 専用機を構築します。
Raspbian のインストール(母艦での作業)
microSDを差し込み、fdiskでパーティション削除
$ sudo fdisk /dev/sdb
Raspbianのコピー
$ sudo dd if=2018-04-18-raspbian-stretch-lite.img of=/dev/sdb bs=1M
SSH有効化の準備
$ touch /media/******/boot/SSH
bluetoothの無効化
$ vi /media/******/boot/config.txt
末尾に追加
# Disable Bluetooth dtoverlay=pi3-disable-bt
Wi-Fi接続情報の設定
$ vi /media/******/boot/wpa_supplicant.conf
平文の場合
country=JP ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid="**YourSSID**" psk="**YourPassphrase**" }
平文が気になる場合は「wpa_passphrase」コマンドで暗号化する
$ wpa_passphrase YourSSID YourPassphrase
network={ ssid="YourSSID" #psk="YourPassphrase" ← 削除 psk=01afe38da0c3176176b3484f3185ce7f3dc504dc4d51a17a8126f7c0786ced26 }
置き換える
固定IPの設定
$ sudo vi /media/******/rootfs/etc/dhcpcd.conf
末尾に追加
interface wlan0 static ip_address=192.168.0.81/24 static routers=192.168.0.1 static domain_name_servers=192.168.0.1 8.8.8.8
アクセス制限の設定
$ sudo vi /media/******/rootfs/etc/hosts.deny
末尾に追加
ALL:ALL
$ sudo vi /media/******/rootfs/etc/hosts.allow
末尾に追加
ALL:127.0.0.1
ALL:192.168.0.0/24
リポジトリの変更
$ sudo vi /media/******/rootfs/etc/apt/sources.list
現行サーバ定義をコメント化し、末尾に追加
#deb http://mirrordirector.raspbian.....
deb http://ftp.tsukuba.wide.ad.jp/Linux/raspbian/raspbian/ stretch main contrib non-free rpi
microSDをラズパイに差し込んで。。。
ラズパイ入電!
SSHログイン
母艦$ ssh pi@192.168.0.81
pi@192.168.0.81's password: raspberry
初期設定
viを高機能版に変更
$ sudo apt-get update
$ sudo apt-get install vim
$ sudo update-alternatives --config editor
⇛ "vim.basic"を選択する
Raspberry Pi 設定(raspi-configを使わずに対話式で)
メモリ割り当て
$ sudo raspi-config nonint do_memory_split 16
タイムゾーン
$ sudo timedatectl set-timezone Asia/Tokyo
言語
$ sudo perl -pe 's/^# (ja_JP.UTF-8 UTF-8)/$1/g' -i /etc/locale.gen
$ sudo locale-gen
$ sudo update-locale LANG=ja_JP.UTF-8
ホスト名
$ sudo raspi-config nonint do_hostname radicast
再起動
$ sudo reboot
操作ユーザーの作成
$ sudo useradd -m -s /bin/bash radicast
$ sudo passwd radicast
新しい UNIX パスワードを入力してください: [Password]
新しい UNIX パスワードを再入力してください: [Password]
passwd: パスワードは正しく更新されました
rootユーザーにパスワードを設定する
$ sudo passwd root
新しい UNIX パスワードを入力してください: [Password]
新しい UNIX パスワードを再入力してください: [Password]
passwd: パスワードは正しく更新されました
操作ユーザーでsudoが使えるようにする
$ sudo visudo
# User privilege specification の下に追加
radicast ALL=(ALL:ALL) ALL
システム更新
$ sudo apt-get update && sudo apt-get -y dist-upgrade
$ sudo apt-get -y autoremove && sudo apt-get autoclean
ファーム更新
$ sudo rpi-update
SSHのホスト鍵を更新
$ sudo rm -v /etc/ssh/ssh_host*
$ sudo dpkg-reconfigure openssh-server
再起動して操作ユーザーでログインしなおす
$ sudo reboot
母艦$ ssh radicast@192.168.0.81
Piユーザーの停止(パスワードを期限切れに)
$ sudo passwd -l pi
チャレンジレスポンス認証を許可
$ sudo vi /etc/ssh/sshd_config
変更
ChallengeResponseAuthentication yes
NTPの設定
$ sudo vi /etc/systemd/timesyncd.conf
追加
NTP=ntp.nict.jp ntp.jst.mfeed.ad.jp
FallbackNTP=time.google.com
不要サービスの停止
$ sudo systemctl disable avahi-daemon
$ sudo systemctl disable triggerhappy
swapの停止
$ sudo systemctl disable dphys-swapfile
$ sudo dphys-swapfile uninstall
USBメディアの登録
可能な限りSDカードへの書き込みを減らすべく
録音ファイルはUSBメディアへ書き込むようにする
ベースディレクトリ
$ sudo mkdir /var/radicast
ディレクトリオーナーの変更
$ sudo chown radicast.radicast /var/radicast
メディアのマウント定義とRAMDiskの有効化(/tmpなどをtmpfsへ)
$ sudo vi /etc/fstab
変更&追加
proc /proc proc defaults 0 0 PARTUUID=00000000-01 /boot vfat defaults 0 2 PARTUUID=00000000-01 / ext4 defaults,noatime 0 1 ↓↓ proc /proc proc defaults 0 0 PARTUUID=00000000-01 /boot vfat defaults 0 0 PARTUUID=00000000-01 / ext4 defaults,noatime 0 0 tmpfs /tmp tmpfs defaults,size=96m 0 0 tmpfs /var/tmp tmpfs defaults,size=8m 0 0 tmpfs /var/log tmpfs defaults,size=8m 0 0 /dev/sda1 /var/radicast ext4 defaults 0 0
電源を落としてUSBメディアを差し込む
$ sudo halt
電源を入れて操作ユーザーでログイン
母艦$ ssh radicast@192.168.0.81
必須ソフトのインストール
$ sudo apt-get -y install libav-tools swftools rtmpdump git
Go言語のインストール(Goは最新版をサイトから落として入れる)
https://golang.org/dl/
公式サイトから Linux ARMv6 の最新版パッケージをwgetで取得
$ wget https://dl.google.com/go/go1.10.2.linux-armv6l.tar.gz
解凍して配置
$ sudo tar -C /usr/local -xzf go1.10.2.linux-armv6l.tar.gz
環境変数の設定
$ sudo vi /etc/profile
変更
export PATH=$PATH:/usr/local/go/bin
反映のために再起動
$ sudo reboot
radicast のセットアップ
radicastの取得
$ go get github.com/soh335/radicast
動作確認
$ ./go/bin/radicast -setup
地元ラジオ局がつらつらと表示されればOK
radicastの改造
・無劣化録音対応
・05時開始番組が録音できない不具合の対応
・チャンネルのアイコン設定
・番組のアイコン取得
・他
対象ソースは4本
・converter.go
・podcast.go
・radiko.go
・server.go
Build & Install
$ cd ~/go/src/
$ go build github.com/soh335/radicast/
$ sudo cp ./radicast /usr/local/bin/radicast
設定ファイルの構築
$ cd ~
$ radicast -setup > radicast.json
$ sudo cp ./radicast.json /usr/local/etc/radicast.json
$ sudo chown radicast.radicast /usr/local/etc/radicast.json
録音番組編集
$ vi /usr/local/etc/radicast.json
過去ファイルの自動廃棄設定
$ sudo crontab -e
追加
0 5 * * * find /var/radicast/ -type d -mtime +15 | xargs rm -rf
※1行で記述すること
※日次05時に、作成から15日経過したディレクトリを削除
チャンネルアイコン
アイコンにしたいお好み画像ファイル(pngフォーマット)を「 radicast.png 」とし、
/var/radicast/
に格納する。
radicastの自動起動設定
サービス定義ファイル
$ sudo vi /etc/systemd/system/radicast.service
systemctlに読み込ませる[Unit] Description=radicast [recording radiko and serving rss for podcast] After=network.target multi-user.target [Service] Type=simple Restart=always User=radicast ExecStart=/usr/local/bin/radicast -config /usr/local/etc/radicast.json -host 192.168.0.81 -output /var/radicast -buffer 30 ExecStop=/bin/kill -WINCH ${MAINPID} [Install] WantedBy=multi-user.target
※ExecStart行は1行で記述すること
$ sudo systemctl daemon-reload
サービスの自動起動設定
$ sudo systemctl enable radicast.service
完成!
再起動してエラー確認