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} encode gzip zstd try_files {path} /index.html file_server } ` } else { caddyfile += `${key} { reverse_proxy ${value} } ` } }) writeFileSync("/etc/caddy/Caddyfile", caddyfile)