Jak víte již z minulého článku, pořídil jsem si „hračku“ v podobě malého počítače Raspberry Pi. Na grafické prostředí jsem v souvislosti s tím rychle zapomněl a začal Raspberry Pi využívat jako malý webový server. Zvládne Drupal, byť ne zrovna rychle, zvládne weby na GetSimple, ty už s naprostou lehkostí. Běží mi zde PHP Server Monitor pro sledování dostupnosti jiných webů a serverů, kde mám své projekty.
Přemýšlel jsem, co se 64 GB místa na MicroSD kartě, kterou jsem pro Raspberry Pi použil. Něco sebere operační systém (v mém případě od Debianu Wheezy odvozený Raspbian), trošku dat vezmou malé weby, které zde provozuji. Drtivá většina kapacity úložiště je ale volná. Jelikož mám rychlý internet, napadlo mě, že by to šlo využít pro sdílení velkých souborů, které nechci dávat do Dropboxu či jinam. Přes místní síť je totiž do Raspberry Pi nakopíruji bleskurychle a zbytek je pak na tom, kdo si je bude stahovat.
A tehdy jsem si vzpomněl na projekt ownCloud, který umožňuje rozběhat cloudové úložiště na vlastním serveru. Na virtuálech, které používám, jsem to nikdy nevyužil, pro Raspberry Pi se to přímo nabízí.
Přiznám se, že se mi trošku protiví používat výraz cloud pro něco, co je vlastně jeden jediný server a často za to kritizuji některé hostingy, které za cloud vydávají věci, jenž jím nejsou. Ale budeme-li se zde držet toho, že úložiště budeme mít dostupné odkudkoli přes internet, pak v tomto článku budu za cloud považovat i toto řešení.
ownCloud – vzdálená data, ale také kalendáře, kontakty, hudba a obrázky
Projekt ownCloud mě zaujal proto, že to není jenom nějaká webová aplikace zpřístupňující odkazy na soubory ke stažení. Snaží se napodobit a možná i předčít rozhraní běžných cloudových služeb. Můžete do něj hromadně nahrávat soubory a třídit je do složek. Ty pak lze sdílet buď ve formě speciálního odkazu, nebo prostě tím, že vytvoříte nové skupiny uživatelů a těm povolíte přístup do daných složek.
Mezi soubory je ownCloud schopen rozpoznat hudbu a fotografie, ty pak vyfiltruje v samostatných pohledech, kde je lze přehrávat, respektive prohlížet. Nabízí se tak skvělé využití pro sdílení fotek s příbuznými, aniž byste museli cokoli nahrávat do webových galerií někde na internetu. O jejich limitech na počty fotek nebo rozlišení ani nemluvě.
Kromě souborů však můžete přes WebDAV sdílet i kalendáře, což je další užitečná vlastnost ownCloudu. Aktuální verze 7 toho umí mnohem více. Nabízí sdílení mezi servery, online úpravu dokumentů ve Wordu včetně editace více uživateli najednou, upozornění na nově sdílené položky, podporu mobilních prohlížečů, využití jiných cloudů pro rozšíření úložiště, integraci s antivirem a řadu dalších věcí.
Proč schválně zmiňuji slova aktuální verze? V repozitáři pro Raspbian je totiž ownCloud ve verzi 4. Jeho instalaci a vůbec zkonfigurování serveru vám ukážu v tomto článku. O aktualizaci na novější verzi si povíme zase příště, už tak to dnes bude dlouhé.
Více se o projektu jako takovém dozvíte na adrese owncloud.org. Pozor, nepleťte si jej s komerční podobou tohoto open source řešení na www.owncloud.com.
Začínáme – zprovoznění Raspberry Pi, NOOBS, Raspbian
Předpokládám, že pokud se pustíte do vytvoření vlastního cloudu, tak máte dostatečné zkušenosti, abyste Raspberry Pi rozběhali. Byť to tedy není nic až tak složitého a mohou se do toho pustit i méně zkušení dobrodruzi. Doufám, že můj návod vám v tom pomůže.
Vyjdeme z předpokladu, že Raspberry Pi jste si již zapojili do domácí sítě a v routeru jste nastavili, aby na něj bylo vidět z venku. Já jsem v routeru D-Link od Netboxu nastavil přidělování stejné IP adresy MAC adresu Raspberry Pi, abych měl jistotu, že po případném restartu bude vše fungovat, jak má. Kromě toho jsem samozřejmě přesměroval port 80 do Raspberry Pi, čímž zajistím, že http požadavky z webových prohlížečů vedoucí na mou domácí IP adresu se přesměrují z routeru rovnou do Raspberry Pi.
Nepovinné, leč praktické je přesměrování domény. Owncloud můžete začít používat s tím, že budete chodit na adresu http://X.X.X.X/owncloud, což je ale nepraktické a hůře zapamatovatelné. Nebo můžete přidat A záznam pro svou doménu a vytvořit si pak třeba domov.nejakadomena.cz. S tím budu počítat v dalším textu.
Podle toho, zda máte Raspberry Pi B nebo B+ vezměte SD kartu nebo MicroSD kartu a naformátujte ji na FAT32. Pozor, u velkých karet vám Windows bude nutit souborový systém exFAT, který ovšem Raspberry Pi nepodporuje. Projeví se to tím, že nenabootuje.
Stáhněte si NOOBS, který v počítači rozbalte jako normální archiv a rozbalené soubory nakopírujte na paměťovou kartu. Nemusíte řešit žádné bootovací záznamy nebo něco podobného. Paměťovou kartu pak vložte do Raspberry Pi a zapněte jej.
Po nabootování vyberte instalaci operačního systému Raspbian. Jde o linuxovou distribuci založenou na Debianu. Teoreticky si myslím, že by ownCloud běhal i na ArchLinuxu, který je rovněž v nabídce, ale nemám s tím praktické zkušenosti. Raspbian je navíc nejvíce podporovaný a aktualizovaný.
Po dokončení kopírování Raspbianu se Raspberry Pi restartuje, tentokráte již do nabídky nastavení čerstvě nainstalovaného operačního systému.
Základní konfigurace systému
Předtím, než budete moci Raspbian používat, objeví se vám nabídka s řadou nastavení. Pokud myslíte, že NOOBS už nevyužijete, můžete jej hned druhou volbou s rozšířením místa na úložišti nechat odstranit. Jelikož moc místa nezabírá, doporučuji si jej ponechat.
Dále nastavte české rozložení kláves a především změňte heslo pro uživatele pi, kterým se budete do Raspberry Pi přihlašovat. Dále nastavte českou lokalizaci a českou časovou zónu. Výchozí nastavení Raspbianu počítá s tím, že budete používat grafické prostředí, tedy sedět u toho s myší. Doporučuji na to zapomenout a v nastavení změnit využití paměti pro grafiku tak, že ji nastavíte na nejmenší hodnotu 16 MB a zbytek zůstane pro operační systém. Výchozí bootování do textového prostředí můžete nechat.
Protože ve výsledku necháte Raspberry Pi připojené jenom k síti a napájení, nebudete u něj mít ani klávesnici s myší ani monitor, aktivujte podporu pro přihlášení přes SSH. Na Macu lze pro přihlášení pře SSH použít Terminal, v Linuxu konzoli a ve Windows třeba freewarový program PuTTY.
Pozor na zadávání hesla. Standardně je vypnutý num lock a klávesnice je anglicky. Máte-li v hesle čísla a y/z, mohli byste jej zadat jinak, než předpokládáte.
Raspberry Pi se po stisknutí Finish restartuje a naběhne do textového prostředí, kde se přihlásíte z výše zadaným heslem jako uživatel pi. Stejně tak se k němu můžete přihlásit přes SSH zadáním příkazu ssh pi@místní_ip_adresa a vepsáním hesla. V PuTTY příslušným nastavením v grafickém rozhraní.
Zbytek je stejný, ať už sedíte přímo s klávesnicí u Raspberry Pi, nebo jste k němu připojeni přes SSH, což je moje volba.
Přepněte se do režimu uživatele root, a to zadáním příkazu sudo su. Cokoli dalšího nyní spustíte, bude vykonáno jakoby správcem systému. Alternativně můžete před každý z níže uvedených příkazů psát sudo.
Proveďte nejprve aktualizace systému. Zadejte příkaz apt-get update a po jeho dokončení apt-get upgrade. Je možné, že budete vyzváni k zadání Y jako kladné odpovědi na instalaci aktualizací.
Pokud není, nastavte si češtinu s UTF-8 příkazem dpkg-reconfigure locales a spusťte editor nano s konfiguračním souborem zadáním nano /etc/default/locale. Obsahem konfiguračního souboru by mělo být následující:
# File generated by update-locale
LANG=cs_CZ.UTF-8
LC_CTYPE=cs_CZ.UTF-8
Uložte jej stiskem Ctrl+O a vypněte Ctrl+X. Dále zadejte příkaz update-locale LC_CTYPE=cs_CZ.UTF-8. Odhlaste se pomocí logout, nebo v ssh přes příkaz exit a přihlaste se znovu. Čeština by měla být aktivní a správně nastavená.
Nepovinné: já jsem si pro jednodušší manipulaci se sobory doinstaloval ještě Midnight Commander (příkaz apt-get install mc) a nástroj htop sloužící ke sledování vytíženosti systému (příkaz apt-get install htop).
Instalace webového serveru Apache, podpory PHP a databáze MySQL
Instalaci webového serveru Apache, podpory PHP a databáze MySQL musíte provést proto, že jde zkrátka o technologie, na kterých je ownCloud postaven. Je několik možností, jak toto řešení nazývané LAMP v Raspberry Pi rozchodit. Mě se osvědčilo používat místo klasického PHP FastCGI Process Manager, který by měl být o něco rychlejší než běžná implementace PHP.
Pěkný základní návod pro kombinaci Apache, MySQL a PHP-FPM má na svém blogu Jára Vaněk. Vyjdu z jeho návodu a přidám další položky nutné pro úspěšné rozběhání ownCloudu.
Nejprve nainstalujte Apache a PHP-FPM pomocí příkazu apt-get install apache2-mpm-worker php5-fpm. Dále budete potřebovat podporu pro FastCGI, ta však není v depozitáři Raspbianu, takže použijte následující sled příkazů pro stažení zdrojového kódu a kompilaci přímo na Raspberry Pi:
apt-get install debhelper cdbs apache2-threaded-dev dpatch libtool libapr1-dev
Zeditujte konfigurační soubor pomocí nano /etc/apt/sources.list.
Doplňte do něj nový řádek v této podobě: deb-src http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
Uložte Ctrl+O a ukončete Ctrl+X.
Nyní musíte stáhnout aktualizace a následně tedy FastCGI zkompilovat. Postupně zadejte:
apt-get update
apt-get -b source libapache-mod-fastcgi
dpkg -i libapache2-mod-fastcgi*.deb
Povolte v Apachi mod_actions zadáním příkazu a2enmod actions. Vytvořte novou složku pro FastCGI příkazem mkdir /var/www/fastcgi a upravte jí práva pro uživatele a skupinu www-data příkazem chown www-data:www-data /var/www/fastcgi.
Spusťte příkaz pro úpravu konfiguračního souboru FastCGI nano /etc/apache2/mods-available/fastcgi.conf a vložte do souboru tento obsah:
<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
#FastCgiWrapper /usr/lib/apache2/suexec
FastCgiIpcDir /var/lib/apache2/fastcgi
Alias /php5.fastcgi /var/www/fastcgi/php5.fastcgi
AddHandler php-script .php
FastCGIExternalServer /var/www/fastcgi/php5.fastcgi -socket /var/run/php5-fpm.sock
Action php-script /php5.fastcgi virtual
# This part is not necessary to get it to work, but it stops anything else from being
# accessed from it by mistake or maliciously.
<Directory "/var/www/fastcgi">
Order allow,deny
<Files "php5.fastcgi">
Order deny,allow
</Files>
</Directory>
</IfModule>
Tím máte Apache a PHP připraveno pro hostování různých webů na Raspberry Pi. Protože v Raspbianu zatím není PHP 5.5 se svým akcelerátorem OPcache, můžete běh PHP zrychlit alespoň pomocí APC, stačí zadat příkaz pro jeho instalaci a automatické nastavení: apt-get install php-apc.
Zbývá instalace databáze MySQL, což vyřešíte tímto příkazem: apt-get install mysql-server mysql-client php5-mysql. V průběhu instalace budete vyzváni k zadání hesla pro uživatele root, který bude hlavním a neomezeným správcem databáze. Dobře si jej zapamatujte.
Výchozí nastavení PHP je pro běh ownCloudu na Raspberry Pi limitující ve dvou věcech. První je malý časový limit pro běh PHP skriptu. Při nahrávání většího množství fotek je RPI nestihne do výchozí půlminuty zpracovat. Druhým problémem je výchozí velikost nahrávaného souboru 2 MB. Takže to změníme.
Otevřete si do editoru nano konfiguraci PHP pomocí příkazu nano /etc/php5/fpm/php.ini. Najděte řádek max_execution_time a přepište výchozích 30 sekund na minutu a půl tedy hodnotu 90. Řádky post_max_size a upload_max_filesize změňte na 20M. Tím řeknete, že omezení velikosti jednotlivých nahrávaných souborů je 20 MB. Podle potřeby si číslo upravte. Opět nastavení uložte a zavřete kombinací Ctrl+O a Ctrl+X.
Nyní zbývá Apache a PHP-FPM nastartovat, aby případné weby mohly běžet. Zadejte tedy: service apache2 restart && service php5-fpm restart.
Zabezpečení, kontrola logů a mailové upozornění
Pro účely zabezpečení jsem si do Raspbianu nainstaloval rkhunter a logwatch pro sledování logů (apt-get install rkhunter logwatch). První zmíněný hledá nákazy, druhý pak periodicky posílá záznamy z logů na váš mail. K tomu je potřeba jej nastavit tím, že zeditujete jeho nastavovací soubor: nano /etc/logwatch/conf/logwatch.conf. Hodnotu Output zde nastavte na mail. Standardně bude přicházet souhrnné hlášení za předchozí den, ale podrobnosti i rozsah je možné změnit v dalších konfiguračních parametrech.
Dále můžete nastavit omezovač opakovaných neúspěšných přihlášení pomocí apt-get install fail2ban.
Aby Raspbian posílal správci určené zprávy do mailu a nikoli do složky pro uživatele root, je potřeba ještě provést konfiguraci odesílače mailů.
Nejprve jej nainstalujte zadáním apt-get install exim4. Poté spusťte jeho nastavení příkazem dpkg-reconfigure exim4-config. První volbu nastavte na Internet site, zadejte systémovou adresu (například výše zmíněné domov.něco.cz) a ponechejte další hodnoty na výchozím nastavení.
Nyní systému sdělte, jaká je mailová adresa uživatele root. Zeditujte konfiguraci pomocí nano /etc/aliases a na poslední řádek dopište root:vas@email.cz. Uložte, zavřete a spusťte příkaz newaliases.
Poznámka: Neberte výše uvedené jako kompletní manuál pro zabezpečení serveru. Chybí tu například nastavení firewallu pomocí iptables. Já se v daném případě spoléhám na to, že Raspberry Pi běží za routerem s firewallem a tak jsou k němu propuštěny vlastně jenom požadavky na webový server.
Z hlediska bezpečnosti webového serveru by ještě bylo vhodné vypnout výchozí web s informační stránkou serveru Apache. Použijte dvojici příkazů a2dissite default a service apache2 restart.
Pro zabezpečení databáze mysql zadejte příkaz mysql_secure_installation a nastavte heslo uživatele root, pokud jste tak neučinili při instalaci. Odstraňte přístupy anonymních uživatelů, vypněte vzdálený přístup k databázi, odstraňte databázi test a práva s ní spojená. Nakonec znovu načtěte aktuální oprávnění. Příkaz zobrazuje jednoduchého průvodce, který vám s tím pomůže. Příkazem service mysql restart pak databázový server restartujte.
Instalace ownCloud a základní nastavení
V tuto chvíli máme již vše potřebné pro instalaci ownCloud jako takového. Téměř. Ještě je potřeba vytvořit novou databázi a přístupové údaje k ní.
Příkazem mysql -u root -p se k databázi nejprve připojte. Budete vyzváni k zadání hesla databázového správce root, viz výše, kde jsem zdůraznil jeho zapamatování. Vytvořte novou databázi příkazem create database owncloud;.
K databázi vytvořte uživatelské jméno a heslo: grant all on owncloud.* to 'owncloud_user' identified by '123heslo';.
Aktualizujte nově vytvořená oprávnění příkazem flush privileges; a práci s databází ukončete příkazem quit;.
Téměř na závěr jedna důležitá věc. ownCloud poběží jako webová aplikace, ale zároveň je instalována uživatelem pi. Mohlo by se stát, že bude problém s jejím použitím ve webovém prohlížeči. Já to vyřešil následujícím příkazem, který ovšem můžete provést v tuto chvíli a vyhnout se následným problémům: usermod -G www-data pi.
Nyní již můžete nainstalovat samotný ownCloud. Zadejte poslední příkaz z tohoto návodu, a sice apt-get install owncloud. Jakmile jeho instalace proběhne, otevřete si ve webovém prohlížeči buď lokální IP adresu Raspberry Pi nebo internetovou IP adresu svého připojení následovanou lomítkem a slovem owncloud. Takže třeba něco jako X.X.X.X/owncloud. Pokud jste si nastavili přesměrování své vlastní domény, nahraďte je v IP adrese místo číselného vyjádření.
ownCloud si od vás vyžádá zadání jména a hesla, která budou sloužit pro jeho správu. Dále zadejte název databáze, její přístupový účet a heslo k němu, což jsou dle výše uvedeného příkazu owncloud, owncloud_user a 123heslo.
Po dokončení instalace se pak právě zadaným jménem a heslem můžete do ownCloudu přihlásit a začít objevovat funkce a využití vašeho vlastního cloudového řešení.
Co bude následovat
Doufám, že jste tento po delší době poněkud rozsáhlý článek schroustali a zaujal vás. Možnost provozovat doma vlastní cloud s minimální spotřebou energie a různé soubory tak mít dostupné odkudkoli, je velice lákavá. I kdybyste jen sdíleli nějaké fotky pro příbuzné, kteří mají problém se přihlašovat na Dropbox nebo do různých online galerií.
Výše uvedený postup by určitě šel vylepšit o zprovoznění ownCloudu na zašifrovaném https. Možná se vám bude hodit návod, jak k Raspberry Pi a tedy ownCloudu připojit externí disk nebo jako ownCloud v Raspbianu aktualizovat na nejnovější verzi. Bude-li zájem, podíváme se na to v některém z dalších článků. Budu rád, když tento nasdílíte a olajkujete na sociálních sítích, pokud vás zaujal.
Tvůrce webů z Brna se specializací na Drupal, WordPress a Symfony. Acquia Certified Developer & Site Builder. Autor několika knih o Drupalu.
Web Development Director v Lesensky.cz. Ve volných chvílích podnikám výlety na souši i po vodě. Více se dozvíte na polzer.cz a mém LinkedIn profilu.
Podobné články
Komentáře k článku
Díky za námět, dám si do seznamu :-)
Jakou to dava prenosovou rychlost?
To záleží na rychlosti paměťové karty a na rychlosti internetového připojení, ne? Neměřil jsem, ale nějak můžu, pokud je to relevantní ;-)
Dík za super článek a nápad využití píčka.
Dobrý den,
také uvažuji o rozběhnutí ownCloudu na Raspberry Pi, ale na několika zahraničních fórech jsem četl, že je aplikace na RPi strašně pomalá, téměř za hranicí použitelnosti. Jak běží aplikace Vám? Jak dlouho se načítá stránka? Myslíte, že by se pro OC hodil spíše VPS nebo nejaký specializovaný hosting?
Díky za užitečný a srozumitelný článek.
Hezký den
Ondra
Zdravím. Není to samozřejmě jako třeba na virtuálu u Linode. Použitelné to je. Experimentuji teď s aktuální verzí ownCloud na Raspberry Pi, kde jsem místo Raspbianu dal Arch Linux. Ten je mnohem aktuálnější, umí navíc PHP 5.6, které už samo v sobě má opcache pro rychlý běh PHP skriptů. Navíc to můžete místo Apache zkusit s Nginx, čímž se to opět trochu zrychlí. Chce si to s tím pohrát.
Výhodou běhu na RPi je to, že zde v podstatě neplatíte tolik peněz za velké úložiště, jako u virtuálního nebo normálního dedikovaného serveru.
Díky za odpověď.
Po delším váhání jsem zvolil čínského, ale výkonějšího bratra RPi a sice Banana Pi. Má dvoujádro, 1GB RAM, SATA, a Gigabit ethernet. Je o pár stovek dražší, ale výkonu má pro mnou plánované využití až až.
Na BPi mi běží Linux bpi 3.4.90(Raspbian pro Banana Pi), PHP 5.5, MySQL a na tom ownCloud a jede to opravdu svižně. Pravděpodobně na něj pověsím ještě nějakou webovou aplikace, myslím, že to v poho utáhne.
Dropbox tedy u mě definitivně skončil...respektive jeho placená varianta.
Díky za tip, Banana Pi jsem neznal. Docela se těším na MinnowBoard MAX. Taky jde o singleboard computer, ovšem postavený okolo klasického procesoru Intel Atom a 2 GB RAM. Tím se taky otevírá hodně dalších možností.
Ak by sa dalo doplniť o nejaké riešenie s problémom dynamickýmích IP. Treba IP dopísať do nejakého konfiguračného súboru (nespomeniem si aký), inak to napíše na webe chybu. Určite by sa na to dal poriešiť nejaký script, ktorý by ju prepisoval podla aktuálnej hodnoty.
Napr. ja doménu mám, ale neviem si predstaviť, pravidelné prepisovanie A záznamu.
A aj návod na https by potešil.
Vďaka za dobrý článok.