Ma kicsit meguntam a zártságot, a nagyok butácska megoldásait és valami saját infrastruktúrán alapuló, házi megoldást kezdtem keresni az elektronikus könyveim tárolására és elérhetőségére. Ha neked is rengeteg PDF, ePUB dokumentum gyűlt össze az évek hosszú sora alatt, akkor valószínűleg érdekelhet, hogy én milyen megoldásokat találtam az interneten barangolva.
Calibre mindenre
Körülbelül 5 éve találkozhattam először a Calibre nevű, multiplatformos, konvertáló és rendszerező programmal. Szinten minden platformon futott, mindenhol ugyan úgy nézett ki, és nagyából ugyan úgy is működött. Szinte bármilyen írott dokumentumot, bármivé át tudott varázsolni valamilyen más formátumra, illetve szabadon testre szabhattuk a hiányzó meta adatokat vele. Engem mindig is egyetlen egy dolog zavart. Mégpedig az, hogy nagyon csúnyának találtam a kezelőfelületét. Valószínűleg csak velem van baj, minden esetre már-már fizikai fájdalmat éreztem, ha hosszabb ideig kellett használnom. Így használat után, gyorsan letöröltem. A megjelenítésével, most is lesznek gondjaim, de erről később.
Calibre Server
Sok idő eltelt, amíg felismertem, hogy a Calibre tud ám „szerver üzemmódban” is futni. Ez annyit tesz, hogy a program segítségével létrehozhatjuk egy gépen a saját könyvtárunkat, majd ezt a hálózaton keresztül bármely Calibre kommunikációt támogató klienssel elérhetjük. Szerencsére a program olyan régi és olyan etalonnak számít az eBook témában, hogy nem nehéz olyan klienseket találni, amik a Calibre-re épülnek. Viszont ha ez se lenne elég, akkor a szerverben egyszerűen bekapcsolhatunk egy webes klienst, amivel akár böngészőből is elérhetjük a tartalmat.
Nézzük is, mennyire egyszerű a beüzemelése ennek a rendszernek. Én a továbbiakban egy Ubuntu 16.04-al fogom bemutatni a lépéseket.
Szerencsénkre az alapértelmezett repository-ban megtalálható a calibre, így a jól ismert parancs segítségével telepítsük.
root@server# apt-get install calibre
Most hozzunk létre, egy felhasználót és egy csoportot a Linuxonkon. A továbbiakban minden calibre folyamat ennek a felhasználónak a nevében fog futni.
root@server# groupadd calibre root@server# useradd -g calibre -md /home/calibre calibre
Ezek után hozzunk létre egy könyvtárat, ahova azt akarjuk, hogy a calibre dolgozzon. Én külön létrehozok egy uploads könyvtárat is ebbe. Ennek a célje, hogy oda fogom rakni a feldolgozandó file-kat.
root@server# mkdir /books/ root@server# mkdir /books/uploads root@server# chown -R calibre:calibre /books/
Jelenleg semmi sincs ebben a könyvtárban, így másoljunk egy tetszőleges ePUB-ot a /books/uploads -ba.
root@server# su - calibre calibre@server$ cp ~/Indul_a_bakterhaz.epub /books/uploads/
Most pedig adjuk hozzá a katalógusunkhoz ezt az új könyvet. Mivel még nem is létezik semmi, ezért az első parancs létre is hozza a calibre adatbázisát és minden hozzátartozó meta file-t.
calibre@server$ calibredb add /books/uploads/ -r --with-library /books/
Az calibredb add után kell definiálni azt a file-t, amit hozzá szeretnénk adni. Az egész könyvtár tartalmát is hozzáadhatjuk, akkor a -r kapcsolót kell használnunk. A végén pedig mindig meg kell adnunk, hogy a „Library”, hol található, ahova dolgozni fog a calibre.
Ha sikeresen megtörtént a könyv hozzáadása, akkor már listázhatjuk is a parancssorból.
calibre@server$ calibredb list --with-library /books/
Persze, ezt nem kell mindig kézzel megtennünk. Beállíthatunk egy automatikus parancsot, ami ha kerül valami új az uploads könyvtárba, azt hozzáadja a calibre könyvtárunkhoz és törli az eredeti file-t. Ezek után nincs más dolgunk, mint odamásolni a könyveket és hagyni, hogy a rendszer tegye a dolgát.
A crontab-ban a következő job-ot definiáltam erre a célra:
calibre@server$ crontab -e */10 * * * * calibredb add /books/uploads/ -r --with-library /books/ ; rm -rf /books/uploads/*
Web Elérés
Most már csupán el kellene érnünk távolról. Itt az ideje, hogy bekapcsoljuk a server-t és vele a webes felületet. Ehhez a következő parancsot kell kiadnunk:
calibre@server$ calibre-server --daemonize --max-cover=600x800 --max-opds-items=30 --max-opds-ungrouped-items=100 --username=calibre --port=8888 --pidfile=/var/run/calibre/calibre-server.pid --with-library=/books/
A parancs hatására, a 8888-as porton el fog indulni a server, és a háttérben futva elérhetővé teszi a calibre könyvtárunkat. Ha most egy böngészőbe beírjuk a gép IP címét és a 8888-as portot, akkor valami ilyet kell, hogy láss:
http://[IP]:8888
Innen szabadon kereshetsz és tölthetsz le bármit a könyvtáradból. Az egyetlen gond, hogy maga a web szerverünket most kézzel indítottuk el. A gép következő újraindulásakor nem fog elindulni automatikusan. Ehhez egy (az esetemben systemd) service-t kell létrehozni. Ehhez én a következőket tettem.
root@server# vi /lib/systemd/system/calibre.service
A file tartalma a következő volt az én esetemben:
[Unit] Description=Calibre Service After=network.target [Service] User=calibre Group=calibre Type=forking PIDFile=/var/run/calibre/calibre-server.pid ExecStart=/usr/bin/calibre-server \ --daemonize \ --max-cover=600x800 \ --max-opds-items=30 \ --max-opds-ungrouped-items=100 \ --username=calibre \ --port=8888 \ --pidfile=/var/run/calibre/calibre-server.pid \ --with-library=/books/ [Install] WantedBy=multi-user.target
Majd lehetett bekapcsolni, és újraindítani a service-t, immár a rendszer beépített funkciójával.
root@server# systemctl enable calibre.service root@server# systemctl stop calibre.service root@server# systemctl start calibre.service
Fejlettebb Web felület
Ahogy, már említettem nekem a legnagyobb bajom a Calibre-val az a grafikus megjelenése. Nincs ez másként a webes felülettel sem. Egy butácska, és végtelenül egyszerű és nem túl ízléses felületet kapunk alapból. Viszont találtam egy Jan B német fejlesztőt, aki írt egy Python alkalmazást, ami sokkal szebb és használhatóbb is Calibre webes felületként. A használatához tegyük a következőket.
Először is kapcsoljuk ki a beépített Calibre-web szolgáltatást, amit az előbb felépítettünk.
root@server# systemctl stop calibre.service root@server# systemctl disable calibre.service
Menjünk Jan GitHub oldalára és töltsük le a legutolsó verziót: https://github.com/janeczku/calibre-web/archive/master.zip. Ezt másoljuk fel a szerverünkre, a /home/calibre könyvtárba és csomagoljuk ki.
calibre@server$ cd /home/calibre calibre@server$ tar xf master.zip
Ennél a python programnál nincs semmi féle lokális konfigurációs file amit szerkesztenünk kell. Első indulásnál, weben keresztül kell majd konfigurálni. Viszont kézi indítás helyett, egyből csináljunk rá (systemd) service-t.
root@server# vi /etc/systemd/system/cps.service
A file tartalma a következő volt az én esetemben:
[Unit] Description=Calibre-web After=network.target [Service] Type=simple User=calibre ExecStart=/home/calibre/calibre-web-master/cps.py [Install] WantedBy=multi-user.target
Most engedélyezzük és indítsuk el a service-t.
root@server# systemctl enable cps.service root@server# systemctl start cps.service
Az indítást követően a következő címet kell a böngészőbe írnunk:
http://[IP]:8083
Az első belépésnél meg kell adni a Calibre Library helyét a filesystem-en (az én esetemben /books/), majd néhány oldallal kapcsolatos és jogosultság kérdést. A submit és login gombok után már be is lehet lépni a felületre.
Az első felhasználónév és jelszó a következő lesz:
Username: admin
Password: admin123
(Az első dolgunk egy új admin felhasználó létrehozása legyen, és a beépített admin törlése)
A felületre lépve elérhető lesz a teljes könyvtárunk egy megújult és kellemes felületen. Ez az új felület nem csak szép, hanem rengeteg hasznos szolgáltatást is kínál:
- Bootstrap 3 HTML5 interface
- full graphical setup
- User management
- Admin interface
- User Interface in english, french, german, polish, simplified chinese, spanish
- OPDS feed for eBook reader apps
- Filter and search by titles, authors, tags, series and language
- Create custom book collection (shelves)
- Support for editing eBook metadata
- Support for converting eBooks from EPUB to Kindle format (mobi/azw)
- Restrict eBook download to logged-in users
- Support for public user registration
- Send eBooks to Kindle devices with the click of a button
- Support for reading eBooks directly in the browser (.txt, .epub, .pdf)
- Upload new books in PDF, epub, fb2 format
- Support for Calibre custom columns
- Fine grained per-user permissions
- Self update capability
A hosszú listából én csak a kinézetet és a beépített olvasót emelném ki, amiben könyvjelzőket is használhatunk.
Könyvolvasó App
Természetesen, kellett valamilyen (esetemben iOS) alkalmazás is, amivel elérhetem ezt a gyűjteményt. Én a Marvin nevű megoldást választottam. Egy nagyon kellemes és sokat tudó App Store találat, aminek van ingyenes verziója. Gyakorlatilag minden honnan támogatja az importálást. A mi esetünkben a OPDS importálásra lesz szükség. Adjuk meg a már ismer URL-t, csak a végére kell egy OPDS-t tennünk:
http://[IP]:8083/opds
Az importáláshoz még szükséges lesz felhasználó névre és jelszóra. Ez ugyan az, amit a webes felületen megadtunk. (Alapból admin/admin123, de remélem ezt már törölted és sajátot hoztál létre). Amennyiben minden működik, akkor a teljes Calibre könyvtárunkból böngészhetünk, és egy kattintásra, bármit letölthetünk az iOS olvasóba.
Összegzés
Meglepően jó megoldást lehet építeni meglévő és ingyenes programok segítségével. Számomra nagy megkönnyebbülés, hogy a könyveim nincsenek elveszve egy Cloud szolgáltatásban, és valami mágikus módon nem nyeli el egy alkalmazás, amiben meg van kötve a kezem. Ha felkeltettem az érdeklődésedet, és az említett problémára találtál jobb megoldást, akkor kérlek mindenképp oszd meg velem.