Proxmox上に録画サーバーを立ててみた2023
前書き
初版の事情で録画サーバーの再構築が必要になったので手順をメモ。
未完で終わっている前の記事の続編でもある。
TVerとかがあるのにまだ録画が必要なのかは割と微妙なところになりつつある。
使用機器
- DeskMini H110
- Proxmox 7.3
- Gemalt カードリーダー
- MyGica S270
目標
- LXCコンテナ上に録画環境を作る。
- Unprivilleged (デフォルト)
ホスト上での作業
LXCコンテナで作ると言っているのに、いきなりホスト上で作業とは…?
となるが、権限周りの理由によりホスト上での作業を行わないとどうにもできないところがある。
とりあえず、LXCコンテナは先に作っておく。(中身の設定はしていなくてよい)
ひとつは、デバイスをLXCコンテナに見せる際に、ホスト上のグループとLXCコンテナ上のグループが一致しない(lxc.idmapでどうにか出来るのかもしれないが試していない)ので、権限を緩める必要があること。
2つ目は、LXCコンテナの設定で、ProxmoxのGUIからはできない設定を入れることの2つ。
順に記述していく。
デバイスのアクセス権限設定
チューナーデバイスは、/dev/dvb/adapterN にマップされている。(ディレクトリであり、配下に demux0,frontend0,dvr0 のようなファイルを持つ)
PCカードリーダーは、/dev/bus/usb/XXX/YYY である。XXXとYYYは lsusb コマンドの出力の先頭にかかれている Bus XXX Device YYY から取得できる。
1 | Bus 001 Device 004: ID 08e6:3437 Gemalto (was Gemplus) GemPC Twin SmartCard Reader |
udevルールの作成
以下の内容のファイルを /etc/udev/rules.d/99-custom.rules という名前で保存する。
udevは、デバイスが接続されたときにいい感じにデバイスファイルを作成してくれるデーモンである。
1 | # smartcard reader |
内容は、idVendro idProductはモノによって異なるので、lsusb で調べてほしい。
兎にも角にも、アクセス権を 666 で作ってくれ。ということをお願いしている。
※ PT3の場合は、lspci を使えばわかるかもしれないが、所有していないので不明
作成後は、以下のコマンドで適用できる。再起動しても良い。
1 | udevadm control --reload |
udevルールが適用されたか確認
適用されたか確認する。 先頭部分が crw-rw-rw- であればOK
ls -l /dev/bus/usb/001/004
1 | crw-rw-rw- 1 root root 189, 3 Apr 23 17:45 /dev/bus/usb/001/004 |
ls -l /dev/dvb/adapter0
1 | crw-rw-rw- 1 root video 212, 0 Apr 23 17:43 demux0 |
LXCコンテナの設定
あとは、LXCコンテナにデバイスを見せるような設定を追加するだけ。/etc/pve/lxc/CTID.conf に以下の行を追加する。 CTIDはProxmoxに表示されている 102 みたいな数字。
1 | lxc.cgroup.devices.allow: c 189:* rwm |
lxc.cgroup.devices.allow はデバイスへのアクセス許可をするもの。先程の確認時に ls -l した際に表示された数値を入れる。lxc.mount.entry はホスト上のファイルをLXCコンテナ上のどこにマップするかという設定。
蛇足:
/dev/dvb以下を全部マップしても良いかもしれない。mode=0666は多分不要- 動いたら怖くて触りたくないのが本音
LXCコンテナ上の設定
設定は以下の方針とした。
- コンテナはdebian 11
- Mirakurun は直接入れる
- EPGStationはdockerを使う
基本的な色々を入れる
- docker https://docs.docker.com/engine/install/debian/
- Node.js 18 https://github.com/nodesource/distributions#using-debian-as-root-2
- デコーダ https://github.com/tsukumijima/libaribb25
- ↑のデコーダは本家と違い
pcscdが動いている必要があるので注意
Mirakurunを入れる
- https://github.com/Chinachu/Mirakurun/blob/master/doc/Platforms.md#linux
sudo apt install dvb-tools
チャンネルの設定は省略。チャンネルスキャンがあるのでどうにかなるはず
1 | - name: MYGICA_S270_0 |
EPGStation
docker-composeで動かすので省略。docker-compose.ymlは以下の通り。
https://gist.github.com/yakumo-saki/07156c4f6a9b9f7f4c22e0f2bbabfdd4
config等はよしなに行ってほしい。
蛇足
Mirakurunがdockerコンテナではない理由
pullした際に以下のように怒られる為。これが解決できるならMirakurunもコンテナで動かせる。
1 | failed to register layer: ApplyLayer exit status 1 stdout: stderr: failed to Lchown "/app/node_modules/statuses/HISTORY.md" for UID 1516583083, GID 0 (try increasing the number of subordinate IDs in /etc/subuid and /etc/subgid): lchown /app/node_modules/statuses/HISTORY.md: invalid argument |