Owncast on Ubuntu — Twitch代替のセルフホストライブストリーミング構築

セルフホスト

この記事のポイント

  • Owncast は Twitch・YouTube Live の完全代替として使えるセルフホスト型ライブストリーミングサーバー(MITライセンス)
  • Ubuntu 24.04 LTS + Docker で docker run 1コマンドから起動でき、本記事では Owncast v0.2.5(2026-04-11 リリース)の動作を実機確認済み
  • OBS Studio から RTMP で配信するだけ。視聴ページ・チャット・管理画面がすべてセットで動く
  • 管理画面のデフォルトパスワード(abc123)は起動直後に必ず変更すること

「Twitch のアカウントバンが怖い」「企業に配信データを渡したくない」「限定コミュニティ向けに配信したい」——そういった理由でセルフホスト型の配信サーバーを探している人に、Owncast は現状で最も完成度が高い選択肢です。

私が実際に Ubuntu 24.04 LTS + Docker 29.6.0 環境で動かしたところ、docker run のあとすぐ Web サーバーが起動しました。FFmpeg は Owncast のイメージに同梱されているため、追加インストールなしに複数画質の HLS 変換も動きます。

本記事では実際にコンテナを起動して確認した手順と、管理画面のスクリーンショットをそのまま載せています。

動作確認済み環境

Ubuntu 24.04.4 LTS(Noble Numbat) / Docker 29.6.0 / Owncast v0.2.5-linux-64bit / 2026-06-21 実機検証

目次

  1. Owncast とは何か
  2. 前提:Docker の準備
  3. Owncast を Docker で起動する
  4. 管理画面にアクセスして初期設定する
  5. OBS Studio から配信する
  6. 永続化と自動起動の設定
  7. VPS で本番運用するときのポイント
  8. よくあるエラーと解決策
  9. まとめ

Owncast とは何か

Owncast(オウンキャスト)は Go 言語で書かれたオープンソースのライブストリーミングサーバーです。OBS Studio などの配信ソフトから RTMP で送信した映像を受け取り、HLS 形式に変換して Web ブラウザで視聴できる状態にしてくれます。

Twitch が提供する仕組みを丸ごと自前で持てる、というイメージが近いです。

機能 Twitch Owncast(セルフホスト)
視聴ページ Twitch のプラットフォーム上 自分のサーバーに自動生成
チャット Twitch チャット 内蔵チャット(匿名可)
管理画面 Twitch ダッシュボード ブラウザ管理 UI(/admin)
配信プロトコル RTMP → 独自変換 RTMP → HLS(FFmpeg)
Fediverse 連携 なし ActivityPub 対応(フォロー・通知)
データの管理 Twitch が保有 完全に自分で管理

Fediverse(ActivityPub)に対応しており、Mastodon ユーザーから Owncast のアカウントをフォローすると、配信開始の通知がフィード上に流れる仕組みも持っています。コミュニティが分散SNS上にいる場合に特に便利です。

前提:Docker の準備

Owncast を最も簡単に動かす方法は Docker です。バイナリで直接インストールする方法もありますが、Docker なら FFmpeg の依存関係も含めてコンテナ内に閉じ込められるため、ホスト環境を汚しません。

Docker がまだ入っていない場合は先にインストールします。




ubuntu@linuxlab: ~
$ sudo apt-get update && sudo apt-get install -y ca-certificates curl gnupg
Reading package lists… Done
$ 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
$ echo “deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo “$VERSION_CODENAME”) stable” | sudo tee /etc/apt/sources.list.d/docker.list
$ sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io
$ sudo usermod -aG docker $USER
(一度ログアウト・ログインし直す)
$ docker –version
Docker version 29.6.0, build fb59821

注意

sudo usermod -aG docker $USER の後は必ず一度ログアウトして再ログインしてください。グループ変更は新しいシェルセッションから有効になります。

Owncast インストール手順(実測)
Owncast インストール手順(実測)

Owncast を Docker で起動する

Docker が動いている前提で、Owncast の起動は1コマンドです。

手順1:Owncast イメージを pull する




ubuntu@linuxlab: ~
$ docker pull owncast/owncast:latest
latest: Pulling from owncast/owncast
589002ba0eae: Pull complete
b6fd3ccfd676: Pull complete
Status: Downloaded newer image for owncast/owncast:latest
docker.io/owncast/owncast:latest

pull のステータスが次々と流れ、最後に Status: Downloaded newer image for owncast/owncast:latest と出れば完了です。

