HomeTV5
の編集
index.php?HomeTV5
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
#contents() ** サーバー環境更新(PT3 ドライバー変更) [#q47ef6a1] *** Ubuntu 24.04 Server [#e47ab5b1] -- [[IPv6 無効化:https://qiita.com/nouernet/items/c7a514921bc040b8e816]] ← npm がデフォルトで IPv6 接続を試みてエラーになる問題への対処 -- [[chrony:]] 設定(タイムソースを nict に変更 → /etc/chrony/chrony.conf) [KGB2] munakata:~$ chronyc sources MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^? ntp-k1.nict.jp 1 6 3 2 -158us[ -158us] +/- 8769us ^? ntp-a2.nict.go.jp 1 6 3 2 +142us[ +142us] +/- 4416us ^? ntp-a3.nict.go.jp 1 6 3 1 -280us[ -280us] +/- 4205us ^? ntp-b2.nict.go.jp 1 6 3 2 -28us[ -28us] +/- 3986us *** PT3 Upstreamドライバー [#a961a64c] - 何もドライバーを追加ンストールしなくても &color(red){PT3がDVB デバイスとして認識}; されている -- デバイス名が異なるので設定ファイルは変更する必要がある [KGB2] munakata:~$ ls -l /dev/dvb/ 合計 0 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter0 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter1 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter2 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter3 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter4 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter5 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter6 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter7 - &color(red){DVB デバイスを使って録画する};(従来の recpt1 は使わない) -- B-Casカードによる復調に対応していないのでソフトCAS(=arib-b25-stream-test)を使う -- &ref(ARIBSTD-B1_ARIB STD-B25 ライブラリ.pdf); --- libaribb25 の Debian パッケージをインストールすると、arib-b25-stream-test もインストールされます! --- npm の arib-b25-stream-test は6年以上前の相当古い libarib25 がベースで一切更新されていないので、個人的にはこちらがおすすめです。 -- [[libaribb25 (github):https://github.com/tsukumijima/libaribb25]] [KGB2] munakata:~$ sudo apt install cmake libpcsclite1 libpcsclite-dev pkg-config [KGB2] munakata:~$ cmake -B build [KGB2] munakata:~$ cd build [KGB2] munakata:~$ make [KGB2] munakata:~$ sudo make install ** [[Mirakurun:https://github.com/Chinachu/Mirakurun]] [#z9b94649] *** (重要) mirakurun は &color(red){root}; としてインストールする [#h31f5a4e] - channel 設定ファイル [#y7843082] -- /usr/local/etc/mirakurun/channels.yml -- &ref(channels.yml); -- 参考URI --- [[Mirakurunのチューナー設定(DVBデバイスを使う場合):https://nyanonon.hatenablog.com/entry/20190909/1568040000]] ** [[EPGStation:https://github.com/l3tnun/EPGStation.git]] [#sa899dbc] *** (重要) mirakurun は &color(red){一般ユーザー}; としてインストールする [#q7a32ad5] - 公式のインストール手順に従う [KGB2] munakata:~/git$$ git clone https://github.com/l3tnun/EPGStation.git [KGB2] munakata:~/git$ cd EPGStation [KGB2] munakata:~/git/EPGStation$ npm run all-install [KGB2] munakata:~/git/EPGStation$ npm run build - config.yml -- &ref(config.yml); - 初回起動(npm 直接、pm2 利用) -- npm 版 [KGB2] munakata:~/git/EPGStation$ $ npm start [KGB2] munakata:~/git/EPGStation$ $ npm stop -- pm2 利用版(pm2 を利用して自動起動設定が可能です) 初回のみ以下の起動設定が必要です [KGB2] munakata:~/git/EPGStation$ sudo npm install pm2 -g [KGB2] munakata:~/git/EPGStation$ sudo pm2 startup ubuntu [KGB2] munakata:~/git/EPGStation$ pm2 start dist/index.js --name "epgstation" [KGB2] munakata:~/git/EPGStation$ pm2 save [KGB2] munakata:~/git/EPGStation$ pm2 stop epgstation(自動起動した EPGStation を終了) [KGB2] munakata:~/git/EPGStation$ pm2 status -&ref(pm2_epgstation.png); *** サーバー設定(今回変更) [#f2c60dfc] - ルールファイルが勝手に?変更され、録画済みのファイルが消える問題を解析していた仮定で、&color(red){リバースプロキシー経由で外部からアクセスされている懸念}; が浮上 - 以下のアクセス情報の変更を実施後に症状が改善された。→ ということは? - %%ポート= &color(red){8987}; ← 8888 から変更 (20240813 更新)%% - ポート= &color(red){8986}; ← 8987 から変更 (20241205 更新)以下のエラー(原因は不明だが)の対策として [2024-12-04T20:15:43.708] [FATAL] system - uncaughtException: Error: listen EADDRINUSE: address already in use 0.0.0.0:8987 -- 待ち受けポートの変更は apache2 の設定ファイル変更と、epgstation の config.yaml の修正が必要 - アクセス情報 --- user = munakata --- pass = frex7785TVR (20240813 更新) *** 「設定ダウンロードに失敗しました」 エラーへの対処 [#v15ac144] - 発生時のログ( ~/git/EPGStation/logs/Service/system.log [2024-12-28T12:01:10.563] [INFO] system - config.yml read success [2024-12-28T12:01:10.755] [INFO] system - SocketIO Server has started. [2024-12-28T12:01:10.759] [FATAL] system - uncaughtException: Error: listen EADDRINUSE: address already in use 0.0.0.0:8986 [2024-12-28T12:01:21.817] [FATAL] system - uncaughtException: Error [ERR_IPC_CHANNEL_CLOSED]: Channel closed - lsof で該当ポート(8986)を利用しているプロセスを確認する - ポートが利用中というエラーだがゾンビプロセスとなった apach2 がポートを開放していない [KGB2] munakata:~/git/EPGStation/logs$ sudo lsof -i :8986 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 2590 root 19u IPv6 19756 0t0 TCP *:8986 (LISTEN) apache2 6740 www-data 18u IPv4 56285 0t0 TCP kgb2:59178->kgb2:8986 (CLOSE_WAIT) apache2 6742 www-data 18u IPv4 45800 0t0 TCP kgb2:59220->kgb2:8986 (CLOSE_WAIT) apache2 6743 www-data 18u IPv4 61566 0t0 TCP kgb2:59174->kgb2:8986 (CLOSE_WAIT) apache2 6764 www-data 18u IPv4 53031 0t0 TCP kgb2:59228->kgb2:8986 (CLOSE_WAIT) apache2 7049 www-data 18u IPv4 60770 0t0 TCP kgb2:59180->kgb2:8986 (CLOSE_WAIT) apache2 8728 www-data 18u IPv4 56621 0t0 TCP kgb2:59196->kgb2:8986 (CLOSE_WAIT) apache2 8729 www-data 18u IPv4 56288 0t0 TCP kgb2:59224->kgb2:8986 (CLOSE_WAIT) apache2 8731 www-data 18u IPv4 53028 0t0 TCP kgb2:59210->kgb2:8986 (CLOSE_WAIT) ** 「設定ダウンロードに失敗しました」 エラーへの対処(決定版)ChatGPTが全部教えてくれた [#ee5d3fb1] *** リバースプロキシ設定の見直し [#sf8c4395] - keepalive=On を disablereuse=on に変更した # Reverse Proxy setting (for remote EPGStation access) ProxyRequests off #ProxyPass / http://192.168.11.20:8986/ #ProxyPass / http://192.168.11.20:8986/ connectiontimeout=5 timeout=30 keepalive=On ProxyPass / http://192.168.11.20:8986/ connectiontimeout=5 timeout=30 disablereuse=on ProxyPassReverse / http://192.168.11.20:8986/ *** EPGStation の停止 [#u3ef48d6] [KGB2] munakata:~$ sudo pm2 stop epgstation [PM2] Applying action stopProcessId on app [epgstation](ids: [ 1 ]) [PM2] [epgstation](1) ✓ ┌────┬──────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├────┼──────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 1 │ epgstation │ default │ 2.10.0 │ fork │ 0 │ 0 │ 2 │ stopped │ 0% │ 0b │ root │ disabled │ └────┴──────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘ Module ┌────┬──────────────────────────────┬───────────────┬──────────┬──────────┬──────┬──────────┬──────────┬──────────┐ │ id │ module │ version │ pid │ status │ ↺ │ cpu │ mem │ user │ ├────┼──────────────────────────────┼───────────────┼──────────┼──────────┼──────┼──────────┼──────────┼──────────┤ │ 0 │ pm2-logrotate │ 2.7.0 │ 60454 │ online │ 0 │ 0% │ 67.7mb │ root │ └────┴──────────────────────────────┴───────────────┴──────────┴──────────┴──────┴──────────┴──────────┴──────────┘ *** 8986番ポートの開放 [#sd13a099] [KGB2] munakata:~$ sudo lsof -i :8986 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 60654 root 19u IPv6 317072 0t0 TCP *:8986 (LISTEN) [KGB2] munakata:~$ sudo kill -9 60654 [KGB2] munakata:~$ sudo lsof -i :8986 *** EPGStation の再起動 [#se156d69] [KGB2] munakata:~$ sudo pm2 start epgstation [PM2] Applying action restartProcessId on app [epgstation](ids: [ 1 ]) [PM2] [epgstation](1) ✓ [PM2] Process successfully started ┌────┬──────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├────┼──────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 1 │ epgstation │ default │ 2.10.0 │ fork │ 82603 │ 0s │ 2 │ online │ 0% │ 16.6mb │ root │ disabled │ └────┴──────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘ Module ┌────┬──────────────────────────────┬───────────────┬──────────┬──────────┬──────┬──────────┬──────────┬──────────┐ │ id │ module │ version │ pid │ status │ ↺ │ cpu │ mem │ user │ ├────┼──────────────────────────────┼───────────────┼──────────┼──────────┼──────┼──────────┼──────────┼──────────┤ │ 0 │ pm2-logrotate │ 2.7.0 │ 60454 │ online │ 0 │ 0% │ 68.5mb │ root │ └────┴──────────────────────────────┴───────────────┴──────────┴──────────┴──────┴──────────┴──────────┴──────────┘ *** 自動リカバリースクリプト [#d3ae7ee9] - &ref(epgstation-recover.sh,center,/usr/local/bin/epgstation-recover.sh); sudo chmod +x /usr/local/bin/epgstation-recover.sh sudo crontab -e - crontab の設定内容 */5 * * * * /usr/local/bin/epgstation-recover.sh *** Mirakurun の Docker 化 [#w386b415] - Mirakurun が pm2 サポートを終了し、Docker コンテナ実行だけをサポートするようになった。 - Docker 化された Mirakurun と pm2 起動の Epgstation を組み合わせて実行することは何も問題ない - [[起動方法(Start / Stop / Restart):https://github.com/Chinachu/Mirakurun/blob/master/doc/Platforms.md#start--stop--restart]] Start / Stop / Restart cd ~/mirakurun/ # Start docker compose up -d # Stop docker compose down # Restart docker compose up -d --force-recreate - [[設定方法(Installation / Uninstallation / Update):https://github.com/Chinachu/Mirakurun/blob/master/doc/Platforms.md#installation--uninstallation--update]] # Create: /opt/mirakurun/ sudo mv -vf /usr/local/mirakurun /opt/mirakurun sudo mkdir -p /opt/mirakurun/run /opt/mirakurun/opt /opt/mirakurun/config /opt/mirakurun/data # Installation mkdir ~/mirakurun/ cd ~/mirakurun/ wget https://raw.githubusercontent.com/Chinachu/Mirakurun/refs/heads/release/4.0.0/docker/docker-compose.yml docker compose pull docker compose run --rm -e SETUP=true mirakurun docker compose up -d # Uninstallation cd ~/mirakurun/ docker compose down --rmi all # Update cd ~/mirakurun/ docker compose down --rmi all docker compose pull docker compose up -d - mirakurun の自動起動設定(systemd のサービスに登録) -- &ref(mirakurun.service,center,設定ファイル); ---> /etc/systemd/system/mirakurun.service [Unit] Description=Mirakurun Docker Compose Service After=network-online.target docker.service Wants=network-online.target [Service] Type=oneshot RemainAfterExit=true WorkingDirectory=/raid_vol/home/munakata/mirakurun ExecStart=/usr/bin/docker compose up -d ExecStop=/usr/bin/docker compose down TimeoutStartSec=0 [Install] WantedBy=multi-user.target -- サービスの登録と有効化 --- systemdに認識させる sudo systemctl daemon-reexec sudo systemctl daemon-reload --- 自動起動を有効化 sudo systemctl enable mirakurun.service --- テスト起動(念のため) sudo systemctl start mirakurun.service --- ステータス確認 sudo systemctl status mirakurun.service *** サーバー全体の挙動不安定に起因する録画サーバーの不動作の解析 [#uc5f1fce] - systemd-journald の状態異常 これはファイルシステムよりも、/run または journald が使用する Unix domain socket の破損・リソース枯渇・名前空間の問題である可能性が高いです。 -- /run は tmpfs 上なので、リブートで揮発するデータに依存 -- journald のデータベースファイル (/var/log/journal/...) 破損の可能性も考慮すべき -- &color(red){systemd-journald が Watchdog 通知を送信できないまま長時間動作しているのは明らかに異常}; - 対策 -- ① journald のログ格納先をバックアップ・削除 sudo mv /var/log/journal /var/log/journal.bak sudo mkdir /var/log/journal sudo systemd-tmpfiles --create --prefix /var/log/journal sudo systemctl restart systemd-journald -- ② 再起動時の fsck を強制的に実行 sudo touch /forcefsck sudo reboot -- この対応によりサーバーの異常が解消され、録画エラーも解決したように見えている - 問題の背景(systemd の cgroup/scopes が壊れている) -- &color(red){Ubuntu 22.04 + Docker + systemd で以下のような悪循環が発生している}; --- /run や cgroup2 namespace が破損 → journald のユニット制御不能 --- journald → systemd に状態通知不可(WATCHDOG=1 送れない) --- systemd → Docker scope 割り当て失敗 --- &color(red){すべてのサービス操作が 25秒タイムアウトで詰まる}; -- このパターンは 再起動で回復することがあるが、&color(red){fsck や systemd の再整備をしないと再発する}; という非常にやっかいな状態です。 - 長期的対策(このような状況が定期的に再発するようであれば) -- journald → rsyslog 等への切り替え検討 -- カーネルバージョン(6.8.0-60)と systemd バージョンの互換性も疑ってみる価値あり -- また、NVMeのコントローラドライバ不整合や udev 問題も稀に関連するのでカーネルログ全体の追跡も推奨
タイムスタンプを変更しない
#contents() ** サーバー環境更新(PT3 ドライバー変更) [#q47ef6a1] *** Ubuntu 24.04 Server [#e47ab5b1] -- [[IPv6 無効化:https://qiita.com/nouernet/items/c7a514921bc040b8e816]] ← npm がデフォルトで IPv6 接続を試みてエラーになる問題への対処 -- [[chrony:]] 設定(タイムソースを nict に変更 → /etc/chrony/chrony.conf) [KGB2] munakata:~$ chronyc sources MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^? ntp-k1.nict.jp 1 6 3 2 -158us[ -158us] +/- 8769us ^? ntp-a2.nict.go.jp 1 6 3 2 +142us[ +142us] +/- 4416us ^? ntp-a3.nict.go.jp 1 6 3 1 -280us[ -280us] +/- 4205us ^? ntp-b2.nict.go.jp 1 6 3 2 -28us[ -28us] +/- 3986us *** PT3 Upstreamドライバー [#a961a64c] - 何もドライバーを追加ンストールしなくても &color(red){PT3がDVB デバイスとして認識}; されている -- デバイス名が異なるので設定ファイルは変更する必要がある [KGB2] munakata:~$ ls -l /dev/dvb/ 合計 0 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter0 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter1 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter2 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter3 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter4 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter5 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter6 drwxr-xr-x 2 root root 100 7月 30 12:54 adapter7 - &color(red){DVB デバイスを使って録画する};(従来の recpt1 は使わない) -- B-Casカードによる復調に対応していないのでソフトCAS(=arib-b25-stream-test)を使う -- &ref(ARIBSTD-B1_ARIB STD-B25 ライブラリ.pdf); --- libaribb25 の Debian パッケージをインストールすると、arib-b25-stream-test もインストールされます! --- npm の arib-b25-stream-test は6年以上前の相当古い libarib25 がベースで一切更新されていないので、個人的にはこちらがおすすめです。 -- [[libaribb25 (github):https://github.com/tsukumijima/libaribb25]] [KGB2] munakata:~$ sudo apt install cmake libpcsclite1 libpcsclite-dev pkg-config [KGB2] munakata:~$ cmake -B build [KGB2] munakata:~$ cd build [KGB2] munakata:~$ make [KGB2] munakata:~$ sudo make install ** [[Mirakurun:https://github.com/Chinachu/Mirakurun]] [#z9b94649] *** (重要) mirakurun は &color(red){root}; としてインストールする [#h31f5a4e] - channel 設定ファイル [#y7843082] -- /usr/local/etc/mirakurun/channels.yml -- &ref(channels.yml); -- 参考URI --- [[Mirakurunのチューナー設定(DVBデバイスを使う場合):https://nyanonon.hatenablog.com/entry/20190909/1568040000]] ** [[EPGStation:https://github.com/l3tnun/EPGStation.git]] [#sa899dbc] *** (重要) mirakurun は &color(red){一般ユーザー}; としてインストールする [#q7a32ad5] - 公式のインストール手順に従う [KGB2] munakata:~/git$$ git clone https://github.com/l3tnun/EPGStation.git [KGB2] munakata:~/git$ cd EPGStation [KGB2] munakata:~/git/EPGStation$ npm run all-install [KGB2] munakata:~/git/EPGStation$ npm run build - config.yml -- &ref(config.yml); - 初回起動(npm 直接、pm2 利用) -- npm 版 [KGB2] munakata:~/git/EPGStation$ $ npm start [KGB2] munakata:~/git/EPGStation$ $ npm stop -- pm2 利用版(pm2 を利用して自動起動設定が可能です) 初回のみ以下の起動設定が必要です [KGB2] munakata:~/git/EPGStation$ sudo npm install pm2 -g [KGB2] munakata:~/git/EPGStation$ sudo pm2 startup ubuntu [KGB2] munakata:~/git/EPGStation$ pm2 start dist/index.js --name "epgstation" [KGB2] munakata:~/git/EPGStation$ pm2 save [KGB2] munakata:~/git/EPGStation$ pm2 stop epgstation(自動起動した EPGStation を終了) [KGB2] munakata:~/git/EPGStation$ pm2 status -&ref(pm2_epgstation.png); *** サーバー設定(今回変更) [#f2c60dfc] - ルールファイルが勝手に?変更され、録画済みのファイルが消える問題を解析していた仮定で、&color(red){リバースプロキシー経由で外部からアクセスされている懸念}; が浮上 - 以下のアクセス情報の変更を実施後に症状が改善された。→ ということは? - %%ポート= &color(red){8987}; ← 8888 から変更 (20240813 更新)%% - ポート= &color(red){8986}; ← 8987 から変更 (20241205 更新)以下のエラー(原因は不明だが)の対策として [2024-12-04T20:15:43.708] [FATAL] system - uncaughtException: Error: listen EADDRINUSE: address already in use 0.0.0.0:8987 -- 待ち受けポートの変更は apache2 の設定ファイル変更と、epgstation の config.yaml の修正が必要 - アクセス情報 --- user = munakata --- pass = frex7785TVR (20240813 更新) *** 「設定ダウンロードに失敗しました」 エラーへの対処 [#v15ac144] - 発生時のログ( ~/git/EPGStation/logs/Service/system.log [2024-12-28T12:01:10.563] [INFO] system - config.yml read success [2024-12-28T12:01:10.755] [INFO] system - SocketIO Server has started. [2024-12-28T12:01:10.759] [FATAL] system - uncaughtException: Error: listen EADDRINUSE: address already in use 0.0.0.0:8986 [2024-12-28T12:01:21.817] [FATAL] system - uncaughtException: Error [ERR_IPC_CHANNEL_CLOSED]: Channel closed - lsof で該当ポート(8986)を利用しているプロセスを確認する - ポートが利用中というエラーだがゾンビプロセスとなった apach2 がポートを開放していない [KGB2] munakata:~/git/EPGStation/logs$ sudo lsof -i :8986 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 2590 root 19u IPv6 19756 0t0 TCP *:8986 (LISTEN) apache2 6740 www-data 18u IPv4 56285 0t0 TCP kgb2:59178->kgb2:8986 (CLOSE_WAIT) apache2 6742 www-data 18u IPv4 45800 0t0 TCP kgb2:59220->kgb2:8986 (CLOSE_WAIT) apache2 6743 www-data 18u IPv4 61566 0t0 TCP kgb2:59174->kgb2:8986 (CLOSE_WAIT) apache2 6764 www-data 18u IPv4 53031 0t0 TCP kgb2:59228->kgb2:8986 (CLOSE_WAIT) apache2 7049 www-data 18u IPv4 60770 0t0 TCP kgb2:59180->kgb2:8986 (CLOSE_WAIT) apache2 8728 www-data 18u IPv4 56621 0t0 TCP kgb2:59196->kgb2:8986 (CLOSE_WAIT) apache2 8729 www-data 18u IPv4 56288 0t0 TCP kgb2:59224->kgb2:8986 (CLOSE_WAIT) apache2 8731 www-data 18u IPv4 53028 0t0 TCP kgb2:59210->kgb2:8986 (CLOSE_WAIT) ** 「設定ダウンロードに失敗しました」 エラーへの対処(決定版)ChatGPTが全部教えてくれた [#ee5d3fb1] *** リバースプロキシ設定の見直し [#sf8c4395] - keepalive=On を disablereuse=on に変更した # Reverse Proxy setting (for remote EPGStation access) ProxyRequests off #ProxyPass / http://192.168.11.20:8986/ #ProxyPass / http://192.168.11.20:8986/ connectiontimeout=5 timeout=30 keepalive=On ProxyPass / http://192.168.11.20:8986/ connectiontimeout=5 timeout=30 disablereuse=on ProxyPassReverse / http://192.168.11.20:8986/ *** EPGStation の停止 [#u3ef48d6] [KGB2] munakata:~$ sudo pm2 stop epgstation [PM2] Applying action stopProcessId on app [epgstation](ids: [ 1 ]) [PM2] [epgstation](1) ✓ ┌────┬──────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├────┼──────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 1 │ epgstation │ default │ 2.10.0 │ fork │ 0 │ 0 │ 2 │ stopped │ 0% │ 0b │ root │ disabled │ └────┴──────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘ Module ┌────┬──────────────────────────────┬───────────────┬──────────┬──────────┬──────┬──────────┬──────────┬──────────┐ │ id │ module │ version │ pid │ status │ ↺ │ cpu │ mem │ user │ ├────┼──────────────────────────────┼───────────────┼──────────┼──────────┼──────┼──────────┼──────────┼──────────┤ │ 0 │ pm2-logrotate │ 2.7.0 │ 60454 │ online │ 0 │ 0% │ 67.7mb │ root │ └────┴──────────────────────────────┴───────────────┴──────────┴──────────┴──────┴──────────┴──────────┴──────────┘ *** 8986番ポートの開放 [#sd13a099] [KGB2] munakata:~$ sudo lsof -i :8986 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 60654 root 19u IPv6 317072 0t0 TCP *:8986 (LISTEN) [KGB2] munakata:~$ sudo kill -9 60654 [KGB2] munakata:~$ sudo lsof -i :8986 *** EPGStation の再起動 [#se156d69] [KGB2] munakata:~$ sudo pm2 start epgstation [PM2] Applying action restartProcessId on app [epgstation](ids: [ 1 ]) [PM2] [epgstation](1) ✓ [PM2] Process successfully started ┌────┬──────────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐ │ id │ name │ namespace │ version │ mode │ pid │ uptime │ ↺ │ status │ cpu │ mem │ user │ watching │ ├────┼──────────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤ │ 1 │ epgstation │ default │ 2.10.0 │ fork │ 82603 │ 0s │ 2 │ online │ 0% │ 16.6mb │ root │ disabled │ └────┴──────────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘ Module ┌────┬──────────────────────────────┬───────────────┬──────────┬──────────┬──────┬──────────┬──────────┬──────────┐ │ id │ module │ version │ pid │ status │ ↺ │ cpu │ mem │ user │ ├────┼──────────────────────────────┼───────────────┼──────────┼──────────┼──────┼──────────┼──────────┼──────────┤ │ 0 │ pm2-logrotate │ 2.7.0 │ 60454 │ online │ 0 │ 0% │ 68.5mb │ root │ └────┴──────────────────────────────┴───────────────┴──────────┴──────────┴──────┴──────────┴──────────┴──────────┘ *** 自動リカバリースクリプト [#d3ae7ee9] - &ref(epgstation-recover.sh,center,/usr/local/bin/epgstation-recover.sh); sudo chmod +x /usr/local/bin/epgstation-recover.sh sudo crontab -e - crontab の設定内容 */5 * * * * /usr/local/bin/epgstation-recover.sh *** Mirakurun の Docker 化 [#w386b415] - Mirakurun が pm2 サポートを終了し、Docker コンテナ実行だけをサポートするようになった。 - Docker 化された Mirakurun と pm2 起動の Epgstation を組み合わせて実行することは何も問題ない - [[起動方法(Start / Stop / Restart):https://github.com/Chinachu/Mirakurun/blob/master/doc/Platforms.md#start--stop--restart]] Start / Stop / Restart cd ~/mirakurun/ # Start docker compose up -d # Stop docker compose down # Restart docker compose up -d --force-recreate - [[設定方法(Installation / Uninstallation / Update):https://github.com/Chinachu/Mirakurun/blob/master/doc/Platforms.md#installation--uninstallation--update]] # Create: /opt/mirakurun/ sudo mv -vf /usr/local/mirakurun /opt/mirakurun sudo mkdir -p /opt/mirakurun/run /opt/mirakurun/opt /opt/mirakurun/config /opt/mirakurun/data # Installation mkdir ~/mirakurun/ cd ~/mirakurun/ wget https://raw.githubusercontent.com/Chinachu/Mirakurun/refs/heads/release/4.0.0/docker/docker-compose.yml docker compose pull docker compose run --rm -e SETUP=true mirakurun docker compose up -d # Uninstallation cd ~/mirakurun/ docker compose down --rmi all # Update cd ~/mirakurun/ docker compose down --rmi all docker compose pull docker compose up -d - mirakurun の自動起動設定(systemd のサービスに登録) -- &ref(mirakurun.service,center,設定ファイル); ---> /etc/systemd/system/mirakurun.service [Unit] Description=Mirakurun Docker Compose Service After=network-online.target docker.service Wants=network-online.target [Service] Type=oneshot RemainAfterExit=true WorkingDirectory=/raid_vol/home/munakata/mirakurun ExecStart=/usr/bin/docker compose up -d ExecStop=/usr/bin/docker compose down TimeoutStartSec=0 [Install] WantedBy=multi-user.target -- サービスの登録と有効化 --- systemdに認識させる sudo systemctl daemon-reexec sudo systemctl daemon-reload --- 自動起動を有効化 sudo systemctl enable mirakurun.service --- テスト起動(念のため) sudo systemctl start mirakurun.service --- ステータス確認 sudo systemctl status mirakurun.service *** サーバー全体の挙動不安定に起因する録画サーバーの不動作の解析 [#uc5f1fce] - systemd-journald の状態異常 これはファイルシステムよりも、/run または journald が使用する Unix domain socket の破損・リソース枯渇・名前空間の問題である可能性が高いです。 -- /run は tmpfs 上なので、リブートで揮発するデータに依存 -- journald のデータベースファイル (/var/log/journal/...) 破損の可能性も考慮すべき -- &color(red){systemd-journald が Watchdog 通知を送信できないまま長時間動作しているのは明らかに異常}; - 対策 -- ① journald のログ格納先をバックアップ・削除 sudo mv /var/log/journal /var/log/journal.bak sudo mkdir /var/log/journal sudo systemd-tmpfiles --create --prefix /var/log/journal sudo systemctl restart systemd-journald -- ② 再起動時の fsck を強制的に実行 sudo touch /forcefsck sudo reboot -- この対応によりサーバーの異常が解消され、録画エラーも解決したように見えている - 問題の背景(systemd の cgroup/scopes が壊れている) -- &color(red){Ubuntu 22.04 + Docker + systemd で以下のような悪循環が発生している}; --- /run や cgroup2 namespace が破損 → journald のユニット制御不能 --- journald → systemd に状態通知不可(WATCHDOG=1 送れない) --- systemd → Docker scope 割り当て失敗 --- &color(red){すべてのサービス操作が 25秒タイムアウトで詰まる}; -- このパターンは 再起動で回復することがあるが、&color(red){fsck や systemd の再整備をしないと再発する}; という非常にやっかいな状態です。 - 長期的対策(このような状況が定期的に再発するようであれば) -- journald → rsyslog 等への切り替え検討 -- カーネルバージョン(6.8.0-60)と systemd バージョンの互換性も疑ってみる価値あり -- また、NVMeのコントローラドライバ不整合や udev 問題も稀に関連するのでカーネルログ全体の追跡も推奨
テキスト整形のルールを表示する
添付ファイル:
mirakurun.service
8件
[
詳細
]
epgstation-recover.sh
6件
[
詳細
]
pm2_epgstation.png
3件
[
詳細
]
channels.yml
14件
[
詳細
]
ARIBSTD-B1_ARIB STD-B25 ライブラリ.pdf
23件
[
詳細
]