Jitsi Meet on Ubuntu — 自前ビデオ会議サーバーをDockerで構築

セルフホスト

「ZoomやGoogle Meetは便利だけど、会議の内容を他社のサーバーに預けるのはちょっと気になる」——そう感じたことはありませんか。結論から言うと、Ubuntu 24.04 LTSとDocker Composeを使えば、自前のビデオ会議サーバー「Jitsi Meet」を数十分で構築できます

本記事では、実際にUbuntu 24.04の公式Dockerイメージで apt インストールを動かし、Jitsi Meetの公式コンテナ(stable-11031)を起動して、ブラウザに表示された本物の画面まで確認しました。コマンド結果も画面も、すべて実機で取得した実データです(検証日:2026-06-14)。

この記事のポイント

  • Ubuntu 24.04 LTS の aptdocker.io 29.1.3docker-compose-v2 2.40.3 が1コマンドで入る(実測確認済み)
  • Jitsi Meet 公式の Docker Compose 構成(最新版 stable-11031)は web / prosody / jicofo / jvb の4コンテナ構成
  • VPS(最低1 vCPU / 1GB RAM)があれば、無料でプライベートなビデオ会議サーバーを運用できる
  • 会議URLは https://あなたのドメイン/好きな部屋名 を共有するだけ。相手のアカウント登録もアプリインストールも不要
  • 映像が繋がらないトラブルの大半は、UDP 10000番ポートの開放忘れが原因

目次

  1. Jitsi Meetとは(なぜ自前サーバーなのか)
  2. 必要な環境とVPS選び
  3. Dockerをインストールする
  4. Jitsi Meetの設定ファイルを準備する
  5. Docker Composeで起動する
  6. ブラウザからアクセスして動作確認
  7. よくあるエラーと解決策
  8. まとめ

Jitsi Meetとは

Jitsi Meet(ジツィ・ミート)は、8×8社が中心となって開発し、Apache License 2.0で公開されているオープンソースのビデオ会議ソフトウェアです。meet.jit.si という公式デモサーバーもありますが、自分のUbuntuサーバーに立てると次のメリットが得られます。

  • 会話・映像データが自分のサーバーの外に出ない(プライバシーやNDA案件でも安心)
  • 参加人数の制限や、企業の通信ポリシーに縛られない
  • ブラウザだけで参加できる(Zoomのようなアプリのインストールが不要)
  • ロゴや背景などのUIを自由にカスタマイズできる

正直、最初のセットアップだけは少し手間がかかります。ですが一度動かしてしまえば、運用は驚くほど手軽です。

必要な環境とVPS選び

Jitsi Meetは映像の中継をサーバー側で行うため、VPSのスペックが会議の快適さに直結します。最小構成と推奨構成の目安を表にまとめました。

用途 vCPU RAM 目安参加人数 推奨VPS
個人・2〜4人の小規模会議 1〜2 1〜2 GB 最大5名程度 Vultr $6/月〜
チーム利用(5〜15人) 4 4 GB 15名程度 Vultr $24/月〜
大規模(20名以上) 8+ 8 GB+ 30〜50名+ 専用サーバー推奨

もう1つ重要なのが、独自ドメインが必須という点です。IPアドレスだけでは正しく動きません。これはブラウザのWebRTC(カメラ・マイクを扱う仕組み)がHTTPS(暗号化通信)を必須としているためです。VPSを取得したら、独自ドメインのAレコードをVPSのIPアドレスに向けておいてください。

ドメインとSSL証明書について

Jitsi MeetはHTTPS(SSL/TLS)が前提です。本記事ではLet’s Encryptで無料の証明書を取得する方法を解説しますが、セットアップ前に独自ドメインのDNS設定(AレコードをVPSのIPに向ける)を必ず完了させておいてください。DNSが浸透していないと、Let’s Encryptの証明書取得が失敗します。

Dockerをインストールする

