
2026/01/07 4:50
**Hetzner 上で自前ホスティングする My Media Library(Jellyfin と WireGuard)** 私は Jellyfin をストリーミング用に、WireGuard を接続保護のために利用し、プライベートなメディアサーバーを構築しました。 このホストは Hetzner の専有サーバー上で稼働しており、信頼性の高いパフォーマンスとデータプライバシーを確保しています。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
改訂版要約
この記事は、サブスクリプション料金の上昇と主要ストリーミングプラットフォームへの制御強化―Spotify の価格引き上げと無料枠の制限、Amazon Prime、Netflix、YouTube からの広告や高額料金、Disney+ のパスワード共有禁止―がユーザーをより価値ある自己ホスト型メディアサーバへ押し込む様子を説明しています。著者は Hetzner CAX21 VPS(4 vCPU、8 GB RAM、80 GB SSD、20 TB トラフィック)に Jellyfin サーバーを構築し、メディアを別の Hetzner Storage Box に保存して SMB で著者の MacBook にマウントすることで実証しています。リモートアクセスは WireGuard VPN を使用し、ホームネットワークには FRITZ!Box ルーターが利用され、MacBook と iPhone から接続します。Docker‑Compose ファイルは
wireguard(linuxserver/wireguard)と jellyfin(jellyfin/jellyfin)の2つのサービスを実行し、WireGuard ネットワークを共有します。PostUp/PostDown のルールで VPN 経由で Jellyfin のポート 8096 を開放しています。著者はこの構成を有用だと感じていますが、技術的に扱いづらいユーザーや小規模なメディアライブラリを持つ人には適さない可能性があります。この記事は、ストリーミングコストの上昇に伴い、より多くの人々が自己ホスティングを採用するようになり、それがサブスクサービスに価格や制限の再検討を促すかもしれないと示唆しています。本文
免責事項
本投稿はAIの協力なしに執筆されました。自己ホスティング環境(どのDockerイメージを使うか、JellyfinかPlexか)や初期設定(docker‑compose, WireGuard)のリサーチは、RedditやStackOverflowなどを含むAI支援で行いました。
すべてが始まったきっかけ
モチベーションに興味がなく、技術的なセットアップだけに関心がある場合は、自己ホスティングの設定へ直接飛んでください。
Spotify の料金引き上げ
2025年8月、Spotify はドイツ国内で価格を引き上げました。私は「大切なプレミアム会員として、料金が変わる(増える)旨」を知らせるフレンドリーなメッセージを受け取りました。
しばらくは我慢することにしました。2025年11月になるとプレミアム会員期間が終了。Spotify の無料プランを試してみたのですが、思ったよりも酷かったです。10年前に使っていた無料版でも十分だったので、何が変わったんだろうと思いました。
無料版では、一定数の再生後にシャッフル強制されるようになりました。無料であっても曲選択は自由ではありません。2025年9月以降、Spotify がこの機能を廃止したという報告があるものの、2025年12月末時点ではまだ制限が残っていました。
再生バーを手動で操作することもできませんでした。当時はこういった制限がなかったと思っていたのですが、私の記憶違いかもしれません。無料版の「エンシティフィケーション」的な扱いだと考えています。
まあ、企業は稼ぐ必要がありますし、Spotify を無料で利用できる権利はありません! 私が支払っているサービスに対しては素晴らしいユーザー体験を期待しますよね? でもそれだけではありません…
全ストリーミングサービス – より多くのお金で価値が下がる
| サービス | 問題点 |
|---|---|
| 価格上昇 | すべてのストリーミングサービスが料金を引き上げたり、広告を導入したりしています。 |
| 広告 | Amazon Prime が有料サービスに広告を追加。Netflix は広告付きプランを導入。YouTube は主にモバイルゲームや明らかな詐欺広告を表示します。 |
| UI | 2025年5月、Netflix が新しい UI を公開。好みの問題ですが、私はこれが大幅に劣ると感じました。 |
| パスワード共有対策 | Disney+ は Netflix に続き、パスワード共有を取り締まり – 多くのユーザーにとって事実上の価格増加です。 |
自己ホスティング設定
私は自己ホスティングに挑戦することにしました。以前から selfhosted サブレディットで情報収集しており、テレビ番組・映画・音楽のコレクションを所有しています。
デプロイ:Hetzner VPS
自前ハードウェアではなく、Hetzner の CAX21 を選びました。
- 4 vCPU
- 8 GB RAM
- 20 TB バンド幅込み
- 80 GB SSD ストレージ
ストレージ:Hetzner Storage Box
サーバーの SSD は Docker 用に限定し、メディアは別途 Storage Box に保存します。これで SMB 経由で MacBook にライブラリをマウントできます。
メディアサーバー:Jellyfin
オープンソースの Jellyfin を採用しました。Plex は代替策として考えられますが、Hetzner ではブロックされるため私には機能しませんでした。
リモートアクセス:WireGuard VPN トンネル
| 場所 | 接続方法 |
|---|---|
| 自宅 | FRITZ!Box ルーターに WireGuard 設定を追加。ホームネットワーク内のデバイスは VPN アプリを実行せずに Jellyfin にアクセスできます(LG WebOS TV は直接 WireGuard を実行できません)。 |
| 外出先 | デバイスに WireGuard をインストールし、各デバイス用のクライアント設定を作成。 |
サーバー側設定例
[Interface] Address = 10.13.13.1/24 ListenPort = 51820 PrivateKey = {{ wireguard_server_private_key }} PostUp = iptables -A INPUT -i wg0 -p tcp --dport 8096 -j ACCEPT; \ iptables -A FORWARD -i wg0 -j ACCEPT PostDown = iptables -D INPUT -i wg0 -p tcp --dport 8096 -j ACCEPT; \ iptables -D FORWARD -i wg0 -j ACCEPT [Peer] PublicKey = {{ wireguard_client_public_key }} AllowedIPs = 10.13.13.2/32 [Peer] PublicKey = {{ wireguard_client_public_key_iphone }} AllowedIPs = 10.13.13.3/32 [Peer] PublicKey = {{ wireguard_client_public_key_fritzbox }} AllowedIPs = 10.13.13.4/32
ピア
• MacBook (公開鍵) – 10.13.13.2
• iPhone (公開鍵) – 10.13.13.3
• FRITZ!Box ルーター (公開鍵) – 10.13.13.4
各デバイスの WireGuard 設定には個別のプライベートキーが含まれ、
AllowedIPs フィールドで対応する IP を割り当てます。
クライアント側設定例(MacBook)
[Interface] PrivateKey = {{ client_private_key }} Address = 10.13.13.2/32 [Peer] PublicKey = {{ server_public_key }} Endpoint = <SERVER-IP-ADDRESS>:51820 AllowedIPs = 0.0.0.0/0, ::/0 PersistentKeepalive = 25
Docker Compose 設定
version: "3.9" services: wireguard: image: linuxserver/wireguard:latest container_name: wireguard cap_add: - NET_ADMIN - SYS_MODULE environment: - PUID=1000 - PGID=1000 - TZ=Etc/UTC - SERVERPORT=51820 - SERVERURL=<SERVERS-IP-ADDRESS> volumes: - ./wireguard/config:/config - /lib/modules:/lib/modules:ro ports: - "51820:51820/udp" sysctls: - net.ipv4.conf.all.src_valid_mark=1 restart: unless-stopped jellyfin: image: jellyfin/jellyfin:latest container_name: jellyfin network_mode: "service:wireguard" user: 1000:1000 volumes: - ./jellyfin/config:/config - /mnt/storagebox:/media:ro environment: - TZ=UTC restart: unless-stopped depends_on: - wireguard
ポイント
- WireGuard は UDP ポート 51820 のみ公開します。
- Jellyfin は Hetzner Storage Box (
) をコンテナ内で/mnt/storagebox
としてマウントし、/media
により WireGuard のネットワークスタックを共有します。network_mode: "service:wireguard"
自己ホスティングはストリーミングサービスの代替になる?
それはケースバイケースです。私の個人ライブラリはどんなストリーミングサービスと比べても小さく、自己ホスト型システムを構築するには多大な労力が必要です。非技術者にとっては実際的ではないでしょうし、技術者であっても有料プランに加入した方が時間的コストと比較してメリットが薄いかもしれません。
ただ私自身にとっては、自由度・プライバシー・費用削減という点で完全に価値があります!