Sosyal medya akışlarının algoritmalarla dolduğu, aynı içeriğin defalarca karşınıza çıktığı bir dönemde RSS yeniden değer kazandı. Takip etmek istediğiniz blogları, haber sitelerini ve podcast'leri tek bir yerde, kronolojik ve reklamsız görmek isteyenler için beslemeler (feed) hâlâ en temiz yöntem. İşte Miniflux tam da bu ihtiyaca cevap veren, "az ama öz" felsefesiyle yazılmış açık kaynak bir RSS okuyucudur. Adındaki "mini" sadece bir slogan değil, projenin tüm mimari kararlarını belirleyen bir tercih.
Bu rehberde Miniflux'un neden bu kadar hafif olduğunu, tek binary + PostgreSQL yapısının ne anlama geldiğini ve kendi sunucunuza nasıl kuracağınızı adım adım göreceğiz. Besleme ekleme, kısayollar, Wallabag ve webhook entegrasyonları ile FreshRSS karşılaştırmasını da işleyeceğiz. Amaç, kurulum sonrası kafanızda soru işareti kalmadan, günlük okuma akışınızı kendi kontrolünüze almanız.
Miniflux Nedir ve Neden Farklıdır#
Miniflux, Go dili ile yazılmış, tek bir çalıştırılabilir dosya (binary) olarak dağıtılan bir RSS/Atom/JSON feed okuyucusudur. Frédéric Guillot tarafından geliştirilen proje, bilinçli olarak minimalist bir yol izler: gereksiz eklenti, tema mağazası, sürükle-bırak panel yapısı gibi şişkinlik yaratan özellikler yoktur. Bunun yerine hızlı yükleme, klavye kısayolları ve okunabilirlik ön plandadır.
Miniflux'u diğer okuyuculardan ayıran en belirgin nokta, "opinionated" yani net görüşlü olmasıdır. Geliştirici, kullanıcıyı seçeneklerle boğmak yerine iyi çalışan varsayılanlar sunar. Örneğin makale içeriğini otomatik olarak "okunabilir" biçime dönüştüren bir ayıklayıcı (scraper) yerleşik gelir, harici JavaScript çalıştırılmaz, gizlilik odaklı bir tasarım benimsenir. Reklam yoktur, izleme (tracking) yoktur, telemetri yoktur.
Bir başka güçlü yanı, tam teşekküllü bir REST API sunmasıdır. Bu sayede mobil istemciler (Reeder, NetNewsWire, FeedMe gibi) doğrudan Miniflux'a bağlanabilir. Ayrıca Google Reader ve Fever API uyumluluğu da mevcut olduğundan, eski bir istemciniz varsa büyük olasılıkla çalışır. Yani sunucuyu bir kez kurup, okumayı istediğiniz cihazdan yaparsınız.
Tek Binary ve PostgreSQL Mimarisi#
Miniflux'un mimarisi kasıtlı olarak sadedir. Uygulamanın tamamı tek bir Go binary'sinden ibarettir; Ruby, PHP veya Node.js gibi bir çalışma zamanı (runtime) kurmanıza gerek yoktur. Statik olarak derlendiği için harici kütüphane bağımlılığı da neredeyse yoktur. Bu, "bağımlılık cehennemi" dediğimiz sorunu büyük ölçüde ortadan kaldırır.
Veri tarafında ise yalnızca PostgreSQL desteklenir. Bazı kullanıcılar "keşke SQLite de olsaydı" der, ancak bu tercih de bilinçlidir: PostgreSQL'in tam metin arama (full-text search) yetenekleri, eşzamanlılık yönetimi ve güvenilirliği, feed veritabanı gibi sürekli yazma yapan bir yük için idealdir. Aşağıda tipik bir Miniflux kaynak profilini görebilirsiniz.
| Bileşen | Tipik RAM | Disk | Not |
|---|---|---|---|
| Miniflux binary | 25-60 MB | ~30 MB | Yük altında bile çok stabil |
| PostgreSQL | 80-150 MB | Feed sayısına bağlı | Asıl kaynak burada |
| Toplam (küçük kurulum) | ~150 MB | 1-2 GB | 512 MB RAM'de rahat çalışır |
Bu tablo, Miniflux'u neden bir "eski/küçük VPS" için ideal aday yaptığını özetliyor. 512 MB RAM'li en küçük planlarda bile rahatça döner. Kendi sanal sunucunuzu ararken VDS veya sanal sunucu planları bu iş için fazlasıyla yeterli olacaktır; hatta paylaşımlı bir hosting yerine kontrolün tamamen sizde olduğu bir VPS, self-hosted uygulamalar için genellikle daha doğru bir seçimdir.
Miniflux Kurulumu (Adım Adım)#
Kurulum için en temiz yol Docker Compose kullanmaktır, çünkü hem Miniflux'u hem de PostgreSQL'i tek dosyada tanımlarsınız. Aşağıdaki docker-compose.yml üretim ortamı için makul bir başlangıçtır.
services:
miniflux:
image: miniflux/miniflux:latest
restart: always
ports:
- "127.0.0.1:8080:8080"
depends_on:
db:
condition: service_healthy
environment:
- DATABASE_URL=postgres://miniflux:GucluBirSifre@db/miniflux?sslmode=disable
- RUN_MIGRATIONS=1
- CREATE_ADMIN=1
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=IlkGirisSifresi
- BASE_URL=https://rss.ornekalanadi.com
db:
image: postgres:16-alpine
restart: always
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=GucluBirSifre
- POSTGRES_DB=miniflux
volumes:
- miniflux-db:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "miniflux"]
interval: 10s
start_period: 30s
volumes:
miniflux-db:
Buradaki en kritik değişkenler RUN_MIGRATIONS=1 (veritabanı şemasını otomatik oluşturur), CREATE_ADMIN=1 (ilk yönetici hesabını yaratır) ve BASE_URL'dir. BASE_URL'yi doğru vermek çok önemlidir, aksi halde besleme ikonları ve OPML bağlantıları yanlış adres üretir. İlk açılıştan sonra CREATE_ADMIN ve ADMIN_PASSWORD satırlarını kaldırmanız önerilir.
Docker kullanmadan, doğrudan binary ile kurmak isterseniz de yol açıktır. Debian/Ubuntu için .deb paketi indirip PostgreSQL'i elle hazırlarsınız.
# PostgreSQL veritabanı ve kullanıcı oluştur
sudo -u postgres psql <<'SQL'
CREATE USER miniflux WITH PASSWORD 'GucluBirSifre';
CREATE DATABASE miniflux OWNER miniflux;
ALTER DATABASE miniflux SET timezone TO 'Europe/Istanbul';
SQL
# Miniflux paketini kur
sudo dpkg -i miniflux_2.x.x_amd64.deb
# Ortam dosyasını düzenle
sudo nano /etc/miniflux.conf
/etc/miniflux.conf içeriği kısa ve nettir. ini formatına benzer basit anahtar-değer satırlarından oluşur.
DATABASE_URL=postgres://miniflux:GucluBirSifre@localhost/miniflux?sslmode=disable
RUN_MIGRATIONS=1
CREATE_ADMIN=1
ADMIN_USERNAME=admin
ADMIN_PASSWORD=IlkGirisSifresi
BASE_URL=https://rss.ornekalanadi.com
LISTEN_ADDR=127.0.0.1:8080
Ardından servisi başlatın: sudo systemctl enable --now miniflux. Bu noktada Miniflux 127.0.0.1:8080 üzerinde dinliyor olacak, ancak dışarıya doğrudan açmak yerine önüne bir ters vekil (reverse proxy) koyup TLS sonlandırması yapmak en doğrusu.
Ters Vekil ve HTTPS#
Nginx ile önyüz kurmak hem HTTPS'i hem de sıkıştırmayı düzgün yönetmenizi sağlar. Aşağıdaki blok tipik bir yapılandırmadır.
server {
listen 443 ssl http2;
server_name rss.ornekalanadi.com;
ssl_certificate /etc/letsencrypt/live/rss.ornekalanadi.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/rss.ornekalanadi.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
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;
}
}
Alan adınızı Miniflux sunucusuna yönlendirmek için basit bir A kaydı yeterlidir. DNS tarafında şuna benzer bir satır oluşturursunuz.
rss IN A 203.0.113.42
Sertifika için Let's Encrypt (certbot) idealdir, ancak kurumsal veya joker (wildcard) ihtiyaçlarınız varsa profesyonel bir SSL sertifikası tercih edebilirsiniz. Alan adınız yoksa domain kaydı ile başlayabilir, sunucu tarafını da sunucu yönetimi hizmetiyle bize bırakabilirsiniz.
Besleme (Feed) Ekleme ve Yönetimi#
Miniflux'a giriş yaptıktan sonra ilk işiniz besleme eklemek olacaktır. Üst menüdeki "Add Subscription" (Abonelik Ekle) bölümüne gidip bir site adresi yapıştırmanız yeterli; Miniflux sayfayı tarayıp içindeki feed bağlantılarını otomatik keşfeder. Doğrudan RSS/Atom adresini bilmiyorsanız bile ana sayfa URL'sini vermeniz çoğu zaman işe yarar.
Beslemeleri kategorilere ayırabilirsiniz. Örneğin "Teknoloji", "Haber", "Kişisel Bloglar" gibi kategoriler oluşturup her feed'i uygun gruba atarsınız. Bu, arayüzü düzenli tutar. Her besleme için ayrı ayrı güncelleme sıklığı, içerik ayıklama (scraper) kuralı ve yeniden yazma (rewrite) filtreleri tanımlayabilirsiniz. Örneğin sadece özet yayınlayan bir siteden tam metin çekmek için "Fetch original content" seçeneğini açarsınız.
Miniflux klavye odaklı bir okuyucudur ve gerçek verimi kısayolları öğrenince alırsınız. Sık kullanılanları aşağıda topladık.
| Kısayol | İşlev |
|---|---|
j / k | Sonraki / önceki makale |
v | Makaleyi orijinal sitede aç |
d | İçeriği indir / tam metni getir |
m | Okundu / okunmadı işaretle |
f | Favorilere (yıldız) ekle |
g sonra u | Okunmamışlara git |
? | Tüm kısayolları göster |
Mevcut bir okuyucudan geçiş yapıyorsanız OPML dosyanızı içe aktarabilirsiniz. Ayarlar bölümünden OPML export/import ile tüm aboneliklerinizi tek seferde taşırsınız; bu, feed listenizi bir okuyucuya kilitlenmeden özgür tutmanın en pratik yoludur. Benzer bir taşıma mantığını web siteniz için de site taşıma hizmetimizde uyguluyoruz.
Entegrasyonlar: Wallabag, Webhook ve Diğerleri#
Miniflux minimalist olsa da entegrasyon konusunda cömerttir. Ayarlar altındaki "Integrations" sekmesi, okuduğunuz makaleleri harici servislere göndermenizi sağlar. En popülerlerinden biri Wallabag'dir: "daha sonra oku" listenizi kendi sunucunuzda tutmak istiyorsanız, bir makaleyi tek tuşla Wallabag'e kaydedebilirsiniz. Aynı şekilde Pocket, Instapaper, Linkding, Shaarli ve Nunux Keeper gibi servisler de desteklenir.
Otomasyon severler için asıl güçlü özellik webhook desteğidir. Miniflux, yeni bir makale geldiğinde önceden tanımladığınız bir URL'ye JSON gövdeli bir POST isteği gönderebilir. Bu, akışınızı bir otomasyon platformuna bağlamanın kapısını açar. Örneğin belirli anahtar kelimeleri içeren makaleleri Telegram'a düşürmek, bir tabloya kaydetmek veya e-posta özeti oluşturmak isteyebilirsiniz.
Tam da bu noktada n8n gibi bir iş akışı otomasyon aracı devreye girer: Miniflux'un webhook'unu bir n8n tetikleyicisine bağlayıp koşullu mantık, filtreleme ve çok adımlı bildirimler kurabilirsiniz. Benzer biçimde, ekip içi bilgi paylaşımı için makaleleri bir belge tabanına aktarmak isterseniz Outline gibi bir wiki'ye köprü kurmak mantıklıdır. Webhook imzasını (signature) doğrulayarak isteğin gerçekten Miniflux'tan geldiğinden emin olmanız güvenlik açısından önemlidir.
Miniflux'un REST API'si de ayrı bir güçtür. API token'ı oluşturup harici uygulamalardan feed ekleyebilir, okundu işaretleyebilir veya içeriği çekebilirsiniz. Basit bir örnek olarak, komut satırından tüm okunmamış girdileri saymak isterseniz:
curl -s -H "X-Auth-Token: SIZIN_API_TOKENINIZ" \
"https://rss.ornekalanadi.com/v1/entries?status=unread&limit=1" \
| grep -o '"total":[0-9]*'
Bu tür otomasyonları kurarken, uygulama tabanlı çözümler için App Center kataloğumuza ve otomasyon fikirleri için araçlar bölümüne göz atmanızı öneririm.
Miniflux ve FreshRSS Karşılaştırması#
Self-hosted RSS dünyasında en çok karşılaştırılan iki isim Miniflux ve FreshRSS'tir. İkisi de mükemmel projeler, ancak felsefeleri farklı. FreshRSS PHP tabanlıdır, SQLite/MySQL/PostgreSQL destekler, eklenti ekosistemi ve tema seçenekleri daha zengindir. Miniflux ise Go binary'si, sadece PostgreSQL ve "az özellik, çok istikrar" yaklaşımıyla ayrışır. Aşağıdaki tablo temel farkları özetliyor.
| Kriter | Miniflux | FreshRSS |
|---|---|---|
| Teknoloji | Go (tek binary) | PHP |
| Veritabanı | Yalnızca PostgreSQL | SQLite, MySQL, PostgreSQL |
| Kaynak kullanımı | Çok düşük | Düşük-orta |
| Eklenti/tema | Yok (bilinçli) | Zengin |
| Kurulum kolaylığı | Çok kolay (binary/Docker) | PHP hosting'de kolay |
| API | REST + Google Reader + Fever | Google Reader + Fever |
| Felsefe | Minimalizm | Esneklik |
Karar verirken kendinize şunu sorun: "Ben ne istiyorum?" Eğer paylaşımlı bir PHP web hosting veya WordPress hosting hesabınız varsa ve ayrı bir VPS kurmak istemiyorsanız FreshRSS pratik olabilir, çünkü PHP her yerde çalışır. Ama elinizde bir VPS varsa ve "kur, unut, sadece çalışsın" diyorsanız Miniflux çoğu kullanıcı için daha huzurlu bir tercihtir. Kişisel deneyimimde Miniflux, aylarca dokunmadan çalışan, güncellemesi tek komut olan bir uygulama; bu istikrar tek başına çok değerli.
Performans, Bakım ve Güvenlik İpuçları#
Miniflux zaten hafif olsa da, birkaç iyi alışkanlık kurulumunuzu uzun vadede sağlıklı tutar. İlk olarak veritabanı yedeği alın. PostgreSQL için pg_dump ile günlük bir yedek yeterlidir ve bunu bir cron görevine bağlayabilirsiniz.
# Günlük Miniflux veritabanı yedeği
pg_dump -U miniflux miniflux | gzip > /yedek/miniflux-$(date +%F).sql.gz
Bu yedeği düzenli olarak sunucu dışına, farklı bir konuma taşımanız kritik. Otomatik ve dış konumlu bir çözüm isterseniz yedekleme hizmetimiz bu işi sizin için üstlenir. Ayrıca cleanup-frequency-hours ve arşivleme ayarlarıyla eski, okunmuş makaleleri periyodik temizleyerek veritabanının şişmesini önlemek de akıllıca.
Güvenlik tarafında birkaç madde öne çıkar. Miniflux'u mutlaka HTTPS arkasında çalıştırın ve BASE_URL'yi https:// ile başlatın. Yönetici parolasını güçlü tutun; mümkünse OAuth (Google, GitHub) veya harici kimlik doğrulama entegrasyonunu kullanın. Sunucuyu internete açık bir uygulama olarak düşünüp bir güvenlik duvarı katmanı eklemek isterseniz WAF ve DDoS koruma çözümlerimiz devreye girebilir. Uygulama kendisi az saldırı yüzeyi sunar (harici JS çalıştırmaz, kullanıcı içeriğini sanitize eder), ancak önündeki ters vekili ve işletim sistemini güncel tutmak sizin sorumluluğunuzda.
Son olarak güncelleme. Docker kullanıyorsanız docker compose pull && docker compose up -d ile yeni sürüme geçer, migration'lar otomatik uygulanır. Binary kurulumda ise yeni .deb paketini kurup servisi yeniden başlatmanız yeterli. Bu sadeliği sağlayan şey, en başta bahsettiğimiz tek binary mimarisidir; işte teoride konuştuğumuz avantaj pratikte bakım maliyetini böyle düşürür.
Sıkça Sorulan Sorular#
Miniflux ücretsiz mi?#
Evet, Miniflux'un kendi barındırdığınız (self-hosted) sürümü tamamen ücretsiz ve açık kaynaktır, Apache 2.0 lisansı ile dağıtılır. Bunun yanında geliştiricinin sunduğu ücretli bir bulut (hosted) sürümü de vardır; sunucu kurmak istemeyenler aylık küçük bir ücret karşılığında hazır bir örnek kullanabilir. Kaynak kodunu incelemek, katkı yapmak veya kendi sunucunuza kurmak isteyenler için maliyet yalnızca barındırma giderinizden ibarettir.
Miniflux neden SQLite desteklemiyor?#
Geliştirici bunu bilinçli bir mimari karar olarak açıklıyor. PostgreSQL'in tam metin arama, eşzamanlı yazma yönetimi ve veri bütünlüğü garantileri, sürekli feed güncellemesi yapan bir uygulama için daha sağlam bir temel sunuyor. Tek veritabanına odaklanmak, projenin bakım yükünü ve test yüzeyini de azaltıyor. Bu nedenle Miniflux her zaman yalnızca PostgreSQL ile çalışır ve yakın gelecekte bunun değişmesi beklenmiyor.
Mevcut Feedly veya Inoreader aboneliklerimi taşıyabilir miyim?#
Çoğu popüler okuyucu, abonelik listenizi OPML dosyası olarak dışa aktarma imkânı verir. Feedly, Inoreader veya başka bir okuyucudan bu OPML dosyasını indirip Miniflux'un "Import OPML" bölümünden yüklediğinizde tüm feed'leriniz kategorileriyle birlikte aktarılır. Okunmuş/okunmamış durumu ve yıldızlı makaleler genellikle taşınmaz, ancak abonelik yapınız birebir gelir. Bu sayede geçiş birkaç dakika sürer.
Miniflux'u mobil cihazımdan kullanabilir miyim?#
Miniflux'un yerleşik web arayüzü mobil uyumludur, yani telefonun tarayıcısından rahatça okuyabilirsiniz. Bunun ötesinde REST, Google Reader ve Fever API uyumluluğu sayesinde Reeder, NetNewsWire, FeedMe ve Fluent Reader gibi birçok mobil istemci doğrudan sunucunuza bağlanabilir. Uygulamaya API adresinizi, kullanıcı adınızı ve oluşturduğunuz API token'ını girmeniz yeterli olur.
Kaç feed ve makale için ölçeklenir?#
Miniflux binlerce feed ve yüz binlerce makale ile rahatça çalışır; asıl sınırlayıcı faktör uygulamanın kendisi değil, PostgreSQL'e ayırdığınız kaynaklardır. Birkaç yüz feed'lik kişisel bir kurulum 512 MB RAM'li bir VPS'te sorunsuz döner. Feed sayısı çok arttıkça güncelleme sıklığını ayarlamak, eski makaleleri arşivlemek ve veritabanına biraz daha RAM vermek performansı korur. Pratikte tekil kullanıcılar için ölçekleme neredeyse hiç sorun olmaz.
Kapanış#
Miniflux, "yazılım az iş yaparsa daha iyi yapar" fikrinin güzel bir örneği. Tek binary yapısı, düşük kaynak tüketimi ve dürüst gizlilik yaklaşımıyla, kendi okuma akışını kontrol etmek isteyen herkes için sağlam bir tercih. Kurulumu bir öğleden sonranızı almaz, ardından aylarca dokunmadan çalışır; işte self-hosted bir uygulamadan beklediğimiz tam da budur.
Miniflux'u kendi altyapınızda çalıştırmak için hızlı ve uygun fiyatlı bir VDS ya da sanal sunucu yeterli. Alan adı, SSL ve sunucu kurulumunu tek elden halletmek isterseniz domain, SSL sertifikası ve sunucu yönetimi hizmetlerimiz devrede. Kurulum, güncelleme ve yedekleme kısımlarını uzmanlarımıza bırakıp siz sadece okumaya odaklanmak isterseniz Clou.TR ekibi bir tık uzağınızda. Bugün küçük bir sunucuyla başlayın, akışınızı algoritmalardan geri alın.