Files
ttl.sh/DEPLOYING.md

1.2 KiB

Deploying ttl.sh manually

Infrastructure provisioning is no longer part of this repo. The playbook expects an already-running Ubuntu host that you can reach as root over SSH, listed in ansible/inventory/hosts, with its public IP set as target_ip in ansible/inventory/group_vars/all.yml (that value is what the Cloudflare A record is pointed at).

Build the ttl.sh images

The web and zot-ephemeral-ttl services are built here — zot and redis are used off the shelf.

  1. Docker and Docker Compose are installed
  2. Authenticated to ghcr.io (docker login ghcr.io)
  3. ./build-and-push.sh

Server setup and ttl.sh workloads

  1. Doppler is installed and authenticated for use with the ttl-sh project a. Have a valid DOPPLER_TOKEN from ttl-sh set b. echo $DOPPLER_TOKEN | doppler configure set token --scope /
  2. These secrets exist in Doppler and describe the S3-compatible bucket backing the registry: S3_BUCKET, S3_REGION, S3_ENDPOINT, S3_ACCESS_KEY, S3_SECRET_KEY
  3. cd ansible
  4. ./ansible.sh

The playbook installs Nginx and Certbot, obtains a certificate via Cloudflare DNS-01, installs Docker, then copies docker-compose.yaml and the rendered zot-config.json to /opt/ttlsh and brings the stack up.