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