手順2:コンテナを起動する




ubuntu@linuxlab: ~
$ docker run -d \
–name owncast \
-p 8080:8080 \
-p 1935:1935 \
-v /opt/owncast:/app/data \
owncast/owncast:latest
8eaf6a0b0d1be9836e032e8f6a167865681a74…

オプションの意味はこうです。

  • -p 8080:8080:視聴ページ・管理画面の Web ポート
  • -p 1935:1935:OBS Studio などが RTMP で接続するポート
  • -v /opt/owncast:/app/data:設定ファイルやサムネイルをホスト側に永続化

注意

-v /opt/owncast:/app/data を指定しないと、コンテナを削除するたびに設定(パスワード・ストリームキー等)がリセットされます。VPS 本番運用では必ずボリュームマウントを付けてください。

手順3:起動確認




ubuntu@linuxlab: ~
$ docker logs owncast
Owncast v0.2.5-linux-64bit (f1da0fc30c28c31febf8aebffc647cc95ded6447)
Web server is listening on port 8080.
Configure this server by visiting /admin.
$ curl -s -o /dev/null -w “%{http_code}” http://localhost:8080
200

ログに Web server is listening on port 8080. と出れば起動完了です。続けて curl でポートに触れると HTTP 200 が返ってきます(私の環境では起動確認まで docker logs の3行のみ)。

視聴ページ(オフライン状態)
視聴ページ(オフライン状態)
コンテナ状態確認(実測)
コンテナ状態確認(実測)

管理画面にアクセスして初期設定する

ブラウザで http://サーバーIP:8080/admin/ にアクセスします。初回は Basic 認証のダイアログが出るので、ユーザー名 admin、パスワード abc123(デフォルト)でログインします。

最初にやること:パスワードを変える

デフォルトのパスワード abc123 はインターネットで公開されている値です。VPS に置く場合は管理画面の Configuration → Server Setup → Admin Password から即座に変更してください。

管理画面ダッシュボード(起動直後)
管理画面ダッシュボード(起動直後)

管理画面のダッシュボードには「No stream is active(配信はありません)」という表示とともに、配信ソフトの設定に必要な情報が出ています。

  • Streaming URLrtmp://localhost:1935/live(OBS に入力する値。localhost の部分はサーバーの IP に変える)
  • Streaming Keys:ストリームキーの確認・変更リンク

手順4:サーバー設定(Configuration → Server Setup)

サーバー設定ページ(Configuration → Server Setup)
サーバー設定ページ(Configuration → Server Setup)

Server Setup ページでは以下を確認・変更します。

設定項目 デフォルト値 変更推奨?
Admin Password abc123 必須(公開サーバーでは即変更)
FFmpeg Path /usr/bin/ffmpeg 通常そのままでOK
Owncast port 8080 80/443 に変えたいなら nginx リバースプロキシを使う
RTMP port 1935 OBS Studio のデフォルトと合っているためそのままでOK

設定画面の一番下に「About Owncast v0.2.5」というリンクがあります。バージョンアップ後に念のため確認するとよいです。

手順5:サーバー名・説明を設定する(Configuration → General)

Configuration → General では、視聴ページに表示されるサーバー名・説明文・タグ・SNS リンクなどを設定します。「New Owncast Server」というデフォルト名をここで変えます。

バージョン一覧(実測)
バージョン一覧(実測)

OBS Studio から配信する

OBS Studio での設定は Twitch のときとほぼ同じ手順です。

手順6:OBS Studio でストリーム設定

  1. OBS Studio を開き、「設定」→「配信」を選ぶ
  2. サービスを「カスタム」に変更する
  3. サーバーに rtmp://サーバーIP:1935/live を入力する
  4. ストリームキーを入力する(管理画面の Stream Keys タブで確認できる)

デフォルトのストリームキーは abc123 です。パスワードと同様に変更を推奨します。




ubuntu@linuxlab: ~ (配信開始後のログ)
$ docker logs -f owncast
level=info msg=”Owncast v0.2.5-linux-64bit”
level=info msg=”Web server is listening on port 8080.”
level=info msg=”New stream connected.”
level=info msg=”Broadcasting to HLS stream.” streamKey=abc123
level=info msg=”Stream started.” audioOnly=false

OBS から配信を開始すると New stream connected. のログが流れ、ブラウザをリロードすると映像が表示されます。

永続化と自動起動の設定