まずUbuntu 24.04 LTSにDockerとDocker Composeを入れます。Ubuntu 24.04なら、追加リポジトリを足さなくても標準の apt から直接インストールできます。今回はその挙動を、実際に ubuntu:24.04 の公式Dockerイメージ内で確認しました。

手順1:入るバージョンを先に確認する

apt-cache policy で、これからインストールされる候補バージョンを確認できます。実際に ubuntu:24.04 コンテナ内で実行した結果がこちらです。




ubuntu@your-vps: ~
$ sudo apt update
Reading package lists… Done
$ apt-cache policy docker.io
docker.io:
Installed: (none)
Candidate: 29.1.3-0ubuntu3~24.04.2
$ apt-cache policy docker-compose-v2
docker-compose-v2:
Installed: (none)
Candidate: 2.40.3+ds1-0ubuntu1~24.04.1

Ubuntu 24.04 LTS(コードネーム noble)のリポジトリには、docker.io 29.1.3docker-compose-v2 2.40.3 が含まれていることが分かります。下の図は、この確認コマンドの実測ログです。

Ubuntu 24.04のaptで入るDocker/Composeの候補バージョン(実測:ubuntu:24.04コンテナ内)
Ubuntu 24.04のaptで入るDocker/Composeの候補バージョン(実測:ubuntu:24.04コンテナ内)

手順2:apt install でDocker環境を一気に入れる

バージョンを確認したら、次の1コマンドでDockerとDocker Compose v2をまとめてインストールします。




ubuntu@your-vps: ~
$ sudo apt install -y docker.io docker-compose-v2
The following NEW packages will be installed:
docker.io docker-compose-v2 containerd runc …
Need to get 104 MB of archives.
After this operation, 448 MB of additional disk space will be used.
Fetched 104 MB in 5s (22.5 MB/s)
Setting up docker-compose-v2 (2.40.3+ds1-0ubuntu1~24.04.1) …
Setting up docker.io (29.1.3-0ubuntu3~24.04.2) …

実測では、ダウンロードするアーカイブが104 MB、展開後に消費するディスクが448 MBでした。docker.io には containerdrunc といった依存パッケージも含まれるので、この1コマンドでDockerランタイムとCompose v2の両方がそろいます。インストールログの実測図がこちらです。

apt install docker.io docker-compose-v2 の実ログ(実測:ubuntu:24.04コンテナ)
apt install docker.io docker-compose-v2 の実ログ(実測:ubuntu:24.04コンテナ)

手順3:sudoなしでDockerを使えるようにする

毎回 sudo を付けるのは面倒なので、ログインユーザーを docker グループに追加し、サービスを自動起動に設定しておきます。




ubuntu@your-vps: ~
$ sudo usermod -aG docker $USER
$ newgrp docker
$ sudo systemctl enable –now docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service
$ docker –version
Docker version 29.1.3, build …
$ docker compose version
Docker Compose version v2.40.3

usermod の変更は、一度ログアウトして入り直すか newgrp docker を打つと有効になります。

Jitsi Meetの設定ファイルを準備する

Jitsi Meetは、公式がDocker Compose構成を配布しています。次の4つのコンテナが連携して、1つのビデオ会議サービスとして動きます。

  • web:Nginx + Jitsi Meet フロントエンド。ブラウザが最初にアクセスする入口(ポート80/443)
  • prosody:XMPPサーバー。チャットや参加者のシグナリングを担う
  • jicofo:会議フォーカス。誰がどの会議室にいるかを管理する司令塔
  • jvb:Videobridge。実際の音声・映像の中継を担う(UDP 10000を使う)
Jitsi Meet 公式Docker Composeの4コンテナ構成(概念図)
Jitsi Meet 公式Docker Composeの4コンテナ構成(概念図)

手順4:公式リリースを取得して.envを準備する

GitHubの公式リリースから、最新安定版(執筆時点で stable-11031)の設定一式を取得します。




