104 lines
2.6 KiB
TypeScript
Executable File
104 lines
2.6 KiB
TypeScript
Executable File
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",
|
|
"cash.hy-pr.link": "http://localhost:9006",
|
|
"pin.hy-pr.link": "http://localhost:9007",
|
|
// "stardew.hy-pr.link": "http://localhost:9008",
|
|
// "keep.hy-pr.link": "http://localhost:9010",
|
|
"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",
|
|
}
|
|
|
|
let caddyfile = `# Caddyfile
|
|
http://103.126.231.26 {
|
|
redir https://silicoflare.dev{uri}
|
|
}
|
|
|
|
https://103.126.231.26 {
|
|
redir https://silicoflare.dev{uri}
|
|
}
|
|
|
|
bash.hy-pr.link {
|
|
root * /opt/sites/bash
|
|
file_server
|
|
}
|
|
|
|
stardew.hy-pr.link {
|
|
root * /opt/sites/stardew
|
|
file_server
|
|
}
|
|
|
|
predictor.stardew.hy-pr.link {
|
|
root * /opt/sites/stardew-predictor
|
|
file_server
|
|
}
|
|
|
|
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("/")) {
|
|
caddyfile += `${key} {
|
|
root * ${value}
|
|
file_server
|
|
}
|
|
|
|
`
|
|
} else {
|
|
caddyfile += `${key} {
|
|
reverse_proxy ${value}
|
|
}
|
|
|
|
`
|
|
}
|
|
})
|
|
|
|
writeFileSync("/etc/caddy/Caddyfile", caddyfile)
|