WebDav: přístup k vlastnímu cloudu

27. 7. 2011
Doba čtení: 6 minut

Sdílet

Někdy to až vypadá, že cloud začal požírat věci, které existovaly i bez mráčků. Třeba sdílení souborů mezi počítači tu bylo už dávno, ale když někdo přinesl klienta pro X platforem a umístil data na své servery, máme tu hned cloud. To je vývoj a nic proti němu, ale k čemu je služba s 10 GB, když máme doma několik stovek GB?

Motivováni cloudem

Pod zprávičkami a články na téma Ubuntu One, Dropbox a vůbec obecně o souborech v cloudu, mě někdy zaujmou uživatelé, kteří tvrdí, že by svá data nikdy do cloudu třetí strany nedali. Kolem těchto uživatelů se pak objeví mysteriózní mračno a všichni se potichu ptají „co když tam má video se záběrem přistání v Roswellu“. Takový uživatel nikdy neřekne, jaká data že to chce chránit, a když už, tak jde „pouze“ o rodinné fotografie. Možná jde o postěžování, a nebo možná tito uživatelé neví, že malým serverem není problém nahradit služby tohoto typu.

Já mám svoje soubory uložené na domácím serveru a desktop nebo notebook nesou jen to, co v nich zůstalo z minulosti. Jsou tam, protože chci mít možnost mít doma přístup ke všem souborům bez ohledu na to, který stroj nyní běží (vyjma serveru samozřejmě). Navíc chci být omezen jen tím, kolik disků si do tohoto serveru koupím, a ne politikou firmy. V porovnání s mým úložištěm mi připadají nabídky Dropboxu a Ubuntu One k smíchu. K tomu občas ještě něco stahuju a v tomto případě mi přijde výhodnější stahovat přímo do mého cloudu a mít daný soubor k dispozici z něj a ne roztroušený v různých státech. Necítím se být omezen ani tak podmínkami obou služeb, málo z toho, co skladuji, by se dalo označit za nějaké vyloženě soukromé, ale jejich nabídkou určitě. Zkrátka, pokud máte doma linuxový stroj s veřejnou adresou, který obstarává přístup dalších zařízení k vašim souborům, Dropbox ani Ubuntu One nepotřebujete.

Proč cizí mrak, když můžete mít svůj

Linux je v tomto ohledu bohatá platforma a nabízí nespočet nástrojů, které umí data zpřístupnit. Nebude tu sice podobná synchronizace jako u Dropboxu nebo u Ubuntu One, ale ta může být hodně ošemetná, protože ne vždy funguje podle očekávání. V době psaní článku o Ubuntu One jsem se rozhodl ho používat a jako první jsem vyzkoušel nakopírování zdrojového kódu a jeho editaci. S každým uložením se vedle vytvořil hned další soubor se slovem „kolize“ v názvu a já Ubuntu One velmi rychle opustil.

Dropbox nebo Ubuntu One jsou připravené služby, kterým když svěříte data, tak je tam pravděpodobně najdete, i když republiku vyplaví velká voda. Jsou to černé krabičky, za jejichž pozadím se může skrývat ledacos. Pokud chcete těžit z kapacity svého disku nebo jen z toho, že budete mít data u sebe, toto pozadí je pro vás důležité. Jak dobře ho navrhnete a postavíte, takové bude, a budete se muset vypořádat se vším, co přijde. Mluvím například o replikaci dat na další server nebo o politice zálohování. I když to není hlavním tématem tohoto článku, minimálně to stojí za úvahu. Když si cloud postavíte sami, aspoň budete vědět, jak špatně na tom jste.

Přístup k datům

Stejně jako je Linux dobrý na uchovávání dat, je dobrý i na jejich poskytování. Ani se nemusím moc zamýšlet, aby mi hned nevypadla Samba, pohodlné sdílení dat na lokální síti, FTP nepohodlné sdílení po celém internetu, NFS, mocné sdílení na lokální síti nebo třeba SFTP, bezpečné sdílení po celém internetu. Každá z těchto technologií má své plusy i mínusy a ani jedna se mi neosvědčila pro pohodlné, rychlé a bezpečné sdílení souborů kdekoli, kde je nějaké připojení k internetu. Nabízet Sambu mimo lokální sít si netroufnu kvůli bezpečnosti. NFS by mohlo být dobré, kdyby bylo lépe podporované na Windows nebo na Androidu. FTP je starý protokol, který si někdy neumí poradit s češtinou a SFTP má komplikované pozadí na to, že chci jen přesunout soubory, což se projevuje na rychlosti.

