Files
homelab-configs/nextcloud-to-ocis-migration-plan.md
jgitta 7cb2ebed2d Sync workspace with Gitea: merge June/July session docs
- README + siklos-docker-services: add authentik/searxng/beszel rows, photos VM section,
  2026-06-24 cleanup notes, 2026-07-03 Portainer conversion note (jgpc naming preserved)
- Add: authentik setup docs, frigate docs/config, OCIS migration docs, AdventureLog bug
  report, install-native-apps.sh, workstation-disk-analysis.md
- Remove obsolete: cgitta-nextcloud-zip-analysis.md, kopia-restore-guide.md
- .gitignore: ocis-credentials.md (secrets stay local), *.bak
2026-07-08 14:12:05 -05:00

8.4 KiB

Nextcloud → ownCloud Infinite Scale (OCIS) Migration

Date: 2026-06-09
Status: 🟡 Migration in progress — data transfer running, cutover pending
Author: Joe Gitta


What Was Done (Summary)

VM 114 (ocis, 192.168.88.63) was created on Proxmox and OCIS v8.0.4 was deployed as a native binary (systemd service). Both Nextcloud users (jgitta 89 GB / cgitta 210 GB) were recreated in OCIS and rclone migrations launched. Prometheus monitoring was added. Nextcloud (VM 103) remains running — no cutover yet.


Deployed Architecture

Internet / LAN
     │
     ▼
Caddy (192.168.88.110)
     │
     ├── next.jgitta.com   → VM 103 (Nextcloud, 192.168.88.62)  ← still running
     │
     └── cloud.jgitta.com  → VM 114 (OCIS, 192.168.88.63:9200)
                                  │
                                  └── Local SSD: /mnt/ocis-data (500 GB, Proxmox SSD-2)

VM 114 (ocis) Specs

