Somebody has already worked out how to install PostgreSQL from its own repositories, open a firewall without locking themselves out, and join a k3s cluster. An official circuit is that work, packaged as an ordinary OpenTofu module with a circuit inside it. The Conn3x project keeps them in the conn3xorg organisation, versions each one with tags, and tests each on the distributions its page lists.
Each page here covers one circuit at its latest release: what it does, a usage example, every input and output, what it needs, what it was tested on, and what it leaves to you.
Add a module block that points at the circuit’s repository and a tag, and pass in your hosts:
source = " github.com/conn3xorg/circuit-postgres?ref=v0.2.0 "
hosts = { db1 = " 203.0.113.20 " }
conn3x init fetches it, and conn3x plan shows every step it will take on every host, the same as for a circuit you wrote yourself. Pin ref to a tag, and move it on when you’re ready for the next release. A circuit runs commands as root on your servers, so read it before you run it, as you would any other dependency.
Written a circuit you’d use again? Share a circuit covers making one others can use: hosts and SSH settings as variables, versions as tags, and a test on a container. List it on the circuit directory alongside these.
Circuit
What it does
Version
nginx
Installs nginx, writes your site, keeps the service running and opens port 80 in firewalld or ufw.
v0.1.0
Apache httpd
Apache httpd on Debian, Ubuntu, Rocky and Fedora: virtual hosts, reverse proxy and TLS, config-tested before every reload.
v0.1.0
Caddy
Runs Caddy as a web server or reverse proxy, with the Caddyfile built from a map of sites and checked before it goes live.
v0.2.1
HAProxy
HAProxy load balancing from a map of frontends and backends, with the config checked by haproxy -c before it goes live.
v0.1.0
Traefik
Traefik 3 routing HTTPS to your backends from a map of sites, with Let’s Encrypt certificates and no restart when a site changes.
v0.1.0
certbot
Let’s Encrypt certificates with certbot for nginx, HAProxy and the rest, renewed by the distro’s own timer.
v0.1.0
Circuit
What it does
Version
PostgreSQL
Installs PostgreSQL with your settings, access rules, users and databases, and keeps passwords out of state.
v0.2.0
MariaDB
MariaDB from your distribution with users, databases and grants, locked down the way mysql_secure_installation would.
v0.1.0
MySQL
MySQL 9.7 or 8.4 LTS from repo.mysql.com, with my.cnf settings, databases, users and grants. Passwords never reach state.
v0.1.0
SQL Server
SQL Server 2025 from Microsoft’s repos on Ubuntu 22.04/24.04 and EL 9/10, x86-64. Free editions by default, sa password never in state.
v0.1.0
CouchDB
Apache CouchDB single node from Apache’s repos: admin password kept out of state, CORS, and a preset for Obsidian’s LiveSync plugin
v0.1.0
Valkey
Valkey, the open Redis fork, from your distribution with a write-only password, memory limits and RDB or AOF persistence.
v0.1.0
OpenSearch
Self-hosted single-node OpenSearch 3.x from the official repositories, with the security plugin on and your own TLS certificates.
v0.1.0
Circuit
What it does
Version
node_exporter
Runs Prometheus node_exporter at a pinned, checksummed version as its own system user.
v0.1.0
Prometheus
Prometheus from the official release, scraping the targets you list, with each config checked by promtool and reloaded in place.
v0.1.0
Grafana
Grafana OSS from Grafana Labs’ repositories, with an admin password that stays applied and your datasources and dashboards provisioned.
v0.1.0
Monitoring stack
Prometheus, Grafana and cAdvisor as one Compose stack, scraping the targets you give it.
v0.2.0
Netdata
Installs the Netdata Agent from Netdata’s own repo: per-second metrics, telemetry off, localhost-only, optional parent/child streaming.
v0.1.0
OpenTelemetry Collector
OpenTelemetry Collector from the official packages: host metrics, journald and OTLP out, with configs validated before they go live
v0.1.0
Zabbix
Zabbix 7.0 LTS server, frontend and agent 2 from Zabbix’s repos, with PostgreSQL, API-set Admin password and optional per-agent PSK.
v0.1.0
Circuit
What it does
Version
Docker
Installs Docker Engine from Docker’s repository and runs your Compose stacks from files in your configuration.
v0.1.1
Podman
Installs Podman and runs your containers as systemd services through Quadlet, with secrets kept in a root-only file.
v0.1.0
k3s
A k3s Kubernetes cluster from servers and agents, with embedded etcd for HA and Raspberry Pi OS support.
v0.1.3
kubeadm
An upstream Kubernetes cluster with kubeadm: containerd, pkgs.k8s.io, HA control planes and a pod network.
v0.1.0
MicroShift
Turns one Rocky Linux 10 box into a single-node MicroShift cluster, with every unsigned package pinned by checksum.
v0.1.0
Circuit
What it does
Version
Pi-hole
Pi-hole ad blocking for your whole network from the official image under Podman, with local DNS records and blocklists.
v0.1.0
AdGuard Home
AdGuard Home blocking ads and trackers for every device on your network, configured without the setup wizard.
v0.1.0
Unbound
A validating, caching DNS resolver with Unbound: DNSSEC on, optional DNS over TLS upstreams and local records for your network.
v0.1.0
BIND
BIND 9 serving your zones, written as HCL, with serials that go up when records change and TSIG-signed secondaries.
v0.1.0
Circuit
What it does
Version
WireGuard
Joins hosts into a WireGuard network, full mesh or hub and spoke, with each private key made on its host and never leaving it.
v0.1.0
Tailscale
Installs Tailscale from Tailscale’s repository and joins your hosts to your tailnet, with subnet routes, exit nodes and Tailscale SSH.
v0.1.0
keepalived
A floating IP address shared between hosts with keepalived, moving to a backup within a second when a host or a check fails.
v0.1.0
Circuit
What it does
Version
Baseline
A sensible start for any server: time zone, chrony, sysctl settings and SSH that only takes keys.
v0.1.0
Hardening
SSH and kernel hardening for a fresh server: modern SSH crypto, hardening sysctls, no core dumps, every control switchable.
v0.1.0
Firewall
A default-deny ufw or firewalld firewall, picked per host, that opens SSH before it turns on.
v0.2.0
fail2ban
Bans addresses that keep failing SSH logins, through nftables, with room for jails of your own.
v0.2.0
Automatic updates
Turns on automatic package updates with unattended-upgrades or dnf-automatic, with security-only updates and a reboot window.
v0.2.0
OpenSCAP
OpenSCAP scans against CIS, STIG and other SCAP Security Guide profiles on a timer, with HTML reports and opt-in remediation.
v0.1.0
auditd
Installs auditd and loads rules: presets like PCI DSS or the STIG, your own watches, and optional immutability
v0.1.0
Circuit
What it does
Version
Samba
Samba file shares with per-user passwords kept out of state, SMB2 minimum, NetBIOS off and SELinux labels.
v0.1.0
NFS
Share folders over NFSv4 from the kernel NFS server, with each export checked by exportfs and v3 off unless you want it.
v0.1.0
restic
Scheduled, encrypted backups with restic to SFTP, S3, rest-server or a local path, with retention and repository checks.
v0.1.0
Circuit
What it does
Version
Users
Creates users, groups and their SSH keys from one map, with optional passwordless sudo.
v0.1.0
LLDAP
LLDAP, one small directory every service signs people in against, with the admin password kept out of plan and state.
v0.1.0
OpenLDAP
OpenLDAP slapd with cn=config set up for you: base DN, schemas, OUs, LDIF entries, TLS, no anonymous binds.
v0.1.0
FreeIPA
FreeIPA server on Rocky or Fedora, with clients on Debian, Ubuntu, Fedora and Rocky. Sets FQDNs, installs unattended, enrols over SSSD.
v0.1.0
Keycloak
Keycloak for single sign-on, OIDC and SAML on your own hosts, on OpenJDK with dev-file or PostgreSQL storage.
v0.1.0
OpenBao
OpenBao from the official release on raft storage, with auto-unseal and self-initialisation, on loopback until you give it TLS.
v0.2.0
Infisical
Runs Infisical, the open-source secrets manager, from its official image under Podman, with PostgreSQL and Valkey, keys made on the host.
v0.1.0
Circuit
What it does
Version
Ollama
Runs local LLMs with Ollama from the official release, with the models you name pulled and kept.
v0.1.1
Qdrant
Runs the Qdrant vector database from its official release under systemd, on loopback until you open it, with an optional API key.
v0.1.0
Open WebUI
Open WebUI in Podman: private chat for Ollama or a gateway, first admin from code, sign-up closed, per-user model access, no telemetry
v0.1.0
LiteLLM
Self-host LiteLLM Proxy: one OpenAI-compatible gateway with per-team keys, budgets, Presidio guardrails and Langfuse tracing.
v0.2.0
Presidio
Presidio’s PII analyzer and anonymizer on loopback in Podman, to scrub prompts and documents before a model sees them.
v0.1.0
Langfuse
Langfuse LLM observability on one host: prompts, costs and evals traced into ClickHouse, keys generated on the host, sign-up off.
v0.1.0
Agent box
Remote dev box for coding agents: key-only user, git, tmux, ripgrep, Node.js LTS, agent CLIs via npm. Works with Orca or plain SSH.
v0.1.0
Circuit
What it does
Version
Proxmox VE
Turns a Debian 13 host into a Proxmox VE 9 node, following Proxmox’s own install guide, reboot included.
v0.1.0
Forgejo
Your own Git forge: Forgejo from its signed release, on SQLite or PostgreSQL, with an admin user and git over your host’s SSH.
v0.1.0
GitLab CE
Single-node GitLab CE from GitLab’s official packages: pinned release, write-only root password, reconfigure only when gitlab.rb changes.
v0.1.0
Cockpit
Cockpit, the web console for Linux servers, with your port, extra pages, TLS certificate and root login off.
v0.1.0
n8n
Self-hosted n8n workflow automation in Podman: SQLite or PostgreSQL, host-generated encryption key, owner account set up on first apply.
v0.1.0
Circuit
What it does
Version
Java
OpenJDK or Eclipse Temurin 21 or 25 on Debian, Ubuntu, Fedora and Rocky, set as the default java with JAVA_HOME exported.
v0.1.0
PHP-FPM
PHP-FPM with your extensions, php.ini settings and pools. Distro PHP or a newer one from Sury or Remi, plus Composer.
v0.1.1
Jenkins
Jenkins LTS from the official repo on distro OpenJDK, with pinned plugins and Configuration as Code instead of the setup wizard.
v0.1.0
GitHub Actions runner
GitHub Actions self-hosted runners on Linux hosts: pinned release, dedicated user, one-time registration, a systemd service per runner.
v0.1.0
GitLab Runner
GitLab Runner from GitLab’s packages, shell or Docker executor, its glrt- token kept out of plan and state.
v0.1.0
Circuit
What it does
Version
Matrix Synapse
Synapse Matrix homeserver under Podman, behind your reverse proxy, with host-generated secrets and SQLite or Postgres.
v0.1.0
Jellyfin
Jellyfin media server: official apt repo or Podman image, read-only media, GPU groups, optional admin that skips the setup wizard.
v0.1.0
Circuit
What it does
Version
Suricata
Suricata IDS on AF_PACKET, ET Open rules updated daily, your own rules tested before reload, alerts in eve.json
v0.1.0
Zeek
Zeek from its official packages under systemd on one interface, with JSON logs, retention, and a check before each change.
v0.1.0
osquery
osqueryd from osquery’s own repos: scheduled queries, packs, file integrity monitoring, rotated JSON logs, optional Fleet enrollment.
v0.1.0
Velociraptor
Velociraptor server with its GUI, plus Linux clients that enroll to it. Keys are made on the server; nonce and password stay out of state.
v0.1.0