Deploy Cap
Before using the one-click template, here is a minimal Docker Compose file for self-hosting Cap.
If you're new to Docker Compose, check out our guide on how to self-host a Docker Compose app. You can also browse more examples in our Docker Compose library.
Self-host Cap with Docker Compose (minimal)
services:
cap:
image: tiago2/cap:latest
ports:
- "3000:3000"
environment:
# Optional overrides
ADMIN_KEY: "" # Leave empty to auto-generate
volumes:
- cap-data:/usr/src/app/.data
volumes:
cap-data:
Cap stores captcha state and PoW challenge data in the /usr/src/app/.data directory.
Deploy Cap on Hostim.dev (One-Click)
Cap is a lightweight, modern open-source CAPTCHA alternative that uses SHA-256 proof-of-work. It's fast, private, and simple to integrate. With Hostim.dev, you can deploy Cap in one click, fully preconfigured with persistent storage and automatic HTTPS.
🔒 Protect your site with a privacy-focused, proof-of-work CAPTCHA – no tracking, no bloat.
Guest project runs for 1 hour. Log in to save and extend to 5 days.
Why Host Cap on Hostim.dev?
- One-click Docker deployment
- Persistent volume included
- Automatic HTTPS and domain
- Real-time logs and metrics
- No tracking or data collection
What's included
| Resource | Details |
|---|---|
| App | tiago2/cap:latest image |
| Volume | /usr/src/app/.data |
| Domain | Free *.hostim.dev subdomain |
| SSL | Let’s Encrypt (auto-enabled) |
| Port | 3000 |
| Defaults | ADMIN_KEY auto-generated |
How to Deploy
- Go to your Hostim.dev dashboard.
- Click Create Project → Use a Template.
- Select Cap.
- Choose a resource plan.
- Hit Deploy.
Post-Deploy Notes
ADMIN_KEYis auto-generated; find it under Environment Variables- Add a custom domain under Networking
- Use the App panel to monitor logs and CPU usage
- Cap uses PoW to reduce bot traffic without storing personal data
FAQ
Where does Cap store its internal data?
Cap stores challenge metadata and PoW state in /usr/src/app/.data,
backed by a persistent volume.
How do I obtain my ADMIN_KEY?
It is generated automatically on first run. Check the app’s Environment Variables panel in the dashboard.
Does Cap require a database?
No. Cap is fully file-based and requires only a writable data directory.
How do I integrate Cap in my frontend?
Include the Cap client script from your instance and request a challenge token before submitting a form or API request.
Can Cap run behind a reverse proxy?
Yes. Forward HTTPS traffic to port 3000. No special headers are required.
How do I change difficulty of the PoW challenge?
Set the DIFFICULTY environment variable (defaults to 22). Higher =
harder for bots.
How do I update Cap?
Docker: docker compose pull && docker compose up -d
Hostim.dev: redeploy the app.
Why are some clients slow to solve the challenge?
Older devices may take longer; reduce DIFFICULTY if needed.
Alternatives
- hCaptcha (self-hosted Enterprise) — traditional challenge-based CAPTCHA
- FriendlyCaptcha — privacy-first PoW CAPTCHA
- Cloudflare Turnstile — lightweight captcha-free verification
Source + Docs
- GitHub: tiagorangel1/cap
- Documentation: capjs.js.org
- Demo: capjs.js.org/guide/demo.html
Looking for something else? Browse all templates →