Setup completo del portal interno donna.aal-law.com: * Landing público con OAuth login + grid de apps autenticado * Flujo OAuth2 contra Mailcow (mail.aal-law.com) * Sesiones SSO compartidas en el dominio (cookie donna_session, 8h) * Whitelist de dominios aal-law.com / aalnlaw.com * App "Control de Escrituras" migrada desde ZH-Consultores/control-escrituras (mismo schema, mismo frontend, ahora con shared Auth/Db/Config libs) * Migraciones SQL para users, escrituras_tramites, escrituras_historial * Caddy on :80 con rewrite extless → .php * Backup diario MariaDB (systemd timer + script) con retención 14d * Documentación de arquitectura en README + infra files en docs/infra
39 lines
857 B
Caddyfile
39 lines
857 B
Caddyfile
# Donna Portal — HTTP only on :80
|
|
# El Caddy upstream hace terminación SSL y nos pasa X-Forwarded-Proto: https.
|
|
|
|
:80 {
|
|
root * /opt/donna/public
|
|
|
|
encode gzip zstd
|
|
|
|
# Bloquear acceso directo a vistas privadas, código fuente, secretos, SQL, etc.
|
|
@hidden {
|
|
path /src/* /sql/* /bin/* /views/* /.env* /.git*
|
|
}
|
|
respond @hidden 404
|
|
|
|
# Rewrite /foo → /foo.php cuando el .php existe (para URLs sin extensión: /auth/callback)
|
|
@extlessphp {
|
|
not path *.php
|
|
not path */
|
|
file {path}.php
|
|
}
|
|
rewrite @extlessphp {path}.php
|
|
|
|
php_fastcgi unix//run/php/php8.4-fpm.sock {
|
|
env HTTPS on
|
|
}
|
|
|
|
file_server {
|
|
index index.php
|
|
}
|
|
|
|
log {
|
|
output file /var/log/donna/access.log {
|
|
roll_size 50mb
|
|
roll_keep 5
|
|
}
|
|
format json
|
|
}
|
|
}
|