Self-host Kutt
updated Sep 2026deployed by usprices checked · Jul 2026Install verified on Ubuntu 26.04 · Sep 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →
A URL shortener with custom domains, custom slugs, password-protected and expiring links, per-link statistics and an API. The default Docker setup uses SQLite, with Postgres, MariaDB and Redis as options.
Key facts
CategoryURL shortener
LicenseMIT
StackNode.js, SQLite
Min RAM256 MB
Official imageyes
Measured idle RAM156 MB
Difficulty
Websitekutt.to (opens in new tab)
What you need
- Any VPS with at least 256 MB of RAM
- A domain you control — most self-hosted setups need HTTPS in front of them
- Under an hour if you've used Docker before
Where to host itaffiliate disclosure
Hetzner Cloudrun it on
From $23.59/mo · 2 vCPU / 4 GB / 80 GB · EU + USKamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + AsiaDigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + AsiaPaid link — we earn a commission if you shop through it.
Install
Run these commands on your server:
# Kutt — official image with SQLite; set DEFAULT_DOMAIN to your short domain
docker run -d --name kutt --restart unless-stopped -p 3000:3000 \
-v kutt-data:/var/lib/kutt -v kutt-custom:/kutt/custom \
-e DB_FILENAME=/var/lib/kutt/data.sqlite -e DEFAULT_DOMAIN=SERVER_IP:3000 \
-e JWT_SECRET=$(openssl rand -hex 32) \
kutt/kutt:v3.2.6
# open http://SERVER_IP:3000 and create the admin accountMore self-hosted tools
URL shortener
Shlink
PHP
easyRead guide →
Web analytics
GoatCounter
GoSQLite
easyRead guide →
No-code database
Grist
TypeScriptNode.jsPython
easyRead guide →
Inventory
Grocy
PHPSlimSQLite
easyRead guide →