Nextcloud用の高性能バックエンドを構築する(Docker)
Nextcloud用の高性能バックエンドをDockerでインストールする
高性能バックエンドのインストールメモです。
ファイルが散らばるのが嫌なのと設定が面倒だったのでDockerでインストールします。
turnサーバーは独自インストールしてたので省いてますがあとでまとめたいのでテストします。
2025年12月15日のメモです。
まだ変更する可能性があります。
dockerもnginxもcertbotも既にインストールしてる場合は高性能バックエンドをインストールするまでスクロールしてください。
画像のドメインの通りConoha VPSにテストインストールしてます(まだテスト段階の為、変更の可能性があります)

ポート開放(必要があれば)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 3478/tcp
sudo ufw allow 3478/udp
sudo ufw allow 49152:65535/udp
sudo ufw reload
Dockerをインストールする
パッケージの更新をする
sudo apt -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
Docker公式のGPG鍵を追加する
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
最新の安定版(stable)を取得する。
最新版(nightly)が欲しい場合はstableの文字をnightlyへ変更する。
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
インストールする
sudo apt -y update
sudo apt -y install docker-ce docker-ce-cli containerd.io
証明書を取得する
Certbotをインストールする
sudo apt -y install certbot
証明書を取得する
sudo certbot certonly --standalone -d hpb.momijiina.tech
Nginxをインストールする
最新のNginx取得に必要なものをインストール
sudo apt -y install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
Nginx の署名鍵をインポート
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
最新の安定板を取得する
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
インストール
sudo apt update
sudo apt -y install nginx
Nginx の自動起動設定
sudo systemctl enable nginx --now
高性能バックエンドをインストールする
ディレクトリの作成とインストール
cd /opt
sudo git clone https://github.com/strukturag/nextcloud-spreed-signaling.git
cd nextcloud-spreed-signaling/docker
キーの生成
設定ファイルで使用するのでランダムな文字列を生成し、控えておいてください。
# Hash Key (64バイト)
openssl rand -hex 32
# Block Key (32バイト)
openssl rand -hex 16
# Shared Secret (Nextcloudと連携する用)
openssl rand -base64 16
コピー用
openssl rand -hex 32
openssl rand -hex 16
openssl rand -base64 16
設定ファイルの作成
server.confを作成またはコピーして編集します。
作成の場合
server.confを設定する
sudo vi server.conf
ドメインやシークレットなどの必要な部分は修正してください。
[http]
listen = 0.0.0.0:8080
[app]
debug = false
[sessions]
hashkey = 生成したHashKey
blockkey = 生成したBlockKey
[backend]
# セキュリティ設定 (false推奨)
allowall = false
# バックエンドの定義 (重要)
backends = nextcloud
secret = 生成したSharedSecret
allowed = https://cloud.momijiina.tech
[nextcloud]
# [backend]で定義した名前(nextcloud)の設定
url = https://cloud.momijiina.tech
secret = 生成したSharedSecret
[nats]
url = nats://localhost:4222
[mcu]
type = janus
url = ws://localhost:8188
gnatsd.confを設定する
sudo vi gnatsd.conf
以下だけです。
公式コピーの場合はすべて削除して以下だけに変更。
listen: 0.0.0.0:4222
http: 0.0.0.0:8222
コピーの場合
コピー後は上と似た感じに設定してください。
コメントアウトされた設定が多すぎるので。
sudo cp ../server.conf.in ./server.conf
sudo cp ../gnatsd.conf ./gnatsd.conf
ビルドして起動する
完了まで少しかかりました。
sudo docker compose up -d --build
Nginxの設定例
わかりやすいやつならconf名は何でも
sudo vi signaling.conf
server {
listen 80;
server_name hpb.momijiina.tech; # あなたのSignaling用ドメイン
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name hpb.momijiina.tech; # あなたのSignaling用ドメイン
ssl_certificate /etc/letsencrypt/live/hpb.momijiina.tech/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hpb.momijiina.tech/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# タイムアウト設定 (通話が切れないように長めに)
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
location /standalone/ {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}