rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

"mirakc + mysql + EPGStation"をPlex PX-W3U4を装着したXubuntu 22.04にインストール

2023 Dec. 31.
2023 Dec. 30.

下記手法ではブラウザからmirakcにもEPGStationにもアクセスできなかった。


出典
tv-recorder/README.md at master · collelog/tv-recorder · GitHub
https://github.com/collelog/tv-recorder/tree/master
tv-recorder on Raspberry Pi 4B/8GB | ColleLog

ロケールタイムゾーンを設定する

$ sudo apt update
$ sudo apt install language-pack-ja
$ sudo update-locale LANG=ja_JP.UTF-8
$ sudo timedatectl set-timezone Asia/Tokyo

時刻サーバーに同期させる

$ echo 'NTP=ntp.nict.jp' | sudo tee -a /etc/systemd/timesyncd.conf >/dev/null
$ echo 'FallbackNTP=ntp1.jst.mfeed.ad.jp ntp2.jst.mfeed.ad.jp ntp3.jst.mfeed.ad.jp' | sudo tee -a /etc/systemd/timesyncd.conf >/dev/null

// サービス再起動
$ sudo systemctl restart systemd-timesyncd

// 状態確認
$ systemctl status systemd-timesyncd

(オプション)swapを無効化する

$ sudo swapoff --all
$ sudo reboot

(オプション)/tmpをtmpfsにする

/etc/fstabに次の行を書き込み、システムを再起動する。
tmpfs /tmp tmpfs defaults,noatime 0 0

(オプション)ログをRAMディスクに書き込むようにする

$ echo "deb http://packages.azlux.fr/debian/ buster main" | sudo tee /etc/apt/sources.list.d/azlux.list
$ wget -qO - https://azlux.fr/repo.gpg.key | sudo apt-key add -
$ sudo apt update
$ sudo apt install -y log2ram

/etc/log2ram.confのSIZEとUSE_RSYNCの設定を次のようにする。
SIZE=256MB
USE_RSYNC=true

システムを再起動する。

PLEXチューナードライバをインストールする

参照先 PLEX PX-W3U4テレビチューナーをxubuntu 20.04で利用する - rokkonet

Docker (version 18.06.0 and higher), docker-compose (version 1.22.0 and higher)をインストールする

参照先 Docker、docker-composeをubuntuにインストール - rokkonet

録画ファイル保管場所と録画サムネイル画像ファイル保管場所を作成する

$ sudo mkdir /MY/RECORDED/FILE/DIR
$ sudo mkdir /MY/RECORDED/FILE/DIR/thumbnail
$ sudo chmod 777 /MY/RECORDED/FILE/DIR /MY/RECORDED/FILE/DIR/thumbnail

dockerファイルリポジトリをダウンロードする

$ mkdir ~/docker
$ cd ~/docker
$ git clone https://github.com/collelog/tv-recorder.git

docker-compose.ymlを作成する

$ cd ~/docker/tv-recorder
$ cp epgstation2-mirakc-amd64.yml docker-compose.yml
mirakcのチューナーデバイスの設定

~/docker/tv-recorder/docker-compose.yml のdevicesセクションの "- /dev/px4videoX" の行をPX-W3U4に合わせ次の4行以外はコメントアウトする。

        - /dev/px4video0
        - /dev/px4video1
        - /dev/px4video2
        - /dev/px4video3
EPGStationの録画ファイル保管場所設定

~/docker/tv-recorder/docker-compose.yml のservices -> epgstation -> volumesセクションの該当行を先に作成した録画ファイル保管ディレクトリに合わせて変更する。

(オリジナル)
  - ./epgstation2/thumbnail:/opt/epgstation/thumbnail
  - ./recorded:/opt/epgstation/recorded

(変更後)
  - /MY/RECORDED/FILE/DIR/thumbnail:/opt/epgstation/thumbnail
  - /MY/RECORDED/FILE/DIR:/opt/epgstation/recorded

EPGStationが利用するデータベースシステムをmysqlに変更する

コメントアウトされているdocker-compose.ymlファイルのmysql設定を本文に戻す。
mysql -> volumesセクションの/var/lib/mysqlの設定を "- mysql-db:/var/lib/mysql" と「名前付きボリューム」とし、ホストと共有できるようにする。
mysql -> environmentセクションを一般ユーザ設定に変更する。

