Admin Portal
One screen for the whole VPS
Internal control panel for every Docker app on the VPS — container status, logs, SSL certs, secrets vault, project links — sitting behind email + 2FA. The piece of infrastructure that makes the rest of the portfolio cheap to run.
problem
`ssh` and `docker compose` are fine until you have a dozen apps. After that, repetitive operations belong in a UI: restart a container, rotate a key, check who is paged when an SSL is expiring.
solution
Flask app that talks to the Docker socket, Traefik dashboard, and a small credential vault. Email-based login with PIN-based 2FA, full audit log, and one-click restart per service.
architecture
external → compute → store → ui
outcome
Restart, redeploy, view logs, rotate secrets — all from one tab, with the same auth wall in front of every action.
stack
capabilities
- →Container status, logs, restart
- →SSL certificate monitoring
- →Credential vault with audit log
- →Email + PIN 2FA
- →Project quick-links (tutorials, repos, dashboards)
lessons learned
- 01The internal admin tool justifies itself the first time you avoid SSH at 11pm.
- 022FA at the app level is enough — making it the only path means there is no "easy" backdoor to forget about.
- 03The credential vault is the single most-used feature, by a wide margin. Worth investing in.