ワンクリックで
add-caddy-route
Add a reverse proxy route to an encrypted Caddyfile
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Add a reverse proxy route to an encrypted Caddyfile
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Add an AeroSpace window rule to assign an app/window to a workspace (macOS only)
Create or update secrets using Infisical (preferred) or legacy agenix files
Re-encrypt all secrets after modifying .age files or changing host keys
Decrypt and view the contents of an .age secret file
Deploy NixOS/Darwin configuration to local or remote host using justfile commands
Analyze project from URL/path and auto-detect build system to create Nix package
| name | add-caddy-route |
| description | Add a reverse proxy route to an encrypted Caddyfile |
| compatibility | Requires agenix, agenix-helper |
| metadata | {"author":"ruinous.ai","version":"1.1","domain":"networking"} |
| parameters | {"hostname":{"type":"select","description":"Host where Caddy runs","required":true,"options":[{"label":"pilaster (Recommended)","description":"Main web services host"},{"label":"monolith","description":"Infrastructure services host"},{"label":"zenith","description":"AI/GPU workloads host"},{"label":"obelisk","description":"GPU compute host"}]},"domain":{"type":"string","description":"Domain for the route (e.g., myservice.meskill.farm)","required":true,"placeholder":"myservice.meskill.farm"},"backend":{"type":"string","description":"Backend service address (container:port)","required":true,"placeholder":"myservice:8080"}} |
Add a reverse proxy route to an encrypted Caddyfile.
If parameters are missing from $ARGUMENTS, use mcp_question to gather them:
mcp_question({
questions: [
{
question: "Which host's Caddyfile should be updated?",
header: "Host",
options: [
{ label: "pilaster (Recommended)", description: "Main web services host" },
{ label: "monolith", description: "Infrastructure services" },
{ label: "zenith", description: "AI/GPU workloads" },
{ label: "obelisk", description: "GPU compute host" }
]
},
{
question: "What domain should this route serve?",
header: "Domain",
options: [
{ label: "Enter domain...", description: "e.g., myservice.meskill.farm" }
]
},
{
question: "What is the backend service address?",
header: "Backend",
options: [
{ label: "Enter backend...", description: "e.g., myservice:8080 (container:port)" }
]
}
]
})
Expected $ARGUMENTS format: <hostname> <domain> <backend>
pilaster myservice.meskill.farm myservice:8080agenix-helper unlock
agenix view hosts/<hostname>/files/caddy/Caddyfile.age > /tmp/Caddyfile
Append to /tmp/Caddyfile:
<domain> {
reverse_proxy <backend>
}
rm hosts/<hostname>/files/caddy/Caddyfile.age
agenix edit -i /tmp/Caddyfile hosts/<hostname>/files/caddy/Caddyfile.age
rm /tmp/Caddyfile
agenix rekey -a
agenix-helper lock
service.meskill.farm {
reverse_proxy container:8080
}
ollama.meskill.farm {
reverse_proxy ollama:11434 {
header_up Host localhost
}
}
service-int.meskill.farm service.meskill.farm {
reverse_proxy container:8080
}
service.meskill.farm www.service.meskill.farm {
reverse_proxy container:8080
}
{
acme_dns cloudflare {env.CF_API_TOKEN}
email admin@meskill.network
}
The Caddy container is configured to restart on Caddyfile changes:
systemd.services.docker-caddy = {
restartTriggers = [config.age.secrets.<hostname>_caddy_caddyfile.path];
};
/add-caddy-route pilaster myservice.meskill.farm myservice:8080
After deployment:
# Check Caddy config is valid
docker exec caddy caddy validate --config /etc/caddy/Caddyfile
# Reload Caddy
docker exec caddy caddy reload --config /etc/caddy/Caddyfile