From a4275868b108ccbb7fcd41ebd3e282c0094a7585 Mon Sep 17 00:00:00 2001 From: francesco Date: Mon, 9 Mar 2026 11:56:45 +0100 Subject: [PATCH] ++ caricamento --- .env | 28 +++++++++ README.md | 152 +++++++++++++++++++++++++++++++++++++++++++++ docker-compose.yml | 89 ++++++++++++++++++++++++++ 3 files changed, 269 insertions(+) create mode 100644 .env create mode 100644 README.md create mode 100644 docker-compose.yml diff --git a/.env b/.env new file mode 100644 index 0000000..4fb3a19 --- /dev/null +++ b/.env @@ -0,0 +1,28 @@ +# Database Configuration +MYSQL_ROOT_PASSWORD=strong_root_password_here +MYSQL_PASSWORD=nextcloud_password_here +MYSQL_DATABASE=nextcloud +MYSQL_USER=nextcloud + +# Nextcloud Configuration +NEXTCLOUD_PORT=8080 +NEXTCLOUD_ADMIN_USER=admin +NEXTCLOUD_ADMIN_PASSWORD=admin_password_here +NEXTCLOUD_TRUSTED_DOMAINS=localhost + +# Protocol and Host (per reverse proxy) +OVERWRITEPROTOCOL=https +OVERWRITEHOST=your-domain.com + +# Collabora Configuration +COLLABORA_PORT=9980 +COLLABORA_DOMAIN=nextcloud\\.your-domain\\.com +COLLABORA_USERNAME=admin +COLLABORA_PASSWORD=collabora_password_here +COLLABORA_DICTIONARIES=it en_US en_GB de_DE fr_FR es_ES + +# Note: +# - COLLABORA_DOMAIN deve usare escape per i punti: nextcloud\\.domain\\.com +# - Dopo l'installazione, configura Collabora in Nextcloud andando in: +# Impostazioni -> Amministrazione -> Collabora Online +# URL: http://collabora:9980 diff --git a/README.md b/README.md new file mode 100644 index 0000000..21a78e0 --- /dev/null +++ b/README.md @@ -0,0 +1,152 @@ +# 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: + +```bash +# Cambia le password +MYSQL_ROOT_PASSWORD= +MYSQL_PASSWORD= +NEXTCLOUD_ADMIN_PASSWORD= +COLLABORA_PASSWORD= + +# Configura i domini +NEXTCLOUD_TRUSTED_DOMAINS=localhost,your-domain.com +OVERWRITEHOST=your-domain.com +COLLABORA_DOMAIN=nextcloud\\.your-domain\\.com +``` + +**Importante**: Nel campo `COLLABORA_DOMAIN`, i punti devono essere escaped con `\\`. + +### 2. Avvia i servizi + +```bash +docker-compose up -d +``` + +### 3. Verifica lo stato + +```bash +docker-compose ps +docker-compose logs -f nextcloud +``` + +### 4. Accedi a Nextcloud + +Apri il browser e vai a: `http://localhost:8080` (o la porta configurata) + +- Username: `admin` (o quello configurato in `.env`) +- Password: quella impostata in `NEXTCLOUD_ADMIN_PASSWORD` + +### 5. Configura Collabora in Nextcloud + +1. Accedi a Nextcloud come amministratore +2. Installa l'app **Nextcloud Office** (ex Collabora Online): + - Menu → App → Sezione "Office & text" → Installa "Nextcloud Office" +3. Vai in **Impostazioni** → **Amministrazione** → **Collabora Online** +4. Seleziona "Usa il tuo server" +5. Inserisci l'URL: `http://collabora:9980` +6. Salva + +## Porte utilizzate + +- `8080`: Nextcloud Web UI +- `9980`: Collabora Online + +## Volumi + +I dati persistenti sono salvati nei volumi Docker: + +- `db_data`: Database MariaDB +- `nextcloud_data`: File e configurazioni Nextcloud + +## Backup + +Per fare il backup: + +```bash +# 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 + +```bash +# 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 + +1. Verifica che il container sia attivo: `docker-compose ps` +2. Controlla i log: `docker-compose logs collabora` +3. Verifica che l'URL in Nextcloud sia: `http://collabora:9980` + +### Errore "Trusted domain" + +Aggiungi il tuo dominio in `.env` nella variabile `NEXTCLOUD_TRUSTED_DOMAINS`: +``` +NEXTCLOUD_TRUSTED_DOMAINS=localhost,192.168.1.100,your-domain.com +``` + +Poi riavvia: +```bash +docker-compose restart nextcloud +``` + +### Performance lente + +Redis è già configurato per la cache. Puoi verificare che sia attivo: +```bash +docker-compose exec nextcloud php occ config:system:get redis host +``` + +## Reverse Proxy (opzionale) + +Se usi un reverse proxy (nginx, Traefik, etc.), configura: + +1. Imposta `OVERWRITEPROTOCOL=https` in `.env` +2. Imposta `OVERWRITEHOST=your-domain.com` in `.env` +3. Configura il reverse proxy per puntare a `localhost:8080` (Nextcloud) e `localhost:9980` (Collabora) + +## 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) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..76094e1 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,89 @@ +version: '3.8' + +services: + db: + image: mariadb:10.11 + container_name: nextcloud-db + restart: always + command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-file-per-table=1 --skip-innodb-read-only-compressed + volumes: + - db_data:/var/lib/mysql + environment: + - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} + - MYSQL_PASSWORD=${MYSQL_PASSWORD} + - MYSQL_DATABASE=${MYSQL_DATABASE} + - MYSQL_USER=${MYSQL_USER} + networks: + - nextcloud-network + + redis: + image: redis:alpine + container_name: nextcloud-redis + restart: always + networks: + - nextcloud-network + + nextcloud: + image: nextcloud:latest + container_name: nextcloud-app + restart: always + ports: + - "${NEXTCLOUD_PORT}:80" + volumes: + - nextcloud_data:/var/www/html + environment: + - MYSQL_PASSWORD=${MYSQL_PASSWORD} + - MYSQL_DATABASE=${MYSQL_DATABASE} + - MYSQL_USER=${MYSQL_USER} + - MYSQL_HOST=db + - REDIS_HOST=redis + - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER} + - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD} + - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_TRUSTED_DOMAINS} + - OVERWRITEPROTOCOL=${OVERWRITEPROTOCOL} + - OVERWRITEHOST=${OVERWRITEHOST} + depends_on: + - db + - redis + networks: + - nextcloud-network + + collabora: + image: collabora/code:latest + container_name: nextcloud-collabora + restart: always + ports: + - "${COLLABORA_PORT}:9980" + environment: + - domain=${COLLABORA_DOMAIN} + - username=${COLLABORA_USERNAME} + - password=${COLLABORA_PASSWORD} + - extra_params=--o:ssl.enable=false --o:ssl.termination=true + - dictionaries=${COLLABORA_DICTIONARIES} + cap_add: + - MKNOD + networks: + - nextcloud-network + + cron: + image: nextcloud:latest + container_name: nextcloud-cron + restart: always + volumes: + - nextcloud_data:/var/www/html + entrypoint: /cron.sh + depends_on: + - db + - redis + networks: + - nextcloud-network + +volumes: + db_data: + driver: local + nextcloud_data: + driver: local + +networks: + nextcloud-network: + driver: bridge