- 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
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_jgitta→https://cloud.jgitta.com/remote.php/dav/files/jgitta/ocis_cgitta→https://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 instanceocis - PBS backup job
backup-5d4b43bd-7988usesall=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:
- Log into https://cloud.jgitta.com as
jgittaandcgitta - Spot-check files in the web UI — confirm folder structure looks right
- 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.comin 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:
-
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 -
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 -
Redirect Caddy — update
next.jgitta.comin Caddy to redirect to OCIS:next.jgitta.com { redir https://cloud.jgitta.com{uri} permanent } -
Stop VM 103 in Proxmox — do NOT delete it yet
-
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.comadded 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.com→cloud.jgitta.comin Caddy - Stop VM 103
- Delete VM 103 (after 4-week verification)