repos
/ orchard main

orchard

mirror

Every site I host, in one repo, along with the Cloudflare Tunnel and Caddy that front them. It's all Go, Vite, and SQLite, and it runs on a desktop at home with nothing listening on an inbound port.

blogbuncaddycloudflare-tunneldockergogolanghomelabhtml-templatemonorepoself-hostedseosqlitestatic-sitetypstuptime-monitoringviteweb-analytics

1.3 KB · 51 lines · YAML Raw History
 1name: orchard-dash
 2
 3# No published ports and no secrets. Everything this site shows is public: free
 4# market data, two public feeds, the weather, and whether Isaac's own sites are
 5# answering. The volume holds one JSON file, the upstream guard's state, which
 6# has to survive a restart or the circuit breaker is not one.
 7
 8services:
 9  app:
10    build:
11      context: .
12      dockerfile: Dockerfile
13    container_name: orchard-dash
14    restart: unless-stopped
15    # Longer than Docker's 10s default, because shutdown drains the log shipper
16    # queue and flushes the guard state.
17    stop_grace_period: 30s
18    volumes:
19      - data:/data
20    # A ceiling to fail against rather than a target. This process holds one
21    # state snapshot and a handful of open SSE connections, so it is the
22    # lightest site here.
23    deploy:
24      resources:
25        limits:
26          cpus: "0.50"
27          memory: 128M
28    healthcheck:
29      test: ["CMD", "/app", "-healthcheck"]
30      interval: 30s
31      timeout: 5s
32      retries: 3
33      start_period: 10s
34    security_opt:
35      - no-new-privileges:true
36    logging:
37      driver: json-file
38      options:
39        max-size: "10m"
40        max-file: "3"
41    networks: [edge]
42
43volumes:
44  data:
45    name: orchard-dash-data
46
47networks:
48  edge:
49    name: orchard-edge
50    external: true