deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Kendi sunucunuzda çalışan e-kitap kütüphanesi Bookshelf, Cloudflare R2 veya Node üzerinde çalışıyor, veritabanı gerekmiyor

Hacker News'in ana sayfasına çıkan MIT lisanslı bir proje, kendi e-kitaplarınızı Cloudflare R2'den veya bir disk klasöründen sunuyor; tarayıcı içi EPUB ve PDF okuyucuları içeriyor ve çalıştırılacak bir veritabanı yok.

Kendi sunucunuzda çalışan e-kitap kütüphanesi Bookshelf, Cloudflare R2 veya Node üzerinde çalışıyor, veritabanı gerekmiyor

Bookshelf nedir

Bookshelf, halihazırda sahip olduğunuz e-kitaplar için kendi sunucunuzda (self-hosted) çalıştırabileceğiniz bir kütüphane; MIT lisansıyla yayınlandı ve Hacker News'in ana sayfasına çıktı. Projenin GitHub deposuna göre, koleksiyonunuzu tek bir sunucu tarafında oluşturulmuş sayfada listeliyor, arama kutusuyla filtreleme yapıyor, indirme bağlantıları sunuyor ve kitapları doğrudan tarayıcıda okumanıza izin veriyor — EPUB ve PDF dosyalarının her birine özel bir okuyucu dahil. Tasarımda hiçbir yerde veritabanı yok: uygulamanın ihtiyaç duyduğu her şey, işaret ettiği depolama arka ucunda yaşıyor.

İki depolama sağlayıcısı

Uygulama, birbirinin yerine geçebilen iki arka uçla geliyor ve README, depolama sağlayıcı sözleşmesini projenin ana genişletme noktası olarak tanımlıyor: herhangi birinin yayınladığı bir paket kurulup yapılandırmada adı belirtilerek ek seçenekler eklenebiliyor.

İlk arka uç, uygulamanın tamamını altında R2 object storage bulunan bir Cloudflare Worker olarak çalıştırıyor; yani ayakta tutulması gereken bir container veya sunucu yok. Dağıtım için bir Cloudflare hesabı ve wrangler girişi gerekiyor; sync komutu bucket'ı oluşturup kütüphaneyi yüklüyor, ayrı bir komut Worker'ı gönderiyor. Bucket ve Worker adlarını taşıyan iki yapışık yapılandırma dosyası vardır ve bunların eşleşmesi gerekir — araçlar karşıya yükleme yapmadan önce çapraz kontrol yapar ve eşleşmezse boş bir rafa dağıtım yapmak yerine bir uyuşmazlık raporlar.

İkinci arka uç, diskteki bir klasörden okuma yapan bir Node sunucusu; bir dizüstü bilgisayar veya bir VPS için uygun. Node 24 veya daha yeni bir sürüm ile Unix benzeri bir sistem gerektiriyor, çünkü sync aracı görüntü araçlarını which ile buluyor ve bu da Windows'u dışlıyor. cwebp ve pdftoppm kurulu olduğunda kapak görselleri daha iyi çıkıyor ve Docker imajı ikisini de içeriyor, bu da onu en kısa yol yapıyor: EPUB'ları bir books dizinine bırakın, sync adımını çalıştırın ve localhost 3000 portunda bir raf elde etmek için container'ı başlatın. Tek bir named volume, yayınlanan kitapları ve uygulamanın bunlara yazdığı her şeyi — profilleri ve okuma konumlarını — tutar, böylece yedeklenmesi gereken başka bir şey kalmaz. Container root olmayan bir kullanıcı olarak çalışır ve bir ana makine dizinini bind-mount etmek, önce sahipliğini değiştirmeyi gerektirir.

Katkıda bulunanlardan push'lamadan önce lint, type-check ve test komutlarını çalıştırmaları isteniyor; test paketi paketlere ve uygulamanın servis katmanına ulaşıyor ama sayfalarına ulaşmıyor.

Kutudan çıkan demo raf

Elinde kitap olmayanlar için bir demo komutu, telif hakkı süresi dolmuş dokuz kitap üretiyor — sekiz EPUB ve bir PDF, böylece her iki okuyucuya da anında ulaşılabiliyor. Başlıklar ve yazarlar gerçek, çok uzun süre önce telif hakkı düşmüş eserlerken, içindeki metin yer tutucu; depondaki ekran görüntüleri de bu şekilde yeniden üretilebiliyor.

Herkese açık bir örnek çalıştırmak

Yabancıların erişebileceği bir kütüphanenin değiştirilmeyi reddetmesi gerektiği README'de açıkça belirtiliyor. Bu modda depolama dosyaları sunmaya devam eder ama her yazmayı reddeder: profiller eklenemez, yeniden adlandırılamaz veya silinemez ve okuma ilerlemesi tarayıcı depolamasına döner — uygulamanın yazamayan her sağlayıcıya uyguladığı aynı geri dönüş. Var olan profiller arasında geçiş hâlâ çalışır, çünkü bu bir değişiklik değil bir çerezdir. Özellikle, kısıtlama kullanıcı arayüzünde değil depolama katmanında uygulandığından, etkilenen istekleri doğrudan göndermek de aynı reddi alır.

Kimlik doğrulama yok. Uygulamaya erişebilen herkes tüm kütüphaneyi okuyabilir, indirebilir ve herhangi bir profili seçebilir; belgeler profilleri bir erişim kontrolü olarak değil, aynı evdeki okuyucuları ayırmak için bir kolaylık olarak çerçevelendiriyor. Aynı profili aynı anda kullanan iki cihaz, durumu son yazan kazanır kuralıyla çözülür. Önerilen önlemler, güvendiğiniz bir ağ veya uygulamayı arayanları kimlik doğrulayan bir geçit.

Neden önemli

Bookshelf, kişisel bir medya kütüphanesinin gerçekte ne kadar az altyapıya ihtiyaç duyduğunu gösteriyor: bakımı yapılacak bir veritabanı şeması yok, Cloudflare'de container yok ve dosya sistemi arka ucunda yedeklenecek tek bir volume var. Belgeler, sync aracının oluşturduğu kütüphaneyeniden üretilebilir olarak tanımlıyor; bu da kitaplarınızı opak bir mağaza yerine doğruluk kaynağı olarak tutuyor. Olağandışı derecede açık sözlü güvenlik notları — kimlik doğrulamanın olmadığını ve herkese açık örneklerin salt okunura düştüğünü düpedüz söyleyen — yazılımın yaptıklarını olduğundan fazla göstermekten kaçınıyor. Lisans yalnızca kodu kapsar; onunla kurulmuş bir kütüphaneye yerleştirdiğiniz kitapların telif hakkı sizinle yayıncıları arasındaki ilişki olarak kalır.

  • #self-hosting
  • #open-source
  • #cloudflare
  • #ebooks
  • #node-js

İlgili yazılar