メインコンテンツまでスキップ

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;
}
}