PeerTube Documentationの「Install or upgrade PeerTube」を日本語に翻訳(2026年5月21日)

複数の小規模プロバイダーが連合・相互運用できる分散型動画ホスティングネットワークに参加しましょう。動画クリエイターをフォローしたり、自分で動画を投稿したり。特定のサービスに縛られることはありません。コミュニティが所有する、広告なしのプラットフォームです。

Framasoft が開発・提供しています。

🎬

はじめに

PeerTube は、YouTube・Dailymotion・Vimeo などのデータや注目を一元管理する既存のプラットフォームへの代替として開発された、無料・分散型・フェデレーション対応の動画プラットフォームです。

詳しくはこちら:


🙌

コントリビュート(貢献)

プログラマーでなくても貢献できます!フィードバックの提供、バグ報告、翻訳のサポート、ドキュメントの執筆など、さまざまな形で参加できます。コントリビュートガイドを確認してみてください。始めるまで2分もかかりません 😉

以下のコミュニティチャンネルにも気軽に参加してください:

質問やアイデアがあれば、どうぞ気軽にご連絡ください!💬


📦

独自の PeerTube プラットフォームを作る

インストールまたはアップグレードには、推奨方法である本番環境向けガイドをご覧ください。ハードウェア要件については、FAQ の「PeerTube を動かすには大きなサーバーが必要ですか?」を参照してください。

さまざまなプラットフォーム(YunoHostDocker を含む)向けのコミュニティ製パッケージもあります。


📖

ドキュメント一覧

ご不明な点がある場合は、まず FAQ で答えをお探しください。

ユーザー向けドキュメント

ユーザードキュメントをご覧ください。

管理者向けドキュメント

独自の PeerTube プラットフォームの作成方法をご確認ください。より詳細な管理者向けドキュメントもあります。

ツール向けドキュメント

CLI からの動画インポート・アップロード方法や、PeerTube プラットフォームの管理方法については、ツールドキュメントを参照してください。

技術者向けドキュメント

アーキテクチャ設計の詳細については、アーキテクチャ設計書をご覧ください。

REST API ドキュメント:

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

設定ファイルを確認・修正します(aliasrootrewrite のパス、高ビットレート配信時の 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文字以上)を設定する方法もあります。

🎉 次のステップ


⬆️

本番環境ガイド — アップグレード

⚠️

変更履歴(特に「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_VERSIONSQL_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 コンテナのアップグレード

⚠️

既存クラスターのエクスポートと新クラスターへのインポートのためにダウンタイムが必要です。

1

バックアップディレクトリを作成し、DB 以外のコンテナを停止します:

cd /docker-compose/directory
mkdir -p backups
docker compose stop peertube webserver certbot
2

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
3

ダンプをコピーし、古いデータを退避させます:

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
4

docker-compose.yml の PostgreSQL バージョンを更新して新イメージを取得します(例:postgres:13-alpinepostgres:17-alpine):

vim docker-compose.yml
docker compose pull
docker compose up -d postgres
docker compose logs -f postgres  # "ready to accept connections" を待つ
5

ダンプをインポートし、パスワードをリセットします:

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
6

全サービスを再起動して確認します:

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 を一括インストールできます。

YunoHost で 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