オリジナル

        depends_on:
            - mirakc
#mysql#            - mysql

#mysql#    mysql:
#mysql#        <<: *default-service
#mysql#        <<: *default-network
#mysql#        container_name: epgstation2-mysql
#mysql#        image: collelog/mariadb:latest-10.4-alpine
#mysql#        ports:
#mysql#            - "3306:3306"
#mysql#        volumes:
#mysql#            - /etc/localtime:/etc/localtime:ro
#mysql#            - ./epgstation2-mysql/sock:/var/run/mysqld
#mysql#            - ./epgstation2-mysql/db:/var/lib/mysql
#mysql#            - ./epgstation2-mysql/init:/docker-entrypoint-initdb.d/
#mysql#        environment:
#mysql#            <<: *default-environment
#mysql#            MYSQL_ROOT_PASSWORD: epgstation
#mysql#        command: --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --performance-schema=false --expire_logs_days=1

変更後

        depends_on:
            - mirakc
            - mysql

    mysql:
        <<: *default-service
        <<: *default-network
        container_name: epgstation2-mysql
        image: collelog/mariadb:latest-10.4-alpine
        ports:
            - "3306:3306"
        volumes:
            - /etc/localtime:/etc/localtime:ro
            - ./epgstation2-mysql/sock:/var/run/mysqld
            # - ./epgstation2-mysql/db:/var/lib/mysql
            - mysql-db:/var/lib/mysql
            - ./epgstation2-mysql/init:/docker-entrypoint-initdb.d/
        environment:
            <<: *default-environment
            # MYSQL_ROOT_PASSWORD: epgstation
            MYSQL_USER: epgstation
            MYSQL_PASSWORD: epgstation
            MYSQL_ROOT_PASSWORD: epgstation
            MYSQL_DATABASE: epgstation
            TZ: "Asia/Tokyo"
        command: --character-set-server=utf8mb4 --collation-server=utf8mb4_bin --performance-schema=false --expire_logs_days=1

EPGStationの設定ファイルを作成する

ファイルをバックアップしておく
$ cd ~/docker/tv-recorder/epgstation2/config
$ mv config.yml config.yml.original
~/docker/tv-recorder/epgstation2/config/config.ymlを作成する
$ cd ~/docker/tv-recorder/epgstation2/config
$ cp ~/docker/tv-recorder/example-config/epgstation2-mysql/base/config/config.yml ./config.yml

~/docker/tv-recorder/epgstation2/config/config.ymlを次のように編集する。

(変更部分を抜粋)

# mirakurunPath: http://mirakc:40772/
mirakurunPath: http://MY/MIRAKC/IP/ADDRESS:40772/

dbtype: mysql
mysql:
    # host: epgstation2-mysql
    host: 127.0.0.1


# recordedFormat: '%YEAR%%MONTH%%DAY%_%HALF_WIDTH_TITLE%'
recordedFormat: '%SHORTYEAR%%MONTH%%DAY%%HOUR%%MIN%%TYPE%%CH%-%SID%-%CHNAME%-%TITLE%'


recorded:
    - name: recorded
      path: '/opt/epgstation/recorded'

mirakc設定を行う

参考 mirakc/docs/config.md at main · mirakc/mirakc · GitHub

$ cd ~/docker/tv-recorder/mirakc/conf
$ cp config.yml config.yml.original

~/docker/tv-recorder/mirakc/conf/config.yml を次の内容に編集する。
チャンネル設定、チューナー設定を行う。
次の内容とした。

epg:
  cache-dir: /var/lib/mirakc/epg

server:
  addrs:
    - http: 0.0.0.0:40772
    - unix: /var/run/mirakurun/mirakurun.sock

