con un clic
remote-deployment
Deploy SuperLandings Go to remote servers with hotify-cli and Traefik
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Deploy SuperLandings Go to remote servers with hotify-cli and Traefik
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
Create sites with templates, assets, blog, admin panel — full mastery guide
Asset management, CLI output conventions, and template helpers for SuperLandings Go
hotify-cli integration for SuperLandings Go - DNS, Traefik, and reverse proxy configuration
SSH-based site sync and proxy mechanism for SuperLandings Go
| name | remote-deployment |
| description | Deploy SuperLandings Go to remote servers with hotify-cli and Traefik |
Manage sites from local CLI via a remote daemon's HTTP API — no SSH needed for day-to-day ops.
# Add target (one-time)
sl-cli targets add --name <name> --host <IP> --port 3100 --token <token> --default
# Use --target on any command
sl-cli site list --target dk2
sl-cli backend status --target dk2
sl-cli site upload site "img.png" --file ./img.png --target dk2
go build -o sl-cli ./cmd/sl-cli
scp sl-cli <USER>@<SERVER_IP>:/tmp/sl-cli-new
ssh <USER>@<SERVER_IP> "sudo cp /tmp/sl-cli-new /home/<USER>/sl-cli && sudo chown <USER> /home/<USER>/sl-cli"
ssh <USER>@<SERVER_IP> "sudo -u <USER> nohup /home/<USER>/sl-cli backend start \
--daemon --port 3100 --no-systemd --auth-token <TOKEN> > /dev/null 2>&1 &"
# Auto-creates site/version on remote, no manual scp needed
sl-cli site sync <slug> --host <SERVER_IP> --user <USER> --key <KEY>
Or via HTTP API (after daemon is running):
sl-cli site sync <slug> --target dk2
The daemon user must have the same hotify config as the infra user:
scp ~/.hotify/config.json <USER>@<SERVER_IP>:/tmp/
ssh <USER>@<SERVER_IP> "mkdir -p ~/.hotify && cp /tmp/hotify-config.json ~/.hotify/config.json"
ssh <USER>@<SERVER_IP> "sudo chown <USER> /etc/traefik/dynamic.yml /etc/traefik/traefik.yml /etc/traefik/cloudflare.env"
ssh <USER>@<SERVER_IP> "echo '<USER> ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart traefik' | sudo tee /etc/sudoers.d/<USER>-traefik"
sl-cli site dns setup <site> --domain <domain> --ip <IP> --traefik --target dk2
Or directly on the server:
ssh <USER>@<SERVER_IP> "hotify-cli setup-dns --id <app> --ip <IP> --local"
ssh <USER>@<SERVER_IP> "hotify-cli setup-traefik --id <app> --challenge-type dns --local"
| Issue | Check | Fix |
|---|---|---|
| 404 on domain | Traefik routing | Add router in /etc/traefik/dynamic.yml with addPrefix: /<slug> |
| SSL cert fails | CF token on remote | Sync ~/.hotify/config.json |
| Traefik config denied | File ownership | sudo chown <USER> /etc/traefik/* |
| Traefik restart denied | Sudoers | Add NOPASSWD sudoers rule for systemctl restart traefik |
| Daemon not responding | Binary out of date | Rebuild + scp + restart |
| Port 443 blocked | Tailscale Funnel | tailscale funnel reset |
| Port 443 blocked | iptables redirect | iptables -t nat -D PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8443 |
| Domain duplication | hotify base domain | Use subdomain only in --domain |
~/.hotify/config.json as the infra user/etc/traefik/*.yml + passwordless sudo for systemctl restart traefik{{>include "path"}} is fully implemented, processed at serve timeadmin on dk2). All permissions must be set for that user.