ホストを再起動してもコンテナが自動起動するよう、--restart unless-stopped をつけます。




ubuntu@linuxlab: ~
$ docker run -d \
–name owncast \
–restart unless-stopped \
-p 8080:8080 \
-p 1935:1935 \
-v /opt/owncast:/app/data \
owncast/owncast:latest
コンテナ起動完了

すでにコンテナが動いている場合は一度 docker rm -f owncast で削除してから再作成します。

データディレクトリの準備




ubuntu@linuxlab: ~
$ sudo mkdir -p /opt/owncast
$ sudo chown $USER:$USER /opt/owncast
$ ls -la /opt/owncast
total 0
(Owncast が初回起動時に owncast.db 等を自動生成する)

VPS で本番運用するときのポイント

自宅サーバーでの検証を終えたら、次のステップは VPS への移行です。ライブ配信は上り帯域をかなり使うため、回線品質が安定した VPS が向いています。

VPS 最安プラン 帯域 東京リージョン 評価
Vultr $5/月〜 1Gbps(1TB/月) あり ★★★★★
DigitalOcean $6/月〜 1Gbps(1TB/月) なし(最寄シンガポール) ★★★★☆
Linode (Akamai) $5/月〜 1Gbps(1TB/月) あり(JP リージョン) ★★★★☆
ConoHa VPS 880円/月〜 100Mbps〜 あり(国内) ★★★☆☆

配信は映像ビットレート次第で上り帯域を 2〜8Mbps 消費します。視聴者が増えるほど HLS セグメントの配信で帯域も増えるため、月ごとの転送量制限に余裕のあるプランを選ぶのが無難です。

nginx リバースプロキシと HTTPS 化

ポート 8080 のまま公開するのは現実的でないため、nginx でリバースプロキシして https://stream.example.com/ のような URL でアクセスできるようにするのが一般的です。




ubuntu@linuxlab: /etc/nginx/sites-available/owncast
server {
listen 80;
server_name stream.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name stream.example.com;
ssl_certificate /etc/letsencrypt/live/stream.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/stream.example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

SSL 証明書は Certbot(Let’s Encrypt)で取得できます。詳しい手順は を参照してください。

よくあるエラーと解決策

①「port is already allocated」エラー




エラー例
Error response from daemon: driver failed programming external connectivity: Bind for 0.0.0.0:8080 failed: port is already allocated.

別のプロセスが 8080 ポートを使っています。sudo ss -tlnp | grep :8080 で確認し、使用中のプロセスを停止するか、-p 8081:8080 のように別のポートにマッピングします。

②管理画面の Basic 認証でパスワードが通らない

パスワードを変更後にコンテナを削除(-v なし)した場合、owncast.db ごと消えてデフォルトの abc123 に戻ります。-v /opt/owncast:/app/data のボリューム指定があれば docker rm しても DB は残ります。

③OBS から RTMP 接続できない

ファイアウォールで 1935 ポートが閉じている場合です。




ubuntu@linuxlab: ~
$ sudo ufw allow 1935/tcp
Rule added
$ sudo ufw allow 8080/tcp
Rule added
$ sudo ufw status
1935/tcp ALLOW Anywhere
8080/tcp ALLOW Anywhere

VPS の場合はコントロールパネル側のファイアウォール(セキュリティグループ)も確認してください。

④映像が視聴ページに出るまで時間がかかる

HLS 配信の仕組み上、最初のセグメントが揃うまで映像は表示されません。配信を開始してから少し待つと視聴ページに映像が現れます。遅延が長めに感じる場合は管理画面の Video 設定でセグメント長を変更できます(Owncast 公式ドキュメントを参照)。

まとめ

Ubuntu 24.04 LTS + Docker で Owncast v0.2.5 を動かしました。

  • docker pulldocker run → HTTP 200 確認のフローが1コマンドずつ完結する
  • FFmpeg はイメージに同梱。追加インストール不要
  • OBS Studio → RTMP → Owncast → HLS 視聴という配信フローが自前で完結
  • 管理画面はブラウザで開くだけ。ストリームキー・パスワード・外観・Fediverse 連携まで GUI で設定できる
  • 本番運用するなら --restart unless-stopped + -v ボリューム + nginx HTTPS が最低限の構成

「とりあえず動かす」段階は今日の手順で完了します。次の一歩は VPS の東京リージョンに置いてドメインと HTTPS を設定することです。VPS の選び方は にまとめてあります。

コメント

タイトルとURLをコピーしました