owncast
SHA-256セルフホスト型のライブ配信サーバー。ライブ配信コンテンツと視聴者データを完全にコントロールできます。
スマートダウンロード
Download 版をダウンロード
v0.2.5 · 18.3 MB
自分でライブ配信サーバーを構築し、コンテンツと視聴者を完全にコントロール。
主な機能
- セルフホスト型で、データは完全に自分の管理下に
- OBS や Streamlabs などの一般的な配信ソフトウェアと互換性あり(RTMP)
- リアルタイムチャット機能を内蔵
- カスタマイズ可能なWebフロントエンドとインターフェーステーマ
- 管理者ダッシュボードで、ユーザーとコンテンツを簡単に管理
できないこと
- •外部からアクセスするには、グローバル IP またはイントラネットトンネリング(frp など)が必要です
- •HTTPS を有効にするため、リバースプロキシ(Nginx)の設定をお勧めします
- •ライブ配信の画質と遅延は、サーバーの帯域幅とエンコード設定に依存します
- •現在、公式では Windows ネイティブでの実行をサポートしていないため、WSL2 または Docker を使用する必要があります
- •シングルユーザー向けの設計であり、大規模なマルチチャンネルライブ配信サイトには適していません
使用例
- 個人のゲームやタレント配信で、プラットフォームの広告や手数料に干渉されたくない
- 企業内の研修やイベント配信で、データのセキュリティを確保
- コミュニティやクラブ内での配信で、視聴者をきめ細かく管理
- Twitch/YouTube Live の代替として、コンテンツの主権と自由を追求
詳細説明
Owncast は、オープンソースでセルフホスト型の分散型ライブ動画ストリーミングおよびチャットサーバーです。Twitch や YouTube Live のように自分自身のライブ配信を運営でき、コンテンツ、インターフェース、モデレーション、視聴者を完全にコントロールできます。OBS や Streamlabs などの既存の配信ソフトウェアを使い、RTMP プロトコルで配信できます。チャットシステム、カスタマイズ可能なフロントエンド、管理者向けコントロールを内蔵しています。個人や小規模なコミュニティに適しており、大手プラットフォームの制約から解放されます。
トラブルシューティング & FAQ (2)
トラブル対応Owncast v0.2.5でfaviconをアップロードまたはリセットする際に発生する'JSON.parse: unexpected character at line 1 column 1 of the JSON data'エラーと、繰り返し表示される管理者ログインプロンプトを修正する方法
これはOwncast v0.2.5自体の既知のバグで、faviconのアップロードとリセット機能の両方に影響します。バックエンドがこれらのエンドポイントに対して誤って401 Unauthorizedの非JSONレスポンスを返すため、フロントエンドでJSONパースエラーが発生し、有効なログイン情報を入力しても管理者認証情報のプロンプトが繰り返し表示されます。修正はプルリクエスト#4879にマージされています。この問題を解決するには、v0.2.5より新しい公式Owncastリリースにアップグレードしてください。
トラブル対応localStorage が null またはブロックされているときに、Owncast のビューアーまたは埋め込みで「Application error: a client-side exception」が表示される問題を修正する方法は?
これは Owncast 0.3.0+ と next-export-i18n 2.4.3 までに影響します。その useSelectedLanguage() は、languageDataStore: 'query' が設定されていても、ガードなしで window.localStorage.getItem("next-export-i18n-lang") を読み取ります。したがって、Android WebView での null の localStorage や、サードパーティ iframe での SecurityError が React ツリーをクラッシュさせます。
Android WebView の回避策:
webView.settings.domStorageEnabled = trueJava:
webView.getSettings().setDomStorageEnabled(true);
恒久的な Owncast の修正: React がレンダリングする前に、インメモリの Storage シムをインストールします。たとえば、pages/_app.tsx の先頭や、最初にインポートされるモジュール内で行います:
if (typeof window !== 'undefined') {
const createMemoryStorage = (): Storage => {
let data: Record<string, string> = {};
return {
getItem: key =>
Object.prototype.hasOwnProperty.call(data, key) ? data[key] : null,
setItem: (key, value) => {
data[key] = String(value);
},
removeItem: key => {
delete data[key];
},
clear: () => {
data = {};
},
key: index => Object.keys(data)[index] ?? null,
get length() {
return Object.keys(data).length;
},
};
};
try {
if (!window.localStorage) throw new Error('localStorage is unavailable');
window.localStorage.getItem('__owncast_storage_test__');
} catch {
Object.defineProperty(window, 'localStorage', {
configurable: true,
value: createMemoryStorage(),
});
}
}すると、ビューアと
/embed/video は正常にレンダリングされます。保存された値は、制限された環境ではリロードをまたいで単に永続化されません。あるいは、patch-package を使用してライブラリの getItem 呼び出しをガードすることもできますが、そのパッチは依存関係の更新後に再適用する必要があります。languageDataStore: 'query' のみを設定しても、クラッシュは修正されません。タグ
はじめ方
ソフトウェアをインストール
ディストリビューションに合ったパッケージをインストール(dpkg / rpm / AppImage)
ステップ1:公式サイトまたは GitHub から Owncast バイナリファイルをダウンロードするか、Docker イメージをプルします(docker run owncast/owncast)
ステップ2:プログラムを実行すると、デフォルトでポート 8080 をリッスンします。ブラウザで http://あなたのIP:8080 にアクセスして画面を開きます
ステップ3:OBS などのソフトウェアで配信サーバーを rtmp://あなたのIP/live に設定します。ストリームキーは任意です(または管理画面で設定)
- ステップ1:公式サイトまたは GitHub から Owncast バイナリファイルをダウンロードするか、Docker イメージをプルします(docker run owncast/owncast)
- ステップ2:プログラムを実行すると、デフォルトでポート 8080 をリッスンします。ブラウザで http://あなたのIP:8080 にアクセスして画面を開きます
- ステップ3:OBS などのソフトウェアで配信サーバーを rtmp://あなたのIP/live に設定します。ストリームキーは任意です(または管理画面で設定)
SHA-256 チェックサム確認済み
GitHub 公式 Release ページから抽出されたチェックサム
SHA256 チェックサム
bfef49e719ad9316554855df44a9ac21aec5f2a74de79eef15b6947cb383c2bbこのチェックサムは GitHub Release ページから抽出されたものです。ダウンロード後にファイルの整合性を確認してください。
本プラットフォーム上のすべての SHA-256 チェックサムは、プロジェクトの公式 GitHub Release ページから抽出されたもので、一切の改変はありません。GitHub Releases ページで独自に検証できます。
オープンソースの透明性
GitHub ソースを見るアンインストール情報
ダウンロードした Owncast ファイルを削除するか、Docker コンテナを停止するだけです。データを消去する場合は、プログラムディレクトリ内の data フォルダを削除してください。
追加の依存関係なし
ダウンロード後すぐに使用可能。追加のランタイムは不要です。
問題が発生?以下のFAQを確認
2 FAQs