Per chi desidera avere il pieno controllo sui propri dati, Nextcloud offre una potente soluzione open-source per creare un sistema di archiviazione cloud privato. La piattaforma non solo consente la sincronizzazione sicura dei file tra dispositivi diversi, ma permette anche di ospitare l’archiviazione sul proprio server, evitando la dipendenza da provider terzi.
In questa guida vedremo come installare Nextcloud utilizzando container Docker isolati, semplificando notevolmente il processo di deployment e gestione. Inoltre, configureremo la cifratura automatica del traffico tramite certificati SSL di Let’s Encrypt, per garantire una trasmissione sicura dei dati.
Avrai bisogno di:
Un server cloud Hostman con Linux Ubuntu 24.04 preinstallato.
Un nome di dominio.
Docker e Docker Compose installati.
Per il server si consiglia una configurazione con 1 core CPU, 2 GB di RAM e un indirizzo IPv4 pubblico, che puoi richiedere durante la creazione del server o successivamente nella sezione “Network”.
Il server sarà pronto in pochi minuti. L’indirizzo IPv4 e le credenziali SSH saranno disponibili nel Dashboard.
Nextcloud richiede diversi componenti chiave:
Database: in questo caso MariaDB, un sistema di gestione database veloce e affidabile.
Certificato SSL: utilizzeremo certificati SSL gratuiti rilasciati da Let’s Encrypt.
Reverse proxy: aggiungeremo Nginx Proxy Manager, che instraderà il traffico HTTP e HTTPS verso i container appropriati.
Crea una cartella per i file di configurazione e accedi al suo interno:
mkdir nextcloud && cd nextcloud
Questo file nascosto conterrà variabili con password:
nano .env
Contenuto del file:
NEXTCLOUD_ROOT_PASSWORD=secure_root_password_123
NEXTCLOUD_DB_PASSWORD=secure_nextcloud_db_password_456
NPM_ROOT_PASSWORD=secure_npm_root_password_789
NPM_DB_PASSWORD=secure_npm_db_password_012
Ricorda di sostituire questi valori con le tue password personali.
Crea il file con:
nano docker-compose.yml
Aggiungi la configurazione seguente (non tradotta su tua richiesta):
volumes:
nextcloud-data:
nextcloud-db:
npm-data:
npm-ssl:
npm-db:
networks:
frontend:
backend:
services:
nextcloud-app:
image: nextcloud:31.0.8
restart: always
volumes:
- nextcloud-data:/var/www/html
environment:
- MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=nextcloud-db
- MYSQL_PORT=3306
networks:
- frontend
- backend
nextcloud-db:
image: mariadb:12.0.2
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- nextcloud-db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${NEXTCLOUD_ROOT_PASSWORD}
- MYSQL_PASSWORD=${NEXTCLOUD_DB_PASSWORD}
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
networks:
- backend
npm-app:
image: jc21/nginx-proxy-manager:2.12.6
restart: always
ports:
- "80:80"
- "81:81"
- "443:443"
environment:
- DB_MYSQL_HOST=npm-db
- DB_MYSQL_PORT=3306
- DB_MYSQL_USER=npm
- DB_MYSQL_PASSWORD=${NPM_DB_PASSWORD}
- DB_MYSQL_NAME=npm
volumes:
- npm-data:/data
- npm-ssl:/etc/letsencrypt
networks:
- frontend
- backend
npm-db:
image: jc21/mariadb-aria:10.11.5
restart: always
environment:
- MYSQL_ROOT_PASSWORD=${NPM_ROOT_PASSWORD}
- MYSQL_DATABASE=npm
- MYSQL_USER=npm
- MYSQL_PASSWORD=${NPM_DB_PASSWORD}
volumes:
- npm-db:/var/lib/mysql
networks:
- backend
Avvia i container con:
docker compose up -d
Se compare un errore riguardante i limiti di pull di Docker Hub:
Accedi al tuo account Docker Hub o creane uno nuovo.
Vai su Account settings → Personal access tokens.
Clicca su Generate new token.
Aggiungi una descrizione, imposta una data di scadenza e seleziona i permessi: Read, Write, Delete.
Clicca su Generate e copia il token (sarà mostrato una sola volta).
Sul server, accedi con:
docker login -u dockeruser
Sostituisci dockeruser con il tuo nome utente e inserisci il token come password.
Riavvia quindi i container:
docker compose up -d
Controlla lo stato:
docker ps
Tutti i container dovranno mostrare lo stato Up.
Apri nel browser:
http://<server-IP>:81
Accedi con le credenziali predefinite:
Login: admin@example.com
Password: changeme
Al primo accesso:
Aggiorna nome completo, nickname ed email.
Modifica la password:
Current Password: changeme
New Password: nuova password
Confirm Password: ripeti la password
Vai su Hosts → Proxy Hosts.
Clicca su Add Proxy Host e compila:
Domain Names: il dominio della tua istanza Nextcloud
Scheme: http
Forward Hostname/IP: nextcloud-app
Forward Port: 80
Nella scheda SSL:
Seleziona Request a new SSL Certificate
Attiva:
Force SSL
HTTP/2 Support
HSTS Enabled
Inserisci la tua email per Let’s Encrypt e accetta i termini. Salva le modifiche.
Ora visita il tuo dominio. Se tutto è configurato correttamente, l’interfaccia web di Nextcloud si aprirà e verrà emesso automaticamente un certificato SSL Let’s Encrypt.
Crea un nuovo account amministratore.
Facoltativamente installa le app consigliate.
L’installazione e la configurazione di base sono concluse.
In questo articolo abbiamo mostrato come distribuire Nextcloud con Docker e ottenere un certificato SSL gratuito tramite Let’s Encrypt.
Questo metodo è tra i più affidabili, sicuri e facilmente scalabili. Docker garantisce un isolamento corretto delle applicazioni, semplifica gli aggiornamenti e facilita le migrazioni. Utilizzare un certificato SSL non è solo consigliato, ma essenziale per proteggere dati sensibili e garantire traffico crittografato.