Collabora Online 構築レポート

Collabora Online 構築レポート

Nextcloud + Collabora Online 構築ドキュメント

Collabora Online 構築レポート ― Nextcloud モバイル編集環境

目次
  1. 目標と背景
  2. 全体構成
  3. hirame PC セットアップ
  4. ネットワーク設定
  5. Collabora インストール
  6. VPS Nginx 設定
  7. Nextcloud 連携設定
  8. トラブルシューティング記録
  9. 達成事項
  10. 今後の課題

目標と背景

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
OSUbuntu 22.04 LTS
CPUCore i7-950(4コア8スレッド / Nehalem)
RAM12GB DDR3
SSD251GB
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)
SSHssh 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 403Nginxの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 上に構築