Yıllar içinde biriktirdiğiniz yer imlerine son kez ne zaman baktığınızı hatırlıyor musunuz? Tarayıcının yer imi çubuğu bir süre sonra kimsenin cesaret edemediği bir klasör yığınına dönüşür; "Okunacaklar" adında dip bucak dolmuş bir klasör, adı unutulmuş onlarca alt klasör ve bir daha asla açılmayacak yüzlerce sekme. Üstelik bu koleksiyon çoğu zaman tek bir tarayıcıya, tek bir cihaza kilitlidir. Telefondan kaydettiğiniz bir bağlantıyı masaüstünde bulamaz, işten eve geçtiğinizde her şeye baştan başlamak zorunda kalırsınız.
Linkding tam da bu dağınıklığı toparlamak için tasarlanmış, açık kaynaklı ve kendi sunucunuzda barındırabileceğiniz bir yer imi yöneticisidir. Klasör hiyerarşisi yerine etiket tabanlı bir düzen, gösterişten uzak ve şaşırtıcı derecede hızlı bir arayüz sunar. Bu yazıda Linkding'in ne olduğunu, etiket mantığının neden klasörlerden daha pratik olduğunu, Docker ile nasıl kurulacağını, tarayıcı eklentisiyle nasıl entegre edileceğini, içe/dışa aktarma ile paylaşım özelliklerini ve benzer araçlarla nasıl kıyaslandığını kıdemli bir sistem yöneticisinin gözünden, adım adım ele alacağız.
Linkding nedir, ne işe yarar?#
Linkding, Python ve Django ile yazılmış, tek bir konteyner içinde çalışabilen hafif bir web uygulamasıdır. Temel işi basit ama değerlidir: kaydettiğiniz bağlantıları tek bir merkezde toplar, onları etiketlerle düzenler ve saniyeler içinde aranabilir hale getirir. Tarayıcıya, işletim sistemine ya da bir bulut hesabına bağımlı değilsiniz; verileriniz kendi sunucunuzdaki bir SQLite (veya isterseniz PostgreSQL) veritabanında durur.
"Self-hosted" olması meselenin kalbidir. Delicious'tan Pocket'a kadar birçok popüler yer imi servisinin bir gün kapandığını ya da ücretli plana geçtiğini gördük. Verilerinizi bir başkasının sunucusuna emanet ettiğinizde, o servisin ömrü sizin arşivinizin ömrünü belirler. Linkding'i kendi altyapınızda çalıştırdığınızda ise koleksiyonunuz tamamen sizindir; kimse fişini çekemez, kimse fiyat değiştiremez.
Linkding'in bir diğer güçlü yanı sadeliğidir. Sosyal özellikler, algoritmik öneriler, reklam ya da gereksiz süslemeler yoktur. Açılan sayfa sizi bir liste ve bir arama kutusuyla karşılar. Bu minimalizm hem uygulamayı çok az kaynakla çalıştırmayı hem de saniyeler içinde aradığınıza ulaşmayı mümkün kılar. Basitliği bir eksiklik değil, bilinçli bir tasarım tercihi olarak görmek gerekir.
Etiket tabanlı organizasyon ve minimal arayüz#
Klasik yer imi yönetiminin en büyük sorunu klasörlerdir. Bir bağlantı aynı anda hem "iş" hem "okunacak" hem de "tasarım" kategorisine girebilir, ama klasör yapısında onu yalnızca bir yere koyabilirsiniz. Linkding bu ikilemi etiketlerle çözer. Bir yer imine istediğiniz kadar etiket ekleyebilir, sonra bu etiketleri tek tek ya da birlikte kullanarak filtreleme yapabilirsiniz.
Örneğin bir CSS grid rehberini css, frontend ve okunacak etiketleriyle işaretlerseniz; daha sonra bu bağlantı üç farklı bakış açısından da karşınıza çıkar. css etiketine tıkladığınızda tüm CSS kaynaklarını, okunacak etiketine tıkladığınızda ise henüz vaktiniz olmayan her şeyi bir arada görürsünüz. Birden fazla etiketi birleştirdiğinizde ise kesişim çalışır: frontend ve okunacak birlikte seçildiğinde yalnızca ikisine de sahip yer imleri listelenir.
Linkding'in arama kutusu da bu mantıkla uyumludur. Metin yazarak başlıkta ve açıklamada arama yapabilir, aynı satırda #etiket söz dizimiyle etiket filtresi ekleyebilir, hatta özel operatörler kullanabilirsiniz. Sık kullandığınız arama örnekleri şöyle görünür:
django #okunacak → başlıkta "django" geçen, okunacak etiketli yer imleri
!untagged → hiç etiketi olmayan yer imleri
!unread → okunmadı olarak işaretlenenler
docker #devops #okunacak → üç kritere de uyanlar
Her yer imine bir başlık, açıklama ve notlar ekleyebilirsiniz. "Sonra oku" (unread) işareti, bir bağlantıyı okuma listesine almanın pratik yoludur; işiniz bittiğinde işareti kaldırırsınız. Ayrıca yer imleri arşivlenebilir: silmek istemediğiniz ama günlük listeyi kalabalıklaştırmasını da istemediğiniz eski bağlantıları arşive gönderir, aramada gerektiğinde yine bulursunuz.
Docker ile kurulum#
Linkding'i çalıştırmanın en pratik yolu Docker'dır. Tek bir imaj tüm uygulamayı içerir ve varsayılan olarak SQLite kullandığı için ayrı bir veritabanı sunucusu kurmanıza gerek kalmaz. Öncelikle verilerin kalıcı olması için sunucuda bir dizin oluşturalım ve konteyneri başlatalım:
# Verilerin saklanacağı dizini oluştur
mkdir -p /opt/linkding/data
# Konteyneri başlat
docker run -d \
--name linkding \
-p 9090:9090 \
-v /opt/linkding/data:/etc/linkding/data \
-e LD_SUPERUSER_NAME=admin \
-e LD_SUPERUSER_PASSWORD=guclu-bir-parola \
--restart unless-stopped \
sissbruecker/linkding:latest
LD_SUPERUSER_NAME ve LD_SUPERUSER_PASSWORD değişkenleri ilk yönetici hesabını otomatik oluşturur; ilk açılışta bu bilgilerle giriş yaparsınız. Konteyner ayağa kalktıktan sonra tarayıcınızdan http://sunucu-ip:9090 adresine giderek arayüze ulaşabilirsiniz.
Üretim ortamında docker run yerine bir Compose dosyası kullanmak daha düzenlidir; yapılandırmayı sürüm kontrolünde tutabilir, tek komutla güncelleyebilirsiniz. Aşağıdaki docker-compose.yml çoğu senaryo için yeterlidir:
services:
linkding:
image: sissbruecker/linkding:latest
container_name: linkding
ports:
- "9090:9090"
volumes:
- ./data:/etc/linkding/data
environment:
- LD_SUPERUSER_NAME=admin
- LD_SUPERUSER_PASSWORD=guclu-bir-parola
- LD_DISABLE_BACKGROUND_TASKS=False
- TZ=Europe/Istanbul
restart: unless-stopped
Dosyayı bir dizine kaydedip docker compose up -d komutuyla başlatın. Güncelleme geldiğinde ise şu üç komut yeterlidir:
docker compose pull
docker compose up -d
docker image prune -f
Linkding varsayılan SQLite ile küçük ve orta ölçekli koleksiyonları rahatça taşır. On binlerce yer imine ulaşan çok kullanıcılı senaryolarda PostgreSQL'e geçmek isterseniz LD_DB_ENGINE=postgres ve ilgili bağlantı değişkenlerini tanımlamanız yeterli olur. Kaynak ihtiyacı oldukça mütevazıdır; 1 vCPU ve 512 MB RAM'e sahip küçük bir sunucu bile Linkding için fazlasıyla yeterlidir. Bu ölçekteki uygulamalar için Clou.TR'nin sanal sunucu ve VDS seçenekleri iyi bir başlangıç noktasıdır.
Ters proxy ve HTTPS ile yayına alma#
Linkding'i dışarıya açacaksanız onu doğrudan 9090 portundan sunmak yerine bir ters proxy arkasına koyup HTTPS ile şifrelemeniz gerekir. Aksi halde giriş bilgileriniz açık metin olarak ağ üzerinden geçer. Aşağıdaki Nginx yapılandırması, linkding.ornekalanadi.com alt alan adına gelen istekleri konteynere yönlendirir:
server {
listen 80;
server_name linkding.ornekalanadi.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name linkding.ornekalanadi.com;
ssl_certificate /etc/letsencrypt/live/linkding.ornekalanadi.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/linkding.ornekalanadi.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:9090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Bir alt alan adını sunucunuza yönlendirdikten sonra ücretsiz bir Let's Encrypt sertifikasıyla HTTPS'i devreye alabilirsiniz. SSL sertifikasının nasıl kurulacağını ve otomatik yenileneceğini merak ediyorsanız SSL sertifikası sayfamız ile temel kavramları özetleyen SSL sertifikası nedir yazımız işinizi görür. Alan adına henüz sahip değilseniz domain kaydı adımından başlayabilirsiniz.
Ters proxy arkasında çalışırken Linkding'e kendi adresini bildirmek için LD_HOST benzeri değişkenlere gerek yoktur; çoğu durumda X-Forwarded-Proto başlığını iletmeniz yeterli olur. Yine de yönetici arayüzünü ve API'yi internete açtığınız için sunucu tarafında bir güvenlik duvarı yapılandırmanız, gereksiz portları kapatmanız akıllıca olur.
Tarayıcı eklentisi ve hızlı yer imi ekleme#
Bir yer imi yöneticisinin gerçek değeri, yeni bir bağlantıyı kaydetmenin ne kadar zahmetsiz olduğuyla ölçülür. Linkding bunun için resmi bir tarayıcı eklentisi sunar; Chrome, Firefox ve türevleri için mevcuttur. Eklentiyi kurduktan sonra ayarlarına Linkding örneğinizin adresini (https://linkding.ornekalanadi.com) ve bir API belirtecini girersiniz. Belirteci, uygulama içinde ayarlar bölümündeki "REST API" başlığından kopyalayabilirsiniz.
Kurulumdan sonra herhangi bir sayfadayken eklenti simgesine tıklayıp ya da bir klavye kısayoluyla o sayfayı anında kaydedebilirsiniz. Açılan küçük pencerede başlık ve açıklama otomatik doldurulur; siz yalnızca etiketleri eklersiniz. Etiket alanında yazmaya başladığınızda daha önce kullandığınız etiketler otomatik tamamlanır, böylece frontend ile frontEnd gibi tutarsız varyasyonlar oluşmaz.
Eklenti kullanmak istemeyenler için bir "bookmarklet" yöntemi de vardır. Bu, tarayıcının yer imi çubuğuna eklenen ve tek tıkla mevcut sayfayı Linkding'e kaydeden küçük bir JavaScript bağlantısıdır. Özellikle eklenti desteği sınırlı mobil tarayıcılarda işe yarar. Ayrıca mobil cihazlarda uygulamayı bir ilerici web uygulaması (PWA) olarak ana ekrana ekleyip paylaş menüsünden yer imi göndermek de mümkündür.
Otomasyonla ilgilenenler için Linkding'in REST API'si kapıları ardına kadar açar. Basit bir curl çağrısıyla programatik olarak yer imi ekleyebilirsiniz:
curl -X POST https://linkding.ornekalanadi.com/api/bookmarks/ \
-H "Authorization: Token API_BELIRTECINIZ" \
-H "Content-Type: application/json" \
-d '{
"url": "https://ornek.com/harika-yazi",
"title": "Harika bir yazı",
"tag_names": ["okunacak", "frontend"]
}'
Bu API sayesinde Linkding'i bir iş akışı otomasyonu aracına bağlayabilir, örneğin belirli bir RSS akışına düşen her yeni yazıyı otomatik olarak yer imlerinize ekleyebilirsiniz. Bu tür otomasyon senaryolarını daha ileri taşımak isterseniz n8n gibi araçlar Linkding API'siyle güzel çalışır.
İçe ve dışa aktarma#
Yeni bir araca geçerken en büyük çekince genellikle "peki mevcut yer imlerim ne olacak?" sorusudur. Linkding bu konuda rahatlatıcıdır çünkü tarayıcıların onlarca yıldır kullandığı standart Netscape bookmark formatını (HTML) hem içe hem dışa aktarımda destekler. Chrome, Firefox, Safari ya da başka bir yer imi servisinden dışa aktardığınız bookmarks.html dosyasını Linkding'in ayarlar bölümünden doğrudan içe aktarabilirsiniz.
Chrome'da yer imlerini dışa aktarmak için yer imi yöneticisini açıp üç nokta menüsünden "Yer imlerini dışa aktar" seçeneğini kullanırsınız; Firefox'ta ise "Kitaplık > Yer İmleri > Yer İmlerini İçe/Dışa Aktar > HTML'ye Yedekle" yolunu izlersiniz. Elde ettiğiniz HTML dosyasını Linkding içindeki içe aktarma alanına yüklediğinizde tüm bağlantılar, klasör isimleri de etikete dönüştürülerek aktarılır. Yani "İş/Tasarım" klasöründeki bağlantılar İş ve Tasarım etiketleriyle işaretlenmiş olarak gelir.
Aşağıdaki tablo Linkding'in desteklediği taşıma formatlarını özetliyor:
| Format | İçe aktarma | Dışa aktarma | Not |
|---|---|---|---|
| Netscape HTML | Evet | Evet | Tüm tarayıcıların ortak standardı |
| JSON (API) | Evet | Evet | Programatik yedekleme için |
| SQLite veritabanı | – | Kopyala | data/ dizinini yedeklemek yeterli |
Dışa aktarma tarafında iki seçeneğiniz var. Arayüzden HTML olarak dışa aktarabilir ya da daha kapsamlı bir yedek için doğrudan data/ dizinindeki SQLite veritabanı dosyasını kopyalayabilirsiniz. Düzenli bir yedekleme alışkanlığı için ikinci yöntemi öneririm; küçük bir cron görevi bu dizini her gece uzak bir konuma kopyalayabilir:
# Her gece 03:00'te data dizinini sıkıştırıp yedek sunucuya gönder
0 3 * * * tar czf /tmp/linkding-$(date +\%F).tar.gz -C /opt/linkding data && \
rsync /tmp/linkding-*.tar.gz [email protected]:/backups/linkding/
Verilerinizin güvenliğini ciddiye alıyorsanız düzenli yedeklemeyi bir alışkanlık haline getirin; konuyu derinlemesine ele aldığımız yedekleme çözümleri sayfası ve rsync ile yedekleme rehberi bu konuda yol gösterir.
Paylaşılan yer imleri ve çok kullanıcılı senaryolar#
Linkding tek kişilik kullanım için ideal olsa da yalnızca kişisel bir arşiv olmakla sınırlı değildir. Uygulama birden fazla kullanıcı hesabını destekler ve kullanıcılar yer imlerini birbirleriyle paylaşabilir. Bir yer imini kaydederken "paylaşılan" (shared) olarak işaretlerseniz, aynı Linkding örneğindeki diğer kullanıcılar onu ortak akışta görebilir. Bu, küçük bir ekip için hafif bir "keşif panosu" oluşturmanın pratik yoludur.
Bir adım ötesinde, paylaşılan yer imlerini tamamen genel (herkese açık) hale getirebilirsiniz. Ayarlardan bu özelliği etkinleştirdiğinizde, giriş yapmamış ziyaretçiler bile paylaşılmış olarak işaretlenen bağlantıları görüntüleyebilir. Böylece Linkding'i bir tür "link derleme" sayfasına dönüştürebilir, örneğin bir konuyla ilgili derlediğiniz kaynakları herkese açık bir liste olarak yayımlayabilirsiniz. Genel akışın kendi RSS beslemesi de vardır; takipçileriniz derlemenizi bir RSS okuyucusuyla izleyebilir.
Çok kullanıcılı kurulumlarda yeni hesapları yönetici arayüzünden oluşturursunuz. Django tabanlı olmasının bir avantajı, gelişmiş yönetim işlemlerini standart bir yönetim panelinden yapabilmenizdir. Yeni bir kullanıcıyı komut satırından da ekleyebilirsiniz:
docker exec -it linkding python manage.py createsuperuser
Ekip içi bilgi paylaşımı ihtiyacınız Linkding'in sunduğundan daha kapsamlıysa, yani yer imi paylaşmanın ötesinde belge yazıp düzenlemek istiyorsanız, bu iş için tasarlanmış araçlara bakmakta fayda var. Ekip wikisi ve bilgi tabanı kurma konusunda Outline; dosya paylaşımı, takvim ve daha bütünleşik bir işbirliği ortamı için ise Nextcloud yazılarımıza göz atabilirsiniz. Linkding bu araçlarla rekabet etmez; onların yanında, "bağlantı yönetimi" boşluğunu dolduran küçük ve keskin bir araç olarak yerini alır.
Linkding'i benzer araçlarla karşılaştırma#
Yer imi yönetimi alanında hem ticari servisler hem de açık kaynak alternatifler var. Linkding'in nerede durduğunu görmek için onu bilinen birkaç seçenekle kıyaslayalım:
| Özellik | Linkding | Pocket / Raindrop | Wallabag |
|---|---|---|---|
| Barındırma | Kendi sunucunuz | Bulut (SaaS) | Kendi sunucunuz |
| Odak | Yer imi + etiket | Yer imi + okuma | Makale arşivleme |
| Kaynak tüketimi | Çok düşük | – | Orta |
| Offline okuma | Hayır | Kısmen | Evet (tam metin) |
| Veri sahipliği | Tam | Sınırlı | Tam |
| Arayüz | Minimal, hızlı | Cilalı | İşlevsel |
Bu tablodan çıkan tablo net: Linkding, ham bağlantıları hızlıca kaydedip etiketlerle düzenlemek ve saniyeler içinde bulmak isteyenler için biçilmiş kaftandır. Eğer amacınız makalelerin tam metnini indirip çevrimdışı, dağınıklıktan arındırılmış biçimde okumaksa, Wallabag gibi "okuma sonrası" (read-it-later) odaklı bir araç daha uygun olabilir. Raindrop ya da Pocket gibi bulut servisleri ise cilalı arayüzleri ve mobil deneyimleriyle öne çıkar, ancak verinizi kendi kontrolünüzde tutmaz ve servisin geleceğine bağımlı kalırsınız.
Linkding'in asıl kazandığı yer, sadelik ile veri sahipliğinin kesişimidir. Neredeyse hiç kaynak tüketmeden çalışır, bakımı kolaydır ve tüm koleksiyonunuz taşınabilir bir SQLite dosyasında sizinle kalır. Küçük bir sunucuda dakikalar içinde ayağa kalkması, onu "kur ve unut" türünden bir servis yapar.
Sıkça Sorulan Sorular#
Linkding tamamen ücretsiz mi?#
Evet, Linkding açık kaynaklı ve MIT lisanslıdır; yazılımın kendisi için hiçbir ücret ödemezsiniz. Kendi sunucunuzda çalıştırdığınızda tek maliyetiniz sunucu kaynağıdır ve bu da oldukça mütevazıdır. Kullanıcı başına ücretlendirme, özellik kilidi ya da gizli bir ücretli plan yoktur.
Verilerim nerede saklanıyor, güvende mi?#
Tüm yer imleriniz kendi sunucunuzdaki data/ dizininde bulunan bir SQLite veritabanında durur. Yani veri bir üçüncü tarafın bulutunda değil, tamamen sizin kontrolünüzdedir. Güvenlik için uygulamayı HTTPS arkasına almanız, güçlü bir yönetici parolası belirlemeniz ve data/ dizinini düzenli olarak yedeklemeniz yeterli olur.
Mevcut tarayıcı yer imlerimi Linkding'e aktarabilir miyim?#
Kesinlikle. Chrome, Firefox, Safari ya da başka bir servisten yer imlerinizi standart HTML formatında dışa aktarıp Linkding'in içe aktarma ekranından yükleyebilirsiniz. Aktarım sırasında tarayıcıdaki klasör isimleri otomatik olarak etikete dönüştürülür, böylece düzeninizi baştan kurmak zorunda kalmazsınız.
Linkding'i telefonumda kullanabilir miyim?#
Evet. Linkding bir ilerici web uygulaması (PWA) olarak tasarlandığı için mobil tarayıcıdan açıp ana ekranınıza ekleyebilir, uygulama gibi kullanabilirsiniz. Ayrıca paylaş menüsü üzerinden herhangi bir sayfayı doğrudan Linkding'e gönderebilir, üçüncü taraf mobil istemcilerle de bağlanabilirsiniz.
Kurulum için ne kadar teknik bilgi gerekir?#
Docker ile temel bir aşinalık ve bir konteyneri çalıştırıp ters proxy arkasına koyma bilgisi işinizi görür. Kavramlar size yabancıysa, komutları bu yazıdaki gibi adım adım izleyerek de kurabilirsiniz. Sunucu yönetimiyle hiç uğraşmak istemiyorsanız sunucu yönetimi hizmetimiz kurulum ve bakımı sizin adınıza üstlenebilir.
Ne kadar sunucu kaynağı gerekir?#
Linkding son derece hafiftir; 1 vCPU ve 512 MB RAM'e sahip küçük bir sanal sunucu binlerce yer imi için fazlasıyla yeterlidir. Koleksiyonunuz on binlere ulaşsa veya çok kullanıcılı bir kurulum yapsanız bile mütevazı bir sunucu rahatça yetişir. İhtiyaç büyürse kaynakları kademeli olarak yükseltmeniz mümkündür.
Kapanış#
Linkding, gösterişten uzak ama işini gerçekten iyi yapan araçlardan biri. Dağılmış, unutulmuş ve tek bir tarayıcıya hapsolmuş yer imlerinizi; etiketlerle düzenli, her cihazdan erişilebilir ve tamamen size ait bir arşive dönüştürür. Docker ile birkaç dakikada kurulur, neredeyse hiç kaynak tüketmez ve bir kez ayağa kalktıktan sonra sizden pek bir şey istemez. Veri sahipliğine önem veren, sadeliği bir erdem olarak gören herkes için sağlam bir seçimdir.
Kendi Linkding örneğinizi çalıştırmak için minik bir sunucu yeterli. Clou.TR'nin sanal sunucu ve VDS planları bu tür hafif self-hosted uygulamalar için ideal bir başlangıç noktası sunar; dilerseniz App Center üzerinden hazır uygulama kurulumlarına göz atabilir, kurulum ve bakımı bize bırakmak isterseniz sunucu yönetimi hizmetimizle çalışan bir sisteme dakikalar içinde kavuşabilirsiniz. Yer imi karmaşasına son verip bağlantılarınızı gerçekten kontrol altına almaya bugün başlayabilirsiniz.