Bouw je eigen cloud met ownCloud
OneDrive, Dropbox, iCloud, Google Drive … Al die cloudopslagdiensten zijn kinderlijk eenvoudig en praktisch. Maar bedenk wel dat al die persoonlijke bestanden, foto's, documenten en mails op de systemen van anderen staan. Je kunt nooit achterhalen wie jouw data inzien. Tijd om het heft in eigen hand te nemen met een eigen cloud.
In deze basiscursus gaan we onze eigen cloud opzetten met ownCloud. OwnCloud is serversoftware waarmee je je bestanden kunt synchroniseren met je eigen cloud, oftewel het is een do-it-yourselfdropbox. Het fijne aan ownCloud is dat je gegevens je huis niet verlaten en niet op andermans computer terechtkomen. Bovendien is het mogelijk om ownCloud uit te breiden met allerlei handige apps, zodat het veel meer wordt dan alleen een cloudopslagdienst.
Voordat we beginnen: zorg ervoor dat je een server klaar hebt staan. Wij pakken daarvoor een server met Ubuntu 16.04 LTS. Je kunt ook een nas gebruiken (zie kader). Zorg ervoor dat de pc die je gebruikt genoeg opslagruimte heeft voor de persoonlijke bestanden die je erop wilt zetten. Heb je geen server beschikbaar, dan zou je ownCloud kunnen hosten in een virtuele machine op een pc. Zorg ervoor dat de virtuele schijf dan wel wat ruimte heeft zodat je je gegevens kwijt kan en dat de VM direct verbonden is met je thuisnetwerk.
01 OwnCloud installeren
We gaan ownCloud installeren in Ubuntu. Daarvoor voegen we de ownCloud-repository toe aan de Ubuntu-pakketbronnen. De volgende commando’s kun ook terugvinden op de installatiepagina van ownCloud. Voer in een terminal het volgende commando in:
wget -nv https://download.owncloud.org/download/repositories/9.1/Ubuntu_16.04/Release.key -O Release.key
sudo apt-key add - < Release.key
We hebben nu de sleutel toegevoegd aan Ubuntu, zodat we kunnen verifiëren dat de code echt afkomstig is van ownCloud. Nu kunnen we de software zelf toevoegen als repo. Maak daarvoor het bestand owncloud.list met sudo nano /etc/apt/sources.list.d/owncloud.list en voeg daaraan de volgende regel toe:
deb http://download.owncloud.org/download/repositories/9.1/Ubuntu_16.04/ /
Sla het bestand op met Ctrl + X en Y. Daarna installeer je ownCloud met:
sudo apt update
sudo apt install owncloud
Zodra de installatie klaar is, kun je naar http://<je-ip-adres/owncloud in je browser en zie je de ownCloud-pagina verschijnen. Wacht nog even met inloggen, zoals je ziet op die pagina wordt het gebruik van een andere database dan SQLite aanbevolen.
©PXimport
02 MySQL installeren
Als je ownCloud serieus wilt gebruiken, is het aan te raden om gebruik te maken van MySQL in plaats van SQLite. Installeer MySQL als volgt:
sudo apt update
sudo apt install mysql-server
Druk op Enter als de installatie daarom vraagt. Tijdens de installatie wordt ook gevraagd om een wachtwoord in te vullen voor MySQL. Onthoud dat wachtwoord goed en zorg dat het een sterk wachtwoord is. Daarna beveiligen we MySQL met het commando:
mysql_secure_installation
Voer het rootwachtwoord van MySQL in en druk op Enter. Druk op y om wachtwoordvalidatie in te schakelen en kies voor het gewenste veiligheidsbeleid. Wij kiezen voor 0. Als je wachtwoord voor root niet sterk genoeg is, wijzig het dan bij de volgende vraag, ga anders door en druk op Enter. Je kunt nu bij Remove anonymous users, Disallow root login remotely en Remove test database and access to it op y drukken. Druk dan nog eens op y om de wijzigingen direct toe te passen door de rechtentabel, oftewel de privilege table, te herladen.
©PXimport
Als je ownCloud serieus wilt gebruiken, is het aan te raden om gebruik te maken van MySQL
-
03 MySQL-database
We maken nu een database aan voor ownCloud in MySQL. Voer daarvoor het commando uit:
mysql -u root -p
En log in MySQL in. Dan maken we een nieuwe database aan met:
CREATE DATABASE owncloud;
We maken nu een speciale gebruiker aan voor deze nieuwe database, die alleen bij die database kan. Dat is een stuk veiliger:
GRANT ALL ON owncloud.* to 'owncloud'@'localhost' IDENTIFIED BY 'wachtwoord';
Zorg ervoor dat je in plaats van wachtwoord een sterk wachtwoord invoert en die ook goed bewaart. Als laatste passen we deze nieuwe rechten direct toe:
FLUSH PRIVILEGES;
Typ exit om MySQL weer te verlaten.
©PXimport
OwnCloud installeren op nas
OwnCloud is niet alleen eenvoudig te installeren op Ubuntu, maar ook op veel nas’sen. Op bijvoorbeeld Synology installeer je daarvoor vanuit het Package Center de Web Station, MariaDB, Apache2.4, php7.0 en phpMyAdmin. Raadpleeg de handleiding om die te configureren, soms kun je meedoen met de stappen die hier staan als je ssh-toegang hebt tot je nas. Gebruik dan dit setupscript om ownCloud te installeren. Op QNAP en andere nas’en werkt het vergelijkbaar. Je kunt op sommige nas’en ook Docker gebruiken met dit image.
©PXimport
04 OwnCloud instellen
Om ownCloud in te stellen, ga je terug in de browser naar http://<je-ip-adres>/owncloud. Voer je gewenste gebruikersnaam en wachtwoord in en klik dan op Opslag en database. Klik op MySQL/MariaDB en voer daar de gegevens van net in. De gebruiker van de database is owncloud, het wachtwoord is het wachtwoord dat je bij de vorige stap hebt aangemaakt en de naam is owncloud. Bij Gegevensmap zou je een ander pad kunnen invullen om je bestanden ergens anders op te slaan. In deze map worden de cloudbestanden opgeslagen. Zorg ervoor dat de map die je hier invult beschreven kan worden door www-data. Dat doe je met het commando:
sudo chown -R www-data:www-data /pad/naar/je/map
Wij houden de map op de standaardwaarde en hoeven dan niet bovenstaand commando uit te voeren. Klik op Installatie afronden. Als alles goed gegaan is, kom je na enige tijd op de startpagina van ownCloud met de melding om de desktopapps te installeren.
©PXimport
05 Domein, dns en router
Voordat we doorgaan met de configuratie van ownCloud, gaan we ervanuit dat je ownCloud in productie wilt gebruiken met een domeinnaam en https. Https zorgt ervoor dat je bestanden tijdens het uploaden niet door anderen ingezien kunnen worden. Voordat we doorgaan is het belangrijk dat je het volgende doet: zorg dat je een A-record aanmaakt voor je domeinnaam, bijvoorbeeld owncloud.je-domein.nl. Verwijs die naar je externe thuis-ip-adres. Je vindt dat adres eenvoudig door even te googlen op ‘wat is mijn ip’. Het beste maak je gebruik van een dynamische dns-service als je ownCloud thuis host, omdat als je ip-adres wijzigt je niet meer bij je ownCloud uitkomt. Dat gaat te ver voor dit artikel. Daarna maak je een nieuwe portforwarding-regel aan in je router, die verkeer op poort 80 én 443 doorstuurt naar je ownCloud-server. Zorg er dan direct voor dat je server van je router een statisch ip-adres krijgt.
©PXimport
Nextcloud versus ownCloud
Nextcloud is een concurrent van ownCloud. In 2016 kozen veel ontwikkelaars ervoor om ownCloud te verlaten naar aanleiding vanwege commerciële onenigheid. Nextcloud is in zijn geheel open source, bij ownCloud zijn bepaalde zakelijke functies gesloten. Ook wordt Nextcloud sneller ontwikkeld met vaker nieuwe versies. Echter, vooralsnog is ownCloud nog wat stabieler en is het eenvoudiger te installeren, omdat het direct vanuit veel Linux-distributies is te installeren.
06 Apache
Heb je dat allemaal gedaan, dan bewerken we de configuratie van Apache2, die tijdens stap 1 automatisch mee is geïnstalleerd. Kopieer daarvoor eerst de Directory-blokken van de oude owncloud.conf met het commaando cat /etc/apache2/conf-available/owncloud.conf. Selecteer dan alles na Alias. Nu maken we een nieuwe virtualhost aan voor ownCloud met het commando:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/owncloud.conf
Bewerk dan het bestand owncloud.conf met sudo nano /etc/apache2/sites-available/owncloud.conf en haal daar het hekje weg bij ServerName en vervang www.example.com met owncloud.je-domeinnaam.nl. Bij DocumentRoot haal je html weg en vervang je dat met owncloud. Plak nu de twee Directory-blokken van net.
Sla het bestand op met Ctrl + X / Y en schakel de site in en herlaad Apache met:
sudo a2ensite owncloud
sudo service apache2 reload
Ga dan even naar je domein om het te testen. Als het werkt, verschijnt de ownCloud-pagina. Klik op de knop “owncloud.je-domein.nl” toevoegen als vertrouwd domein. Waarschijnlijk word je dan doorverwezen naar de verkeerde pagina. In de link voeg je dan even /owncloud/ toe na je ip-adres in de url in je browser en klik je dan op Ja.
©PXimport
Bij Gegevensmap zou je een ander pad kunnen invullen om je bestanden ergens anders op te slaan
-
07 Https
Om nu https in te schakelen, typ je in de terminal:
sudo apt-get install python-letsencrypt-apache
En druk op Enter om de installatie te bevestigen en voer dan in:
sudo letsencrypt -d owncloud.je-domeinnaam.nl
Geef een e-mailadres op, waarop je meldingen ontvangt als het certificaat verloopt en druk op OK. Klik op Agree en kies dan voor Secure en druk op OK / OK. Zorg ervoor dat je eens in de drie maanden even het commando sudo letsencrypt renew uitvoert.
©PXimport
Test je beveiliging
De makers van Nextcloud hebben een scantool gebouwd waarmee je je eigen ownCloud-installatie kunt controleren op veiligheid. De tool controleert of ownCloud en je server up-to-date is en niet kwetsbaar voor lekken. Een eenvoudige maatregel om de veiligheid te verbeteren is om HSTS aan te zetten. Daarvoor bewerk je het bestand /etc/apache2/sites-available/owncloud-le-ssl.conf en voeg je daaraan toe in het VirtualHost-blok:
08 Bestanden synchroniseren
We kunnen nu onze bestanden uploaden naar ownCloud. Daarvoor download je de clients door rechtsboven op je gebruikersnaam te klikken en te kiezen voor Persoonlijk / Sync clients. Kies dan voor je platform, bijvoorbeeld Desktop app en kies voor het juiste besturingssysteem. Download het uitvoerbare bestand en voer het uit. Open na de installatie de client en voer je Serveradres in, dus https://owncloud.je-domein.nl en klik op Next. Meld je dan aan met je gebruikersnaam en wachtwoord en ga door. Je kunt nu kiezen wat je vanaf de server wilt synchroniseren, maar daar staat nog niets. Bij Lokale map kies je waar je de ownCloud-map wilt plaatsen. Klik op Verbinden / Finish om de verbinding definitief te maken. Open de sync-client rechtsonder vanaf het systeemvak. Als je nu je bestanden in je ownCloud-map plaatst, worden ze vanzelf geüpload. De mobiele apps voor Android en iOS kun je gebruiken voor minder dan een euro in de betreffende appstores.
©PXimport
09 ownCloud-webinterface
Via de webinterface van ownCloud kun je al je bestanden inzien en downloaden. Rechts zie je favorieten en gedeelde bestanden. Onderaan kun je via Verwijderde bestanden inzien wat er verwijderd is en dat terughalen. Met Instellingen onderaan kun je verborgen bestanden weergeven. Om de echte instellingen van ownCloud aan te passen, klik je rechtsboven op je gebruikersnaam. Met de optie Gebruikers kun je anderen toegang geven tot je ownCloud-server, die kunnen dan zelf bestanden uploaden. Je kunt gebruikers in groepen plaatsen. Per gebruiker kun je een limiet instellen. Met de optie Persoonlijk wijzig je je eigen instellingen, zoals je naam, wachtwoord en meldingen. Via Beheerder vind je algemene instellingen, zoals server-sideversleuteling, deelinstellingen en configuratiemeldingen.
©PXimport
Server-sideversleuteling
Een van de opties in de instellingen is de mogelijkheid om server-side encryptie in te schakelen. Dat klinkt mooi, als alleen versleutelde bestanden op je server liggen, hoef je je geen zorgen te maken over als de server gehackt wordt. Helaas werkt het niet zo. ownCloud bewaart namelijk de privésleutels voor encryptie ook op de server, waardoor een aanvaller eenvoudig je bestanden kan ontsleutelen. Deze functie is dan ook alleen handig als je de data extern opslaat, met de External Storage-app, of als je geen https gebruikt.
10 Apps installeren
OwnCloud heeft een appwinkel waarmee je de functionaliteit ervan kunt uitbreiden. Om die in te zien, klik je linksboven op Bestanden / + Apps. Je vindt per categorie handige apps. Klik op Activeer om een app in te schakelen. Die verschijnt dan in het menu bovenin. Met Productivity vind je handige apps zoals een agenda en contactpersonen-beheer. Je vindt meer apps op de website van ownCloud. Om zo’n app te installeren, download je het zip of tar.gz-bestand en pak je het uit op de server in de map /var/www/owncloud/apps. Zorg dat de rechten goed staan met
sudo chmod 750 /var/www/owncloud/apps/<je-app-naam>
sudo chown -R www-data:www-data /var/www/owncloud/apps/<je-app-naam>
Je app komt dan automatisch in de applijst te staan van je ownCloud.
©PXimport
11 Full-text search
Met de app Nextant is het mogelijk om direct door de inhoud van je documenten te zoeken. Daarvoor wordt gebruikgemaakt van Apache Solr. We installeren als eerst de Nextant-app als volgt:
sudo su
cd /var/www/owncloud/apps
wget https://github.com/nextcloud/nextant/releases/download/v1.0.3/nextant-master-1.0.3.tar.gz
We pakken dan het bestand uit en zorgen er zeker voor dat de rechten goed staan:
tar -zxvf nextant-master-1.0.3.tar.gz
chmod 750 nextant/
chown -R www-data:www-data nextant/
exit
Ga dan naar je webinterface en klik bovenaan op Bestanden / Apps. Ga naar Niet ingeschakeld, zoek Nextant in de lijst en klik op Activeer.
©PXimport
Met de app Nextant is het mogelijk om direct door de inhoud van je documenten te zoeken
-
12 Apache Solr
Installeer eerst even Java met:
sudo apt install openjdk-8-jre
Daarna kunnen we Solr binnenhalen en installeren als service:
cd ~
wget http://mirrors.ircam.fr/pub/apache/lucene/solr/6.4.2/solr-6.4.2.tgz
sudo ./solr-6.4.2/bin/install_solr_service.sh solr-6.4.2.tgz
Bewerk dan het bestand jetty-http.xml in /opt/solr/server/etc/ met
sudo nano /opt/solr/server/etc/jetty-http.xml
en maak van de regel
<Set name="host"><Property name="jetty.host" /></Set>
Het volgende:
<Set name="host"><Property name="jetty.host" default="127.0.0.1" /></Set>
Zodat Solr alleen toegankelijk is vanaf localhost. We herstarten nu Solr en genereren een Nextant-core met de volgende commando’s:
sudo /etc/init.d/solr restart
sudo -u solr /opt/solr/bin/solr create -c nextant
Ga dan terug naar de ownCloud-webinterface. Klik rechtsboven op je naam en ga naar Beheerder. Klik op Nextant (volledige tekst zoekfunctie) links en klik op Testen en opslaan. De standaardinstellingen zijn goed. Het kan even duren voordat alles getest is. Daarna kun je de instellingen daaronder aanpassen. Terug in de commandline kun je nu de eerste keer indexeren starten met:
cd /var/www/owncloud
sudo -u www-data ./occ nextant:index
©PXimport