Item Value
VM ID 114
VM Name ocis
IP 192.168.88.63
SSH ssh jgitta@192.168.88.63
vCPU 4 cores
RAM 8 GB
OS Disk 64 GB (local SSD)
Data Disk 500 GB SSD (Proxmox SSD-2) → /mnt/ocis-data
OS Debian 13 (cloned from VM 9000 template)
OCIS Version 8.0.4
Binary /usr/local/bin/ocis
Service `systemctl {start
Config /mnt/ocis-data/config/ocis.yaml (auto-generated on first run)
Env file /mnt/ocis-data/config/ocis.env
Systemd unit /etc/systemd/system/ocis.service

Note: Local disk was chosen over TrueNAS NFS so that PBS full-VM backups capture both OS and data together, providing an extra layer of redundancy.


OCIS Configuration

/mnt/ocis-data/config/ocis.env:

OCIS_URL=https://cloud.jgitta.com
OCIS_BASE_DATA_PATH=/mnt/ocis-data
OCIS_CONFIG_DIR=/mnt/ocis-data/config
PROXY_TLS=false
OCIS_LOG_LEVEL=info
OCIS_LOG_COLOR=false
PROXY_ENABLE_BASIC_AUTH=true

Why PROXY_ENABLE_BASIC_AUTH=true? OCIS v8 disables basic auth by default (OIDC only). This flag re-enables it so that rclone WebDAV and desktop/mobile sync clients can authenticate with username + password.


Accounts

See ocis-credentials.md for full credential details.

Username Display Name Use
admin Admin Administration only
jgitta Joe Gitta Primary account
cgitta Cynthia Gitta Secondary account

Accounts were created via direct LDAP manipulation (OCIS v8 has no CLI user-create tool). The libregraph LDAP sysuser (uid=libregraph,ou=sysusers,o=libregraph-idm) was used for write access; passwords set with ldappasswd over LDAPS on 127.0.0.1:9235.


Data Migration Status

rclone is copying files directly from Nextcloud's filesystem on VM 103 (avoiding WebDAV overhead) and pushing to OCIS via WebDAV. Both processes run as background jobs on VM 103.

# Monitor from Nextcloud VM (192.168.88.62):
sudo tail -f /tmp/rclone-jgitta.log
sudo tail -f /tmp/rclone-cgitta.log

# Check if still running:
ps aux | grep rclone | grep -v grep
User Source Data Status
jgitta /mnt/nextcloud-data/jgitta/files/ ~35 GB 🔄 In progress
cgitta /mnt/nextcloud-data/cgitta/files/ ~210 GB 🔄 In progress (ETA many hours)

Expected errors: Some files show Failed to copy: object not found — these are files present in Nextcloud's database but missing from disk (DB/filesystem desync in Nextcloud). Non-fatal; rclone skips and continues.

rclone Config on VM 103

/root/.config/rclone/rclone.conf contains two WebDAV remotes:

  • ocis_jgittahttps://cloud.jgitta.com/remote.php/dav/files/jgitta/
  • ocis_cgittahttps://cloud.jgitta.com/remote.php/dav/files/cgitta/

Re-run Migration (if needed)

# SSH to Nextcloud VM
ssh jgitta@192.168.88.62

# Re-run jgitta (rclone copy is idempotent — safe to re-run)
sudo nohup rclone copy /mnt/nextcloud-data/jgitta/files/ ocis_jgitta: \
  --transfers 4 --checkers 8 \
  --log-file /tmp/rclone-jgitta.log --log-level INFO --stats 120s &

# Re-run cgitta
sudo nohup rclone copy /mnt/nextcloud-data/cgitta/files/ ocis_cgitta: \
  --transfers 4 --checkers 8 \
  --log-file /tmp/rclone-cgitta.log --log-level INFO --stats 120s &

Caddy Config

Added to /etc/caddy/sites/media.caddy on Caddy VM (192.168.88.110):

cloud.jgitta.com {
    import web_secure
    reverse_proxy 192.168.88.63:9200 {
        import proxy_timeouts
    }
}

Monitoring

  • node-exporter running on OCIS VM as Docker container, port 9101 (port 9100 is taken by OCIS itself)
  • Prometheus on siklos scrapes 192.168.88.63:9101, labeled as instance ocis
  • PBS backup job backup-5d4b43bd-7988 uses all=1 — VM 114 is automatically included, no changes needed

Pending Steps (Manual)

1. Add Cloudflare DNS record ⚠️ REQUIRED for external access

Log into Cloudflare dashboard → jgitta.com DNS zone → Add A record:

  • Name: cloud
  • Content: your WAN IP
  • Proxy: Grey cloud (DNS only)

Internal access via cloud.jgitta.com works already (MikroTik wildcard → Caddy).

2. Verify files after migration completes

Once rclone logs show completion:

  1. Log into https://cloud.jgitta.com as jgitta and cgitta
  2. Spot-check files in the web UI — confirm folder structure looks right
  3. Check error count in logs: sudo grep ERROR /tmp/rclone-jgitta.log | wc -l

3. Change default passwords

Log into https://cloud.jgitta.com and change passwords for both accounts (see ocis-credentials.md for current values).

4. Reconnect desktop/mobile sync clients

  • Desktop: Add account pointing to https://cloud.jgitta.com in ownCloud or Nextcloud desktop client
  • Mobile: Add account in ownCloud app (iOS/Android) — same URL

5. OnlyOffice integration (optional, can defer)

OCIS uses WOPI for document editing. The existing OnlyOffice at https://office.jgitta.com supports WOPI.
In OCIS Admin Settings → Apps, configure the WOPI server URL.


Cutover Procedure (when ready)

Once files are verified and clients reconnected:

  1. Enable Nextcloud maintenance mode (prevents new uploads):

    ssh jgitta@192.168.88.62
    sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
    
  2. Run a final rclone sync to catch any files changed since the initial copy:

    sudo rclone copy /mnt/nextcloud-data/jgitta/files/ ocis_jgitta: --transfers 4 --stats-log-level NOTICE
    sudo rclone copy /mnt/nextcloud-data/cgitta/files/ ocis_cgitta: --transfers 4 --stats-log-level NOTICE
    
  3. Redirect Caddy — update next.jgitta.com in Caddy to redirect to OCIS:

    next.jgitta.com {
        redir https://cloud.jgitta.com{uri} permanent
    }
    
  4. Stop VM 103 in Proxmox — do NOT delete it yet

  5. After 4 weeks with no issues — delete VM 103


Service Management Quick Reference

# OCIS status / logs
ssh jgitta@192.168.88.63 "sudo systemctl status ocis"
ssh jgitta@192.168.88.63 "sudo journalctl -u ocis -f"

# Restart OCIS
ssh jgitta@192.168.88.63 "sudo systemctl restart ocis"

# Check migration logs (run on Nextcloud VM)
ssh jgitta@192.168.88.62 "sudo tail -50 /tmp/rclone-jgitta.log"
ssh jgitta@192.168.88.62 "sudo tail -50 /tmp/rclone-cgitta.log"

# Check OCIS disk usage
ssh jgitta@192.168.88.63 "df -h /mnt/ocis-data"

Checklist

  • VM 114 created on Proxmox (Debian 13, 4 vCPU, 8 GB RAM)
  • Static IP 192.168.88.63 configured
  • 500 GB data disk partitioned and mounted at /mnt/ocis-data
  • OCIS v8.0.4 binary installed at /usr/local/bin/ocis
  • OCIS systemd service configured and running
  • cloud.jgitta.com added to Caddy config and reloaded
  • OCIS users created: admin, jgitta, cgitta
  • rclone configured on VM 103 with both user remotes
  • Data migration launched (background, running)
  • node-exporter deployed on VM 114 (port 9101)
  • Prometheus scraping VM 114 confirmed (up)
  • PBS backup covers VM 114 automatically (all=1)
  • Cloudflare DNS A record for cloud ← add manually
  • Verify files in OCIS web UI after migration completes
  • Change passwords from defaults
  • Reconnect desktop/mobile sync clients
  • OnlyOffice WOPI integration (optional)
  • Final sync + enable Nextcloud maintenance mode
  • Redirect next.jgitta.comcloud.jgitta.com in Caddy
  • Stop VM 103
  • Delete VM 103 (after 4-week verification)