ttl.sh

An ephemeral container registry for CI workflows.

What is ttl.sh?

ttl.sh is an anonymous, expiring container registry built on zot. This repo holds the host configuration (Ansible), the Next.js marketing site (web/), and the Docker Compose stack that runs on the server. It does not provision infrastructure — it configures a host that already exists.

Layout

Path What it is
ansible/ Nginx + TLS, Docker, and the Compose deployment
web/ Next.js site served at https://ttl.sh
static/ Legacy static site assets
docker-compose.yaml The two services that run on the host: web and zot

How it runs

Nginx terminates TLS and proxies:

  • / to the web container on port 3000
  • /v2 to the zot container on port 5000 (/v2/_catalog is blocked)

Zot runs an off-the-shelf image (ghcr.io/project-zot/zot-linux-amd64) with no local customization. Its only configuration is zot-config.json, rendered onto the host by Ansible from ansible/templates/zot-config.json.j2, which points zot at an S3-compatible bucket for blob storage.

Tag expiry is handled separately and is not yet wired up in this repo.

Deploying

See DEPLOYING.md. Pushes to the deploy branch also run .github/workflows/deploy.yml, which builds and pushes the web image and then runs the Ansible playbook.

S
Description
An anonymous & ephemeral Docker image registry
Readme Apache-2.0
1.2 MiB
Languages
TypeScript 70.5%
Go 20.8%
HTML 4%
CSS 1.4%
Dockerfile 1.1%
Other 2.1%