small systems and repeatable deployments
Infrastructure
One Ubuntu host, containerized applications, a shared private network, reverse proxying at the edge, and enough automation.
Every service gets its own small world. The worlds stay separate until they need to speak to the proxy, storage, or each other.
operating rules
Five things the setup is allowed.
Docker and Compose make projects behave similarly even when the applications underneath them do not.
Services keep their own containers, users, configuration, and persistent data instead of sharing one giant pile.
A new project should need a small set of known pieces, not a fresh infrastructure religion.
Automate recurring work. Leave infrequent work simple enough to do over SSH without building machinery around it.
If Compose is enough, Compose wins.
request path
One front door. Several small rooms.
Public traffic arrives at one edge. The proxy decides which internal service receives it.
deployment path
Push. Connect. Rebuild. Leave it alone.
- 01git pushsource changes
- 02GitHub Actionsonly on projects that benefit from it
- 03SSHkey-backed connection to host
- 04git pullrefresh application source
- 05docker compose up --build -dreplace what changed
- 06application workmigrations / static collection when required
git pull origin main
docker compose up \
--build -d
# application-specific steps
# only when the project needs them
docker compose ps
docker compose logs --tail=40
Less ceremony is a feature.
from the operator desk
The portion of infrastructure.
Mostly checking things, reading logs, and discovering typos.
OPERATOR NOTES
container rebuilt cleanly.
proxy route checked.
certificate renewal: somebody else's future problem.
it was DNS.
of course it was DNS.
stop adding tools.
Security
Small layers
Administrative access without password logins.
Credentials and environment values do not belong in public repositories.
Certificates terminate at the reverse proxy and renew automatically.
Applications carry their own runtime assumptions instead of sharing them globally.
Useful when it answers a question.
next shelf
Worth considering when they become useful.
BACKUPS automate more of the recovery path.
HEALTH CHECKS alert only when somebody can act on the result.
INFRASTRUCTURE AS CODE when repetition becomes larger than the configuration itself.
ZERO DOWNTIME DEPLOYMENT when an application needs the requirement.