# Template for group_vars/all/vault.yml — the encrypted secrets store # consumed by every playbook. Copy this file to vault.yml, fill in real # values, then encrypt: # # cp vault.yml.example vault.yml # $EDITOR vault.yml # fill in real values # ansible-vault encrypt vault.yml # in place # echo "" > ../../../.vault-pass # gitignored # chmod 0400 ../../../.vault-pass # # After that, every `ansible-playbook` invocation needs: # ansible-playbook --vault-password-file infra/ansible/.vault-pass ... # The Forgejo deploy workflow handles this via the ANSIBLE_VAULT_PASSWORD # repo secret (see .forgejo/workflows/deploy.yml). # # Naming: every secret is prefixed `vault_*` so it's grep-able and so # `group_vars/all/main.yml` references like `postgres_password: # "{{ vault_postgres_password }}"` are unambiguous. --- # --- Database ----------------------------------------------------------- vault_postgres_password: "" vault_postgres_replication_password: "" # --- Cache / queue ------------------------------------------------------ vault_redis_password: "" vault_rabbitmq_password: "" # --- Object storage (MinIO) --------------------------------------------- vault_minio_root_user: "" vault_minio_root_password: "" vault_minio_access_key: "" vault_minio_secret_key: "" # --- JWT ---------------------------------------------------------------- # Backend prefers RS256 in prod. Generate with: # openssl genrsa -out jwt-private.pem 4096 # openssl rsa -in jwt-private.pem -pubout -out jwt-public.pem # Then base64 each: # base64 -w0 jwt-private.pem # base64 -w0 jwt-public.pem vault_jwt_signing_key_b64: "" vault_jwt_public_key_b64: "" # Chat WebSocket signs its own short-lived tokens — must differ from the # main JWT secret in production (defense in depth). vault_chat_jwt_secret: "" # --- App-internal API keys --------------------------------------------- # Backend ↔ stream-server shared secret. Both services must have the # same value so /api/v1/internal/* requests authenticate. vault_stream_internal_api_key: "" # OAuth refresh tokens are encrypted at rest with this key. vault_oauth_encryption_key: "" # --- Email -------------------------------------------------------------- vault_smtp_password: "" # --- Payments ----------------------------------------------------------- # Hyperswitch routes through Stripe Connect. Both keys are required if # `HYPERSWITCH_ENABLED=true` in group_vars/.yml. vault_hyperswitch_api_key: "" vault_hyperswitch_webhook_secret: "" vault_stripe_secret_key: "" # --- OAuth providers ---------------------------------------------------- # Add only the providers you actually enable; keys consumed by # templates/backend.env.j2 conditionally on truthiness. vault_oauth_clients: google: id: "" secret: "" spotify: id: "" secret: "" # --- Sentry / observability -------------------------------------------- vault_sentry_dsn: ""