Nextcloud con Collabora Online - Docker Compose
Setup completo di Nextcloud con Collabora Online usando Docker Compose.
Componenti
- Nextcloud: Piattaforma di cloud storage e collaboration
- MariaDB: Database per Nextcloud
- Redis: Cache per migliorare le performance
- Collabora Online: Suite office online integrata
- Cron: Job cron per task schedulati di Nextcloud
Installazione
1. Configura le variabili d'ambiente
Modifica il file .env con i tuoi valori:
# Cambia le password
MYSQL_ROOT_PASSWORD=<password-sicura>
MYSQL_PASSWORD=<password-nextcloud>
NEXTCLOUD_ADMIN_PASSWORD=<password-admin>
COLLABORA_PASSWORD=<password-collabora>
# Configura i domini (IMPORTANTE: separa con SPAZI, non virgole)
NEXTCLOUD_TRUSTED_DOMAINS=localhost 127.0.0.1 192.168.4.0/24 your-domain.com
OVERWRITEHOST=your-domain.com
OVERWRITEPROTOCOL=https
COLLABORA_DOMAIN=nextcloud\\.your-domain\\.com
Importante:
- Nel campo
COLLABORA_DOMAIN, i punti devono essere escaped con\\ NEXTCLOUD_TRUSTED_DOMAINSdeve contenere domini separati da spazi (non virgole)- Includi: localhost, IP locali, subnet LAN (es. 192.168.4.0/24), e domini pubblici
- Per accesso locale: usa
OVERWRITEPROTOCOL=httpeOVERWRITEHOST=localhost:8282 - Per reverse proxy HTTPS: usa
OVERWRITEPROTOCOL=httpseOVERWRITEHOST=your-domain.com
2. Avvia i servizi
docker-compose up -d
3. Verifica lo stato
docker-compose ps
docker-compose logs -f nextcloud
4. Accedi a Nextcloud
Apri il browser e vai a: http://localhost:8282 (o la porta configurata nella variabile NEXTCLOUD_PORT)
- Username:
admin(o quello configurato in.env) - Password: quella impostata in
NEXTCLOUD_ADMIN_PASSWORD
5. Configura Collabora in Nextcloud
- Accedi a Nextcloud come amministratore
- Installa l'app Nextcloud Office (ex Collabora Online):
- Menu → App → Sezione "Office & text" → Installa "Nextcloud Office"
- Vai in Impostazioni → Amministrazione → Collabora Online
- Seleziona "Usa il tuo server"
- Inserisci l'URL:
http://collabora:9980 - Salva
Porte utilizzate
8282: Nextcloud Web UI (configurabile in.envconNEXTCLOUD_PORT)9980: Collabora Online
Volumi
I dati persistenti sono salvati nei volumi Docker:
db_data: Database MariaDBnextcloud_data: File e configurazioni Nextcloud
Backup
Per fare il backup:
# Backup dei volumi
docker run --rm -v nextcloud_db_data:/data -v $(pwd):/backup alpine tar czf /backup/db_backup.tar.gz -C /data .
docker run --rm -v nextcloud_nextcloud_data:/data -v $(pwd):/backup alpine tar czf /backup/nextcloud_backup.tar.gz -C /data .
Comandi utili
# Avvia i servizi
docker-compose up -d
# Ferma i servizi
docker-compose down
# Visualizza i log
docker-compose logs -f
# Riavvia un servizio specifico
docker-compose restart nextcloud
# Aggiorna le immagini
docker-compose pull
docker-compose up -d
Troubleshooting
Collabora non si connette
- Verifica che il container sia attivo:
docker-compose ps - Controlla i log:
docker-compose logs collabora - Verifica che l'URL in Nextcloud sia:
http://collabora:9980
Errore "Trusted domain" o "Password non funziona"
Questo errore può manifestarsi come:
- "Access through untrusted domain"
- "Unknown error while checking password" (anche con credenziali corrette)
- Impossibilità di configurare storage esterni
Causa: trusted_domains non configurato correttamente nel config.php.
Soluzione rapida - Aggiungi i tuoi domini in .env (separa con spazi, non virgole):
NEXTCLOUD_TRUSTED_DOMAINS=localhost 127.0.0.1 192.168.4.0/24 your-domain.com
Poi riavvia:
docker compose restart nextcloud
Se il problema persiste (istanza già inizializzata prima della modifica .env), correggi manualmente con occ:
# Imposta ogni dominio come elemento separato dell'array
docker exec nextcloud-app php occ config:system:set trusted_domains 0 --value='localhost'
docker exec nextcloud-app php occ config:system:set trusted_domains 1 --value='192.168.4.0/24'
docker exec nextcloud-app php occ config:system:set trusted_domains 2 --value='your-domain.com'
docker exec nextcloud-app php occ config:system:set trusted_domains 3 --value='192.168.4.62'
# Verifica anche che overwrite.cli.url sia corretto
docker exec nextcloud-app php occ config:system:set overwrite.cli.url --value='https://your-domain.com'
Verifica la configurazione:
docker exec nextcloud-app cat /var/www/html/config/config.php | grep -A 6 'trusted_domains'
Il formato corretto nel config.php deve essere:
'trusted_domains' =>
array (
0 => 'localhost',
1 => '192.168.4.0/24',
2 => 'your-domain.com',
),
❌ NON deve essere una stringa concatenata come:
1 => 'localhost,192.168.4.0/24,your-domain.com', // ERRORE
Performance lente
Redis è già configurato per la cache. Puoi verificare che sia attivo:
docker-compose exec nextcloud php occ config:system:get redis host
Reverse Proxy (opzionale)
Se usi un reverse proxy (nginx, Traefik, etc.), configura:
- Imposta
OVERWRITEPROTOCOL=httpsin.env - Imposta
OVERWRITEHOST=your-domain.comin.env - Configura il reverse proxy per puntare a
localhost:8282(Nextcloud) elocalhost:9980(Collabora) - Assicurati che il reverse proxy invii gli header corretti:
X-Forwarded-For X-Forwarded-Proto X-Forwarded-Host
Comandi occ utili
Il comando occ (ownCloud Console) permette di gestire Nextcloud da CLI:
# Verifica configurazione sistema
docker exec nextcloud-app php occ config:system:get trusted_domains
docker exec nextcloud-app php occ config:system:get overwritehost
# Imposta trusted domains
docker exec nextcloud-app php occ config:system:set trusted_domains 0 --value='localhost'
docker exec nextcloud-app php occ config:system:set trusted_domains 1 --value='your-domain.com'
# Verifica stato sistema
docker exec nextcloud-app php occ status
# Manutenzione
docker exec nextcloud-app php occ maintenance:mode --on
docker exec nextcloud-app php occ maintenance:mode --off
# Esegui aggiornamenti
docker exec nextcloud-app php occ upgrade
# Verifica integrità file
docker exec nextcloud-app php occ integrity:check-core
# Gestione app
docker exec nextcloud-app php occ app:list
docker exec nextcloud-app php occ app:enable files_external
# Cache
docker exec nextcloud-app php occ files:scan --all
docker exec nextcloud-app php occ files:cleanup
Sicurezza
- Cambia tutte le password nel file
.env - Non esporre le porte direttamente su Internet senza un reverse proxy con HTTPS
- Considera l'uso di certificati SSL/TLS (Let's Encrypt)
- Mantieni aggiornate le immagini Docker
Licenza
Questo è un setup di esempio. Consulta le licenze dei singoli progetti:
- Nextcloud: AGPLv3
- Collabora Online: MPLv2 (versione CODE - Community)