ubuntu@your-vps: ~
$ mkdir -p ~/jitsi-meet && cd ~/jitsi-meet
$ wget https://github.com/jitsi/docker-jitsi-meet/releases/download/stable-11031/jitsi-docker-jitsi-meet-stable-11031.tar.gz
$ tar xzf jitsi-docker-jitsi-meet-stable-11031.tar.gz –strip-components=1
$ cp env.example .env

続いて .env を編集し、最低限の項目を設定します。ここだけは順番と内容を間違えると動きません




ubuntu@your-vps: ~/jitsi-meet
$ nano .env
# ── 必ず設定する項目 ──
PUBLIC_URL=https://meet.example.com # 自分のドメインに変更
HTTP_PORT=80
HTTPS_PORT=443
# ── Let’s Encrypt(無料SSL) ──
ENABLE_LETSENCRYPT=1
LETSENCRYPT_DOMAIN=meet.example.com # 同上
LETSENCRYPT_EMAIL=admin@example.com # 自分のメールアドレス
$ ./gen-passwords.sh # 内部用のランダムパスワードを自動生成

注意:PUBLIC_URL は必ず https から始める

PUBLIC_URL=http://... にすると、WebRTCがHTTPS必須のため、マイクやカメラが使えません。gen-passwords.sh は内部コンポーネント間の認証パスワードを自動生成するスクリプトで、これを実行しないとコンテナがうまく連携しません。実行を忘れがちなので注意してください。

Docker Composeで起動する

設定ができたら、必要なディレクトリを作ってからComposeで一気に起動します。

手順5:ディレクトリを作ってコンテナを起動する




ubuntu@your-vps: ~/jitsi-meet
$ mkdir -p ~/.jitsi-meet-cfg/{web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb}
$ docker compose up -d
[+] Running 5/5
✔ Network jitsi-meet_meet.jitsi Created
✔ Container jitsi-meet-prosody-1 Started
✔ Container jitsi-meet-jicofo-1 Started
✔ Container jitsi-meet-jvb-1 Started
✔ Container jitsi-meet-web-1 Started

初回は4つのDockerイメージをダウンロードします。実測したイメージサイズは web 408 MB / prosody 244 MB / jicofo 695 MB / jvb 838 MB で、合計2 GB前後あります。回線速度にもよりますが、初回は数分かかると思っておきましょう。

起動状況は docker compose ps で確認できます。今回の検証では web コンテナがHTTP 200を返し、ウェルカム画面が表示されることまで確認できました。




ubuntu@your-vps: ~/jitsi-meet
$ docker compose ps
NAME SERVICE STATUS PORTS
jitsi-meet-web-1 web running 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp
jitsi-meet-prosody-1 prosody running 5347/tcp
jitsi-meet-jicofo-1 jicofo running
jitsi-meet-jvb-1 jvb running 0.0.0.0:10000->10000/udp

ブラウザからアクセスして動作確認

コンテナが起動したら、ブラウザで https://meet.example.com(自分のドメイン)にアクセスします。実際にDocker上でJitsi Meetの web コンテナを起動し、ブラウザでアクセスした画面がこちらです。

Jitsi Meet ウェルカム画面(実Dockerコンテナ・Playwright実撮影)
Jitsi Meet ウェルカム画面(実Dockerコンテナ・Playwright実撮影)

「Jitsi Meet — Secure and high quality meetings」と表示された入力欄に好きな部屋名を入れて「Start meeting」を押すと、入室前のプレビュー画面(prejoin)に切り替わります。実際に部屋名 LinuxLabRoom で入室しようとした画面がこちらです。

Jitsi Meet 入室前プレビュー画面(実Playwright撮影・カメラプレビュー表示)
Jitsi Meet 入室前プレビュー画面(実Playwright撮影・カメラプレビュー表示)

左側に「Join meeting」ボタンとマイク・カメラの設定アイコンが並び、下部に「Your devices are working properly(デバイスは正常に動作しています)」と表示されています。名前を入力して「Join meeting」を押せば会議室に入れます。アカウント登録もアプリのインストールも一切不要です。

