A container platform I host myself
Give it a Docker image, a port and a name, and it runs the image on a public HTTPS address in under a minute. It is built for a single ARM64 board, and the machine it runs on opens no ports to the internet at all: traffic arrives over one outbound Cloudflare Tunnel.
An app's address exists only while its container does. The router finds the right container by reading labels Rig writes when it creates one, so nothing has to be set up per app, and deleting an app takes its URL with it.
Access to Docker is split in two, a read-only proxy for the router and a narrower read-write one for the control plane, so a compromise of the part facing the internet cannot start a container. The apps themselves run on their own network, with no host ports, no bind mounts and almost every Linux capability dropped.
TypeScript, Fastify, React, PostgreSQL, Docker, Traefik, Cloudflare Tunnel
Visit rig.tobipi.dev ↗
An npm library
For the things every service needs sooner or later: retries, timeouts, backing off when something is struggling, and a circuit breaker that stops calling a service that's down.
TypeScript, npm
View on npm ↗
One upload service for all my apps
When an app of mine needs to take a file, it asks this service for a signed URL that expires shortly after, and the browser sends the file straight to storage. None of my servers ever hold the bytes or pay for the bandwidth, and every app gets the same upload path for free.
The satellite research tool uses it to store annotations and their thumbnails, which is how a tool running on my laptop can save results somewhere the rest of the team can read.
Rust, axum, S3, presigned URLs
Read the code ↗