SiteIO
Deploy static sites to your own server with a single command. Automatic HTTPS. Wildcard subdomains. No third parties.
Why I built this
I needed a one-command CLI to go from local static files to https://my.site.com -- hosted by me. Not Vercel. Not Netlify. Not someone else's infrastructure that might change pricing, throttle builds, or disappear.
I wanted to type siteio deploy ./folder and have it live on my own domain, with HTTPS, in seconds. So I built it.
What it does
SiteIO is a CLI paired with a self-hosted agent that runs on your VPS. The CLI zips your files and uploads them. The agent serves them behind Traefik, which handles automatic HTTPS via Let's Encrypt and wildcard subdomain routing. Every deploy gets its own subdomain on your domain.
You own the server. You own the domain. There is no middleman.
How it works
I have an HTML page on my laptop. How do I make it available online?
Run siteio sites deploy ./folder --subdomain mysite and it's live at https://mysite.yourdomain.com in seconds.
Can I pick my own subdomain?
Yes. Use the --subdomain flag to choose any name you want, like --subdomain blog.
Is it served over HTTPS?
Always. Traefik handles Let's Encrypt certificates automatically -- you don't configure anything.
I updated my site. How do I redeploy?
Run the same siteio sites deploy command again. It overwrites the previous version instantly.
How do I see what sites I have deployed?
Run siteio sites list to see all your deployed sites and apps.
Can I restrict access with a login?
Yes. Add --allowed-emails "alice@co.com,bob@co.com" or --allowed-domain company.com to require Google OAuth before accessing the site.
Can I use my own domain name instead?
Yes. Use -d custom.example.com when configuring an app to serve it on your own domain.
I have a Docker container, not static files. Can I deploy that too?
Yes. Use siteio apps create myapp --image nginx:alpine --port 80 then siteio apps deploy myapp.
Can I set environment variables on my app?
Yes. Use siteio apps set myapp -e KEY=value to configure environment variables before deploying.
My app needs persistent storage. Can I mount a volume?
Yes. Use siteio apps set myapp -v data:/app/data to attach a named volume to your container.
Can it build directly from a Git repo?
Yes. Use siteio apps create myapp --git https://github.com/user/repo --port 3000 and it clones, builds, and deploys.
How do I check the logs of my running app?
Run siteio apps logs myapp --tail 100 to stream the latest log output.
Can I see deploy history and roll back?
Yes. Use siteio sites history mysite to see past versions and siteio sites rollback mysite 3 to revert.
Can siteio automatically configure my DNS with Cloudflare?
Yes. Pass --cloudflare-token during agent install and it sets up wildcard DNS records automatically.
Is there a JSON output mode for scripting?
Yes. Add --json to any command, e.g. siteio --json sites list, and you get machine-readable output.
Get started
curl -LsSf https://siteio.me/install | sh
Connect to your server
siteio login --token <your-token>
Deploy a folder
siteio sites deploy ./my-site --subdomain blog
# That's it. https://blog.yourdomain.com is live.
Done
Your site is live. Update it by running deploy again. Remove it with siteio sites undeploy blog.