Raspberry Cloud = Raspberry PI + ownCloud

Az ownCloud egy olyan szoftver csomag, helytől független, több gép között szinkronizálható tárhelyet biztosít az adatainknak. A projektet 2010 januárjában indította Frank Karlitschek KDE fejlesztő, hogy ingyenes alternatívát nyújtson kereskedelmi cloud szolgáltatókkal szemben. Az ownCloud segítségével a saját szervereden létre lehet hozni egy saját, a Dropboxhoz hasonló szolgáltatást.

A saját szerver pedig nem lesz más, mint egy Raspberry PI-n futó Debian linux, a Raspbian lesz. Lehetne bármilyen más, a Raspberry PI-n futtatható OS pl: Arch, de nekem a Debian a szimpatikus.

Raspbian letöltés és telepítés

Terminált fogok használni, úgyis ssh-zni kell majd sokat.

Letöltöttem a Raspberry PI oldaláról az aktuális Raspbian képfájlt:

wget http://downloads.raspberrypi.org/images/raspbian/2012-10-28-wheezy-raspbian/2012-10-28-wheezy-raspbian.zip

Utána kicsomagoltam a letöltött fájlt:

unzip 2012-10-28-wheezy-raspbian.zip

Majd rámásoltam egy üres SD kártyára. Még szerencse, hogy van egy jó kis USB-s SD kártya olvasóm. Nálam /dev/sdb volt az SD kártya, a df -h megmondja. Ha pl a /dev/sdb1 a kártya, akkor nekünk majd csak a /dev/sdb rész kell belőle. Másolás előtt nem árt leválasztani a kártyát:

sudo umount /dev/sdb

Most már tényleg indulhat a másolás:

sudo dd bs=4M if=2012-10-28-wheezy-raspbian.img of=/dev/sdb

Ez eltarthat egy darabig, ha meg karod nézni, hogy hol áll a másolás, akkor nyiss egy másik terminált és ott add ki a következő parancsot:

sudo pkill -USR1 -n -x dd

Ez megjeleníti az első terminálban, hogy hol tartunk. Ha még egyszer kiadod, még egyszer megjeleníti.

Miután végeztem a másolással a kártán szabadon maradt helyen a lemezkezelővel létrehoztam egy sdata nevű ext4-es partíciót. Ezen fogom majd tárolni az adatokat.

Raspbian telepítés

Addig eljutottunk, hogy van egy SD kártyánk egy jó kis Debian linux-szal. Most mehet bele a Raspberry PI-be a kártya. Én a kártyán kívül csak egy utp hálózati kábelt és egy tápegységet dugtam bele. Se HDMI mintorom, se TV-m. Nem is kell hozzá ha van SSH.

Elindítás után kicsit várni kell, hogy bebootoljon. Ezután a routeren megnéztem, hogy milyen IP címet kapott. A Debianban be lehet állítani fix IP címet, de én inkább a routerben szoktam MAC address alapján fix IP-ket hozzárendelni az eszközökhöz. Én a 192.168.1.160-at választottam neki.

Lépjünk be SSH-n a feltelepített linuxba

ssh -l pi 192.168.1.160

Az alapértelmezett jelszó: raspberry

Belépés után figyelmeztet, hogy konfiguráljuk az eszközt a sudo raspi-config paranccsal. Ez megjelenít egy egyszerű menüt, ahol a következőket lehet csinálni

Én itt csak billentyűzet kiosztást és a jelszót állítottam be/át. Ha minden oké, akkor a <Finish>-sel ki lehet lépni a raspi-configból.

Szerver szoftverek letöltése

Először frissítsük a tároló infókat

sudo apt-get update

Majd jöhet az Apache SSL támogatással és a PHP5 APC-vel (Alternative PHP Cache - ezzel gyorsabban töltődnek be az oldalak):

sudo apt-get install apache2 php5 php5-json php5-gd php5-sqlite curl libcurl3 libcurl4-openssl-dev php5-curl php5-gd php5-cgi php-pear php5-dev build-essential libpcre3-dev php5 libapache2-mod-php5 php-apc

Ez el fog tartani egy darabig.

Állítsuk be PHP-t és az Apache-ot

Először telepítsük a PHP APC-t

sudo pecl install apc

Utána létre kell hozni az apc.ini fájlt:

sudo nano /etc/php5/cgi/conf.d/apc.ini

