Adds docker-mailserver (SMTP_ONLY mode) to the tools stack so Outline can send magic-link emails without depending on an external SMTP provider. Changes: - docker-compose.yml.j2: add mailserver service + mail-internal network outline gets mail-internal network to reach mailserver - env.j2: point Outline SMTP at local mailserver:587 with noreply account - defaults/main.yml: add mailserver_image (v14) - tasks/main.yml: create mailserver dirs, wait for postfix ready, idempotent account creation, DKIM key generation + DNS instructions - inventory/group_vars/all/main.yml: add mailserver_noreply_password alias - vault.yml: add vault_mailserver_noreply_password After deploy, Ansible will print DKIM/SPF/DMARC DNS records to add to Cloudflare. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
48 lines
1.2 KiB
Django/Jinja
48 lines
1.2 KiB
Django/Jinja
# Outline env — generated by Ansible
|
|
NODE_ENV=production
|
|
SECRET_KEY={{ outline_secret_key }}
|
|
UTILS_SECRET={{ outline_utils_secret }}
|
|
|
|
# Database
|
|
DATABASE_URL=postgres://outline:{{ outline_db_password }}@outline-db:5432/outline
|
|
PGSSLMODE=disable
|
|
|
|
# Redis
|
|
REDIS_URL=redis://outline-redis:6379
|
|
|
|
# App URL
|
|
URL=https://{{ domain_wiki }}
|
|
PORT=3000
|
|
|
|
# S3 file storage (Timeweb Object Storage)
|
|
AWS_ACCESS_KEY_ID={{ s3_access_key }}
|
|
AWS_SECRET_ACCESS_KEY={{ s3_secret_key }}
|
|
AWS_REGION=ru-1
|
|
AWS_S3_UPLOAD_BUCKET_NAME=visual-outline
|
|
AWS_S3_UPLOAD_BUCKET_URL=https://s3.timeweb.cloud
|
|
AWS_S3_FORCE_PATH_STYLE=true
|
|
AWS_S3_ACL=private
|
|
FILE_STORAGE=s3
|
|
|
|
# Auth — local accounts (can add OIDC/Authelia later)
|
|
AUTH_PROVIDERS=email
|
|
|
|
# SMTP — local docker-mailserver container (same Docker network, port 587 with auth)
|
|
SMTP_HOST=mailserver
|
|
SMTP_PORT=587
|
|
SMTP_USERNAME=noreply@{{ domain_base }}
|
|
SMTP_PASSWORD={{ mailserver_noreply_password }}
|
|
SMTP_FROM_EMAIL=noreply@{{ domain_base }}
|
|
SMTP_SECURE=false
|
|
|
|
# Outline DB password (used in docker-compose)
|
|
OUTLINE_DB_PASSWORD={{ outline_db_password }}
|
|
|
|
# Optional
|
|
DEFAULT_LANGUAGE=en_US
|
|
RATE_LIMITER_ENABLED=true
|
|
ENABLE_UPDATES=false
|
|
|
|
# n8n secrets
|
|
N8N_ENCRYPTION_KEY={{ n8n_encryption_key }}
|
|
N8N_JWT_SECRET={{ n8n_jwt_secret }}
|