Commit Graph

17 Commits

Author SHA1 Message Date
440d63a6b9 ++ fix e controlli 2026-07-30 17:05:39 +02:00
712336d652 ++ update HANDOFF.md 2026-07-29 18:33:30 +02:00
8dee7b1f44 ++ fix restore backup 2026-07-29 17:56:52 +02:00
7ac454cd25 ++ consolidamento funzionalità Backup 2026-07-29 16:34:11 +02:00
fd15903c9c ++ fix richiesta password prima di azzeramento applicazione 2026-07-29 15:27:11 +02:00
588910b893 ++ add reset program 2026-07-29 14:26:36 +02:00
c6abef977d ++ add backup totale applicativo 2026-07-29 12:34:38 +02:00
3a530704a2 Rendi configurabili le porte esposte sull'host
Le porte erano legate a 127.0.0.1, quindi l'applicazione non era raggiungibile
per IP: andava bene solo accedendo da un dominio via Traefik. Ora interfaccia
e porta si decidono separatamente nel .env, per ogni servizio.

  APP_BIND=0.0.0.0   APP_PORT=8080        app esposta (default)
  DB_BIND=127.0.0.1  DB_PORT_HOST=3306    database solo da localhost
  MAILPIT_BIND=127.0.0.1                  solo col profilo dev

Il database resta su localhost per due motivi: ci si arriva comunque con un
tunnel SSH senza esporlo a Internet, e su un host con piu' progetti la 3306
va spesso in conflitto (per questo e' cambiabile con DB_PORT_HOST).
Redis non pubblica nulla: non serve da fuori.

SESSION_SECURE_COOKIE passa a false come default, perche' ora l'accesso
tipico e' in HTTP per IP. Con true il cookie di sessione e' marcato "secure"
e il browser non lo rimanda su HTTP: verificato, il login risponde 419 Page
Expired e si torna alla schermata di accesso. Il tranello e' che provandolo
su localhost non si manifesta, perche' i browser considerano localhost un
contesto sicuro: emerge solo accedendo per IP. E' documentato in
.env.example insieme al sintomo esatto.

Verificato: app raggiungibile dall'IP di rete, porta del database chiusa
dall'esterno e aperta da localhost, login e pagine funzionanti via IP.

Nota: senza dominio il traffico e' in chiaro. Il README segnala il passaggio
a HTTPS come consigliato, con le tre variabili da cambiare.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 19:01:29 +02:00
afaaeb5927 Semplifica il deploy: un solo docker-compose senza anchor YAML
I due file compose andavano tenuti allineati a mano, e gli anchor
(x-app-env, <<:) sono sintassi che va conosciuta per riuscire a leggere il
file. Per un deploy che deve restare semplice era complessita' non
giustificata.

Ora c'e' un solo docker-compose.yml, esplicito, che copre produzione e
sviluppo:

- ogni servizio dichiara quello che usa, senza merge key
- mailpit e' dietro il profilo "dev", quindi non parte mai in produzione
- la porta e' legata a 127.0.0.1 per default: in produzione il traffico
  arriva da Traefik sulla rete interna, in locale basta localhost:8080.
  Per esporla davvero: APP_PORT=0.0.0.0:8080
- .env diventa l'unica fonte di configurazione, senza valori ridichiarati

Compromesso accettato: sparendo i valori fissati nel compose, DB_HOST e
REDIS_HOST devono contenere i nomi dei servizi (mariadb, redis) e non un
indirizzo. E' segnalato in .env.example, nel README e in HANDOFF.md.

Per le modifiche al codice senza ricostruire l'immagine il README documenta
un docker-compose.override.yml, che Compose applica da solo ed e' gia'
ignorato da git.

Verificato: sei servizi healthy, login e pagine a 200, redeploy idempotente,
porta esposta solo su localhost, mailpit assente senza il profilo dev.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 17:41:48 +02:00
cf78550516 Ristruttura il deploy: immagine autosufficiente per Dokploy
Il Dockerfile compilava l'applicazione in /app-src mentre il runtime girava
da /var/www/html, popolato solo dal bind mount del sorgente: l'immagine
costruita non veniva mai usata. L'entrypoint rieseguiva composer install e
npm run build a ogni avvio, dentro il container. Su Dokploy, senza sorgente
sull'host, questo significava build a runtime a ogni deploy.

Ora vendor/ e public/build sono compilati in stage separati e copiati
nell'immagine finale. I container di produzione non montano il sorgente e
non eseguono build all'avvio: un redeploy e' build, migrazioni, online.

- Dockerfile multi-stage (composer, node, runtime)
- nginx e php-fpm nello stesso container via supervisor: con container
  separati nginx avrebbe bisogno di una copia di public/ e del volume
  storage solo per servire file statici
- clear_env = no in www.conf, senza cui php-fpm nasconde a Laravel tutte
  le variabili d'ambiente
- configurazione da ambiente di processo invece di .env riscritto con sed;
  il compose fissa solo i valori dettati dalla topologia
- fail-fast su APP_URL, DB_PASSWORD, DB_ROOT_PASSWORD, REDIS_PASSWORD
- servizio scheduler dedicato: schedule:work non veniva mai eseguito,
  quindi la pulizia dell'audit log non e' mai partita
- solo il container app esegue le migrazioni, per evitare che due
  container in gara lascino uno schema applicato a meta'
- healthcheck separati per worker e scheduler, che non espongono HTTP
- docker-compose.dev.yml per lo sviluppo locale
- documentazione unificata in README.md e HANDOFF.md

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-19 16:49:10 +02:00
c85f2aaea0 ++ fix manifest.json and README.md 2026-04-16 10:05:15 +00:00
777f239c7a +++fix: add thumbnail support for territori 2026-04-08 09:32:07 +00:00
1010246104 ++ fix: update .env.example and README.md, add CreateInitialAdmin command, update docker-compose.yml and entrypoint.sh, remove old CSS file and update manifest.json 2026-04-07 14:10:52 +00:00
80318d33b4 Refactor: remove setup wizard and related middleware, update settings management 2026-04-07 13:40:08 +00:00
ef37385b3d Eliminato Wizard, tutto verrà gestito da impostazioni 2026-04-07 11:16:46 +00:00
1606778518 ++ fix 2026-04-05 20:14:30 +00:00
Francesco Picone
701f479b7f Primo commit 2026-04-05 19:26:04 +02:00