A fájlba ezeket a sorokat kell beírni:

extension=apc.so
apc.enabled=1
apc.shm_size=30

Ha kész mentsük el a fájlt és lépjünk ki a nanoból: CTRL+O, CTRL+X

Most a php.ini fájlban megadjuk a maximálisan feltölthető fájlméretet és hozzáadjuk az APC kiterjesztést is. Megint a nano kell:

sudo nano /etc/php5/apache2/php.ini

Keressük meg (CTRL+W) az upload_max_filesize változót és módosítsuk 1024M-re, ezzel a maximálisan feltölthető fájlméret 1GB lesz.

upload_max_filesize=1024M

Ugyanebben a fájlban állítsuk be a post_max_size értékét 1200M-re:

post_max_size=1200M

Ha ezzel megvagyunk, akkor az extension= részhez adjuk hozzá ezt a sort:

extension=apc.so

Mentés és bezárás.

Apache és SSL beállítás

Még mindig a nano-val piszkáljuk a konfig fájlokat. Először az Apache-ét:

sudo nano /etc/apache2/sites-enabled/000-default

Ebben a fájlban az Allow override értékét none-ról állítsuk All-ra. Majd jöhet az SSL beállítása:

sudo a2enmod rewrite
sudo a2enmod headers

A következő parancs kérni fog néhány infót és jelszót:

sudo openssl genrsa -des3 -out server.key 1024; sudo openssl rsa -in server.key -out server.key.insecure;sudo openssl req -new -key server.key -out server.csr;sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt;sudo cp server.crt /etc/ssl/certs;sudo cp server.key /etc/ssl/private;sudo a2enmod ssl;sudo a2ensite default-ssl

Ha mindennel végeztünk, akkor indítsuk újra az Apache-ot:

sudo service apache2 restart

Az ownCloud letöltése és telepítése

Az előzőekben létrehoztuk az ownCloud használatához szükséges környezetet, most már telepíthetjük.

Először töltsük le:

wget http://mirrors.owncloud.org/releases/owncloud-4.5.3.tar.bz2

Ha lejött, akkor csomagoljuk ki:

tar -xjf owncloud-4.5.3.tar.bz2

Majd másoljuk a /var/www könyvtárba:

sudo cp -r owncloud /var/www

A másolás után állítsuk be a webszerver jogosultságait az owncloud könyvtáron:

sudo chown -R www-data:www-data /var/www/owncloud/

A .htaccess fájban állítsuk be ugyanazokat a max upload értékeket mint a php.ini-ben:

sudo nano /var/www/owncloud/.htaccess

Elvileg már menne is a dolog, de azért előtte ellenőrizzük, hogy a rendszer felmountolta-e a kártyán létrehozott partíciót. Ezen fogjuk tárolni a fájlokat. Nálam simán minden trükközés nélkül ott volt a /media/sdata könyvtárban. Erre is adjunk jogosultságot a webszerverünknek, ugyanis enélkül nem fog működni a dolog:

sudo chown -R www-data:www-data /media/sdata

Oké, most már elő lehet venni a böngészőt és beírni az ownCloud címét:

https://192.168.1.160/owncloud

Válassz egy felhasználónevet és egy jelszót, nyomd meg az Advanced gombot és add meg fájl tároló elérési útvonalát. Nálam ez ugye /media/sdata

Végül kattints a Finish setup gombra, és már kész is.

Én még annyit csináltam, hogy beírtam crontabba, hogy a cron.php percenként fusson le.

sudo crontab -e

A nano megnyitja szerkesztésre a felhasználó crontabját, ez alapértelmezetten üres, így a fájl végére írjuk be a következő sort:

*/1 * * * * php /var/www/owncloud/cron.php

Mentsük el és zárjuk be. Utána az ownCloud Settings/Admin olalon a Cront-t állítsuk a Cron-ra.

Kész. Lehet használni. Kliens programot mindenféle rendszerekhez az owncloud.org/sync-clients oldalról lehet letölteni hozzá. Annyira egyszerű, hogy inkább nem is írok róla.

Egyelőre még próbálgatom, hogy mit bír. Ha beválik, akkor kap egy rendes háttértárat és akkor szerintem le fogja váltani a dropboxot.

