Skip to content

Self-host Shlink

updated Sep 2026prices 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 self-hosted URL shortener with a REST API and CLI, custom slugs, QR codes and visit tracking. It has no bundled web UI; manage it with the separate Shlink web client or the API.

Key facts

CategoryURL shortener
LicenseMIT
StackPHP
Min RAM256 MB
Official imageyes
Measured idle RAM94 MB
Difficulty

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 + US
Get Hetzner Cloud (opens in new tab)
Kamaterafree trial
From $4/mo · 1 vCPU / 1 GB / 20 GB · US + EU + Asia
Start free on Kamatera → (opens in new tab)
DigitalOceanalso works on
From $6/mo · 1 vCPU / 1 GB / 25 GB · US + EU + Asia
Deploy on DigitalOcean → (opens in new tab)

Paid link — we earn a commission if you shop through it.

Install

Run these commands on your server:

# Shlink — official image with its built-in SQLite DB; set DEFAULT_DOMAIN to your short domain
SHLINK_API_KEY=$(openssl rand -hex 32) && echo "Shlink API key: $SHLINK_API_KEY"
docker run -d --name shlink --restart unless-stopped -p 8080:8080 \
  -e DEFAULT_DOMAIN=SERVER_IP:8080 -e IS_HTTPS_ENABLED=false \
  -e INITIAL_API_KEY="$SHLINK_API_KEY" \
  shlinkio/shlink:stable
# add -e GEOLITE_LICENSE_KEY=<free MaxMind key> to geolocate visits
# API: http://SERVER_IP:8080/rest/health — point the Shlink web client at it with the key above

More self-hosted tools

URL shortener

Kutt

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.
Node.jsSQLite
easyRead guide →
Invoicing

Akaunting

Accounting software for small businesses and freelancers: invoices and bills, customers and vendors, bank accounts and transfers, and financial reports, extendable through an app store. Source-available under the Business Source License 1.1: free production use is limited to two users, one company and 1,000 invoices, and each release converts to GPLv3 four years after publication.
PHPLaravelVue.jsMariaDB
easyRead guide →
Helpdesk

FreeScout

A lightweight Help Scout-style shared inbox written in PHP on Laravel: mailboxes fetched over IMAP, conversations, assignments, internal notes, collision detection and mobile apps, with unlimited agents and mailboxes. The core is AGPL-3.0; tags, saved replies, workflows, a knowledge base, live chat, WhatsApp and SSO are paid modules (also AGPL-3.0, with lifetime per-instance licences).
PHPLaravelMySQL
easyRead guide →
Invoicing

Invoice Ninja

Invoicing and billing for freelancers and small businesses: invoices, quotes, recurring billing, expenses, payments through online gateways, and a client portal, with desktop and mobile apps that also work against a self-hosted server. Source-available under the Elastic License 2.0; the self-hosted code includes the hosted Pro and Enterprise features, and removing the branding needs a paid white-label license.
PHPLaravelMySQLRedis
easyRead guide →

We use analytics cookies (Google Analytics, PostHog) to see which guides are useful. No ad networks, no cross-site tracking. See our privacy policy.