channels:
  - name: NHK総合
    type: GR
    channel: '22'

  - name: NHKEテレ
    type: GR
    channel: '13'

  - name: サンテレビ
    type: GR
    channel: '26'

  - name: MBS毎日放送
    type: GR
    channel: '16'

  - name: ABCテレビ
    type: GR
    channel: '15'

  - name: テレビ大阪
    type: GR
    channel: '18'

  - name: 関西テレビ
    type: GR
    channel: '17'

  - name: 読売テレビ
    type: GR
    channel: '14'

  - name: J:COMテレビ
    type: GR
    channel: '19'

  - name: J:COMチャンネル
    type: GR
    channel: '24'

  - name: 'NHKBS1'
    type: 'BS'
    channel: 'BS15_0'
    services: [101]

  - name: 'NHKBS1'
    type: 'BS'
    channel: 'BS15_0'
    services: [102]

  - name: 'BS日テレ'
    type: 'BS'
    channel: 'BS13_0'
    services: [141]

  - name: 'BS日テレ'
    type: 'BS'
    channel: 'BS13_0'
    services: [142]

  - name: 'BS日テレ'
    type: 'BS'
    channel: 'BS13_0'
    services: [143]

  - name: 'BS朝日1'
    type: 'BS'
    channel: 'BS1_0'
    services: [151]

  - name: 'BS朝日2'
    type: 'BS'
    channel: 'BS1_0'
    services: [152]

  - name: 'BS朝日3'
    type: 'BS'
    channel: 'BS1_0'
    services: [153]

  - name: 'BS-TBS'
    type: 'BS'
    channel: 'BS1_1'
    services: [161]

  - name: 'BS-TBS'
    type: 'BS'
    channel: 'BS1_1'
    services: [162]

  - name: 'BS-TBS'
    type: 'BS'
    channel: 'BS1_1'
    services: [163]

  - name: 'BSテレ東'
    type: 'BS'
    channel: 'BS1_2'
    services: [171]

  - name: 'BSテレ東2'
    type: 'BS'
    channel: 'BS1_2'
    services: [172]

  - name: 'BSテレ東3'
    type: 'BS'
    channel: 'BS1_2'
    services: [173]

  - name: 'BSフジ・181'
    type: 'BS'
    channel: 'BS13_1'
    services: [181]

  - name: 'BSフジ・182'
    type: 'BS'
    channel: 'BS13_1'
    services: [182]

  - name: 'BSフジ・183'
    type: 'BS'
    channel: 'BS13_1'
    services: [183]

  - name: 'BS11イレブン'
    type: 'BS'
    channel: 'BS9_0'
    services: [211]

  - name: 'BS12トゥエルビ'
    type: 'BS'
    channel: 'BS9_2'
    services: [222]

  - name: '放送大学ex'
    type: 'BS'
    channel: 'BS11_1'
    services: [231]

  - name: '放送大学on'
    type: 'BS'
    channel: 'BS11_1'
    services: [232]

  - name: '放送大学ラジオ'
    type: 'BS'
    channel: 'BS11_1'
    services: [531]
    disabled: true

  - name: 'BS松竹東急'
    type: 'BS'
    channel: 'BS23_3'
    services: [260]

  - name: 'BSJapanext'
    type: 'BS'
    channel: 'BS23_2'
    services: [263]

  - name: 'BSよしもと'
    type: 'BS'
    channel: 'BS23_1'
    services: [265]

tuners:
  - name: PX-W3U4_S1
    types: [BS,CS]
    command: >-
      recpt1 --device /dev/px4video0 {{channel}} {{duration}} -
    disabled: false

  - name: PX-W3U4_S2
    types: [BS,CS]
    command: >-
      recpt1 --device /dev/px4video1 {{channel}} {{duration}} -
    disabled: false

  - name: PX-W3U4_T1
    types: [GR]
    command: >-
      recpt1 --device /dev/px4video2 {{channel}} {{duration}} -
    disabled: false

  - name: PX-W3U4_T2
    types: [GR]
    command: >-
      recpt1 --device /dev/px4video3 {{channel}} {{duration}} -
    disabled: false

filters:
  decode-filter:
    command: arib-b25-stream-test

pcscd の無効化

pcscdを確実に停止しておく

$ sudo systemctl stop pcscd.socket
$ sudo systemctl disable pcscd.socket
$ sudo systemctl status pcscd.socket


録画システム起動

$ cd ~/docker/tv-recorder
$ docker-compose -f ./docker-compose.yml up -d

録画システム停止

$ cd ~/docker/tv-recorder
$ docker-compose -f  ./docker-compose.yml down