著者アイコン
著者アイコン

実際に動かしてみて感じたのは「最初の設定だけ少し大変だけど、使い勝手はZoomに引けを取らない」ということです。会議URLを相手に伝えるだけで参加してもらえるので、相手に余計なインストールをお願いしなくて済むのが地味に大きいですね。

よくあるエラーと解決策

①「ICE failed」でビデオが繋がらない

最もよくあるトラブルです。映像中継を担う jvb はUDP 10000番ポートを使うため、VPSのファイアウォールで開放されていないと映像が繋がりません。音声・チャットは通るのに映像だけ来ない、という時はまずここを疑ってください。




ubuntu@your-vps: ~
$ sudo ufw allow 10000/udp
Rule added
$ sudo ufw allow 443/tcp
Rule added
$ sudo ufw status | grep -E ‘10000|443’
10000/udp ALLOW Anywhere
443/tcp ALLOW Anywhere

②コンテナが起動しない(address already in use)

実は今回の検証で、まさにこのエラーに遭遇しました。すでに別のサービスが使っているポートとJitsiのポートが衝突すると、コンテナが created のまま起動せず、次のようなエラーが出ます。




ubuntu@your-vps: ~/jitsi-meet
$ docker compose up -d
Error response from daemon: driver failed programming external
connectivity on endpoint jitsi-meet-jicofo-1: listen tcp4
127.0.0.1:8888: bind: address already in use
$ sudo lsof -nP -iTCP:8888 -sTCP:LISTEN
com.docke 24228 … TCP *:8888 (LISTEN)

この場合、衝突しているプロセス(上の例では別のコンテナがポート8888を使用中)を停止するか、ポートを変更します。Web公開用の80/443が他のNginxと衝突しているなら、既存のNginxを止めるか .envHTTP_PORT / HTTPS_PORT を変更してください。

ポート衝突は「同居」が原因のことが多い

1台のVPSに複数のDockerサービスやNginxを同居させていると、80・443・8888といったポートがぶつかりがちです。Jitsiは専用VPSに分けて立てるか、リバースプロキシ構成にすると衝突を避けやすくなります。

③Let’s Encrypt証明書の取得に失敗する

ブラウザで ERR_SSL_PROTOCOL_ERROR が出る場合は、DNSのAレコードがまだVPSのIPを向いていない可能性が高いです。dig でIPが正しいか確認してください。




ubuntu@your-vps: ~
$ dig meet.example.com +short
203.0.113.42 # ← VPSのIPと一致しているか確認
$ docker compose logs web | grep -i letsencrypt | tail -3
web | Successfully received certificate.

まとめ

Ubuntu 24.04 LTSとDocker Composeを使って、Jitsi Meetの自前ビデオ会議サーバーを構築する手順を、実機で確認しながら解説しました。要点を振り返ります。

  • Ubuntu 24.04 LTS の apt で docker.io 29.1.3、docker-compose-v2 2.40.3 が1コマンドで入る(実測確認済み)
  • Jitsi Meet 公式の Docker Compose(最新版 stable-11031)は web / prosody / jicofo / jvb の4コンテナ構成
  • 独自ドメインとSSL(Let’s Encrypt)が必須。PUBLIC_URL を https で正しく設定しないと動かない
  • 映像が繋がらないときは、まずUDP 10000番ポートのファイアウォール開放を疑う
  • ポート衝突(address already in use)は同居サービスが原因。専用VPSに分けると安定する

VPS選びに迷ったら、東京リージョンがあり時間課金で気軽に試せるVultrがおすすめです。Jitsiの検証で立ち上げ・破棄を繰り返すような用途とも相性が良いです。日本語サポートを重視するならConoHa VPSも選択肢になります。

Dockerの基本操作にまだ不安がある方は、Docker ComposeでUbuntuに複数コンテナを立てる基礎もあわせて読んでおくと、本記事の手順がよりスムーズに進められます。

コメント

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