Nějakou dobu jsem používal k přenosu souborů HTTP protokol a webový server Nginx. HTTP je jednoduchý a hlavně bezstavový. To znamená, že každému požadavku přijde nějaká odpověď a tím komunikace může skončit. Není nic mezi tím, před tím nebo za tím. Nedělá mu pak problémy, když změníte připojení k síti. Když jsem teď hledal, jak dopadl Ubuntu One klient pro KDE, napadlo mě, že bych mohl Nginx obohatit technologií WebDav, která přidá k HTTP pár nových metod a se soubory se dá hned pohodlně pracovat. Navíc se umí dobře chovat jako souborový systém a nezatěžuje spojení zbytečnostmi. Když se k tomu ještě přidá SSL, je tu vcelku bezpečný způsob, jak pohodlně sdílet soubory mezi počítači s různými operačními systémy a nebo mobilními telefony.

Protokol WebDav se začal formovat v roce 1996 a chvilku na to se objevily první implementace. Dokončen byl až v roce 2007. Přidané metody zajišťují přístup k metadatům a to, aby se soubory na serveru mohlo pracovat více lidí. K zabezpečení jednotlivých souborů před editací několika lidmi se používají zámky. Komunikace klienta a serveru pak probíhá částečně i pomocí XML, jako například získání výpisu adresářové struktury.

WebDav server

Rozjet WebDav server není nic složitého. Použít můžete Apache, lighttpd a když se trochu snažíte tak i Nginx. Apache je moloch, který je v tomto případě jak kanón na vrabce. Nginx potřebuje nějaké skripty, které se postarají o nepodporované ale důležité části protokolu. Zůstal lighttpd, který funguje víc než dobře.

Nakonfigurovat lighttpd, aby sdílelo a bylo zabezpečené heslem není nějak složité a stačí tento konfigurační soubor:

server.modules = (
    "mod_alias",
    "mod_webdav",
)

server.document-root       = "/cesta/k/datum/"
server.errorlog            = "/var/log/lighttpd/error.log"
mimetype.use-xattr = "enable"
server.port               = 8080
server.pid-file            = "/var/run/lighttpd.pid"
dir-listing.encoding        = "utf-8"
server.dir-listing          = "enable"
server.username            = "<uživatel>"
server.groupname           = "<skupina>"

## mimetype mapping
include_shell "/usr/share/lighttpd/create-mime.assign.pl"

webdav.activate = "enable"
webdav.is-readonly = "disable"
webdav.sqlite-db-name = "/var/run/lighttpd/lighttpd.webdav_lock.db"
auth.backend = "htpasswd"
auth.backend.htpasswd.userfile = "/etc/lighttpd/.npass"
auth.require = ( "" => ( "method" => "basic",
            "realm" => "webdav",
            "require" => "valid-user" ) ) 

Nejdříve řekneme serveru, že chceme použít modul mod_webdav. Pak nastavíme, kde bude adresář s daty, erorlog, port a hlavně skupinu a uživatele. Nezapomeneme změnit vlastníka a skupinu logů, WebDav databáze a adresáře s daty stejně. Pak lighttpd sdělíme, že chceme WebDav i se zápisem, a na konci nastavíme autentizaci, Soubor .npass vytvoříme pomocí utilitky htpasswd.

# htpasswd /etc/lighttpd/.npass username 

Tímto způsobem můžeme uživatele přidat nebo upravit, na smazání se používá navíc přepínač -D.

WebDav klient

Jak už bylo řečeno, WebDav běží na nespočtu platforem. Sám využívám klienta pro Androida WebDAV Navigator a podporu v desktopovém prostředí KDE. Úložiště můžete připojit ale také pomocí FUSE a souborového systému davfs2, ale podobně pohodlné jako NFS to není. Když chcete například spustit na takto připojeném úložišti video, je nejdříve celé staženo a až pak se přehrávač dostane ke slovu. To nevadí u 50 MB, ale když jde o jednotky GB, už to je problém. Podobně se chová podpora v kio_http v KDE.

Pro připojení WebDav úložiště pomocí davfs2 provedeme třeba takto:

sudo mount.davfs http://10.0.0.1:8080/ /mnt/webdav/ -o uid=<uživatel>,gid=<skupina>,rw,_netdev 

Další možnost je zmíněné KDE, kde lze využít položku Místní síť → Přidat síťovou složku nebo do URI zadat webdav://uživa­tel@10.0.0.1:8080/. V GNOME to funguje podobně a používá se dialog Připojit k serveru. Pokud nemáte ani jedno prostředí, použijte davfs2, odvede stejně dobrou službu.

bitcoin školení listopad 24

Závěr

Jak bylo řečeno, k problémové synchronizaci, kdy se data synchronizují mezi všemi zúčastněnými stroji, se s určitým pohodlím jen tak nedopracujeme, minimálně ne s prostředky dostupnými v Linuxu/Windows i na mobilních platformách. Za to ale máme prakticky neomezený cloud a pokud použijeme navíc například GlusterFS nebo jiný způsob replikace dat mezi servery a přidáme spolehlivé zálohování, budou naše data v dostatečném bezpečí a kdo ví, možná na tom budou líp než na Dropboxu nebo Ubuntu One.

Jak sdílíte soubory mezi svými zařízeními vy mimo domácí síť?

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.