複数の小規模プロバイダーが連合・相互運用できる分散型動画ホスティングネットワークに参加しましょう。動画クリエイターをフォローしたり、自分で動画を投稿したり。特定のサービスに縛られることはありません。コミュニティが所有する、広告なしのプラットフォームです。
❤ Framasoft が開発・提供しています。
はじめに
PeerTube は、YouTube・Dailymotion・Vimeo などのデータや注目を一元管理する既存のプラットフォームへの代替として開発された、無料・分散型・フェデレーション対応の動画プラットフォームです。
詳しくはこちら:
- PeerTube とは何か、どのように動作するかを説明した2分間の紹介動画(PeerTube 上でホスト)
- PeerTube 公式ホームページ:joinpeertube.org
- デモ環境:
- peertube.cpy.re(安定版)
- peertube2.cpy.re(ナイトリービルド)
- peertube3.cpy.re(リリース候補版)
- PeerTube と Mastodon(分散型 Twitter 代替)間の通信を実演したデモ動画
コントリビュート(貢献)
プログラマーでなくても貢献できます!フィードバックの提供、バグ報告、翻訳のサポート、ドキュメントの執筆など、さまざまな形で参加できます。コントリビュートガイドを確認してみてください。始めるまで2分もかかりません 😉
以下のコミュニティチャンネルにも気軽に参加してください:
- チャット:
- Matrix(IRC・Discord とブリッジ済み):#peertube:matrix.org
- IRC:irc.libera.chat の #peertube(ポート 6697)
- フォーラム:
- Framacolibri:https://framacolibri.org/c/peertube
質問やアイデアがあれば、どうぞ気軽にご連絡ください!💬
独自の PeerTube プラットフォームを作る
インストールまたはアップグレードには、推奨方法である本番環境向けガイドをご覧ください。ハードウェア要件については、FAQ の「PeerTube を動かすには大きなサーバーが必要ですか?」を参照してください。
さまざまなプラットフォーム(YunoHost や Docker を含む)向けのコミュニティ製パッケージもあります。
ドキュメント一覧
ご不明な点がある場合は、まず FAQ で答えをお探しください。
ユーザー向けドキュメント
ユーザードキュメントをご覧ください。
管理者向けドキュメント
独自の PeerTube プラットフォームの作成方法をご確認ください。より詳細な管理者向けドキュメントもあります。
ツール向けドキュメント
CLI からの動画インポート・アップロード方法や、PeerTube プラットフォームの管理方法については、ツールドキュメントを参照してください。
技術者向けドキュメント
アーキテクチャ設計の詳細については、アーキテクチャ設計書をご覧ください。
REST API ドキュメント:
- OpenAPI 3.0.0 スキーマ:/support/doc/api/openapi.yaml
- スペックエクスプローラー:docs.joinpeertube.org/api-rest-reference.html
ActivityPub ドキュメントもご参照ください。
本番環境ガイド — インストール
帯域幅の低い回線(ADSL 接続など)に繋がったデバイスに、本番用 PeerTube をインストールしないでください。適切なハードウェアについては FAQ をご覧ください。
🔨 依存パッケージ
依存パッケージガイドの手順に従ってください。
👷 PeerTube ユーザーの作成
ホームディレクトリを /var/www/peertube に設定した peertube ユーザーを作成します:
sudo useradd -m -d /var/www/peertube -s /usr/sbin/nologin peertube
nginx がルートディレクトリを参照できるよう、権限を設定します:
sudo chmod 755 /var/www/peertube
🗃️ データベースの設定
PostgreSQL に本番用データベースと peertube ユーザーを作成します:
cd /var/www/peertube sudo -u postgres createuser -P peertube
ここで PostgreSQL の peertube ユーザー用パスワードを入力します。このパスワードは後で production.yaml にコピーするので必ず控えてください。空欄のままエンターを押さないでください。
sudo -u postgres createdb -O peertube -E UTF8 -T template0 peertube_prod
PeerTube に必要な拡張機能を有効化します:
sudo -u postgres psql -c "CREATE EXTENSION pg_trgm;" peertube_prod sudo -u postgres psql -c "CREATE EXTENSION unaccent;" peertube_prod
📄 PeerTube ディレクトリの準備
最新リリースバージョンを取得します:
VERSION=$(curl -s https://api.github.com/repos/chocobozzz/peertube/releases/latest | grep tag_name | cut -d '"' -f 4) && echo "Latest Peertube version is $VERSION"
必要なサブディレクトリを作成します:
cd /var/www/peertube sudo -u peertube mkdir config storage versions sudo -u peertube chmod 750 config/
最新版をダウンロードし、展開後に zip を削除します:
cd /var/www/peertube/versions
# リリースは https://builds.joinpeertube.org/release でも入手可能
sudo -u peertube wget -q "https://github.com/Chocobozzz/PeerTube/releases/download/${VERSION}/peertube-${VERSION}.zip"
sudo -u peertube unzip -q peertube-${VERSION}.zip && sudo -u peertube rm peertube-${VERSION}.zip
PeerTube をインストールします:
cd /var/www/peertube
sudo -u peertube ln -s versions/peertube-${VERSION} ./peertube-latest
cd ./peertube-latest && sudo -H -u peertube npm run install-node-dependencies -- --production
🔧 PeerTube の設定
デフォルト設定ファイルをコピーします(このファイルは直接編集しないでください):
cd /var/www/peertube sudo -u peertube cp peertube-latest/config/default.yaml config/default.yaml
本番用設定のサンプルをコピーします:
cd /var/www/peertube sudo -u peertube cp peertube-latest/config/production.yaml.example config/production.yaml
config/production.yaml を編集します。特に以下の項目を確認してください:
webserver:リバースプロキシの公開情報secrets:手動で生成する秘密文字列(バージョン 5.0 以降)database:PostgreSQL の設定redis:Redis の設定smtp:メール送信を使用する場合admin.email:root ユーザーのメールアドレス
PeerTube はウェブサーバーのホスト名変更をサポートしていません。ドメイン名は最初の起動時点で確定します。
🚚 ウェブサーバー(Nginx)の設定
公式設定ファイルは Nginx 用のみ提供しています。
Nginx 設定テンプレートをコピーします:
sudo cp /var/www/peertube/peertube-latest/support/nginx/peertube /etc/nginx/sites-available/peertube
[peertube-domain] を実際のドメイン名に置き換えます:
sudo sed -i 's/${WEBSERVER_HOST}/[peertube-domain]/g' /etc/nginx/sites-available/peertube
sudo sed -i 's/${PEERTUBE_HOST}/127.0.0.1:9000/g' /etc/nginx/sites-available/peertube
設定ファイルを確認・修正します(alias・root・rewrite のパス、高ビットレート配信時の proxy_limit_rate など):
sudo vim /etc/nginx/sites-available/peertube
設定を有効化します:
sudo ln -s /etc/nginx/sites-available/peertube /etc/nginx/sites-enabled/peertube
Let’s Encrypt で SSL 証明書を取得します:
sudo systemctl stop nginx sudo certbot certonly --standalone --post-hook "systemctl restart nginx" sudo systemctl restart nginx
webroot 方式への更新を推奨します:
# authenticator = standalone を authenticator = webroot に変更 # webroot_path = /var/www/certbot を追加 sudo vim /etc/letsencrypt/renewal/your-domain.com.conf
⚗️ Linux TCP/IP チューニング
sudo cp /var/www/peertube/peertube-latest/support/sysctl.d/30-peertube-tcp.conf /etc/sysctl.d/ sudo sysctl -p /etc/sysctl.d/30-peertube-tcp.conf
デフォルトの FIFO スケジューラはバッファブロートや遅延が発生しやすいため、このチューニングを推奨します(Debian 9 ではデフォルト無効)。
🧱 systemd の設定
sudo cp /var/www/peertube/peertube-latest/support/systemd/peertube.service /etc/systemd/system/ sudo vim /etc/systemd/system/peertube.service sudo systemctl daemon-reload sudo systemctl enable peertube # 起動時に自動起動する場合 sudo systemctl start peertube sudo journalctl -feu peertube
🧑💻 管理者アカウント
管理者ユーザー名は root で、パスワードは自動生成されます。パスワードは PeerTube のログで確認できます。以下のコマンドで変更も可能です:
cd /var/www/peertube/peertube-latest && sudo -u peertube NODE_CONFIG_DIR=/var/www/peertube/config NODE_ENV=production npm run reset-password -- -u root
または環境変数 PT_INITIAL_ROOT_PASSWORD に任意のパスワード(6文字以上)を設定する方法もあります。
🎉 次のステップ
- 公開インスタンス一覧への登録(任意):https://instances.joinpeertube.org/
- CLI ツールの確認
本番環境ガイド — アップグレード
変更履歴(特に「IMPORTANT NOTES」セクション)を必ず確認してください:CHANGELOG.md
スクリプトによるアップグレード(推奨)
cd /var/www/peertube/peertube-latest/scripts && sudo -H -u peertube ./upgrade.sh
git がインストールされている場合、production.yaml.new が生成されます。内容を確認して既存の production.yaml と置き換えてから再起動してください。
sudo systemctl restart peertube
複数回アップグレード後はディスク容量を解放できます:
sudo -u peertube pnpm store prune
手動アップグレード
設定ファイルの更新
cd /var/www/peertube && sudo -u peertube diff config/production.yaml config/production.yaml.new cd /var/www/peertube && sudo -u peertube cp config/production.yaml.new config/production.yaml
Nginx 設定の差分確認
cd /var/www/peertube/versions diff -u "$(ls -t | head -2 | tail -1)/support/nginx/peertube" "$(ls -t | head -1)/support/nginx/peertube"
systemd 設定の差分確認
cd /var/www/peertube/versions diff -u "$(ls -t | head -2 | tail -1)/support/systemd/peertube.service" "$(ls -t | head -1)/support/systemd/peertube.service"
再起動
sudo systemctl reload nginx # nginx 設定を変更した場合 sudo systemctl daemon-reload # systemd 設定を変更した場合 sudo systemctl restart peertube && sudo journalctl -fu peertube
🆘 問題が発生した場合(ロールバック)
OLD_VERSION="v0.42.42" && SQL_BACKUP_PATH="backup/sql-peertube_prod-20180119-1018.bak" && \ cd /var/www/peertube && sudo -u peertube unlink ./peertube-latest && \ sudo -u peertube ln -s "versions/peertube-$OLD_VERSION" peertube-latest && \ sudo -u postgres pg_restore -c -C -d peertube_prod "$SQL_BACKUP_PATH" && \ sudo systemctl restart peertube
OLD_VERSION と SQL_BACKUP_PATH は実際の環境に合わせて変更してください。
Docker ガイド
このガイドは docker および docker compose V2 が必要です。
docker compose version # 2.x.x 以上であること
インストール
PeerTube はウェブサーバーのホスト名変更をサポートしていません。ドメイン名は最初の起動時点で確定します。
作業ディレクトリに移動する
以下の手順は空の作業ディレクトリを前提としていますが、リポジトリをクローンして master ブランチの support/docker/production ディレクトリを使用しても構いません。
cd /your/peertube/directory
設定ファイルを取得する
curl https://raw.githubusercontent.com/chocobozzz/PeerTube/master/support/docker/production/docker-compose.yml > docker-compose.yml curl https://raw.githubusercontent.com/Chocobozzz/PeerTube/master/support/docker/production/.env > .env
.env ファイルを編集する
以下のプレースホルダーを実際の値に置き換えてください:
<MY POSTGRES USERNAME><MY POSTGRES PASSWORD><MY DOMAIN>(https://は含めない)<MY EMAIL ADDRESS><MY PEERTUBE SECRET>
sudo nano docker-compose.yml sudo nano .env
ウェブサーバーの設定
docker compose ファイルにはウェブサーバー設定が含まれています。別のウェブサーバーを使用する場合はこの手順をスキップし、docker compose ファイルの該当セクションをコメントアウトしてください。
mkdir -p docker-volume/nginx docker-volume/nginx-logs curl https://raw.githubusercontent.com/Chocobozzz/PeerTube/master/support/nginx/peertube > docker-volume/nginx/peertube
Let’s Encrypt で SSL 証明書を手動取得します:
mkdir -p docker-volume/certbot docker run -it --rm --name certbot -p 80:80 -v "$(pwd)/docker-volume/certbot/conf:/etc/letsencrypt" certbot/certbot certonly --standalone
動作確認
docker compose up
管理者パスワードの確認またはリセット:
docker compose exec -u peertube peertube npm run reset-password -- -u root # または以下でログから確認 docker compose logs peertube | grep -A1 root
DKIM DNS TXT レコードの確認
cat ./docker-volume/opendkim/keys/*/*.txt
アップグレード
変更履歴を必ず確認してください:CHANGELOG.md
cd /your/peertube/directory docker compose pull docker compose down -v mv docker-volume/nginx/peertube docker-volume/nginx/peertube.bak curl https://raw.githubusercontent.com/Chocobozzz/PeerTube/master/support/nginx/peertube > docker-volume/nginx/peertube docker compose up -d
PostgreSQL コンテナのアップグレード
既存クラスターのエクスポートと新クラスターへのインポートのためにダウンタイムが必要です。
バックアップディレクトリを作成し、DB 以外のコンテナを停止します:
cd /docker-compose/directory mkdir -p backups docker compose stop peertube webserver certbot
DB コンテナ内でダンプを作成します:
docker compose exec -it postgres /bin/bash export PGUSER="$POSTGRES_USER" export PGDATABASE="$POSTGRES_DB" export PGPASSWORD="$POSTGRES_PASSWORD" pg_dumpall > "/tmp/pg.dump" exit
ダンプをコピーし、古いデータを退避させます:
docker compose cp postgres:/tmp/pg.dump backups/pg.dump docker compose stop postgres mv ./docker-volume/db ./docker-volume/db.bak mkdir ./docker-volume/db && chmod 700 ./docker-volume/db
docker-compose.yml の PostgreSQL バージョンを更新して新イメージを取得します(例:postgres:13-alpine → postgres:17-alpine):
vim docker-compose.yml docker compose pull docker compose up -d postgres docker compose logs -f postgres # "ready to accept connections" を待つ
ダンプをインポートし、パスワードをリセットします:
docker compose cp "backups/pg.dump" postgres:/tmp/pg.dump docker compose exec -it postgres /bin/bash export PGUSER="$POSTGRES_USER" export PGDATABASE="$POSTGRES_DB" export PGPASSWORD="$POSTGRES_PASSWORD" psql -U "$POSTGRES_USER" -c "SELECT version();" psql -U "$POSTGRES_USER" -f /tmp/pg.dump psql -U "$POSTGRES_USER" -c "ALTER USER $POSTGRES_USER WITH PASSWORD '$POSTGRES_PASSWORD'" exit
全サービスを再起動して確認します:
docker compose up -d peertube webserver certbot docker compose logs -f peertube
問題なければバックアップを削除します:
rm -rf ./docker-volume/db.bak backups
ビルド
本番環境向けビルド
git clone https://github.com/chocobozzz/PeerTube /tmp/peertube cd /tmp/peertube docker build . -f ./support/docker/production/Dockerfile
開発環境向けビルド
現在、開発用の Docker イメージは提供していません。開発への参加方法については、CONTRIBUTING ガイドをご覧ください。
非公式インストール方法
Git からインストール
このガイドは公式インストールガイドを読んでいることを前提としており、リバースプロキシやデータベース設定などは省略しています。最終的に最新の開発版(不安定な場合があります)が動作する環境が構築されます。
cd /var/www/peertube/versions/ sudo -u peertube -H bash git clone https://github.com/Chocobozzz/PeerTube.git peertube-develop cd peertube-develop/
目的のブランチを確認・切り替えたら(git checkout [ブランチ名またはコミットハッシュ])、ビルドを実行します:
pnpm install --frozen-lockfile npm run build
コンパイルには時間がかかります。ローカルマシンでビルドしてからサーバーに転送する方法もあります。
設定追加とデータベースバックアップを行います:
SQL_BACKUP_PATH="backup/sql-peertube_prod-$(date -Im).bak" && \
cd /var/www/peertube && sudo -u peertube mkdir -p backup && \
sudo -u postgres pg_dump -F c peertube_prod | sudo -u peertube tee "$SQL_BACKUP_PATH" >/dev/null
シンボリックリンクを更新して再起動します:
cd /var/www/peertube && \
sudo unlink ./peertube-latest && \
sudo -u peertube ln -s versions/peertube-develop ./peertube-latest
sudo systemctl restart peertube
git pull + npm run build で開発版を別の開発版にアップグレードしないでください。サイトが壊れます。リリース版に戻すか、フォルダをコピーしてそちらでビルドしてください。
ArchLinux AUR
コミュニティパッケージ(daftaupe 氏作成)を通じて AUR からインストールできます:
asp checkout peertube cd peertube makepkg --syncdeps --rmdeps --install --clean
または:
yay -S peertube
インストール後、/usr/share/webapps/peertube/config/production.yaml でデータベースと認証情報を設定してください。RC 版・ナイトリービルド向けの Arch パッケージは現在ありません。その場合は tarball をご利用ください。
CentOS / Fedora / RHEL COPR
dnf copr enable daftaupe/peertube
前提条件
PostgreSQL・Node.js・FFmpeg が必要です。
Fedora の場合、RPM Fusion リポジトリを有効化します:
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
CentOS の場合、EPEL と epel-multimedia リポジトリを有効化します:
cd /etc/yum.repos.d && curl -O https://negativo17.org/repos/epel-multimedia.repo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm https://negativo17.org/repos/epel-multimedia.repo
データベースの設定
su - postgres initdb createuser peertube -W createdb -O peertube peertube_prod echo "host peertube_prod peertube 127.0.0.1/32 md5" >> data/pg_hba.conf systemctl reload postgresql
起動
systemctl start redis vim /etc/peertube/production.yaml systemctl start peertube && journalctl -f -u peertube
YunoHost Debian
YunoHost を動かしている Debian 環境では、コミュニティパッケージを使って pnpm・Node・PeerTube を一括インストールできます。
Kubernetes Helm
コミュニティが管理する Helm チャートを使って PeerTube を Kubernetes 上にデプロイできます。インストール前に必要な Helm の値を設定してください。詳細は peertube-helm の README を参照してください。
シェルスクリプト + Docker Compose による一括インストール
Docker のみインストールされたサーバーに、1コマンドで公式 Docker スタックをインストールする方法です。主な機能:
- Docker Compose のインストールまたはアップグレード
/var/peertube配下へのスタック構築と公式設定ファイルの配置.env変数の自動入力・PostgreSQL 認証情報の自動生成- Certbot による Let’s Encrypt 証明書の初回取得
- systemd サービスの作成とスタック起動
- PostgreSQL ダンプ・リストア、nginx 制御、スタックアップグレードなどのメンテナンス機能
プロジェクトリンク:https://github.com/kimsible/getpeer.tube
これらのプロジェクトの多くはベータ版です。フィードバックを歓迎します。
Ansible Playbook FedoraPodman
Ansible Playbook を使って Fedora / Fedora Server 上に PeerTube をインストールできます。PeerTube サーバーは Podman と Systemd Quadlets で動作します。
Playbook リンク:gitlab.nuculabs.dev/dnutiu/ansible-playbooks
ウェブサーバーとメールサービスは別途用意が必要です。SELinux・Firewalld・Podman コンテナ・バックアップ設定・Systemd Quadlets は Playbook が自動構成します。
variables.yaml の設定
selinux_virt_use_samba: true # SAMBA ボリュームをマウントする場合
base_directory: "/peertube"
peertube:
open_firewall_ports: true # ポート 9000・1935 を開放(同一マシンにウェブサーバーがある場合は false)
env_file: "environment_file"
backups_directory: "/peertube/backups"
image_name: "docker.io/chocobozzz/peertube:v7.0.1-bookworm"
data_directory: "/peertube/data"
config_directory: "/peertube/config"
environment:
secret: "cff9ea5880b72f..." # openssl rand -hex 32 で生成
db_user: "user"
db_pass: "pass"
webserver:
hostname: "peertube.example.com" # 実際のドメインに変更
port: 80 # HTTPS の場合は 443
tls: "false" # HTTPS を使用する場合は "true"
smtp:
hostname: "smtp.gmail.com"
postgres:
image_name: "docker.io/postgres:13-alpine"
redis:
image_name: "docker.io/redis:6-alpine"
inventory.ini とデプロイ
# inventory.ini [servers] 192.X.X.X ansible_user=root
make run # Ansible がない場合は先に make install
Ansible をパッケージマネージャーからインストールする場合:
sudo dnf install ansible ansible-galaxy collection install community.general ansible-galaxy collection install containers.podman ansible-galaxy collection install ansible.posix
自動バックアップ
Playbook 完了後、毎日実行されるファイルシステムレベルのバックアップが設定されます。バックアップ中は PostgreSQL が停止します。自動バックアップを無効化する場合:
systemctl stop peertube-backup.timer systemctl disable peertube-backup.timer