Gebruiker beoordeling: 3 / 5

Ster actiefSter actiefSter actiefSter inactiefSter inactief
 

Sedert een paar jaar, ben ik een fervent gebruiker van Dropbox. Het is ongelooflijk handig dat je bestanden ineens gebackupt worden, en dat ze van overal bereikbaar zijn. Toch kan ik makkelijk een paar redenen bedenken waarom ik zou weg willen bij Dropbox:

  • Kostenplaatje/grootte: Dropbox is gratis voor 2 Gigabytes. Je kunt dit nog een klein beetje opdrijven door andere gebruikers aan te brengen... maar eens je ook je foto's wil gaan backuppen, loop je niet ver meer met 2 of zelfs 4 GB. Voor een betalend abonnement betaal je $99 per jaar voor 100 GB... voor één gebruiker.
  • Gebruikers: ... en daarbij zitten we ineens bij het 2e argument: $99 per jaar is misschien niet onoverkomelijk. Maar zit je in het gezin met 4 gebruikers? Dan loopt het kostenplaatje natuurlijk vlug op.
  • Black box software: je weet niet wat er zoal met je gegevens gebeurt. In hoeverre respecteert Dropbox je privacy? Na het hele Snowden-verhaal is gebleken dat ook Dropbox bezocht werd door het NSA - en dat zij dus - zonder medeweten van de gebruikers - inzage hadden in de gegevens op de servers van Dropbox. OwnCloud - de software die hier gebruikt wordt - is open source, en zal draaien op je eigen kleine servertje.
  • Veiligheid: Een bedrijf kan natuurlijk ook failliet gaan. Hoewel het er niet naar uitziet dat Dropbox failliet zal gaan, zijn er al regelmatig kleinere spelers op de markt gekomen en weer gegaan... en met hun verdwijning, verdwijnt ineens ook jouw backup. Daar sta je dan.
  • Internetverkeer: in onze generatie van breedbandabonnementen misschien niet het belangrijkste argument, maar mogelijk des te belangrijker in landen of gezinnen waar de internetverbinding traag, duur of onbetrouwbaar is: een grote gegevensstroom naar Dropbox sturen, zet ineens ook je internetverbinding aan het werk. Je traffiek wordt meegeteld (en kan in principe ook gemonitord worden door bijv. Belgische veiligheidsdiensten).

Met een SkyPi bepaal je zelf de grootte van je gegevensbank - je kiest een USB-(harde) schijf van de juiste grootte. Deze koppel je aan je Pi, en je hebt ineens 2 Terabytes aan backup-ruimte. De gegevens worden binnen je netwerk gebackupt, dus je gegevens komen op geen enkel moment buiten je eigen netwerk (tenzij je het zelf wil, bijvoorbeeld om bestanden te delen). Aangezien de Raspberry Pi zeer zuinig is, verbruikt je klein servertje ook weinig energie.

Voor we aan de slag gaan, eerlijkheidshalve toch nog even de beperkingen aangeven van dit systeem:
- Je backup bevindt zich in je huis. Voor belangrijke backups is het zinvol om ook een backup buitenshuis te voorzien.
- Je systeem is niet bijzonder krachtig, meerdere gebruikers ineens zullen het systeem dus wel ernstig vertragen.
- Ik heb niet uitgetest of dit systeem krachtig genoeg is om bijvoorbeeld video te streamen...
- Als je harde schijf crasht, ben je ineens ook je backup kwijt. Vergeet niet regelmatig je backup te testen. Je zou het systeem kunnen bijwerken zodat alle data twee keer weggeschreven wordt (naar twee aparte schijven) - ideaalgezien via een RAID-opstelling... maar da's alweer een niveau verder...
- Jij bent nu verantwoordelijk voor updates van de software en voor het beheer van de server.

Hou je niet van al deze zaken? Dan kun je natuurlijk een NAS kopen (voor grofweg €400 vind je al een redelijk instapmodel) en deze combineren met de standaard backup software op je systeem...

