From 32b426859c1f4c31efd93c2e05cd9c15ddc76707 Mon Sep 17 00:00:00 2001 From: Francesco Picone Date: Fri, 27 Mar 2026 15:46:11 +0100 Subject: [PATCH] =?UTF-8?q?++=20Inserimento=20possibilit=C3=A0=20di=20edit?= =?UTF-8?q?=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 26 +++++++++++---- docker-compose.yml | 83 +++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 98 insertions(+), 11 deletions(-) diff --git a/.env.example b/.env.example index d14a3ef..e00090c 100644 --- a/.env.example +++ b/.env.example @@ -1,12 +1,26 @@ # ───────────────────────────────────────────── -# Configurazione ONLYOFFICE + Cloudflare Tunnel -# Rinomina questo file in .env prima di avviare +# Configurazione Nextcloud + ONLYOFFICE + Cloudflare +# Rinomina in .env e compila tutti i valori # ───────────────────────────────────────────── -# Token del tunnel Cloudflare (prendilo dal dashboard Zero Trust) -# ATTENZIONE: non condividere mai questo valore pubblicamente -CLOUDFLARE_TOKEN=il_tuo_token_qui +# ── Cloudflare Tunnel ────────────────────────── +# Token del tunnel (rigeneralo se già esposto pubblicamente) +CLOUDFLARE_TOKEN=il_tuo_token_cloudflare -# Chiave JWT per proteggere l'accesso all'API di ONLYOFFICE +# ── Nextcloud ───────────────────────────────── +# Dominio pubblico configurato nel tunnel Cloudflare +NC_DOMAIN=cloud.tuodominio.com + +# Credenziali account amministratore Nextcloud +NC_ADMIN_USER=admin +NC_ADMIN_PASSWORD=cambia_questa_password + +# ── Database MariaDB ─────────────────────────── +DB_NAME=nextcloud +DB_USER=nextcloud +DB_PASSWORD=cambia_password_db +DB_ROOT_PASSWORD=cambia_password_root_db + +# ── ONLYOFFICE JWT ───────────────────────────── # Genera con: openssl rand -hex 32 JWT_SECRET=cambia_con_stringa_casuale_sicura diff --git a/docker-compose.yml b/docker-compose.yml index 62d1cbd..decedf0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,8 +1,76 @@ services: # ───────────────────────────────────────────── - # ONLYOFFICE Document Server (modalità lite) - # Usa SQLite + memoria interna, niente PostgreSQL/RabbitMQ + # Nextcloud — sync & share + editor web + # ───────────────────────────────────────────── + nextcloud: + image: nextcloud:28-apache + container_name: nextcloud + restart: unless-stopped + depends_on: + - nextcloud-db + - nextcloud-redis + environment: + NEXTCLOUD_ADMIN_USER: ${NC_ADMIN_USER} + NEXTCLOUD_ADMIN_PASSWORD: ${NC_ADMIN_PASSWORD} + NEXTCLOUD_TRUSTED_DOMAINS: ${NC_DOMAIN} + MYSQL_HOST: nextcloud-db + MYSQL_DATABASE: ${DB_NAME} + MYSQL_USER: ${DB_USER} + MYSQL_PASSWORD: ${DB_PASSWORD} + REDIS_HOST: nextcloud-redis + # Necessario per funzionare dietro Cloudflare Tunnel + OVERWRITEPROTOCOL: https + OVERWRITECLIURL: https://${NC_DOMAIN} + volumes: + - nextcloud_html:/var/www/html + - nextcloud_data:/var/www/html/data + expose: + - "80" + mem_limit: 512m + mem_reservation: 256m + cpus: "0.75" + networks: + - office_net + + # ───────────────────────────────────────────── + # MariaDB — database per Nextcloud (più leggero di PostgreSQL) + # ───────────────────────────────────────────── + nextcloud-db: + image: mariadb:11-ubi + container_name: nextcloud-db + restart: unless-stopped + environment: + MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} + MYSQL_DATABASE: ${DB_NAME} + MYSQL_USER: ${DB_USER} + MYSQL_PASSWORD: ${DB_PASSWORD} + volumes: + - nextcloud_db:/var/lib/mysql + expose: + - "3306" + mem_limit: 256m + mem_reservation: 128m + cpus: "0.25" + networks: + - office_net + + # ───────────────────────────────────────────── + # Redis — cache per Nextcloud (velocizza molto) + # ───────────────────────────────────────────── + nextcloud-redis: + image: redis:7-alpine + container_name: nextcloud-redis + restart: unless-stopped + command: redis-server --save "" --appendonly no --maxmemory 64mb --maxmemory-policy allkeys-lru + mem_limit: 80m + mem_reservation: 32m + cpus: "0.10" + networks: + - office_net + + # ───────────────────────────────────────────── + # ONLYOFFICE Document Server # ───────────────────────────────────────────── onlyoffice: image: onlyoffice/documentserver:latest @@ -18,7 +86,6 @@ services: - onlyoffice_lib:/var/lib/onlyoffice expose: - "80" - # Limiti risorse — adatta in base alla RAM disponibile mem_limit: 1g mem_reservation: 512m cpus: "1.0" @@ -26,8 +93,10 @@ services: - office_net # ───────────────────────────────────────────── - # Cloudflare Tunnel — nessuna porta esposta - # Instrada il traffico da Cloudflare → onlyoffice:80 + # Cloudflare Tunnel + # Espone SOLO Nextcloud (porta 80) verso l'esterno. + # ONLYOFFICE è raggiungibile internamente da Nextcloud + # tramite http://onlyoffice:80 # ───────────────────────────────────────────── cloudflared: image: cloudflare/cloudflared:latest @@ -38,6 +107,7 @@ services: mem_reservation: 64m cpus: "0.25" depends_on: + - nextcloud - onlyoffice networks: - office_net @@ -46,6 +116,9 @@ services: # Volumi persistenti # ───────────────────────────────────────────── volumes: + nextcloud_html: + nextcloud_data: + nextcloud_db: onlyoffice_data: onlyoffice_logs: onlyoffice_lib: