deploy-vite-applisted
Install: claude install-skill archetype2142/deploy-skill
# Deploy a Vite/React app to a Docker + Traefik server
This skill takes a local frontend project and gets it live at
`https://<subdomain>.<root-domain>` on the user's own VPS, where `<root-domain>`
is whatever they set during setup. The server runs Docker with a Traefik reverse
proxy that handles routing and Let's Encrypt TLS. DNS is managed in Cloudflare.
The whole thing is one SSH-driven flow: build the app into a container, ship it,
run it behind Traefik, and point a subdomain at it.
The reason this is a skill rather than ad-hoc steps is that getting a deploy
right means matching the server's *existing* conventions — the Traefik network
name, the entrypoint names, the certresolver, where apps live on disk. Guessing
those wrong produces a container that runs but never receives traffic, or a cert
that never issues. So the core discipline here is: **discover the server's setup
first, then conform to it**, rather than imposing a config that looks right in
isolation.
## Configuration
All site-specific settings — SSH host/user/key, root domain, server IP, the
Cloudflare token, the reserved-subdomain list, and any pinned Traefik values —
live in **`~/.config/deploy-vite-app/config.env`**, written by `install.sh` (see
README). Nothing is hardcoded to a particular domain or server: the repo ships
with no real values, which is what makes it safe to publish and portable across
machines and across Claude Code / Cursor. `scripts/config.sh` loads that file
(environment variables ove