Nextcloud external storage support
- August 15, 2022
- 0
Nextcloud heeft meer mogelijkheden dan cloud opslag. In een aantal workshops gaan we aan de slag met andere apps.
In ditartikel gaan we aan de slag met de app ‘External storage support’ voor het SMB protocol, Dropbox, Google Drive, Google Photo en Onedrive.
Uitgangspunten voor de voorbeelden in deze workshop zijn dat Nextcloud draait onder Debian of afgeleide, je op de Nextcloud server onder de naam linuxmag ingelogd bent en dat je als beheerder in Nextcloud ingelogd bent.
Auteur: André Fondse
Activeren
Bij de installatie van Nextcloud is de app ‘External Storage support’ standaard meegeïnstalleerd. De app is alleen nog niet geactiveerd (afbeelding 1). Je komt bij de apps door rechts boven op de eerste letter van je gebruikersnaam te klikken en daarna
op ‘Apps’ (afbeelding 2). Klik daarna in de linkerbalk op uitgeschakelde apps (afbeelding 1) en klik op ‘Inschakelen’ bij ‘External storage support’. Via Instellingen (afbeelding 2) configureer je de externe opslag.
Configuratie
Als beheerder ga je eerst instellen welke soorten externe opslag je voor de gebruikers wilt activeren. Die doe je door in de instellingen (afbeelding 2) onder ‘Beheer’ op ‘Externe opslag’ te klikken. Je krijgt dan een scherm als in afbeelding 3. We zien hier 3 dingen:
1: Op het systeem waar deze afbeelding van gemaakt is, draait nog geen Samba client;
2: Hier configureer je gecentraliseerde externe opslag;
3: Configuratie externe opslag per gebruiker.
Het makkelijkst is om voor het gebruik met Nextcloud de php-smbclient te installeren met het commando: sudo apt install php-smbclient
Daarna herstart je de (Apache) webserver met: sudo systemctl restart apache2
De gecentraliseerd geconfigureerde externe opslag is mogelijk voor het hele systeem, per gebruiker of gebruikersgroep. Als het om configuratie van persoonlijke gebruikersaccountants gaat, geef ik er de voorkeur aan om dat de gebruiker zelf te laten doen. Je voegt een centraal geconfigureerde opslag toe door te beginnen met een mapnaam in te vullen, bijvoorbeeld ‘muziek’. Daarna selecteer je het type externe opslag, bijvoorbeeld ‘SMB / CIFS’. Het systeem vraagt vervolgens om de wijze van authenticatie. De standaard optie ‘Gebruikersnaam’ voldoet hier. Onder configuratie vul je het volgende in:
- Host: ip adres of hostnaam van de SMB (Samba of MS Windows) server
- Share: sharenaam van de SMB server
- Externe submap: de directory in de share die je wilt openstellen voor gebruik
- Gebruikersnaam: gebruikersnaam op SMB server
- Wachtwoord: wachtwoord op SMB server
- Beschikbaar voor: Als je niets invult, dan is deze gedeelde map toegankelijk voor alle Nextcloud gebruikers. Als je op het veld klikt, dan heb je de mogelijkheid om gebruikers of gebruikersgroepen te selecteren die toegang tot deze gedeelde map mogen hebben.
Als je op de drie puntjes rechts naast het veld onder ‘Beschikbaar voor’ klikt, dan zijn er nog extra opties voor de gedeelde map in te stellen. Een van deze opties is ‘Alleen lezen’. Nadat je alle gegevens ingevuld hebt, klik je op het vinkje aan de rechterkant. Als je alles goed geconfigureerd hebt, krijg je aan de linkerkant van het scherm een groen vinkje (afbeelding 4).
Hier stel je in of gebruikers zelf externe opslag mogen koppelen en welke externe opslagdiensten de gebruikers zelf mogen koppelen.
Bij de gebruiker
Zodra het koppelen van externe opslag door de gebruikers geactiveerd is, zie je als gebruiker onder Persoonlijk de optie ‘Externe opslag’ staan als je op instellingen klikt. De configuratie van de persoonlijke externe opslag gaat op ongeveer dezelfde manier als de gecentraliseerde configuratie. De selectie van de gebruikers en gebruikersgroepen die toegang mogen hebben tot de externe map staat hier niet bij.
Externe opslag
Nadat de externe opslag (door beheerder en/of gebruiker) ingesteld is, zie je de mapnamen van deze externe opslag bij je bestanden (afbeelding 5).
Tussen de Nextcloud apps vind je verschillende apps waarmee je de data van deze aanbieders kunt importeren in Nextcloud. Configuratie is behoorlijk complex en dat er niet voor elke aanbieder een app is. In deze workshop heb ik daarom voor een andere en meer universele benadering gekozen om de bestanden die bij deze aanbieders opgeslagen zijn in Nextcloud te integreren. Hierbij wordt gebruik gemaakt van Samba, rclone en fuse.
Samba gebruik je om in Nextcloud je Linux home directory te delen. Met behulp van Rclone mount je de opslag van de externe aanbieder in een directory van je Linux home directory. Fuse gebruik je om ervoor te zorgen dat je als gebruiker zonder rootrechten de opslagruimte van aanbieders in je home directory kunt koppelen.
Eerste stappen
Samba, rclone en fuse installeer je via het commando: sudo apt install rclone fuse samba. Het configuratiebestand van Samba is opgeslagen in de directory /etc/samba met de naam smb.conf.
Ga in smb.conf naar het deel dat met ‘[homes]’ begint en zorg ervoor dat de waarden uit listing 1 komen te staan. Aan de standaard configuratie van Samba hoeft niets veranderd te worden. Sla smb.conf op en herstart Samba: sudo systemctl restart smbd.service
Voeg de Linux gebruikersnamen toe aan Samba:
sudo smbpasswd -a linuxmag
smbpasswd vraagt welk wachtwoord voor deze gebruiker ingesteld moet worden. Maak in Nextcloud een persoonlijke externe opslag aan van het type ‘SMB / CIFS’. De host is ‘localhost’. De naam van de share is ‘homes’. Je gebruikt de gebruikersnaam en wachtwoord die je net bij smbpasswd gebruikt hebt.
Rclone configureren
Uitgangspunt voor deze workshop is dat je op je Nextcloud server geen grafische omgeving hebt met een webbrowser. Met behulp van het commando ‘rclone config’ configureer je per aanbieder de externe opslag. Nadat je dit commando ingetypt hebt, maak je een nieuwe configuratie aan door het intoetsen van de toets ‘n’ gevolgd door de enter toets. Nadat je hiervoor gekozen hebt, vraagt rclone om de naam van de externe opslag. Het beste kun je hier een naam zonder spaties intypen. Daarna krijg je een lijst van welke types externe opslag je kunt configureren. Deze lijst ziet er rommelig uit (zie afbeelding 6). Type het nummer in van de dienst die je wilt configureren. Bij ‘Oauth Client ID’ en ‘Oauth Client Secret’ hoef je niets in te vullen. We gaan nu Dropbox, Google Drive, Onedrive en Google Photos koppelen.
Dropbox
De vraag ‘Edit advanced config? (y/n)’ beantwoord je met een ‘n’ of alleen een enter. De vraag ‘Use auto config?’ beantwoord je met een ‘n’. Rclone vraagt nu op een computer waarop een webbrowser geïnstalleerd is Rclone te installeren. Onder Linux Mint installeer je Rclone eenvoudig via programmabeheer. Daarna type je in het terminalvenster:
rclone authorize "dropbox"
Je webbrowser opent de Dropbox site. Geef toestemming om Rclone toegang te geven tot je bestanden en mappen in Dropbox (afbeelding 7). Je krijgt daarna in je terminalvenster een token terug. De token begint met een ‘{‘ en eindigt met ‘}’. Kopieer dit token en plak deze op de regel ‘result>’ op je Nextcloud server gevolgd door een Enter. Type daarna een ‘y’ in en de Dropbox configuratie voor Rclone is afgerond.
Google Drive
Rclone vraagt op welke wijze je toegang wilt hebben tot Google Drive. Bij ‘root_folder_id>’ geef je normaal gesproken een Enter. Dit geldt ook voor de ‘service_account_file’. Geef een ‘n’ bij ‘Edit advanced config? (y/n)’. Bij ‘Use auto config?’ type je een ‘n’ in. Je krijgt nu een link die je plakt in je webbrowser. Log in de webbrowser in met je Google account en na het inloggen vraagt Google of je Rclone toestemming wilt geven tot je bestanden in Google Drive (afbeelding 8). Na het geven van toestemming krijg je een code die je vanuit de browser kopieert en plakt in het terminal scherm van je Nextcloud server. De vraag ‘Configure this as a team drive?’ beantwoord je met een ‘n’. Sluit af met ‘y’.
Onedrive
De vraag ‘Edit advanced config? (y/n)’ beantwoord je in de meeste gevallen met een ‘n’. Bij de vraag ‘Use auto config?’ geef je een ‘n’ als antwoord. Rclone vraagt nu om op het terminal venster van een computer waar je een webbrowser geïnstalleerd hebt het volgende commando in te typen (zonder aanhalingstekens bij Onedrive!): rclone authorize onedrive
Je webbrowser opent nu de Microsoft site. Na het ingeven van je loginnaam en wachtwoord krijg je in het terminalvenster een access token dat begin met ‘{‘ en eindigt met ‘}’. Kopieer dit token en plak deze code in het terminalvenster van je Nextcloud server. Bij mij zag ik een foutmelding na het ingeven van deze code (bovenaan afbeelding 9), maar deze lijkt niet cruciaal te zijn. Rclone vraagt vervolgens om een type opslag bij Microsoft. In de meeste gevallen betreft dit ‘OneDrive Personal or Business’. Na het ingeven van het nummer laat Rclone een lijst zien met de drives. Na het ingeven van het drivenummer, vraagt Rclone nogmaals een bevestiging van de ingegeven drive. Tot slot krijg je een overzicht van je OneDrive configuratie die je bevestigt met een ‘y’.
Google Photos
Onder Debian 10.7 wordt standaard Rclone versie 1.45 geïnstalleerd. Als je Google Photos via Nextcloud wilt benaderen, heb je een recentere versie van Rclone nodig. Deze installeer je eenvoudig als volgt via de Rclone website:
– Ga naar: https://rclone.org/downloads/
– Klik met de rechter muisknop op de .deb versie van het soort Linux systeem dat je gebruikt en kies vervolgens voor “Koppelingslocatie kopiëren”
– Type in het terminal venster van je Nextcloud server:
wget en plak daarna de gekopieerde url van Rclone
– Installeer de gedownloade Rclone:
sudo apt install ./naam_van_gedownloade_rclone.deb
Na keuze voor Google Photos (en Enter voor ‘Oauth Client id’ en ‘Oauth Client Secret’) vraagt Rclone of je Google Photos met lees of lees- en schrijfrechten wilt koppelen. Geef ‘true’ voor alleen lezen rechten en een ‘false’ voor lezen en schrijven. Zet de schrijfrechten alleen aan als je goed weet hoe de opslagstructuur van Google Photos werkt. Bij ‘Edit advanced config? (y/n)’ en ‘Use auto config?’ geef je een ‘n’ in. Kopieer de link naar je webbrowser. Na het inloggen vraagt Google of Rclone je foto’s mag bekijken en beheren. Klik twee keer op ‘Toestaan’. Kopieer de code die je daarna krijgt en plak die in het terminal venster waarin rclone config draait. Geef tot slot een ‘y’ en bevestig de configuratie.
Bestanden koppelen
Deze stap bestaat uit het testen of de configuratie voor het koppelen van opslagruimtes van externe aanbieders goed is gegaan. Neem eerst van de aanbieders van externe opslag die je geconfigureerd hebt regel 1 t/m 4 over van listing 2 om de directory’s voor deze aanbieders aan te maken. Vervolgens neem je uit listing 2 de commando’s uit regel 5 t/m 8 over om het bestandssysteem van de externe aanbieder de betreffende directory in je home directory te koppelen. Na ‘mount’ staat de naam die je via rclone config aan de externe opslag hebt gegeven. Standaard kan alleen root directory’s koppelen. Dit pas je aan door in /etc/fuse.conf het ‘#‘ teken weg te halen voor ‘#user_allow_other’ door via sudo dit bestand aan te passen.
Zodra je de ‘rclone mount’ opdracht gegeven hebt, krijg je geen opdrachtprompt meer terug. Om te testen of je in de betreffende directory in je homedirectory nu toegang hebt tot de bestanden van de externe aanbieder, moet je nog een keer op je Nextcloud server inloggen.
Systemd service
Als de koppelingen naar behoren werken, neem je listing 3 over en sla je dit bestand (als root) op als /etc/systemd/system/rclonemount_naamexterneaanbieder.service. In regel 9 configureer je de externe opslagdienst (zie regels 5 t/m 8 van listing 2). Rclone mount een directory niet via systemd als nog een andere mountopdracht niet afgerond is. Daarom stel je in regel 8 een vertraging in (in seconden). Met 15 seconden verschil starten bij mij alle systemd services zonder problemen. Om rclonemount_naamexterneaanbieder te starten en bij het opstarten automatisch te laten activeren type je:
sudo systemctl daemon-reload sudo systemctl start rclonemount_naamexterneaanbieder.service sudo systemctl enable rclonemount_naamexterneaanbieder.service
Opslagaanbieders
In Nextcloud zie je nu de externe aanbieders als subdirectory onder de eerder aangemaakte koppeling naar je Linux home directory. Het ook mogelijk om per externe aanbieder een koppeling aan te maken.
Tot slot
De koppeling met de externe aanbieders is niet altijd even snel. Ook werkte bij mij het bekijken van Google Photos via Nextcloud niet, maar de foto’s waren wel te downloaden. Het probleem met de snelheid van koppeling met externe aanbieders is op te lossen door met de desktop app je Nextcloud directory van de server te synchroniseren. Je moet dan wel de koppeling met externe mappen in je desktop app aanzetten. Via deze link kun je een een Virtualbox image van Nextcloud downloaden om meteen aan de slag te gaan. Ook staan hier de in deze workshop vermelde listings.