All checks were successful
Build and deploy / Validate source (push) Successful in 8s
Build and deploy / Integration suite on a real stack (push) Successful in 3m38s
Build and deploy / Secret scan and release gate (push) Successful in 7s
Build and deploy / Publish images (push) Successful in 1m2s
A backup service runs pg_dump every day at 03:00 Brasília, checks the archive, encrypts it with age to a public key and uploads it with a token for that bucket only. The server cannot read or delete backups: the private key stays with the owner, the bucket's lifecycle rule expires copies and its lock stops early deletion. Each run is recorded and shown on the Kanban's Integrations tab. tests/backup_test.py backs up, restores into a scratch database and compares the rows in CI. Setup and restore: docs/BACKUP.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
74 lines
2.3 KiB
Plaintext
74 lines
2.3 KiB
Plaintext
# Non-secret Portainer stack variables. Never put credential values in this file.
|
|
PRODUCTION_DEPLOY_ENABLED=TBD
|
|
PRODUCTION_INPUTS_APPROVED=TBD
|
|
PRODUCTION_SECURITY_REVIEW_APPROVED=TBD
|
|
PRODUCTION_RESTORE_REHEARSED=TBD
|
|
|
|
API_IMAGE=gitea.blyzer.com.br/blyzer/dtf-api
|
|
WEB_IMAGE=gitea.blyzer.com.br/blyzer/dtf-web
|
|
IMAGE_TAG=latest
|
|
POSTGRES_IMAGE=postgres@sha256:0000000000000000000000000000000000000000000000000000000000000000
|
|
CLAMAV_IMAGE=clamav/clamav@sha256:0000000000000000000000000000000000000000000000000000000000000000
|
|
|
|
PUBLIC_ORIGIN=https://dtf.example.invalid
|
|
PUBLIC_HOST=dtf.example.invalid
|
|
KANBAN_HOST=kanban-dtf.example.invalid
|
|
SITE_PORT=8080
|
|
KANBAN_PORT=8081
|
|
|
|
R2_ENDPOINT=TBD
|
|
R2_PUBLIC_ENDPOINT=TBD
|
|
R2_BUCKET=TBD
|
|
|
|
POSTGRES_DB=dtf
|
|
POSTGRES_USER=dtf_admin
|
|
APP_DB_USER=dtf_app
|
|
POSTGRES_VOLUME=TBD
|
|
OPERATOR_EMAIL=TBD
|
|
|
|
PAYMENT_ADAPTER=TBD
|
|
# With PAYMENT_ADAPTER=mercadopago. MP_ACCESS_TOKEN and MP_WEBHOOK_SECRET are
|
|
# secrets: enter them in Portainer only, never in this file.
|
|
MP_NOTIFICATION_URL=https://<SITE_DOMAIN>/api/payments/webhook
|
|
MP_PUBLIC_KEY=
|
|
FREIGHT_ADAPTER=TBD
|
|
TINY_ADAPTER=TBD
|
|
# Tiny API v3 application (Configurações > Geral > Aplicativos in Tiny). The
|
|
# redirect URL registered there must equal TINY_REDIRECT_URI.
|
|
TINY_CLIENT_ID=TBD
|
|
TINY_REDIRECT_URI=https://<KANBAN_DOMAIN>/api/operator/tiny/callback
|
|
TINY_PRODUCT_TEXTIL_FOLHA=TBD
|
|
TINY_PRODUCT_TEXTIL_AVULSA=TBD
|
|
TINY_PRODUCT_UV_FOLHA=TBD
|
|
TINY_PRODUCT_UV_AVULSA=TBD
|
|
TINY_FORMA_ENVIO_RETIRADA=TBD
|
|
# true only at go-live, after the n8n DTFIMP designer branch is removed.
|
|
TINY_STATUS_UPDATES=false
|
|
WHATSAPP_ADAPTER=TBD
|
|
STORAGE_QUOTA_BYTES=TBD
|
|
OWNER_UPLOAD_QUOTA_BYTES=TBD
|
|
MAX_PENDING_UPLOADS=10
|
|
MAX_UPLOAD_BYTES=5368709120
|
|
UPLOAD_PART_BYTES=8388608
|
|
SCAN_MAX_BYTES=134217728
|
|
# Daily encrypted database backup to its own bucket (docs/BACKUP.md).
|
|
BACKUP_S3_ENDPOINT=https://<account>.r2.cloudflarestorage.com
|
|
BACKUP_BUCKET=dtf-backups
|
|
BACKUP_ACCESS_KEY_ID=TBD
|
|
BACKUP_SECRET_ACCESS_KEY=TBD
|
|
BACKUP_AGE_RECIPIENT=age1...
|
|
BACKUP_HOUR=3
|
|
|
|
# Names of external Portainer/Docker Swarm secrets, never their values.
|
|
DATABASE_URL_SECRET=TBD
|
|
DATABASE_ADMIN_URL_SECRET=TBD
|
|
DB_ADMIN_PASSWORD_SECRET=TBD
|
|
APP_DB_PASSWORD_SECRET=TBD
|
|
R2_ACCESS_KEY_ID_SECRET=TBD
|
|
R2_SECRET_ACCESS_KEY_SECRET=TBD
|
|
OPERATOR_PASSWORD_SECRET=TBD
|
|
PAYMENT_TOKEN_SECRET=TBD
|
|
PAYMENT_WEBHOOK_SECRET=TBD
|
|
TINY_TOKEN_SECRET=TBD
|
|
WHATSAPP_TOKEN_SECRET=TBD
|