orchard
mirrorEvery 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{{define "head"}}<!doctype html>
2<html lang="en">
3<head>
4<meta charset="utf-8">
5<meta name="viewport" content="width=device-width, initial-scale=1">
6<meta name="robots" content="noindex, nofollow">
7<title>{{.Title}} · llm</title>
8<link rel="stylesheet" href="{{asset "static/app.css"}}">
9 <!-- Analytics, first party and on this estate. The id is identity rather than
10 a credential, so it is a constant here like every other site's. -->
11 <script>
12 (function (m, e, t, r, i, c, s) {
13 m.collectorQueue = m.collectorQueue || r;
14 m.collectorServer = c;
15 m.collectorId = s;
16 m.collectorScript = e.createElement(t);
17 m.collectorScript.src = c + i;
18 e.head.appendChild(m.collectorScript);
19 })(window, document, "script", [], "/static/collector.js",
20 "https://analytics.bythewood.me", "e432c02b-1537-4703-bc5a-6aa2e8573613");
21 </script>
22</head>
23<body>
24<header class="bar">
25 <a class="brand" href="/"><span class="key">L</span><span class="brand-name">llm</span></a>
26 <nav class="nav">
27 <a href="/" {{if eq .Title "Overview"}}class="on"{{end}}>Overview</a>
28 <a href="/calls" {{if eq .Title "Calls"}}class="on"{{end}}>Calls</a>
29 </nav>
30 <span class="model" title="The model this gateway serves">{{.Model}}</span>
31</header>
32<main class="wrap">
33{{end}}
34
35{{define "foot"}}
36</main>
37<footer class="foot">
38 <span>One model, one card, every service.</span>
39 <a href="{{.Source}}" target="_blank" rel="noopener">View source</a>
40</footer>
41</body>
42</html>
43{{end}}