Dub: Open-Core alternative to Bitly in 2026
Dub is a modern short-link platform with detailed click analytics, built as an open source, self-hostable alternative to Bitly.
Core is open source, but advanced features or enterprise support may be behind a paid tier β check the license.
Audit Snapshot
License β Not verifiable on GitHub
GitHub β Active
Latest release β Not available
Docker Compose β Manual setup, no Docker
Production β Not production-tested by AltFreeStack
Dub vs. Bitly
Pros
- Real-time click analytics, custom domains and a programmatic API
Things to consider
- Self-hosting it takes more work than a simple docker-compose
Quick Docker installation guide
This tool doesn't install via a plain docker-compose.yml β it uses the project's own official installer. Review it before running it. See the full step-by-step guide β
π‘ Official SaaS or self-hosted with AltFreeStack?
- On the official cloud: a recurring monthly fee and usage limits on Bitly.
- On your own VPS: the core is free to self-host on your own server β no more monthly SaaS fee, though some advanced features stay behind a paid plan.
# Dub es una app Next.js pensada principalmente para su nube gestionada;
# auto-hospedarla implica clonar el repo y configurar Postgres + Redis
# manualmente (no publican todavΓa una imagen Docker oficial ΓΊnica):
git clone https://github.com/dubinc/dub.git
cd dub && pnpm install && pnpm build
This docker-compose corresponds to an actively maintained project β last commit today.
This docker-compose not working for you? Report it on GitHub βTechnical profile
- License
- AGPL-3.0
- Category
- Marketing, Forms & Emailing
- Replaces
- Bitly
- Tech stack
- Next.jsPostgreSQLRedis
Key features
- Real-time click analytics
- Your own custom domains
- API to generate links programmatically
Preview
Public image provided by Dub on its own website.
π Connect your domain with free SSL
Step 1 β Set up the DNS
In your domain registrar's dashboard (Cloudflare, Namecheap, GoDaddy...), create a record:
- Type
- A
- Name/Host
- @ (root domain) or a subdomain, e.g. app
- Content/Value
- Your server's public IP
Wait 5 to 15 minutes for the record to propagate across the internet.
Step 2 β Automatic reverse proxy with Caddy
One single file, no Nginx config or manual certificates β Caddy issues and renews Let's Encrypt HTTPS on its own.
Create a file called Caddyfile:
yourdomain.com {
reverse_proxy localhost:YOUR_APP_PORT
}Start Caddy with this command (pulls the image and runs it in the background):
docker run -d -p 80:80 -p 443:443 --name caddy --restart always -v $PWD/Caddyfile:/etc/caddy/Caddyfile -v caddy_data:/data caddy