テレビ録画メディアサーバー構築入門(第14回)
ダッシュボード
Jellyfin, EPGStation, Mirakurun, Ntfyと、同一サーバーの異なるポートを使うアプリを複数インストールしてきました。どれもWebアプリなので、一つの場所からリンクをクリックしてアクセスできるような、ダッシュボード(ホームページ)があると便利になる。まさに、その名のとおり、homepageというツールがあります。
インストール
まず、サーバーのIPアドレス(tailscale)を確認します。WebブラウザでTailscaleのダッシュボードにログインすることで、ネットワークに参加している各デバイスに割り当てられたIPアドレスが確認できます。以下では、100.x.y.z とします。
ホームディレクトリに移動して、設定ファイルの場所を作成して、インストールします。HOMEPAGE_ALLOWED_HOSTSのアドレス 100.x.y.zはサーバーのアドレスです。
cd
mkdir -p homepage/config
sudo docker run -d --name homepage -e HOMEPAGE_ALLOWED_HOSTS=100.x.y.z:3000 -e PUID=1000 -e PGID=1000 -p 3000:3000 -v ./homepage/config:/app/config --network="host" --restart unless-stopped ghcr.io/gethomepage/homepage:latestさらに、第10回 ntfy.sh の設定で用いたサーバー名 (tailnet only) を確認します。以下では、https://fearow22.taile153a7.ts.net として、ntfyの項目に記載しています。
設定ファイル ~/homepage/config/services.yaml を以下のようにする。
最初の行 - fearow22: は、自サーバー名
数か所の href: http://100.x.y.z … は、自サーバーアドレス
---
# For configuration options and examples, please see:
# https://gethomepage.dev/configs/services/
- fearow22:
- jellyfin:
icon: jellyfin.png
href: http://100.x.y.z:8096/
description:
widget:
type: jellyfin
url: http://127.0.0.1:8096
key: 7b663067ba9040f791a0a551056d0cc6 #要変更
enableBlocks: true # optional, defaults to false
# enableNowPlaying: false # optional, defaults to true
enableUser: true # optional, defaults to false
showEpisodeNumber: true # optional, defaults to false
# expandOneStreamToTwoRows: false # optional, defaults to true
- epgstation:
icon: https://assets.st-note.com/img/1751109675-nCc2aTtduIWEP7by81A5wRVz.png
href: http://100.x.y.z:8888/
description:
widget:
type: customapi
url: http://127.0.0.1:8888/api/reserves?isHalfWidth=false
refreshInterval: 60000 # optional - in milliseconds, defaults to 10s
method: GET # optional, e.g. POST
display:
mappings:
- field:
reserves:
0: name
label:
- field:
reserves:
1: name
label:
- field:
reserves:
2: name
label:
- 録画中:
widget:
type: customapi
url: http://127.0.0.1:8888/api/recording?isHalfWidth=false&type=conflict
refreshInterval: 3600000 # optional - in milliseconds, defaults to 10s
method: GET # optional, e.g. POST
display:
mappings:
- field:
records:
0: name
label:
- field:
records:
1: name
label:
- field:
records:
2: name
label:
- 録画済み:
widget:
type: customapi
url: http://127.0.0.1:8888/api/recorded?isHalfWidth=false&type=conflict
refreshInterval: 3600000 # optional - in milliseconds, defaults to 10s
method: GET # optional, e.g. POST
display:
mappings:
- field:
records:
0: name
label:
- field:
records:
1: name
label:
- field:
records:
2: name
label:
- 競合:
widget:
type: customapi
url: http://127.0.0.1:8888/api/reserves?isHalfWidth=false&type=conflict
refreshInterval: 3600000 # optional - in milliseconds, defaults to 10s
method: GET # optional, e.g. POST
display:
mappings:
- field:
reserves:
0: name
label:
- field:
reserves:
1: name
label:
- field:
reserves:
2: name
label:
- metube:
icon: metube.png
href: http://100.x.y.z:8081/
- mirakurun:
icon: https://assets.st-note.com/img/1751109684-ogPh76t9JIj2QHKAW3ylfacs.png
href: http://100.x.y.z:40772/
description:
- ntfy:
icon: ntfy.png
href: https://fearow22.taile153a7.ts.net/
description:
ここで、jellyfin のAPI key:
key: 7b663067ba9040f791a0a551056d0cc6 #要変更は、jellyfinクライエントの「ダッシュボード」「APIキー」から 「+」でアプリ名(homepage … API キーを識別するための人が判読できる名前。この設定は機能には影響しません。)を入力して表示される長い記号列を使用する。
「ホームページ」には、ブラウザから http://100.x.y.z:3000 よりアクセスする。



コメント