You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
mention that cloud-user needs sudo privileges and add test command
monitor SSHGuard with monit service
keep certbot files in volume
when NGINX response fails put into answer which one did so. At the moment this can be seen through the HTTP Header X-Proxy-Layer which either has the value outer or inner.
when the backend returns for example a 404 not found response, NGINX catches it and returns its own 404 with a custom message. Thereby the original response with its information is lost, which is unfortunate, in particular for requests to /api/resources/... because it returns detailed information about why (which part of) the resource was not found.
regularly clean-up left-over images of past deployments: just keep the last n that are not older than x months.
improve hand-made content-addressable storage used in the database-project's database.mk backup/restore and in the machine-project's maintenance.mk backup/prune-backups
as first post-deployment step, run Smoke Tests (in particular, availability tests), infrastructure tests (can the application connect to external services), security tests (TLS handshake, open ports, CORS and security headers), critical user journey tests (authentication, frontend loading), performance & resource usage tests (latency and response times, resource consumption) --- some of that is covered by Monit
docker ps shows port mappings. It does neither show all internally open ports nor NGINX upstreams. These would be necessary to get a full data-flow picture.
protect "Basic Auth" used for logs and metrics against brute force attacks. Or better: Only make logs and metrics available through an SSH tunnel to reduce the attack surface.
migration fails (at least during deployment) when the PostgreSQL version changed and the container with the previous version is still running and a migration attempt is made with that version
the pruning done by make down with the filter does not remove anonymous volumes (make prune does so)
README: mention that during initial deployment "make build" on server or "./forge.mk" somewhere else can both be used
Makefiles: tell in the error message how to recover when the targets dotenv or symlink fail
vector: consumes 50% memory when the docker compose service logs is not available. Reduce! In general: Optimize it for production usage as detailed in https://vector.dev/docs/setup/going-to-prod/
document .env variable dependencies like HTTPS_PORT in machine and database
in NGINX security policy settings do neither generally allow JavaScript eval nor inline for /graphql/ nor /openapi/docs/. Instead use a nonce or a hash value
X-Proxy-Layerwhich either has the valueouterorinner./api/resources/...because it returns detailed information about why (which part of) the resource was not found.nthat are not older thanxmonths.The issues below are general DevOps issues that may also belong to the metabase/database/api infrastructure sections in metabase issues to flesh out, the database issues to flesh out, or the api issues to flesh out.
database.mk backup/restoreand in the machine-project'smaintenance.mk backup/prune-backupsdocker psshows port mappings. It does neither show all internally open ports nor NGINX upstreams. These would be necessary to get a full data-flow picture.traefikinstead of NGINX. traefik works seamlessly with Dockermake downwith the filter does not remove anonymous volumes (make prunedoes so)dotenvorsymlinkfaildeploy.mk history/restore/stateevalnorinlinefor /graphql/ nor /openapi/docs/. Instead use a nonce or a hash valuesudo nginx -t -c ./pathhttps://www.pfsense.org/--- see also https://docs.netgate.com/pfsense/en/latest/--waitdocker/compose#9122 (comment)already setup for database
/etc/cronitor/cronitor.json
sudo cronitor configure --dash-username YOUR_USERNAME --dash-password YOUR_PASSWORD
sudo cronitor configure --users cloud,root
sudo cronitor configure --allowed-ips 172.0.0.1
sudo cronitor update
sudo cronitor dash --port 10200
Similar lists exist for the metabase and the database projects.