Collabora Online 構築レポート
Nextcloud + Collabora Online 構築ドキュメント
Collabora Online 構築レポート ― Nextcloud モバイル編集環境
目次目標と背景
wan/DC インフラの目標として、ファイルをダウンロードさせずに iPhone のブラウザ上で Word / Excel / PowerPoint 相当のファイルを編集できる環境を実現する。
OnlyOffice Community Edition はモバイル Web 編集が有料ライセンス必須のため断念。Collabora Online(LibreOffice ベース・無料)に切り替え。全体構成
iPhone (WG接続 / 10.251.0.10)
↓ vpn.k2-o.net:51820 (WireGuard)
VPS 162.43.8.20
└─ Nginx: office.wan-secure.net → 172.31.22.2:9980
└─ Nginx: cloud.k2-o.net → 10.250.0.2:9080
↓ WGトンネル (10.250.0.x)
R640 (192.168.20.21 / 172.31.22.1)
└─ Nextcloud Docker (port 9080)
└─ Caddy: cloud.k2-o.net → localhost:9080
└─ R640-DH1: 172.31.22.1/24
↓ DAC 40G直結 0.2ms
hirame PC (192.168.10.40 / 172.31.22.2)
└─ Collabora Docker (port 9980)
└─ FB-X58 (ConnectX-3): 172.31.22.2/24
ローカルPC (192.168.20.10)
└─ VLAN20 → R640 Caddy → Nextcloud
hirame PC セットアップ
ハードウェア仕様
| 項目 | 内容 |
|---|---|
| ホスト名 | hirame-X58A-UD3R |
| OS | Ubuntu 22.04 LTS |
| CPU | Core i7-950(4コア8スレッド / Nehalem) |
| RAM | 12GB DDR3 |
| SSD | 251GB |
| NIC① | enp8s0 / 192.168.10.40(管理用 VLAN10) |
| NIC② | FB-X58 / Mellanox ConnectX-3 40G / 172.31.22.2(R640直結) |
| マザーボード | Gigabyte GA-X58A-UD3R(PCIe Gen2) |
| SSH | ssh hirame@192.168.10.40 |
OS インストール後の初期設定
# SSH サーバーインストール apt update && apt install -y openssh-server systemctl enable ssh && systemctl start ssh # Docker インストール apt install -y docker.io docker-compose systemctl enable docker && systemctl start docker # システムアップデート apt update && apt upgrade -y
ネットワーク設定
hirame PC netplan 設定
ファイル: /etc/netplan/99-static.yaml
network:
version: 2
renderer: NetworkManager
ethernets:
enp8s0:
dhcp4: false
addresses:
- 192.168.10.40/24
FB-X58:
dhcp4: false
addresses:
- 172.31.22.2/24
routes:
- to: 10.250.0.0/24
via: 172.31.22.1
enp3s0d1:
dhcp4: false
wifis:
wlxb0c74579ce5c:
dhcp4: true
access-points:
WAN2:
password: "Zero1543"
FB-X58 NIC名変更(udev → systemd-networkd)
# /etc/systemd/network/10-dh1.link (hirame PC 側) [Match] MACAddress=e4:1d:2d:7a:f1:c1 [Link] Name=FB-X58
R640 netplan 追記
# /etc/netplan/00-r640-mikyun.yaml に追記
# ===== hirame PC (Collabora) FB-X58 =====
R640-DH1:
dhcp4: no
addresses:
- 172.31.22.1/24
mtu: 1500
optional: true
R640側NIC名は /etc/systemd/network/10-dh1.link で MAC→R640-DH1 に定義済み。R640 iptables 転送ルール
iptables -A FORWARD -i wg2 -o R640-DH1 -j ACCEPT iptables -A FORWARD -i R640-DH1 -o wg2 -j ACCEPT iptables-save > /etc/iptables/rules.v4
VPS wg1 設定(hirame PCルート追加)
# /etc/wireguard/wg1.conf の Peer セクション AllowedIPs = 10.250.0.2/32, 172.31.22.0/24 # PostUp に追記 PostUp = ip route add 172.31.22.0/24 dev wg1 || true PostDown = ip route del 172.31.22.0/24 dev wg1 || true
接続確認
# R640 → hirame PC ping -c 3 172.31.22.2 # → 0.2ms # VPS → hirame PC curl -s --max-time 5 http://172.31.22.2:9980/hosting/discovery # → XML レスポンス返却
Collabora インストール
Docker 起動コマンド
docker run -t -d -p 9980:9980 -e "aliasgroup1=https://cloud\.k2-o\.net:443" -e "extra_params=--o:ssl.enable=false --o:ssl.termination=true" -e "username=admin" -e "password=CollaboraAdmin2026" --restart always --name collabora collabora/code
稼働確認
curl -s http://172.31.22.2:9980/hosting/discovery | head -3 # → <wopi-discovery> が返れば正常
VPS Nginx 設定
ファイル: /etc/nginx/sites-enabled/office
server {
listen 80;
server_name office.wan-secure.net;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name office.wan-secure.net;
ssl_certificate /etc/letsencrypt/live/office.wan-secure.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/office.wan-secure.net/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
client_max_body_size 10G;
location / {
allow 10.251.0.0/24;
allow 10.200.0.0/16;
allow 10.250.0.0/24;
allow 192.168.20.0/24;
allow 114.164.250.167;
allow 172.31.22.0/24;
allow 162.43.8.20;
allow 119.26.175.225; ← Collaboraのグローバルip (動的)
deny all;
proxy_pass http://172.31.22.2:9980;
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 https;
proxy_read_timeout 3600;
proxy_send_timeout 3600;
}
location /browser {
proxy_pass http://172.31.22.2:9980;
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 https;
}
location /hosting {
proxy_pass http://172.31.22.2:9980;
proxy_http_version 1.1;
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 https;
}
}
cloud.k2-o.net の許可IP追加(Collabora → Nextcloud)
# /etc/nginx/conf.d/nextcloud.conf の allow リストに追加 allow 172.31.22.0/24; allow 162.43.8.20; allow 119.26.175.225; ← Collaboraのグローバルip (動的・要注意)119.26.175.225 はhirame PCのWiFi(JCOM)グローバルIPで動的。IPが変わった場合はここを更新する必要あり。
Nextcloud 連携設定
richdocuments アプリインストール
docker exec -it nextcloud-stack-app-1 php occ app:disable onlyoffice docker exec -it nextcloud-stack-app-1 php occ app:install richdocuments docker exec -it nextcloud-stack-app-1 php occ config:app:set richdocuments wopi_url --value="https://office.wan-secure.net"
R640 Caddy 設定(ローカルPC向け)
ファイル: /etc/caddy/Caddyfile に追記
cloud.k2-o.net:443 {
tls /etc/letsencrypt/live/cloud.k2-o.net/fullchain.pem
/etc/letsencrypt/live/cloud.k2-o.net/privkey.pem
reverse_proxy 127.0.0.1:9080
}
Let’s Encrypt 証明書は caddy ユーザーが読めるよう chmod 755 /etc/letsencrypt/live/ と /etc/letsencrypt/archive/ が必要。トラブルシューティング記録
| 問題 | 原因 | 解決策 |
|---|---|---|
| OnlyOffice モバイル編集不可 | Community版はモバイルWeb編集が有料 | Collabora に切り替え |
| Collabora auth failed (-120) | JWT シークレット不一致 | Collabora に切り替えたため解消 |
| VPS → hirame PC 接続不可 | wg1 の AllowedIPs に 172.31.22.0/24 がなかった | AllowedIPs と ip route add を追加 |
| hirame PC → cloud.k2-o.net 403 | NginxのAllowリストにhirame PCのグローバルIPがなかった | 119.26.175.225 を追加 |
| Apache 起動失敗(R640) | Caddyが443ポートを使用していた | Caddyに cloud.k2-o.net エントリを追加 |
| Caddy 証明書 permission denied | /etc/letsencrypt が caddy ユーザーから読めなかった | chmod 755 で解決 |
| iPhone Nextcloudアプリ ログイン不可 | ブルートフォース保護が作動していた | occ security:bruteforce:reset で解除 |
| Supermicro LUKS キーボード入力不可 | initramfs でUSBキーボードドライバ未読込 | GRUB で break=premount → initramfs シェルから手動アンロック |
達成事項
- ✅ hirame PC(i7-950)を Collabora 専用サーバーとして構築
- ✅ R640 ↔ hirame PC 40G DAC 直結(0.2ms)
- ✅ Collabora Online 稼働・Nextcloud と連携完了
- ✅ iPhone WireGuard 経由でブラウザ・アプリから Nextcloud ログイン成功
- ✅ iPhone ブラウザで Office ファイルの編集が可能
- ✅ ローカルPC からも編集可能
- ✅ VPS → R640 → hirame PC のルーティング確立・永続化
- ✅ Supermicro LUKS ロック問題を initramfs シェルで解決
今後の課題
- Collabora のグローバルIP(119.26.175.225)が動的なため、変更時に Nginx の allow リスト更新が必要 → 恒久対策を検討
- Supermicro の LUKS 自動アンロックスクリプトを再構築(initramfs に USB キーボードドライバを組み込む)
- Xserver コントロールパネルの二段階認証設定(未設定)
- wan/DC サイト(wanchance.com)のコンテンツ整備
- 顧客向けポータルを R640 上に構築
