#author("2025-12-31T06:07:00+00:00","","")
#author("2025-12-31T06:12:18+00:00","","")
#contents();
** mirakurun (Tuner Server) のインストール [#ndceae01]
*** Docker のインストール [#c6218575]
- Docker / Compose をインストール(Ubuntu公式推奨のDocker公式リポジトリ)
 sudo apt update
 sudo apt install -y ca-certificates curl gnupg
 
 sudo install -m 0755 -d /etc/apt/keyrings
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
 sudo chmod a+r /etc/apt/keyrings/docker.gpg
 
 echo \
   "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
   $(. /etc/os-release && echo ${UBUNTU_CODENAME}) stable" \
 | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
 
 sudo apt update
 sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

- sudo なしで docker を使うための設定
 sudo usermod -aG docker $USER
 newgrp docker

- 動作確認
 [KGB2] munakata:~$  docker run --rm hello-world
 Unable to find image 'hello-world:latest' locally
 latest: Pulling from library/hello-world
 17eec7bbc9d7: Pull complete 
 ea52d2000f90: Download complete 
 Digest: sha256:d4aaab6242e0cace87e2ec17a2ed3d779d18fbfd03042ea58f2995626396a274
 Status: Downloaded newer image for hello-world:latest
 
 Hello from Docker!
 This message shows that your installation appears to be working correctly.
 
 To generate this message, Docker took the following steps:
  1. The Docker client contacted the Docker daemon.
  2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64)
  3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
  4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal.
 
 To try something more ambitious, you can run an Ubuntu container with:
  $ docker run -it ubuntu bash
 
 Share images, automate workflows, and more with a free Docker ID:
  https://hub.docker.com/
 
 For more examples and ideas, visit:
  https://docs.docker.com/get-started/
 
 [KGB2] munakata:~$ docker compose version
 Docker Compose version v5.0.0

*** [[Mirakurun:https://github.com/Chinachu/Mirakurun]][#z6162651]
- [[プラットフォーム / 環境構築手順 ガイド(公式):https://github.com/Chinachu/Mirakurun/blob/master/doc/Platforms.ja.md]]
- [[Setup ガイド(公式):https://github.com/Chinachu/Mirakurun/blob/master/doc/Configuration.ja.md]]
- カードリーダーの存在確認 [#s281615b]
 [KGB2] munakata:~$ lsusb
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 Bus 001 Device 002: ID 04ca:004f Lite-On Technology Corp. SK-9020 keyboard
 Bus 001 Device 003: ID 05e3:0610 Genesys Logic, Inc. Hub
 Bus 001 Device 004: ID 26ce:01a2 ASRock LED Controller
 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 Bus 003 Device 002: ID 174c:2074 ASMedia Technology Inc. ASM1074 High-Speed hub
 Bus 003 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
 Bus 003 Device 004: ID 04e6:5116 SCM Microsystems, Inc. SCR331-LC1 / SCR3310 SmartCard Reader <---- Card Reader
 Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 Bus 004 Device 002: ID 174c:3074 ASMedia Technology Inc. ASM1074 SuperSpeed hub
 Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

- チューナの存在確認 (PT3 は /dev/dvb デバイスとして自動認識される)
 [KGB2] munakata:~$ ls -l /dev/dvb/
 total 0
 drwxr-xr-x 2 root root 100 12月 28 07:32 adapter0
 drwxr-xr-x 2 root root 100 12月 28 07:32 adapter1
 drwxr-xr-x 2 root root 100 12月 28 07:32 adapter2
 drwxr-xr-x 2 root root 100 12月 28 07:32 adapter3
 drwxr-xr-x 2 root root 100 12月 28 07:32 adapter4
 drwxr-xr-x 2 root root 100 12月 28 07:32 adapter5
 drwxr-xr-x 2 root root 100 12月 28 07:32 adapter6
 drwxr-xr-x 2 root root 100 12月 28 07:32 adapter7

- 既存の docker-compose.yml を利用(場所は munakata/mirakurun ) ---> &ref(docker-compose.yml);
 [KGB2] munakata:~/mirakurun$ cat docker-compose.yml
 services:
   mirakurun:
     # `:latest` can be changed to fix the version
     # `:latest` の部分を編集するとバージョンを固定できます
     # available tags: https://hub.docker.com/r/chinachu/mirakurun/tags
     #image: chinachu/mirakurun:latest
     image: chinachu/mirakurun:3.9.0-rc.4
     container_name: mirakurun
     cap_add:
       - SYS_ADMIN
       - SYS_NICE
     environment:
       TZ: Asia/Tokyo
       # comment out below if you commented out `network_mode: host`
       # `network_mode: host` をコメントアウトする場合はここもコメントアウト
       DOCKER_NETWORK: host
       # you must set hostname if accesing by hostname (other than IP address)
       # ブラウザから IP アドレス以外でアクセスする場合はホスト名を設定する必要があります
       # hostname: localhost
       # --
       # for debug
       # LOG_LEVEL: "3"
       # DEBUG: "true"
     network_mode: host
     # comment out `devices:` if you commented out all devices
     # `devices` を全てコメントアウトした場合は `devices:` もコメントアウト
     devices:
       # comment out below if you don't use card readers
       # カードリーダーを使わない場合は以下をコメントアウト
       - /dev/bus:/dev/bus
       # comment out below if you don't use DVB devices
       # DVB チューナーを使わない場合は以下をコメントアウト
       - /dev/dvb:/dev/dvb
     volumes:
       # you can change to any location if you want.
       - /opt/mirakurun/run:/var/run
       - /opt/mirakurun/opt:/opt
       - /opt/mirakurun/config:/app-config
       - /opt/mirakurun/data:/app-data
     tmpfs:
       - /tmp
     restart: always
     logging:
       driver: json-file
       options:
         max-file: "1"
         max-size: 10m

- mirakurunディレクトリを /opt 以下に作成する
 [KGB2] munakata:~$ sudo mkdir -p /opt/mirakurun/{run,opt,config,data}
 
 [KGB2] munakata:~$ cd /opt/mirakurun/
 [KGB2] munakata:/opt/mirakurun$ ls -l
 total 16
 drwxr-xr-x 2 root root 4096 12月 25 10:43 config
 drwxr-xr-x 3 root root 4096 12月 25 11:15 data
 drwxr-xr-x 4 root root 4096 12月 25 10:43 opt
 drwxr-xr-x 3 root root 4096 12月 28 07:32 run

- &ref(tuners.yml,center,tuners.yml); を /opt/mirakurun/config の下に配置する
 [KGB2] munakata:/opt/mirakurun$ cd config/
 [KGB2] munakata:/opt/mirakurun/config$ ls -l
 total 12
 -rw-r--r-- 1 munakata munakata 2538  8月 11  2024 channels.yml
 -rw-rw-r-- 1 root     root      278 12月 25 10:43 server.yml
 -rw-r--r-- 1 root     root     1796 12月 25 11:00 tuners.yml
 
 [KGB2] munakata:/opt/mirakurun/config$ head tuners.yml 
 - name: adapter0
   types:
     - BS
     - CS
   dvbDevicePath: /dev/dvb/adapter0/dvr0
   decoder: arib-b25-stream-test
   command: >-
     dvbv5-zap -a 0 -c ./config/dvbconf-for-isdb/conf/dvbv5_channels_isdbs.conf
     -r -P <channel>
 - name: adapter1

- latest のイメージダウンロードが失敗するので mirakurun/docker-compose.yml を編集して latest ではなく明示的に image: chinachu/mirakurun:3.9.0-rc.4 と指定する
 [KGB2] munakata:~/mirakurun$ docker compose down 2>/dev/null || true
 [KGB2] munakata:~/mirakurun$ docker image rm -f chinachu/mirakurun:latest 2>/dev/null || true
 [KGB2] munakata:~/mirakurun$ docker image rm -f chinachu/mirakurun:3.9.0-rc.4 2>/dev/null || true
 
 [KGB2] munakata:~/mirakurun$ sudo systemctl stop docker containerd
 [KGB2] munakata:~/mirakurun$ sudo rm -rf /var/lib/docker/containerd
 [KGB2] munakata:~/mirakurun$ sudo systemctl start containerd docker
 
 [KGB2] munakata:~/mirakurun$ docker compose pull

- &color(red){Docker 化された mirakurun をマニュアル起動};  
 [KGB2] munakata:~$ cd ~/mirakurun
 [KGB2] munakata:~/mirakurun$ docker compose up -d
 [KGB2] munakata:~/mirakurun$ docker compose ps
 [KGB2] munakata:~/mirakurun$ docker logs -n 200 mirakurun

- &color(red){Docker 化された mirakurun をマニュアル再起動};  
 [KGB2] munakata:~/mirakurun$ cd ~/mirakurun
 [KGB2] munakata:~/mirakurun$ docker compose restart

- 起動確認(コマンドライン)
 [KGB2] munakata:~/mirakurun$ curl -sSf http://127.0.0.1:40772/api/version
 {"current":"3.9.0-rc.4","latest":"4.0.0-beta.18"}

- 起動確認(ブラウザ)
-- http://<サーバIP>:40772/

*** mirakurun を ststemd のサービスに登録し、サーバー再起動時に自動起動できるようにする [#r621e6ab]
- compose一式を自動起動させる systemd (/etc/systemd/system/&color(red){mirakurun-compose.service};) を登録 ---> &ref(mirakurun-compose.service);
 [Unit]
 Description=Mirakurun (docker compose)
 Requires=docker.service
 After=docker.service network-online.target
 Wants=network-online.target
 
 [Service]
 Type=oneshot
 WorkingDirectory=/raid_vol/home/munakata/mirakurun
 ExecStart=/usr/bin/docker compose up -d
 ExecStop=/usr/bin/docker compose down
 RemainAfterExit=yes
 TimeoutStartSec=0
 
 [Install]
 WantedBy=multi-user.target  

- サービスの登録と自動起動設定
 [KGB2] munakata:~$ sudo systemctl daemon-reload
 [KGB2] munakata:~$ sudo systemctl enable --now mirakurun-compose.service

- サービスのマニュアル起動
 [KGB2] munakata:~$ sudo systemctl status mirakurun-compose.service --no-pager

- サーバーを再起動し自動起動したことを確認
 [KGB2] munakata:~$ systemctl status mirakurun-compose.service 
 ● mirakurun-compose.service - Mirakurun (docker compose)
      Loaded: loaded (/etc/systemd/system/mirakurun-compose.service; enabled; preset: enabled)
      Active: active (exited) since Sun 2025-12-28 07:32:31 JST; 2 days ago
     Process: 1892 ExecStart=/usr/bin/docker compose up -d (code=exited, status=0/SUCCESS)
    Main PID: 1892 (code=exited, status=0/SUCCESS)
         CPU: 76ms
 
 12月 28 07:32:31 kgb2 systemd[1]: Starting mirakurun-compose.service - Mirakurun (docker compose)...
 12月 28 07:32:31 kgb2 docker[1915]:  Container mirakurun Creating
 12月 28 07:32:31 kgb2 docker[1915]:  Container mirakurun Created
 12月 28 07:32:31 kgb2 docker[1915]:  Container mirakurun Starting
 12月 28 07:32:31 kgb2 docker[1915]:  Container mirakurun Started
 12月 28 07:32:31 kgb2 systemd[1]: Finished mirakurun-compose.service - Mirakurun (docker compose).

** [[EPGStation:https://github.com/l3tnun/EPGStation]][#d3ec5b0a]
*** [[インストール手順(公式):https://github.com/l3tnun/EPGStation/blob/master/doc/linux-setup.md]] [#fa89c617]
- EPGStation のインストール場所:&color(red){munakata/git/EPGStation};
- config/config.yml(または config.yml)で mirakurun へのパスを確認
 mirakurunPath: http://127.0.0.1:40772/

*** pm2 をユーザー環境にインストール [#k02f9796]
- 今回は &color(red){非sudo 環境で EPGStation を起動}; する(pm2はユーザー環境とsudo環境が別になっている)
 [KGB2] munakata:~$ npm install -g pm2
 
 [KGB2] munakata:~$ pm2 -v
 6.0.14

*** EPGStation のマニュアル起動/停止/再起動 [#xff33324]
- &color(red){EPGStation のマニュアル起動};
 [KGB2] munakata:~$ cd git/EPGStation/
 [KGB2] munakata:~/git/EPGStation$ sudo pm2 start dist/index.js --name epgstation

- EPGStation 起動状態の確認
 [KGB2] munakata:~$ pm2 status
 ┌────┬───────────────┬─────────────┬─────────┬─────────┬──────────┬────────┬──────┬───────────┬──────────┬──────────┬──────────┬──────────┐
 │ id │ name          │ namespace   │ version │ mode    │ pid      │ uptime │ ↺    │ status    │ cpu      │ mem      │ user     │ watching │
 ├────┼───────────────┼─────────────┼─────────┼─────────┼──────────┼────────┼──────┼───────────┼──────────┼──────────┼──────────┼──────────┤
 │ 0  │ epgstation    │ default     │ 2.10.0  │ fork    │ 1541     │ 2D     │ 0    │ online    │ 0%       │ 149.0mb  │ munakata │ disabled │
 └────┴───────────────┴─────────────┴─────────┴─────────┴──────────┴────────┴──────┴───────────┴──────────┴──────────┴──────────┴──────────┘
-- &ref(pm2-status.png);

- EPGStation の停止、再起動
 [KGB2] munakata:~/git/EPGStation$ pm2 stop epgstations
 [KGB2] munakata:~/git/EPGStation$ pm2 restart epgstation

*** 自動起動の設定 [#n86d8aa9]
 [KGB2] munakata:~$ pm2 save

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS