Shlink, self-hosted açık kaynaklı bir URL kısaltma ve tıklama takip platformudur. Kısa link oluşturma, tıklama istatistikleri, tag bazlı raporlama ve REST API sunar.
E-posta / Sosyal Medya
↓
links.example.com/abc123 ← Shlink (kısa link, herkese açık)
↓
urun-siten.com/urun/xyz ← Asıl ürün sayfası
shlink.example.com ← Shlink Web Client (yönetim paneli, IP kısıtlamalı)
- Docker Engine + Docker Compose v2
- Çalışır durumda Traefik (
traefik-networkexternal network) - Paylaşımlı PostgreSQL sunucusu (
postgres-networkexternal network)
shlink/
├── .env.example
├── docker-compose.yml
├── docker-compose.production.yml
├── install.sh
└── README.md
PostgreSQL sunucusunda Shlink için kullanıcı ve veritabanı oluştur. Bunun için paylaşımlı postgres servisinin sağladığı scripti kullan:
bash ~/.x-dockerize/postgres/scripts/create-db.shScript DB adı, kullanıcı adı ve şifreyi interaktif olarak sorar; şifreyi boş bırakırsan otomatik güçlü bir şifre üretir. İşlem sonunda bağlantı bilgilerini ekrana basar — .env dosyasını doldururken bu bilgileri kullan.
install.sh çalıştır — hostname, DB bilgileri ve isteğe bağlı GeoLite2 anahtarını sorar:
bash install.shYa da manuel:
cp .env.example .env
# .env dosyasını düzenle.env içinde doldurulması gereken alanlar:
| Değişken | Açıklama |
|---|---|
SHLINK_HOSTNAME |
Kısa linklerin sunulacağı domain (örn: links.example.com) |
SHLINK_ADMIN_HOSTNAME |
Yönetim panelinin sunulacağı domain (örn: shlink.example.com) |
DB_HOST |
PostgreSQL sunucu adresi |
DB_USER |
Veritabanı kullanıcısı |
DB_NAME |
Veritabanı adı |
DB_PASSWORD |
Veritabanı şifresi |
SHLINK_API_KEY |
Shlink API anahtarı (admin paneline otomatik tanımlamak için) |
GEOLITE_LICENSE_KEY |
MaxMind GeoLite2 lisans anahtarı (isteğe bağlı) |
docker compose -f docker-compose.production.yml up -dShlink Web Client'ı kullanabilmek için bir API key gerekir:
docker exec shlink shlink api-key:generateÇıktıdaki API key'i kopyala ve .env dosyasındaki SHLINK_API_KEY değişkenine yapıştır. shlink-admin servisi başlarken bu anahtarı otomatik olarak yükler — her tarayıcıda tekrar tekrar sunucu tanımlamak gerekmez.
Değişikliği uygulamak için shlink-admin servisini yeniden başlat:
docker compose -f docker-compose.production.yml up -d shlink-admin| Servis | Domain | Erişim |
|---|---|---|
| Shlink (API + redirects) | SHLINK_HOSTNAME |
Herkese açık |
| Shlink Web Client | SHLINK_ADMIN_HOSTNAME |
IP kısıtlamalı (trusted@file) |
Her link oluştururken firmayı tag olarak ekle:
links.example.com/samsung-tv → tag: samsung
links.example.com/samsung-phone → tag: samsung
links.example.com/lg-buzdolabi → tag: lg
Web Client'ta Tags filtresini kullanarak firma bazlı toplam tıklama raporunu görebilirsin.
Tıklamanın hangi ülkeden ve şehirden geldiğini görmek için MaxMind ücretsiz hesabı gerekir:
- https://www.maxmind.com/en/geolite2/signup adresinden kayıt ol
- Lisans anahtarını al
.enviçindeGEOLITE_LICENSE_KEYdeğerini güncelle- Servisi yeniden başlat
docker compose -f docker-compose.production.yml pull
docker compose -f docker-compose.production.yml up -d.env içinde SHLINK_VERSION ve SHLINK_WEB_VERSION değerlerini güncellemeyi unutma.