fix(nextcloud, paperless): actualizar stacks de gestión documental

- Nextcloud: ajustes en docker-compose.yml y stack.env
- Paperless-ngx: ajustes en docker-compose.yml y stack.env
  (ambos stacks comparten integración via WebDAV para sincronizar bandeja)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Eduardo David Paredes Vara
2026-05-25 05:47:52 +00:00
parent c1f7e90b58
commit 1db61640d2
4 changed files with 84 additions and 19 deletions
+19 -1
View File
@@ -80,6 +80,15 @@ services:
- proxy
- mail_internal
labels:
- traefik.enable=true
- traefik.docker.network=proxy
- traefik.http.routers.nextcloud.rule=Host(`${NC_DOMAIN}`)
- traefik.http.routers.nextcloud.entrypoints=websecure
- traefik.http.routers.nextcloud.tls=true
- traefik.http.routers.nextcloud.tls.certresolver=${TRAEFIK_CERTRESOLVER}
- traefik.http.routers.nextcloud.middlewares=nc-dav,nc-secure-headers
- traefik.http.middlewares.nc-dav.redirectregex.permanent=true
- traefik.http.middlewares.nc-dav.redirectregex.regex=https://(.*)/.well-known/(?:card|cal)dav
- traefik.http.middlewares.nc-dav.redirectregex.replacement=https://$${1}/remote.php/dav
@@ -148,13 +157,22 @@ services:
- nextcloud_internal
- proxy
labels:
- traefik.enable=true
- traefik.docker.network=proxy
- traefik.http.routers.onlyoffice.rule=Host(`${OO_DOMAIN}`)
- traefik.http.routers.onlyoffice.entrypoints=websecure
- traefik.http.routers.onlyoffice.tls=true
- traefik.http.routers.onlyoffice.tls.certresolver=${TRAEFIK_CERTRESOLVER}
- traefik.http.routers.onlyoffice.middlewares=oo-secure-headers,oo-forwarded
- traefik.http.middlewares.oo-secure-headers.headers.stsSeconds=31536000
- traefik.http.middlewares.oo-secure-headers.headers.stsIncludeSubdomains=true
- traefik.http.middlewares.oo-secure-headers.headers.stsPreload=true
- traefik.http.middlewares.oo-secure-headers.headers.contentTypeNosniff=true
- traefik.http.middlewares.oo-forwarded.headers.customRequestHeaders.X-Forwarded-Proto=https
- traefik.http.middlewares.oo-forwarded.headers.customRequestHeaders.X-Forwarded-Host=onlyoffice.sherlockhomeless.net
- traefik.http.middlewares.oo-forwarded.headers.customRequestHeaders.X-Forwarded-Host=${OO_DOMAIN}
- traefik.http.middlewares.oo-forwarded.headers.customRequestHeaders.X-Forwarded-Port=443
- traefik.http.middlewares.oo-forwarded.headers.customRequestHeaders.X-Forwarded-Ssl=on
+14 -10
View File
@@ -1,21 +1,25 @@
TZ=Europe/Madrid
NC_DOMAIN=nextcloud.sherlockhomeless.net
OO_DOMAIN=onlyoffice.sherlockhomeless.net
NC_DOMAIN=app.example.com
OO_DOMAIN=app.example.com
TRAEFIK_CERTRESOLVER=letsencrypt
TRUSTED_PROXIES=10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
MYSQL_ROOT_PASSWORD=change_me_mysql_root_password_long_and_secure
MYSQL_ROOT_PASSWORD=change-me
MYSQL_DATABASE=nextcloud
MYSQL_USER=nextcloud
MYSQL_PASSWORD=change_me_nextcloud_db_password_long_and_secure
MYSQL_PASSWORD=change-me
NEXTCLOUD_ADMIN_USER=admin
NEXTCLOUD_ADMIN_PASSWORD=change_me_nextcloud_admin_password_long_and_secure
OO_JWT_SECRET=change_me_onlyoffice_jwt_secret_long_and_random
OO_SECURE_LINK_SECRET=change_me_onlyoffice_secure_link_secret_long_and_random
NEXTCLOUD_ADMIN_PASSWORD=change-me
OO_JWT_SECRET=change-me
OO_SECURE_LINK_SECRET=change-me
SMTP_HOST=mail-relay
SMTP_PORT=587
SMTP_SECURE=tls
SMTP_SECURE=
SMTP_AUTHTYPE=
SMTP_NAME=
SMTP_PASSWORD=
MAIL_FROM_ADDRESS=nextcloud@thehomelesssherlock.com
MAIL_DOMAIN=thehomelesssherlock.com
MAIL_FROM_ADDRESS=noreply
MAIL_DOMAIN=app.example.com
SERVICE_FQDN_ONLYOFFICE_DOCUMENTSERVER=app.example.com
SERVICE_URL_ONLYOFFICE_DOCUMENTSERVER=https://app.example.com
SERVICE_FQDN_NEXTCLOUD=app.example.com
SERVICE_URL_NEXTCLOUD=https://app.example.com
+32
View File
@@ -74,6 +74,14 @@ services:
PAPERLESS_TIKA_ENDPOINT: http://paperless-tika:9998
PAPERLESS_TIKA_GOTENBERG_ENDPOINT: http://paperless-gotenberg:3000
PAPERLESS_EMAIL_HOST: ${PAPERLESS_EMAIL_HOST}
PAPERLESS_EMAIL_PORT: ${PAPERLESS_EMAIL_PORT}
PAPERLESS_EMAIL_USE_TLS: ${PAPERLESS_EMAIL_USE_TLS}
PAPERLESS_EMAIL_USE_SSL: ${PAPERLESS_EMAIL_USE_SSL}
PAPERLESS_EMAIL_FROM: ${PAPERLESS_EMAIL_FROM}
PAPERLESS_EMAIL_HOST_USER: ${PAPERLESS_EMAIL_HOST_USER}
PAPERLESS_EMAIL_HOST_PASSWORD: ${PAPERLESS_EMAIL_HOST_PASSWORD}
# Más robusto cuando los ficheros llegan por sync/mount y no por inotify puro
PAPERLESS_CONSUMER_POLLING: ${PAPERLESS_CONSUMER_POLLING}
volumes:
@@ -86,6 +94,15 @@ services:
- proxy
- mail_internal
labels:
- traefik.enable=true
- traefik.docker.network=proxy
- traefik.http.routers.paperless.rule=Host(`${PAPERLESS_DOMAIN}`)
- traefik.http.routers.paperless.entrypoints=websecure
- traefik.http.routers.paperless.tls=true
- traefik.http.routers.paperless.tls.certresolver=${TRAEFIK_CERTRESOLVER}
- traefik.http.routers.paperless.middlewares=paperless-secure-headers
- traefik.http.middlewares.paperless-secure-headers.headers.stsSeconds=31536000
- traefik.http.middlewares.paperless-secure-headers.headers.stsIncludeSubdomains=true
- traefik.http.middlewares.paperless-secure-headers.headers.stsPreload=true
@@ -109,12 +126,27 @@ services:
- paperless_internal
- proxy
labels:
- traefik.enable=true
- traefik.docker.network=proxy
- traefik.http.routers.paperless-ai.rule=Host(`${PAPERLESS_AI_DOMAIN}`)
- traefik.http.routers.paperless-ai.entrypoints=websecure
- traefik.http.routers.paperless-ai.tls=true
- traefik.http.routers.paperless-ai.tls.certresolver=${TRAEFIK_CERTRESOLVER}
- traefik.http.routers.paperless-ai.middlewares=paperless-ai-secure-headers
- traefik.http.middlewares.paperless-ai-secure-headers.headers.stsSeconds=31536000
- traefik.http.middlewares.paperless-ai-secure-headers.headers.stsIncludeSubdomains=true
- traefik.http.middlewares.paperless-ai-secure-headers.headers.stsPreload=true
- traefik.http.middlewares.paperless-ai-secure-headers.headers.contentTypeNosniff=true
- traefik.http.services.paperless-ai.loadbalancer.server.port=3000
- homepage.group=Productividad
- homepage.name=Paperless AI
- homepage.icon=https://media.sys.truenas.net/apps/paperless-ai/icons/icon.png
- homepage.description=Complemento IA para Paperless
- homepage.href=https://${PAPERLESS_AI_DOMAIN}
- homepage.siteMonitor=https://${PAPERLESS_AI_DOMAIN}
# Sync unidireccional: Nextcloud/Paperless-Inbox -> paperless/consume
paperless-inbox-sync:
+19 -8
View File
@@ -1,19 +1,30 @@
TZ=Europe/Madrid
NC_DOMAIN=nextcloud.example.com
PAPERLESS_DOMAIN=paperless.example.com
PAPERLESS_AI_DOMAIN=paperless-ai.example.com
NC_DOMAIN=app.example.com
PAPERLESS_DOMAIN=app.example.com
PAPERLESS_AI_DOMAIN=app.example.com
TRAEFIK_CERTRESOLVER=letsencrypt
TRUSTED_PROXIES=10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
PAPERLESS_DBNAME=paperless
PAPERLESS_DBUSER=paperless
PAPERLESS_DBPASS=change_me_paperless_db_password_long_and_secure
PAPERLESS_SECRET_KEY=change_me_paperless_secret_key_long_and_random_string
PAPERLESS_DBPASS=change-me
PAPERLESS_SECRET_KEY=change-me
PAPERLESS_ADMIN_USER=admin
PAPERLESS_ADMIN_PASSWORD=change_me_paperless_admin_password_long_and_secure
PAPERLESS_ADMIN_PASSWORD=change-me
PAPERLESS_ADMIN_MAIL=admin@example.com
PAPERLESS_CONSUMER_POLLING=60
PAPERLESS_ALLOWED_HOSTS=paperless.example.com,paperless,localhost
PAPERLESS_ALLOWED_HOSTS=app.example.com
NC_WEBDAV_USER=paperless
NC_WEBDAV_PASS=change_me_nextcloud_webdav_password_long_and_random
NC_WEBDAV_PASS=change-me
PAPERLESS_INBOX_DIR=Paperless-Inbox
RCLONE_SYNC_INTERVAL=60
PAPERLESS_EMAIL_HOST=mail-relay
PAPERLESS_EMAIL_PORT=587
PAPERLESS_EMAIL_USE_TLS=false
PAPERLESS_EMAIL_USE_SSL=false
PAPERLESS_EMAIL_FROM=admin@example.com
PAPERLESS_EMAIL_HOST_USER=
PAPERLESS_EMAIL_HOST_PASSWORD=
SERVICE_FQDN_PAPERLESS_AI=app.example.com
SERVICE_FQDN_PAPERLESS=app.example.com
SERVICE_URL_PAPERLESS=https://app.example.com
SERVICE_URL_PAPERLESS_AI=https://app.example.com