Autographs system overview

GitHub validates changes and deploys released Rust publisher images. Cloudflare handles authoritative DNS, HTTPS proxying, and caching of public media. OCI runs Caddy, the static public site, Rust publisher, Autonomous Database, private Object Storage media, and Vault secrets.

System diagram

Architecture diagram
Fit
Enlarged numbered Autographs architecture diagram

Scroll to zoom · drag to pan · press Esc to close

16 numbered flows

Workflow step definitions

Step Workflow Definition
Runtime and private OCI services
1Run the free-tier VMThe runtime is one OCI Always Free VM.Standard.E2.1.Micro instance with 1 OCPU and 1 GB of memory. Podman quadlets define the containers, network, and volumes that systemd manages.
2Manage the collectionThe Rust publisher is the private admin service. It saves autograph metadata to Autonomous Database, uploads original item images to private Object Storage, applies image adjustments, and publishes static releases.
3Use catalog metadataThe Rust publisher reads and writes autograph catalog metadata in Autonomous Database.
4Store original imagesThe Rust publisher uses the VM instance principal to upload and read original images of autographed items in private OCI Object Storage.
5Load runtime secretsUsing the VM instance principal, the Rust publisher reads three Vault secrets: the Autonomous Database password, the database wallet password, and the admin password hash. OCI automatically generates and regularly rotates the ADB password in coordination with the database.
6Build and serve static releasesThe Rust publisher generates and validates public-safe releases in the Podman volume. Caddy serves the active HTML, JSON, and image derivatives: web-ready copies of the original images, such as thumbnails and detail images.
7Secure origin HTTPSCaddy obtains and renews its origin certificate with Let's Encrypt. Cloudflare validates the origin with Full (strict) TLS.
Delivery and infrastructure
8Validate changesThe admin updates the repository. Pull requests run static code analysis, tests, infrastructure validation, and workflow checks; Terraform plans share the state lock.
9Gate the releaseOrdinary merges collect in a release-please PR. Merging that PR starts the production CD pipeline.
10Publish the runtime imageThe CD pipeline builds and publishes the released Rust publisher image to GHCR; the runtime VM pulls that image.
11Trigger deploy jobsThe CD pipeline starts deploy jobs after the release is accepted and the Rust publisher image is available.
12Apply OCI infrastructureTerraform applies the OCI resources required by the runtime and its private services.
13Configure the runtime VMAnsible configures the VM, installs the quadlets, and deploys the Caddy and Rust publisher runtime files.
14Manage DNS and edge configurationTerraform manages Cloudflare DNS records and edge rules. Porkbun delegates jetsaredim.net to Cloudflare nameservers.
Admin workflow
15Manage content through the admin routeAdmin HTTPS requests cross Cloudflare without caching. Caddy routes them to the Rust publisher, where the admin saves item edits, uploads or adjusts images, reviews pending changes, and publishes them.
Public browsing
16Deliver the public siteVisitors reach Cloudflare over HTTPS, and its public route forwards requests to Caddy. Cloudflare caches versioned web-ready image copies while public HTML and JSON stay fresh.