Overview
| Artifact ID: | aa1e80aa21a0b172e4f95ebe001fffa240759c39111d873261b16fc30a77b1fd |
|---|---|
| Page Name: | Home |
| Date: | 2026-03-15 20:42:11 |
| Original User: | dmestas |
| Mimetype: | text/x-markdown |
| Parent: | 5d75a7d6dca4739d7f921fdb2196a0493968cbd8dced5f45d54e5d4d6862ec0a (diff) |
| Next | 847749a405c901515c48bfffab497e82ff33e65e185de728991a5389daa5b82b |
Content
infra
Infrastructure-as-code for vps-nbg1 (Hetzner, Ubuntu 24.04 LTS, arm64).
This repo contains install scripts, config templates, and documentation for all services running on the VPS. Each service is self-contained under its own directory with idempotent install scripts.
Services
# Top band: Internet / Cloudflare
right
CF: box "Cloudflare" color white fill 0x2a4a6b width 5.8 height 0.45 rad 4px
# VPS outline
VPS: box width 5.8 height 3.8 rad 8px at CF.s + (0, -2.35) fill 0xfafaf0
# Fossil stack (left third)
down
CFD: box "cloudflared" color white fill 0x5b4a8a width 1.4 height 0.4 rad 4px \
at VPS.nw + (0.9, -0.5)
arrow from CFD.s down 0.15 color 0x888888
CDY: box "Caddy :8090" color white fill 0x5b4a8a width 1.4 height 0.4 rad 4px
arrow from CDY.s down 0.15 color 0x888888
FSL: box "Fossil :8081" color white fill 0x3a6b3a width 1.4 height 0.4 rad 4px
text "edgesync" small at FSL.s + (0, -0.18)
text "go-libfossil, infra" small at FSL.s + (0, -0.35)
# NATS stack (right third)
NT: box "nats-server :4222" color white fill 0x2a4a8a width 1.7 height 0.4 rad 4px \
at VPS.ne + (-1.0, -0.5)
arrow from NT.s down 0.15 color 0x888888
JS: box "JetStream" color white fill 0x2a4a8a width 1.7 height 0.4 rad 4px
arrow from JS.s down 0.15 color 0x888888
ES: box "EDGESYNC" fill 0xddeeff width 1.5 height 0.35 rad 4px at JS.s + (0, -0.38)
box "GO_LIBFOSSIL" fill 0xddeeff width 1.5 height 0.35 rad 4px at ES.s + (0, -0.45)
# Coolify (centre)
box "Coolify :8000" fill 0xfff0cc width 1.4 height 0.4 rad 4px at VPS.n + (0, -0.7)
box "excalidraw" fill 0xfff0cc width 1.4 height 0.4 rad 4px at VPS.n + (0, -1.25)
# Arrows from Cloudflare down
arrow from CF.s + (-1.9, 0) down 0.1 color white thick
text "fossil." small at CF.s + (-1.9, -0.2)
arrow from CF.s + (1.9, 0) down 0.1 color white thick
text "sync. :4222" small at CF.s + (1.9, -0.2)
→ /pikchrshow| Service | Directory | Endpoint |
|---|---|---|
| NATS Server | nats/ |
tls://sync.craftdesign.group:4222 |
| Fossil SCM | (managed separately) | https://fossil.craftdesign.group/ |
| Coolify | (managed separately) | http://localhost:8000 |
NATS Documentation
Repository Layout
nats/
install.sh Phase 1 — binary, user, dirs, TLS cert, systemd unit
bootstrap-creds.sh Phase 2 — nsc operator/accounts/users, .creds files
start.sh Phase 3 — render config, start service, copy JWTs
provision-streams.sh Phase 4 — create JetStream streams
nats-server.conf.template Config template (envsubst vars: OPERATOR_JWT, SYS_ACCOUNT_KEY)
nats.service Systemd unit
Dockerfile Container image (24 MB, tested)
docker-entrypoint.sh Entrypoint — renders config, starts server
creds/ *.creds files (fossil-ignored, not committed)
docs/
superpowers/
specs/ Design documents
plans/ Implementation plans
Quickstart — Re-installing NATS
cd ~/Projects/infra
export NATS_VERSION=2.10.22
sudo --preserve-env=NATS_VERSION bash nats/install.sh # Phase 1 (root)
bash nats/bootstrap-creds.sh # Phase 2 (dmestas)
sudo bash nats/start.sh # Phase 3 (root)
bash nats/provision-streams.sh # Phase 4 (dmestas)