jellyfin を docker で動かしてあそぶ。

ということで、Epgstation で撮りためた録画の管理をどうにかしたいなあとおもっていて、いろんなネットワークメディアサーバを試していて、今までは Emby を使っていました。 が、「この機能があったらなあ」みたいなのはみんな有料だったりして、なら払えばいいんだけど、なんかこう、うまくいえない感じがあって、他はないかと探してて、jellyfin に たどり着きました。

調べてみたら、Emby からの fork で、dotnet で書かれているので、FreeBSDでも動きそうな感じだったのですが、どうも一筋縄ではいかない模様。 まあ、さっくり docker で動かしてみるべ、とおもって前回の docker 導入になるのですがあれば前段階。今回が本番。

結論から書くと、何も問題なく docker の環境で動きます。 では何がはまったかというと、サーバにあるメディアの扱い。 今まで Emby は jail で動かしていたので nullfs でマウントしていたのですが、今回は bhyve なのでそうもいきません。 当初 nfs でいける、と思っていましたが、 nfs server が動いていなかったというオチもあり、なんかいろいろこう面倒になって、 sshfs 使ってマウントすることにしました。 まあ、そこまではよかったのよ。 で、事前に sshfs をマウントして、そこを bind してあげれば docker の中で jellyfin は動いたし。 でも、docker の volume driver で sshfs を使えるということがわかったので試してみたのですが、そこでちょっとはまったので記録として残しておくことに。 すんなり終わったら「よかったねー」で済む話。 ぐぐっても調べ方がわるいのか、よくわからなかったのだけど、理解してみたら、公式にきちんとやり方が書いてあるというオチは秘密だ。

さて、前回の設定で、docker と docker-compose はインストール終わってますので、そこから先のお話。 docker の sshfs プラグインをインストールして、設定します。 sshkey.source がポイントです。ここは個別の環境に合わせてください。

# docker plugin install --grant-all-permissions vieux/sshfs sshkey.source=/root/.ssh/ # docker plugin enable vieux/sshfs
次に公開鍵を作って、接続したいリモートのサーバにコピーします。
# ssh-key # ssh-copy-id -i ~/.ssh/id_rsa.pub [user]@[リモートサーバ]
あとは、doker-compose.yml に sshfs の volume の指定をします。
version: "3.5" services: jellyfin: image: jellyfin/jellyfin container_name: jellyfin network_mode: "host" volumes: - /root/jellyfin/config:/config - /root/jellyfin/cache:/cache - sshvolume:/media restart: "unless-stopped" # Optional - alternative address used for autodiscovery environment: - JELLYFIN_PublishedServerUrl=http://jellyfin.home.mousou.org restart: always volumes: sshvolume: driver: "vieux/sshfs:latest" driver_opts: allow_other: "" sshcmd: "takemon@[ファイルサーバ]/[path]/[to]/recorded" IdentityFile: "/root/.ssh/id_rsa"
あとは docker-compose up -d して実行して docker ps して動いているのを確認で来たらブラウザでアクセスして初期設定しましょう。 おつかれさまでした。

ということで、docker 使って jellyfin を動かしてみました。あー、たしかに docker 楽だわあ。 細かいところいじるのにどうすればいいか、ぜんぜんわかってないので、いろいろ作って壊して遊びましょう。

参考URL: Docker volume plugin for sshFS https://github.com/vieux/docker-volume-sshfs

タグ: Docker Docker-Compose Jellyfin Sshfs