Ubuntu再起動
↓
Docker起動
↓
① Mirakurun起動(systemdが管理)
↓
② MirakurunのAPIが応答するまで最大150秒待機
↓
③ EPGStation起動(Mirakurun準備完了を確認してから)
mirakurun.serviceファイルの作成
sudo nano /etc/systemd/system/mirakurun.service
[Unit] Description=Mirakurun Docker Container Requires=docker.service After=docker.service network-online.target Wants=network-online.target [Service] Type=oneshot RemainAfterExit=yes WorkingDirectory=/mnt/data/docker/mirakurun ExecStart=/usr/bin/docker compose up -d ExecStop=/usr/bin/docker compose down TimeoutStartSec=120 [Install] WantedBy=multi-user.target
epgstation.serviceファイルの作成
sudo nano /etc/systemd/system/epgstation.service
[Unit]
Description=EPGStation Docker Container
Requires=docker.service mirakurun.service
After=docker.service mirakurun.service
Wants=network-online.target
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/mnt/data/docker/epgstation
ExecStartPre=/bin/bash -c '\
echo "Waiting for Mirakurun..."; \
for i in $(seq 1 30); do \
if curl -sf http://localhost:40772/api/status > /dev/null 2>&1; then \
echo "Mirakurun is ready."; \
exit 0; \
fi; \
echo "Waiting... ($i/30)"; \
sleep 5; \
done; \
echo "Mirakurun did not respond in time."; \
exit 1'
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
TimeoutStartSec=300
[Install]
WantedBy=multi-user.target
サービスに登録
# docker-compose.ymlのrestart: alwaysを無効化(systemdと競合するため) sudo sed -i 's/restart: always/restart: "no"/' /mnt/data/docker/mirakurun/docker-compose.yml sudo sed -i 's/restart: always/restart: "no"/' /mnt/data/docker/epgstation/docker-compose.yml # systemdに登録して有効化 sudo systemctl daemon-reload sudo systemctl enable mirakurun.service epgstation.service
■注意:Ubuntu Server 起動後に、EPGStation の再起動は問題ないが、チャンネル設定変更があった場合等で、 Mirakurunを再起動する場合は、EPGStationを止めてから、Mirakurun を起動し、150秒待って EPGStation 起動と言う手順が必要。