Filebrowser, azaz filemanager böngészőből

írta: hcl, 2 éve

Mivel böngésszem a NAS-t

Van itthon egy NAS, ami persze nem olyan, mint máshol megszokott :D . Alapvetően egy asztali gép, 5x500GB winyó RAID5-ben, Athlon II X2 procival, 4GB RAM-mal, Ubuntu Serverrel. NAS létére alapból ki van kapcsolva, szépen ébreszthető WOL-al, ha kell.

Általában SSH-n át X forwarding-on indított filekezelőn böngészem a tartalmát, ami sokkal használhatóbb egy SMB alapú hozzáférésnél (másoláshoz viszont utóbbit használom). Ugyanakkor lehetne ez egyszerűbb is, ötlött fel a gondolat, hiszen kintről nem elérhető ez a gép sem közvetlenül. Már jó ideje SSH és HTTPS alapú hozzáférés van kintről az itthoni hálózathoz a home szerver/gateway-en keresztül - a NAS-hoz meg végül sosem küldtem be semmilyen portot, mert ugye nem kicsit lett volna rizikós, ha már a személyes cuccaimmal van tele.

Tehát, mi lenne, ha web alapú elérése is lenne a NAS-nak? Csak belső hálón, aztán ha kell, SSH tunnelen át végülis akárhonnan... Na de mi jó erre?

Kicsit körbenézve, a Filebrowser, Filestash, Filerun, és hasonló nevek jöttek szembe. Kettőt nem tudtam ezekről, de mint kiderült, nagy részük elég egyszerűen használható, beépített HTTP szerveres cumó. A Filebrowser-re esett a választás, összedobtam neki egy virtuálgépet (az éles NAS-on mégsem tesztelem), és tényleg szögegyszerű. Meg opensource és ingyenes :)

Telepítés, beüzemelés

A 2x. verzió telepítése Linuxra és Windowsra is ugyanannyi - letöltesz egy telepítőscriptet, és az feltelepíti a binárist (nem sokból áll az egész). Létezik Docker imageként is, ha kicsit jobban elválasztva szeretnénk futtatni.

Linuxon a telepítés pl. ennyi :
curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash

És már fent is van. A telepítési leírás egyből el is indítja, de jobb nem.

A Filebrowser futtatható parancssoros konfiggal is, de konfigfile-t is lehet neki adni, ami a filebrowser.db adatbázis. Ezt az aktuális könyvtárban, a $HOME és a /etc/filebrowser útvonalakon fogja keresni, ha más utasítást nem kap.

Kipróbálni konfig nélkül is ki lehet, mert nagyjából azonos dolgokat lehet beállítani (legalábbis az alapvetőeket) mezei paraméterezéssel is. Azaz a
filebrowser --root /melyikkönyvtáratmutassa --address ipcím --port portaminfigyelnifog
( a gyakorlatban : filebrowser -r /store -a 192.168.1.182 -p 8080 )
hatására elindul a Filebrowser, és a http://192.168.1.182:8080 -on egy szép bejelentkezőablak fogad, bejelentkezve meg a /store könyvtár tartalma, persze az alatta levőkbe is be lehet menni. (A --noauth paraméterrel nincs bejelentkezés, csak kapod a könyvtár tartalmát. Az alapértelmezett user és jelszó amúgy admin admin :) )


Így néz ki, amikor működik

A Filebrowser kreál magának egy adatbázist, filebrowser.db néven. Ebben tartja a konfigot, többek között.

Igazából ennyi elég is lenne, mert elindul, használható. Ellenben konfigfile-al kicsit normálisabban működtethető, illetve sokkal kényelmesebb, ha a géppel együtt indul.

Indítás boot közben

Ezt Linuxon lehet a /etc/rc.local-ból (már olyan disztrókon, ahol az értelmesen használható, nekem egyre több vele a macera :D ), vagy szolgáltatásként (systemd-s esetet írok le, Debian-on/Ubuntun ez így működik). Windowson meg a Startup-ban elhelyezni egy .bat file-t pl., ami elindítja.

A Linux service legegyszerűbb esete :

Létrehozunk egy file-t, ami a service-t írja le
touch /etc/systemd/system/filebrowser.service

Aztán ezt elhelyezzük benne a kedvenc szövegszerkesztőnkkel :
[Unit]
Description=filebrowser
After=network-online.target

[Service]
ExecStartPre=/bin/sleep 30
ExecStart=/usr/local/bin/filebrowser -r /könyvtáramitmutasson -a ip.címe.a.gépnek -p port_száma_amin_elérhető -d /db_könyvtára/filebrowser.db

[Install]
WantedBy=multi-user.target

(Az ExecStart nálam így nézett ki :
ExecStart=/usr/local/bin/filebrowser -r /store -a 192.168.1.182 -p 8080 -d /home/testuser/filebrowser.db
Ez a gép 192.168.1.182 címén, a 8080-as porton figyel. Az ExecStartPre pedig egy 30mp-es várakozás. Üdvözöljük Poetteringet, amiért az, hogy a hálózat online, még nem jelenti azt, hogy a hálózat online is, mert olyan hibával halt el a Filebrowser várakozás nélkül, hogy még nem létezik a címe a gépnek. OK, a DHCP-m tetű, de a network-online nekem azt jelentené, hogy teljesen felállt a háló... :W Nyugodtan el lehet azt a sort hagyni, ha amúgy elindul nélküle boot közben a service.)

Az ExecStart sorban persze nem csak direkt megadott címmel-porttal lehet indítani, hanem ha van egy összerakott konfig/db, akkor elég azt megadni a -d paraméterrel, persze a file teljes elérési útjával.

Engedélyezzük a szolgáltatást a gép indulása közben
systemctl enable filebrowser.service

De kézzel is el lehet indítani :
systemctl start filebrowser.service (a 30mp-et ki kell várni... és nyilván stop-ra fog leállni :DDD )

Konfiguráció

A filebrowser.db file tartalmazza a konfigot. Valamiért ez nem egy szövegfile, úgy mondjuk kicsit egyszerűbb lenne, hanem adatbázis. A tartalma a Filebrowser-rel szerkeszthető, részben magából a fileböngészőből, részben parancssorból.

Új konfig készítése az aktuális könyvtárba :
filebrowser config init

Konfigfile exportja, importja
filebrowser config export
filebrowser config import

Opciók beállítása a konfigban
filebrowser config set --mitállítaszbe milyenértékre

Pl. a címet úgy állítod be, hogy
filebrowser config set --address ip.cím.amit.akarsz
A port a --port portszám, a könyvtár a --baseurl /elérési/út

A konfig emberi fogyasztásra alkalmas megnézése pedig
filebrowser config cat

De amúgy a lényeges része a cím, a port, a könyvtár (a --baseurl paraméter). A teljes dokumentáció itt érhető el : https://filebrowser.org/cli/filebrowser-config-set . Amúgy elég részletesen beállítható, usereket lehet létrehozni, stb. Természetesen TLS/SSL kezelés is van, bár közvetlenül net felé nem engedném ki így sem, belső hálón meg elég a HTTP is.

Végszó

Elég sok mindent tud ez a fileböngésző, szóval esélytelen lenne egy személyes bejegyzésben leírni, de ennyivel már el lehet indítani, és próbálgatni a továbbiakban.