Multi-user static publishing with automatic subdomains,
wildcard HTTPS, and custom domains. One command to ship.
$ droply deploy ./dist --sub alice --project blog
Packaging ./dist...
Deploying to alice.droplydoc.com/blog...
Deployed! Version 1
URL: https://alice.droplydoc.com/blog
A focused toolkit for publishing static content. Fast, secure, self-hosted.
Package and publish any directory with a single CLI command. Automatic versioning keeps every deployment tracked.
Each user gets their own subdomains. Create alice.droplydoc.com instantly, host multiple projects under it.
Wildcard TLS certificates via Caddy. Every subdomain and custom domain gets HTTPS automatically.
Run on your own VPS. Your data, your rules. A single binary + Caddy is all you need.
Bring your own domain. Add a CNAME record and Caddy handles certificate provisioning automatically.
Protect sites with IP whitelists and passwords. Per-subdomain or per-project rules with configurable session TTL.
Pure Go binaries with embedded SQLite. No Docker, no Node.js, no external databases required.
Three steps from code to live site.
droply subdomain create alice
Claim your namespace. You can create multiple subdomains, each hosting different projects.
droply deploy ./dist --sub alice --project blog
Your files are packaged, uploaded, and extracted. The project is created automatically on first deploy.
https://alice.droplydoc.com/blog
Caddy picks up the new route instantly. HTTPS is ready. Share the link.
Simple, robust, easy to operate.
Up and running in minutes.
curl -fsSL https://droplydoc.com/install.sh | bash
One command to install. Auto-detects your OS and architecture. Supports macOS (ARM/x64), Linux (x64), and Windows (x64).
curl -fsSL https://droplydoc.com/setup.sh | sudo bash
Sets up a complete droply server on a fresh VPS. Installs droply-server, Caddy (with Cloudflare DNS), configures systemd, and starts everything. You'll be prompted for your domain and Cloudflare API token.
git clone https://github.com/zhong/droply.git
cd droply
make build
Produces two binaries: bin/droply-server and bin/droply
go install github.com/zhong/droply/cmd/droply@latest
Installs the CLI client directly into your $GOPATH/bin
| Flag | Default | Description |
|---|---|---|
--addr | :8080 | API listen address |
--site-addr | :8081 | Site server address (protected sites) |
--data-dir | /data/droply | Data directory (DB + files) |
--domain | droplydoc.com | Base domain |
--caddy-admin | http://localhost:2019 | Caddy Admin API |
--hmac-secret | | Cookie signing key (auto-generated if empty) |
Simple commands, predictable behavior.
droply register # Create account
droply login # Sign in
droply whoami # Current user
droply logout # Sign out
droply subdomain create alice
droply subdomain list
droply subdomain delete alice
droply project list --sub alice
droply project delete blog --sub alice
# Deploy with flags
droply deploy ./dist --sub alice --project blog
# Or use .droply.toml config
droply deploy
# Set rules (IP + password)
droply access set --subdomain alice \
--ip 10.0.0.0/8 --password auto
https://alice.droplydoc.com | Password: a1b2... | IP: 10.0.0.0/8 | Expires: 1d
# Never-expire password
droply access set --subdomain alice \
--password auto --expire never
https://alice.droplydoc.com | Password: xYz1... | Expires: never
# View rules
droply access get --subdomain alice
droply domain add blog.example.com \
--sub alice --project blog
droply domain verify blog.example.com \
--sub alice --project blog
droply domain list --sub alice --project blog
.droply.tomlsubdomain = "alice"
project = "blog"
Place in your project root. No more flags needed for droply deploy.
RESTful JSON API at api.droplydoc.com. Auth via Bearer token.
| Method | Endpoint | Description |
|---|---|---|
| POST | /auth/register | Register |
| POST | /auth/login | Login |
| POST | /subdomains | Create subdomain |
| GET | /subdomains | List subdomains |
| DEL | /subdomains/:name | Delete subdomain |
| POST | /subdomains/:sub/projects/:name/deploy | Deploy (multipart) |
| GET | /subdomains/:sub/projects | List projects |
| DEL | /subdomains/:sub/projects/:name | Delete project |
| GET | /subdomains/:sub/projects/:name/deployments | Deployment history |
| POST | /subdomains/:sub/projects/:name/domains | Add custom domain |
| DEL | /subdomains/:sub/projects/:name/domains/:domain | Remove custom domain |
| PUT | /subdomains/:sub/access | Set access control |
| GET | /subdomains/:sub/access | Get access control |
| DEL | /subdomains/:sub/access | Remove access control |