Natuurlijk mis je dan de boeiende ervaring van zélf alles uitgevlooid te hebben en de boeiende ervaring die dit met zich meebrengt.

Stap 1: Raspberry Pi aansluiten

Tijdelijke (voor installatie) aansluitingen:

  • HDMI-poort gaat naar beeldscherm
  • USB: toetsenbord + externe harde schijf (of USB-stick)
  • UTP: netwerk/internet
  • micro-USB: enkel voor spanning (= inschakelen, nog even mee wachten)
  • SD-lezer: Raspbian op kaartje (zie stap 2)

Uiteindelijke aansluitingen (na stap 2):

  • USB: externe harde schijf (of USB-stick)
  • UTP: netwerk/internet
  • micro-USB: enkel voor spanning
  • SD-lezer: Raspbian op kaartje

[[FOTO 1]]

Stap 2: Installatie standaard software

Dit zijn de stappen die ik hiervoor gevolgd heb:

  1. Plaats de SD-kaart in de SD-kaartlezer van je computer.
  2. We moeten achterhalen hoe je systeem de kaart herkent (naam)
    1. Hiervoor gebruikte is gparted. In de rechterbovenhoek kun je de verschillende schijven selecteren (in mijn geval: sda, sdb en sdd)
    2. Als dit niet werkt: Open een terminalvenster, en typ: "sudo fdisk -l"  (dit geeft een overzicht van al je schijven en partities. Je ziet ineens ook de grootte van elke schijf, dus is het makkelijk om er de juiste eruit te pikken.
    • jurgen@desktop:~$ sudo fdisk -l

      Disk /dev/sda: 64.0 GB, 64023257088 bytes
      255 heads, 63 sectors/track, 7783 cylinders, total 125045424 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk identifier: 0x000ad37d

         Device Boot      Start         End      Blocks   Id  System
      /dev/sda1   *        2048   125044735    62521344   83  Linux

      Disk /dev/sdb: 750.2 GB, 750156374016 bytes
      255 heads, 63 sectors/track, 91201 cylinders, total 1465149168 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk identifier: 0x000e5d5f

         Device Boot      Start         End      Blocks   Id  System
      /dev/sdb4   *   523552766  1141062713   308754974    5  Extended
      /dev/sdb5       523552768   539238399     7842816   82  Linux swap / Solaris
      /dev/sdb6       539240448  1141062713   300911133   83  Linux

      Disk /dev/sdd: 2030 MB, 2030043136 bytes
      24 heads, 23 sectors/track, 7182 cylinders, total 3964928 sectors
      Units = sectors of 1 * 512 = 512 bytes
      Sector size (logical/physical): 512 bytes / 512 bytes
      I/O size (minimum/optimal): 512 bytes / 512 bytes
      Disk identifier: 0x00000000

         Device Boot      Start         End      Blocks   Id  System
      /dev/sdd1             251     3964927     1982338+   6  FAT16
      jurgen@desktop:~$
  3. Downloaden van de Raspbian image file (http://www.raspberrypi.org/downloads)
  4. Unzippen van de download (unzip 2013-12-20-wheezy-raspbian.zip)
  5. Nu we achterhaald hebben wat het adres van de SD-kaart is (in mijn geval: /dev/sdd), moeten we het .img bestand overzetten op de SD-kaart
  6. Belangrijk: voor we de SD-kaart verwijderen, moeten we eerst de scrijfbuffer leegmaken. Hiervoor gebruiken we het commando "sync" als root.

De /dev/sdX schijf die je hier ingeeft, wordt onverbiddelijk overschreven - controleer dus nogmaals dat je de juiste schijf gaat overschrijven!

sudo dd bs=4M if=2013-12-20-wheezy-raspbian.img of=/dev/sdd
sudo sync


Deze opdracht kan makkelijk enkele tientallen minuten (tot zelfs een half uur) duren. Nu is een goed moment om een hapje te eten, een kop koffie te halen, of even een ander artikeltje op mijn blog te lezen :)

Nu dit gebeurd is, kunnen we de SD-kaart in de Raspberry Pi prikken, en de micro-USB-poort voorzien van stroom. Voor dit project, kon de USB-poort van mijn computer voldoende energie leveren, er wordt geadviseerd om je bord te voeden via een GSM-lader (vanaf het stopcontact). Als je toestelletje door het leven zal gaan als cloud-server voor het hele gezin, is het natuurlijk wel zo handig dat hij altijd stroom heeft. Dan is het niet zo handig om de USB van je computer te gebruiken.

Als alles goed ging, krijg je op het scherm dat gekoppeld is aan je Raspberry Pi nu een tekstconsole te zien. Op het aanmeldscherm wordt naar een gebruikersnaam gevraagd, en vervolgens wachtwoord gevraagd. De standaard gebruiker is "pi" (kleine letters), en het wachtwoord is "raspberry" (kleine letters). Eenmaal aangemeld, zal de raspi-config automatisch draaien, en krijg je een keuzemenu te zien. Hierin moet je minstens de eerste en tweede optie eenmaal kiezen:
1. Expand filesystem - zal ervoor zorgen dat je volledige SD-kaart gebruikt kan worden.
2. Change User Password - zal ervoor zorgen dat niet iedereen zomaar kan aanmelden op je Raspberry Pi. Kies hier een sterk wachtwoord, zeker als je SkyPi ook toegankelijk zal zijn vanaf het internet! [[http://nl.wikihow.com/Een-sterk-wachtwoord-verzinnen]]

Nu hebben we een klassieke Raspberry Pi... De volgende stap is om die om te vormen naar een rasechte Cloud Server! Hiervoor hebben we twee zaken nodig: ten eerste: voldoende schijfruimte... en ten tweede: OwnCloud volledig geconfigureerd.

Maar voor we zover zijn, moeten we eerst nog komaf maken met dat scherm en dat klavier... Linux is van de grond op gemaakt om als een server te draaien, dus onze Raspberry Pi is hier al klaar voor. De benadering die we hiervoor gaan gebruiken, heet SSH (Secure SHell) en zal ons toegang geven tot de SkyPi via het IP-adres. Het zou dus handig zijn als het IP-adres van het bakje niet meer zou veranderen. Dit kun je op 2 manieren doen:

  1. Via de DHCP-server op je router. Bij mijn D-Link moet ik hiervoor naar het IP-adres van de router gaan (typisch 192.168.0.1, maar dit kan wijzigen per model/merk en volgens je eigen instellingen) >> SETUP >> NETWORK SETTINGS >> ADD DHCP RESERVATION.
  2. Door op je Raspberry Pi zelf een vast IP adres in te stellen (http://raspberrypi.be/uncategorized/vast-ipadres-instellen)

Persoonlijk geef ik de voorkeur aan de eerste oplossing, want zo kun je op één centrale plaats al je vaste IP-adressen beheren. Ik gaf mijn toestel het IP-adres 192.168.0.200, zodat ik 'm makkelijk kan onthouden.

Om vanop je computer "in te bellen" op de SkyPi via SSH, heb je een SSH-client nodig.
- Onder Windows: PuTTY is een gratis SSH-client (http://www.chiark.greenend.org.uk/~sgtatham/putty/)
- Onder Linux en MacOS: in het terminalvenster is er het commando SSH, dat al het nodige doet.

In het Linux terminalvenster typ je dus:

ssh 192.168.0.200 -l pi

De parameter '-l' geeft aan dat je wil aanmelden met de gebruiker 'pi'. Eens je je nieuwe wachtwoord ingegeven hebt, zul je een nieuwe prompt zien, van de vorm pi@skypi ~ $
De commando's die je nu ingeeft, worden uitgevoerd op de Raspberry Pi. Het enige wat je niet kunt, is een grafische omgeving openen (maar da's voor deze toepassing ook niet nodig).

Om deze stap af te sluiten, voeren we twee kleine opdrachtjes uit, om te zorgen dat ons systeem up-to-date is:

sudo apt-get update
sudo-apt-get upgrade

De eerste opdracht zal de lijsten bijwerken van alle programma's (en hun vindplaatsen).
De tweede opdracht zal op al die vindplaatsen kijken of er nieuwere versies bestaan voor de al geïnstalleerde programma's.

Stap 3: De USB-schijf een vaste stek geven op je SkyPi

Nu we op onze SkyPi zitten, is het eerste wat we moeten doen, een overzicht krijgen van de namen die Linux geeft aan de aangesloten schijven - dit moesten we al eens doen, dus we kennen dit commando:

pi@skypi ~ $ sudo fdisk -l

Disk /dev/mmcblk0: 7963 MB, 7963934720 bytes
4 heads, 16 sectors/track, 243040 cylinders, total 15554560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c4661

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880    15554559     7715840   83  Linux

Disk /dev/sda: 2000.4 GB, 2000396746752 bytes
255 heads, 63 sectors/track, 243201 cylinders, total 3907024896 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0007139e

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048  3907024895  1953511424   83  Linux

De /dev/mmcblk0 is het SD-kaartje waarop Raspbian draait, dit is natuurlijk te klein om een echt backup systeem te maken. Zoals je ziet, heb ik een externe harde schijf met de partitie /dev/sda1 van grofweg 2 TB. Hiermee kan ik normaalgezien al een eindje voort. De schijf is geformatteerd als ext4 (dus niet als FAT32 of NTFS. Dit hoeft niet, ook niet als er Windows PC's meedoen)

De volgende stap die moet gebeuren, is het "mounten" (aandokken) van de partitie naar een logische plek. We volgen de conventie, en kiezen een zinvolle naam in de submap "/media". Ik kies bijvoorbeeld voor /media/wolk Dit zijn de volgende stappen die moeten gebeuren:

sudo mkdir /media/wolk
sudo mount -t auto /dev/sda1 /media/wolk
(in de veronderstelling dat /dev/sda1 natuurlijk je externe schijf is)

  • Met het eerste commando maak je de map aan (make directory = mkdir)
  • Met het tweede commando dok je de partitie /dev/sda1 aan op de logische plek /media/wolk

In principe kun je nu al even een kijkje nemen op de partitie... (zoek even de commando's ls en cd op om te weten hoe je dat doet)

Eens we weten dat we de juiste partite aangedokt hebben op de correcte locatie, kunnen we deze instelling permanent maken. Hiervoor gaan we een lijntje toevoegen in het fstab bestand (fstab = filesystem table).

sudo nano /etc/fstab

Je krijgt nu een eenvoudige tekstverwerker te zien, voeg een lijntje toe dat er als volgt uitziet:

/dev/sda1   /media/wolk   ext4   defaults   0   0

Hierbij zijn:
* /dev/sda1: het linux-adres van je externe harde schijf (partitie)
* /media/wolk: de logische aandokplaats die je uitgekozen hebt
* ext4: het bestandssysteem waarmee de schijf geformatteerd is. Maak hiervan vfat als het over een FAT-partitie gaat en je de schijf niet opnieuw wil formatteren in ext4 (het commando om /dev/sda1 te formatteren in ext4 is: mkfs.ext4 /dev/sda1)
* defaults 0 0  = niet wijzigen zonder uitdrukkelijke reden

Heb je het lijntje toegevoegd, dan kun je het gewijzigde bestand opslaan met de toetscombinatie Ctrl-O en de tekstverwerker afsluiten met Ctrl-X.

Stap 4: Installeren van OwnCloud

Geavanceerd: Standaard werkt deze Owncloud installatie met SQLite. Verkies je MySQL (http://www.unixmen.com/install-lemp-server-nginx-mysql-mariadb-php-ubuntu-13-10-server/) of Postgres (https://github.com/gizmovation/lnppstack), dan installeer je een van deze best vooraf. De links zijn informatief, ik weet niet of de PostgresQL link ook effectief werkt op de RasPi...

Bij de installatie van Owncloud komt heel wat kijken:

  • je moet een webserver installeren
  • je moet een certificaat genereren voor een beveiligde verbinding (denk aan de sites die beginnen met https:// in plaats van http://)
  • er moeten hiervoor heel wat bijkomende pakketten geïnstalleerd worden, en aanpassingen gedaan worden in het instellingsmenu.
  • een aantal instellingen van de Raspberry Pi optimaliseren (bijv: zo weinig mogelijk geheugen reserveren voor video, en de overclock instellingen goedzetten)

Gelukkig heeft iemand het grote pionierswerk voor ons al gedaan, en zelfs op zo'n manier dat we er nog wat uit kunnen leren ook! Florian, een Raspberry Pi expert (heeft ook een geavanceerde Raspberry Pi spel-emulator gemaakt), heeft een script geschreven dat we volledig kunnen lezen... (https://github.com/petrockblog/OwncloudPie)

Nu is het gewoon eenvoudigweg de instructies volgen die Florian aka Petrockblog geeft... in 't Engels weliswaar...

Het eerste wat moet gebeuren, is natuurlijk dat prachtige script op je klein servertje krijgen.
Hiervoor zullen we enkele nieuwe programma's moeten bij installeren:

sudo apt-get install git dialog                         # installeer git en dialog
cd                                                      # keer terug naar de startfolder (/home/pi)
git clone git://github.com/petrockblog/OwncloudPie.git  # haar de nieuwste versie van het script op

Er is nu een map OwncloudPie bijgemaakt. We gaan in deze map binnen...
cd OwncloudPie                                # Ga in de map "OwncloudPie"
chmod +x owncloudpie_setup.sh                 # Markeer het bestand als uitvoerbaar (X = executable)
sudo ./owncloudpie_setup.sh                   # Voer het bestand uit (als beheerder: sudo)

Nu verschijnt een keuzemenu, waarbij je de eerste zowiezo moet zetten: kies een zinvolle naam uit voor je server - dit kan bijvoorbeeld de Dynamische DNS-serverlink zijn die je router je aanbiedt... of gewoon een fictieve naam. Is je server enkel toegankelijk binnen je LAN (en dus niet vanaf het internet), dan kun je eventueel je IP-adres gebruiken.

Ik heb gekozen voor de installatie van de webserver nginx. Apache is de grote speler onder de webservers, en is ook een krachtige server. Voor onze kleine Raspberry Pi vraagt hij echter net iets te veel rekenkracht, waardoor alles net dat tikkeltje te traag wordt. Misschien heb jij een reden om wel voor Apache te kiezen...

Nu voert het script een heel resem aan commando's uit (je kunt ze hier bekijken: https://github.com/petrockblog/OwncloudPie/blob/master/owncloudpie_setup.sh) en af en toe zul je een vraag moeten beantwoorden. Een klein beetje Engelse taalvaardigheid zal toch wel vereist zijn. Aangezien Owncloud ook niet in het Nederlands beschikbaar is, lijkt me dit geen onredelijke eis...

Eens het installatiescript doorlopen is, is dit een goed moment of even je kleine server opnieuw op te starten...

sudo reboot

Vrij vlug zul je uit je SSH-sessie gegooid worden... enkele minuten later is je server weer actief. Nu moeten we het systeem configureren...

Stap 5: Configueren van Owncloud

Om je Owncloud servertje te configueren, kun je vanaf een computer uit je netwerk aanmelden op het IP-adres van de SkyPi:

https://192.168.0.200/owncloud

Merk op: Mogelijk verschijnt er in de loop van de configuratie een waarschuwing over WebDAV dat niet werkt. Maak je hier niet druk over, tenzij je weet wat WebDAV is en van plan was dit te gebruiken, zul je deze optie niet nodig hebben.

Hoogst waarschijnlijk krijg je een dreigende waarschuwing dat het een onbetrouwbare site betreft... de reden hiervoor is omdat je een zelfgemaakt SSL-certificaat gebruikt (en geen duurbetaald certificaat bij een externe instantie laat aanmaken).

Voor gevorderden: je vraag je misschien af waarom dat SSL-certificaat nodig is, als het toch geen garantie biedt van authenticiteit. Wel, een SSL-verbinding doet 2 zaken: (1) authenticatie en (2) versleuteling. Hoewel de waarde van de authenticatie in dit geval laag is, blijft de verbinding tussen je computer en de SkyPi versleuteld. Dit betekent dat het veel moeilijker is om het verkeer tussen jouw computer en de SkyPi te gaan afluisteren. Met een gewone HTTP-verbinding is dit namelijk relatief eenvoudig.

Er wordt je nu gevraagd een gebruikersnaam en wachtwoord in te geven (kies zelf maar). Vergeet in elk geval niet om de geavanceerde opties ook te openen. Hier zul je de locatie van je externe harde schijf moeten ingeven (iets in de aard van /media/wolk), anders worden de documenten op je SD-kaartje opgeslagen, en dan loopt alles wel zeer snel vol :)
Heb je ervoor gekozen om MySQL of PostgreSQL te gebruiken, dan kun je hier ook die optie kiezen, en de nodige parameters instellen.

Stap 6: Client installeren op je computer(s)

Natuurlijk zit de kracht van Owncloud niet in de website, maar vooral in de mogelijkheid om mappen te synchroniseren met je server zonder dat je zelf inspanningen moet doen hiervoor.

Installeer op je computers de client die aangeboden wordt op www.owncloud.org/install
Vul hier de gegevens in (servernaam is bijv. https://192.168.0.200/owncloud)

De beheerder (eerst aangemaakte account) heeft de mogelijkheid om meerdere gebruikers (of beheerders) aan te maken. Zo is het mogelijk om de mappen van jezelf gescheiden te houden van die van je partner, kinderen, collega's, enz...

Stap 7: (optioneel) Bereikbaar maken vanaf het internet

Op je router bestaat zoiets als "port forwarding". Wat deze instelling doet, is alle oproepen de de router krijgt op een bepaalde poort, doorsturen naar een intern IP-adres. Concreet willen wij poort 443 (HTTPS) en eventueel 80 (HTTP) laten forwarden naar het IP-adres van onze kleine server. Eventueel moet je erbij zeggen dat dit een TCP-protocol is. Wil je ook SSH toelaten van buiten het netwerk (zou ik persoonlijk niet aanraden), dan doe je hetzelfde voor poort 22.

Op heel wat routers is het mogelijk om een dynamisch IP-adres te koppelen aan een externe URL. DynDNS is hiervoor een bekende dienstverlener, maar je kunt ook terecht bij NoIP (http://www.noip.com/) voor een gratis account.

Zowel DynDNS als No-IP zijn bedrijven met Amerikaanse wortels. Mogelijk geef je er de voorkeur aan om ook deze schakel zelf te beheersen. Kijk dan even naar dit project van hackerspace vriend Askarel: DynaName. Bedoeling is om zelf de functionaliteit te implementeren op je eigen servers en met je eigen domeinnaam. Ik heb dit zelf nog niet geprobeerd, dus dit valt buiten de scope van dit artikel.

Op die manier wordt het mogelijk om je OwnCloud ook te gebruiken om bestanden te delen, of om je server van buiten je eigen netwerk te bereiken.

Merk op: Bij sommige providers is het niet toegestaan om zelf een server te verbinden met het internet. Is dit slechts voor eigen en beperkt gebruik, dan zal dit vaak gedoogd worden. Als je te veel verkeer genereert op die manier, kan dit leiden tot een opzegging van je contract. Controleer dit tijdig, voor je in de problemen komt!

Leave your comments

Post comment as a guest

0 / 4096 Character restriction
Your text should be in between 42-4096 characters
Your comments are subjected to administrator's moderation.
terms and condition.
  • Guest - Tijmerd

    Goed artikel, hoewel ik voor de /etc/fstab file zou opteren om te mounten op UUID, in het geval dat er ooit nog een HD zou bijkomen. Ik had recent nog een probleem dat de originele /dev/sd* namen niet meer overeenkwamen met de vroegere namen. Maar met 1 HD zal er wel geen probleem zijn:)

Powered by Komento