Ha kívülről (az internet felől) is elérhetővé akarod tenni, a szervert, akkor célszerű a routeren beállítani egy dinamikus DNS-t és a 443-as portot a szerver belső IP címére (nálam ugye a 192.168.1.160) iránytani (port-forward). Ezek után a szerveredet bárhonnan elérheted, anélkül, hogy tudnád az IP címét: https://az-en-owncloudom.ingyenesdns.tld

További információk

ui1: nekem úgy tűnik, hogy ezt a postot mintha tovább tartott volna megírni, mint magát a telepítést meg a beállításokat végigcsinálni

ui2: a terminálhoz képernyőmentésekhez Ubuntu Linuxot használtam

Hozzászólások

Szia! Működik rendesen? Pár hete próbáltam éles adataimon. Jó, hogy volt rendes mentés. 3 gép között teljesen megzavarodott.

Eddig úgy néz ki, hogy működik rendesen. Annyit változtattam a dolgon, az adatok most egy 16GB-os pendrive-on vannak, plusz töröltem az SD kártyán az adatoknak létrehozott partíciót, majd a raspi-configban nyomtam egy expand_rootfs-t. Így lett hely az OS-nek is :P

Ez nagyon jó! Én is egy Raspberry Pi boldog tulajdonosa vagyok. Én először médialejátszónak használtam. De most inkább egy NAS szerepét látja el. Van Samba, FTP, NFS. Egy 500 GB vinyó van megosztva vele. Ez a cloud dolog nagyon felkeltette a figyelmemet. Bár nem igazán látom értelmét otthonra. Miért próbáljak meg magamnak felhőt hegeszteni, amikor is ott a dropbox, box, goggle drive, stb. Azok tuti mindig mennek, de ez a saját felhő dolog nem biztos, hogy stabil. Mi van akkor, ha megadja magát a pendrive/HDD. Lőttek az adatoknak. Ha meg a fontos fájlokat más felhő szolgáltatásban tárolod, akkor meg minek ez. Mindenesetre jó érzés összerakni egy ilyent és én is biztos ki fogom próbálni. Az is jó dolog, hogy ilyen szinten tart már az informatika. Mármint, hogy egy teljesen mezei user is képes lehet komoly hálózati dolgokat összerakni otthon a nappaliban.
Remélem megosztod a további tapasztalataidat. Szívesen olvasnék még itt a néhány raspberry pi-s cikket.

A Dropbox valami extrém magas adatforgalomra hivatkozva a múltkor két napra letiltotta publikus linkjeimet: http://falu.me/2012/10/18/dropbox-figyelmeztetes Szóval szerintem van ennek a dolognak létjogosultsága. Mi van ha beint a drobox vagy valamelyik másik szolgáltató? Jó, oké elvileg le vannak szinkronizálva a fájlok egy (vagy több) gépre, tehát biztonságban vannak, nincs adatvesztés.
Arra használom, hogy a programjaim forrását így szinkronizálom az otthoni és a munkahelyi gépeim között. Tudom erre van svn, meg git meg még jópár verziókezelő rendszer, de ez nekem így egyszerűbb.
Hamarosan lesz majd itt egy VNC-s post is.

Hello!
Előszöris, köszönöm a leírást, nagyon hasznos volt. Feltettem az owncloudot. Két gépen használnám windows kliens programon keresztül, az egyik egy távoli gépen a másik meg belső hálózaton van, a problémám az hogy amit a távoliról töltöttem fel a kliensel azt nem tölti le. "csync failed to find a specific file". Volt valakinek hasonló gondja vele?

Nekem nem vált be sajnos. Raspberry Pi "B" van, Lighttpd-vel, mert az Apache azért elég erőforrás igényes. Az ownCloud telepítése és használata közben egyszerűen kihalt a raspi egy idő után, nem bírta a kiképzést. A képek megjelenítése amúgy is lassú vele, akár hol is vannak. De ígéretes projekt, és örülnék neki, ha ilyesmit találnék, ami kiváltja a Picasa webalbumomat a család felé a képmegosztásra.

OFF: ez a captcha a hsz-óknak kicseszés, nem a robotoknak. ;)

Valóban nem egy erőgép. Nálam néha (kb hetente egyszer) az Apache áll le, de amúgy használható. Családi felhasználásra nem igazán ajánlanám, mert nem biztos, hogy pl mindenki be tud lépni SSH-n és újraindítani a szolgáltatást.
Re-OFF: esetleg a captcha helyett van jobb ötleted? Mert így is elég sok (humanoid?) robot átjön rajta.