Skip to content
infra Update of ”Home”
Login

Update of ”Home”

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

Cloudflare cloudflared Caddy :8090 Fossil :8081 edgesync go-libfossil, infra nats-server :4222 JetStream EDGESYNC GO_LIBFOSSIL Coolify :8000 excalidraw fossil. sync. :4222
    # 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)
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)