feat: refactor caddie to use external mappings and add example mappings

This commit is contained in:
2026-08-06 12:51:50 +05:30
parent c0dc4cb2db
commit 42577243b1
3 changed files with 32 additions and 66 deletions
+1
View File
@@ -0,0 +1 @@
mappings.ts
+16 -66
View File
@@ -1,80 +1,30 @@
import { writeFileSync } from "fs"
const mappings = {
// portfolio
"blog.silicoflare.dev": "http://localhost:2368",
// mini-services
"yamtrack.hy-pr.link": "http://localhost:9002",
"todo.hy-pr.link": "http://localhost:9001",
"affine.hy-pr.link": "http://localhost:9005",
"affine-nyx.hy-pr.link": "http://localhost:9005",
"pin.hy-pr.link": "http://localhost:9007",
"dl-api.hy-pr.link": "http://localhost:9011",
"dl.hy-pr.link": "http://localhost:9012",
"pics.hy-pr.link": "http://localhost:9013",
"books.hy-pr.link": "http://localhost:9014",
"nametag.hy-pr.link": "http://localhost:9015",
"rss.hy-pr.link": "http://localhost:8080",
// mega-services
"git.hy-pr.link": "http://localhost:9100",
"ntfy.hy-pr.link": "http://localhost:9101",
"chat.hy-pr.link": "http://localhost:9102",
"dav.hy-pr.link": "http://localhost:9103",
"files.hy-pr.link": "http://localhost:9104",
"ytrewq.hy-pr.link": "http://localhost:9105",
"pocketbase.hy-pr.link": "http://localhost:8090",
"immich.hy-pr.link": "http://localhost:2283",
"dash.hy-pr.link": "http://localhost:3026",
// other
"webhook.hy-pr.link": "http://localhost:8000",
"docs.hy-pr.link": "http://localhost:10000",
// statics
"chef.hy-pr.link": "http://100.64.0.3:8100",
"it-tools.hy-pr.link": "http://100.64.0.3:8101",
"vert.hy-pr.link": "http://100.64.0.3:8103",
"pdf.hy-pr.link": "http://100.64.0.3:8104",
//sites
"bash.hy-pr.link": "/opt/sites/bash",
"stardew.hy-pr.link": "/opt/sites/stardew",
"predictor.stardew.hy-pr.link": "/opt/sites/stardew-predictor",
"checkup.stardew.hy-pr.link": "/opt/sites/stardew-checkup",
"planner.stardew.hy-pr.link": "/opt/sites/crop_planner",
"helper.stardew.hy-pr.link": "/opt/sites/stardew-fair-helper",
}
import mappings from "./mappings"
let caddyfile = `# Caddyfile
http://103.126.231.26 {
redir https://silicoflare.dev{uri}
}
https://103.126.231.26 {
redir https://silicoflare.dev{uri}
}
hy-pr.link {
redir /silicoflare https://silicoflare.dev
redir /flare https://silicoflare.dev
}
ssh.hy-pr.link {
header Content-Type text/plain
respond "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINt3OrGyuZkH+NliwamlZJPFJsgSF4O2+V149EUhtq3l silicoflare.dev\n" 200
}
ssh.silicoflare.dev {
header Content-Type text/plain
respond "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINt3OrGyuZkH+NliwamlZJPFJsgSF4O2+V149EUhtq3l silicoflare.dev\n" 200
}
`
Object.entries(mappings).map(([key, value]) => {
if (value.startsWith("/")) {
if (value.startsWith("key:")) {
caddyfile += `${key} {
header Content-Type text/plain
respond "${value.split(":")[1]}\n" 200
}
`
} else if (value.startsWith("redir:")) {
caddyfile += `${key} {
redir ${value.split(":")[1]}
}
`
} else if (value.startsWith("/")) {
caddyfile += `${key} {
root * ${value}
encode gzip zstd
+15
View File
@@ -0,0 +1,15 @@
const mappings = {
// redirects
"http://ip": "redir:https://example.com{uri}",
// reverse proxies
"example.com": "http://localhost:8080",
// static files
"foo.example.com": "/opt/sites/foo",
// keys
"ssh.example.com": "key:ssh-ed25519 qwerty1234567890 example.com",
}
export default mappings;