Go-live checklist¶
Work through this before exposing an instance to the internet. See prerequisites for what to have ready and deployment for how to set each value.
Infrastructure¶
- [ ] TLS in front of the app (reverse proxy, load balancer, or CDN) with a
valid certificate, forwarding the
X-Forwarded-Protoheader. - [ ] PostgreSQL provisioned;
DATABASE_URLpoints at it (not SQLite). - [ ] Domain name resolves to the service.
- [ ] Shared cache (
ACES_WORKBENCH_CACHE_URL) if running more than one worker.
Application configuration¶
- [ ]
ACES_WORKBENCH_SECRET_KEYset to a stable value from a secrets manager. - [ ]
ACES_WORKBENCH_ALLOWED_HOSTSset to your public hostname(s). - [ ]
ACES_WORKBENCH_CSRF_TRUSTED_ORIGINSset to your public origin(s), e.g.https://scenarios.example.com. - [ ] Debug is off (the default) so HTTPS redirect, HSTS, and secure cookies are enabled.
- [ ] SMTP configured (
ACES_WORKBENCH_EMAIL_*) so invitations and password resets are delivered.
Verify¶
- [ ] Run
aces-workbench doctoron the server — every line readsOK, or you understand why a warning is acceptable for your deployment. - [ ] Migrations are applied (
aces-workbench migrate). - [ ] The first administrator exists (
aces-workbench createadmin). - [ ] The configured Django admin path is restricted to administrators.
- [ ] Sign in over HTTPS, create a scenario, and send yourself an invitation to confirm email delivery end to end.
Operate¶
- [ ] Database backups are scheduled.
- [ ] Logs and errors are collected somewhere you will see them.
- [ ] A process exists to apply dependency and security updates.