Backend:
- update_service: registry manifest digest check (Docker Hub/ghcr/lscr/private
v2 token auth) vs local RepoDigests; in-memory cache + background loop
- port_service: parse compose ports, check /proc/net/tcp[6] + docker bindings
- template_service + bundled templates (jellyfin/vaultwarden/uptime-kuma/
paperless-ngx/gitea) with {{VAR}} placeholders; custom templates in DB
- compose_edit set_resources (deploy.resources.limits/reservations)
- routers: images, ports, templates, editor/set-resources
- Template model; background update task wired into lifespan
Frontend:
- EnvEditor (table + raw, sensitive masking, quick-insert)
- Images page + UpdateBadge + dashboard 'updates available' banner
- PortConflictDialog pre-deploy check on Deploy
- ResourcePanel (CPU/RAM sliders) as editor Limits tab
- Templates page with per-variable instantiate form
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
39 lines
1.0 KiB
YAML
39 lines
1.0 KiB
YAML
services:
|
|
broker:
|
|
image: redis:7-alpine
|
|
container_name: paperless-redis
|
|
restart: unless-stopped
|
|
volumes:
|
|
- {{DATA_PATH}}/redis:/data
|
|
|
|
db:
|
|
image: postgres:16-alpine
|
|
container_name: paperless-db
|
|
restart: unless-stopped
|
|
environment:
|
|
- POSTGRES_DB=paperless
|
|
- POSTGRES_USER=paperless
|
|
- POSTGRES_PASSWORD=paperless
|
|
volumes:
|
|
- {{DATA_PATH}}/db:/var/lib/postgresql/data
|
|
|
|
webserver:
|
|
image: ghcr.io/paperless-ngx/paperless-ngx:latest
|
|
container_name: paperless
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- db
|
|
- broker
|
|
environment:
|
|
- PAPERLESS_REDIS=redis://broker:6379
|
|
- PAPERLESS_DBHOST=db
|
|
- PAPERLESS_TIME_ZONE={{TZ}}
|
|
- PAPERLESS_ADMIN_USER={{ADMIN_USER}}
|
|
- PAPERLESS_ADMIN_PASSWORD={{ADMIN_PASSWORD}}
|
|
ports:
|
|
- "{{HTTP_PORT}}:8000"
|
|
volumes:
|
|
- {{DATA_PATH}}/data:/usr/src/paperless/data
|
|
- {{DATA_PATH}}/media:/usr/src/paperless/media
|
|
- {{DATA_PATH}}/consume:/usr/src/paperless/consume
|