Network-Attached Storage (NAS)

Start dit hoofdstuk met een nieuwe reservekopie van de Basisimage.

Of je je Raspberry Pi nu gaat gebruiken als mediacenter, gamemachine of dedicated ontwikkel-pc: het is erg handig om bestanden op je Pi te delen en er vanaf andere computers bij te kunnen. De Raspberry Pi staat standaard al goed ingesteld voor allerlei scenario's, maar de optie om de inhoud van je gebruikersmap (home-folder) binnen je lokale netwerk te delen is niet geactiveerd. Dit kunnen we eenvoudig met SSH oplossen (zie het hoofdstuk Secure Shell), maar wordt nog niet volledig door Windows ondersteund. Met Samba is het echter niet al te moeilijk om dat voor elkaar te krijgen. Daarenboven kan je Samba gebruiken onder Linux, Windows en macOS: het is dus platformonafhankelijk. Je kunt dan altijd bij je media, scripts en documenten vanaf een andere pc in je netwerk.

Installatie

Zoals steeds zorgen we dat Raspberry Pi OS up to date is:

pi@raspberrypi:~ $ sudo apt update && sudo apt upgrade
[sudo] wachtwoord voor pi:  
Geraakt:1 http://deb.debian.org/debian trixie InRelease
Ophalen:2 http://deb.debian.org/debian trixie-updates InRelease [47,3 kB]
Ophalen:3 http://deb.debian.org/debian-security trixie-security InRelease [43,4 kB]             
Ophalen:4 http://deb.debian.org/debian-security trixie-security/main arm64 Packages [225 kB]  
Ophalen:5 http://deb.debian.org/debian-security trixie-security/main armhf Packages [206 kB]                
Ophalen:6 http://deb.debian.org/debian-security trixie-security/main Translation-en [135 kB]                   
Ophalen:7 http://archive.raspberrypi.com/debian trixie InRelease [54,8 kB]                                          
Ophalen:8 http://archive.raspberrypi.com/debian trixie/main arm64 Packages [463 kB]
1.174 kB opgehaald in 1s (1.476 kB/s)
Alle pakketten zijn up-to-date.            
Samenvatting:                              
 Opwaarderen: 0, Installeren: 0, Verwijderen: 0, Niet opwaarderen: 0

Om daarna Samba te installeren:

pi@raspberrypi:~ $ sudo apt install samba samba-common-bin
Installeren:                               
 samba  samba-common-bin

Installeren van vereisten:
 attr            python3-click      python3-hpack       python3-markdown  samba-ad-dc         winbind
 libnss-winbind  python3-dnspython  python3-httpcore    python3-samba     samba-ad-provision
 libpam-winbind  python3-gpg        python3-httpx       python3-sniffio   samba-common
 liburing2       python3-h11        python3-hyperframe  python3-talloc    samba-dsdb-modules
 python3-anyio   python3-h2         python3-ldb         python3-tdb       tdb-tools

Voorgestelde pakketten:
 python3-trio     python-markdown-doc  ufw             samba-vfs-glusterfs  bind9utils  heimdal-clients
 python3-aioquic  ctdb                 samba-vfs-ceph  bind9                ldb-tools

Samenvatting:
 Opwaarderen: 0, Installeren: 28, Verwijderen: 0, Niet opwaarderen: 0
 Downloadgrootte: 8.079 kB
 Benodigde ruimte: 70,0 MB / 6.449 MB beschikbaar

Doorgaan? [J/n]  
Ophalen:1 http://deb.debian.org/debian-security trixie-security/main arm64 samba-common all 2:4.22.8+dfsg-0+deb13u2 [63,0 kB]
Ophalen:2 http://deb.debian.org/debian-security trixie-security/main arm64 samba-common-bin arm64 2:4.22.8+dfsg-0+deb13u2 [1.250 kB]
Ophalen:3 http://deb.debian.org/debian trixie/main arm64 liburing2 arm64 2.9-1 [26,2 kB]
...
Ophalen:26 http://deb.debian.org/debian trixie/main arm64 python3-markdown all 3.7-2 [85,2 kB]
Ophalen:27 http://deb.debian.org/debian-security trixie-security/main arm64 samba-ad-provision all 2:4.22.8+dfsg-0+deb13u2 [506 kB]
Ophalen:28 http://deb.debian.org/debian-security trixie-security/main arm64 tdb-tools arm64 2:1.4.13+samba4.22.8+dfsg-0+deb13u2 [65,0 kB]
8.079 kB opgehaald in 0s (16,8 MB/s)   
Voorheen niet geselecteerd pakket samba-common wordt geselecteerd.
(Database wordt ingelezen ... 142012 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../00-samba-common_2%3a4.22.8+dfsg-0+deb13u2_all.deb wordt voorbereid...
Bezig met uitpakken van samba-common (2:4.22.8+dfsg-0+deb13u2) ...
...
Voorheen niet geselecteerd pakket tdb-tools wordt geselecteerd.
Uitpakken van .../27-tdb-tools_2%3a1.4.13+samba4.22.8+dfsg-0+deb13u2_arm64.deb wordt voorbereid...
Bezig met uitpakken van tdb-tools (2:1.4.13+samba4.22.8+dfsg-0+deb13u2) ...
Instellen van python3-sniffio (1.3.1-1) ...
Instellen van python3-anyio (4.8.0-3) ...
Instellen van python3-hyperframe (6.0.0-1) ...
...
Instellen van libnss-winbind:arm64 (2:4.22.8+dfsg-0+deb13u2) ...
First installation detected, adding winbind to /etc/nsswitch.conf...
Instellen van libpam-winbind:arm64 (2:4.22.8+dfsg-0+deb13u2) ...
Instellen van samba-ad-dc (2:4.22.8+dfsg-0+deb13u2) ...
'omleiding van /lib/systemd/system/samba-ad-dc.service naar /lib/systemd/system/samba-ad-dc.service.usr-is-merged door samba-ad-dc' wordt verwijderd
Created symlink '/etc/systemd/system/samba.service' → '/usr/lib/systemd/system/samba-ad-dc.service'.
Created symlink '/etc/systemd/system/multi-user.target.wants/samba-ad-dc.service' → '/usr/lib/systemd/system/samba-ad-dc.service'.
Bezig met afhandelen van triggers voor libc-bin (2.41-12+rpt1+deb13u3) ...
Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...

Instellen

Windows 11 24H2 en later

Microsoft heeft vanaf Windows 11 24H2 een grote verandering aan het SMB protocol aangebracht, waardoor heel wat NAS systemen niet meer werken. Zie de Microsoft nota. In de praktijk worden vanaf Windows 11 24H2 alle niet door een Windows account ondertekende Samba verbindingen geweigerd. Door echter op de Samba server een Samba gebruiker aan te maken en deze als Windows account aan te bieden, kunnen we terug een NAS met Windows 11 verbinden.

Daarvoor maken we een bestand aan waar we een Raspberry Pi koppelen aan een Windows account.

pi@raspberrypi:~ $ sudo nano /etc/samba/users.map

Plaats in dit bestand de volgende regel:

pi=pinda.net@outlook.com

Waarbij pi een Raspberry Pi gebruiker is, pinda.net@outlook.com is het Windows account van het Windows systeem die de NAS moet bedienen. M.a.w. vervang pinda.net@outlook door het op jouw Windows systeem gebruikte account.

Nu kunnen we de Samba server gaan vertellen hoe hij zijn werk moet doen. Dat doe je door je voorkeursinstellingen in Samba's configuratiebestand te zetten. Dat bestand heet smb.conf en staat in de map /etc/samba.

pi@raspberrypi:~ $ sudo nano -B /etc/samba/smb.conf

Het configuratiebestand bevat veel informatie en dat kan wat intimiderend overkomen, maar je hoeft maar een paar dingen te wijzigen en toe te voegen. Eerst zorgen we dat de Samba server ons /etc/samba/users.map bestand gebruikt.

Om de juiste sectie te vinden, druk je in nano op Ctrl+w en typ je global in en daarna op Return. Op die manier kom je bij de eerste vermelding van het woord global. Gebruik de pijltjestoetsen om tussen de regels te wisselen.

Plaats in de sectie [global] de regel met de username map instelling:

[global]

  username map = /etc/samba/users.map
 
## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
  workgroup = WORKGROUP

Werkgroep

Daarna moet je controleren of de juiste werkgroep ingesteld staat. Als je je netwerk niet anders hebt ingesteld, is dat WORKGROUP.

Thuismap

Standaard kan je niet bladeren, m.a.w. mappen openen. Deze extra beveiligingsmaatregel zorgt echter voor teveel ongemak. Om dit aan te passen ga je in het configuratiebestand op zoek naar de sectie [homes] waar de instellingen voor de gebruikersmappen staan. Door de instelling browseable te activeren, geef je toestemming om te bladeren.

   browseable = yes

Daarenboven heb je standaard enkel leesrechten, je kunt met andere woorden de inhoud van gedeelde mappen en bestanden inkijken, maar niet aanpassen. Ook het aanmaken van nieuwe mappen en bestanden is onmogelijk. Dit heeft weerom te maken met beveiliging van gegevens. Nu lijkt het mij vanzelfsprekend dat je na het aanmelden als gebruiker met een bijhorend wachtwoord je je bestanden en mappen moet kunnen beheren, m.a.w. je hebt schrijfrechten nodig. Door de schakelaar read only niet enkel tot lezen te beperken, krijg je lees- en schrijfrechten.

   read only = no

Ziezo nu kan je reeds mappen en bestanden aanmaken, aanpassen en dus ook verwijderen, kortom alle beheeropdrachten uitvoeren. Sla de aanpassingen op en sluit nano af.

Om het Samba configuratiebestand te controleren op fouten bekijk je de eerste 10 regels van de opdracht testparm -s:

pi@raspberrypi:~ $ testparm -s | head
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Weak crypto is allowed by GnuTLS (e.g. NTLM as a compatibility fallback)

Server role: ROLE_STANDALONE

# Global parameters
[global]
       log file = /var/log/samba/log.%m
       logging = file
       map to guest = Bad User
       max log size = 1000
       obey pam restrictions = Yes
       pam password change = Yes
       panic action = /usr/share/samba/panic-action %d
       passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

Wachtwoorden instellen

Door die configuratie heb je dan een laagje beveiliging in de vorm van een wachtwoord klaargezet. Dan moet je een wachtwoord instellen om de beveiliging te kunnen gebruiken. Je kunt daarbij op twee verschillende manieren te werk gaan:

  1. Je gebruikt hetzelfde wachtwoord als jouw Microsoft account op jouw Windows systeem. Dit heeft als voordeel dat je op jouw Windows systeem nooit geen wachtwoord hoeft in te geven om een verbinding met de NAS te maken, maar is minder veilig.
  2. Je gebruikt een ander wachtwoord wat veiliger is, maar ook minder gebruiksvriendelijk. Bij het gebruik van de NAS op jouw Windows systeem moet je dan wel het wachtwoord ingeven.

Wat je ook kiest, het te gebruiken wachtwoord stel je in met de volgende opdracht:

pi@raspberrypi:~ $ sudo smbpasswd -a pi
New SMB password:
Retype new SMB password:
Added user pi.

Je wordt gevraagd om een nieuw wachtwoord blind in te voeren en dat te bevestigen. Dat is vervolgens je gebruikersnaam en wachtwoord om je bestanden te kunnen benaderen.

Met de vorige opdracht heb je de Samba gebruiker pi aangemaakt met een bijhorend wachtwoord. Om een wachtwoord van een bestaande Samba gebruiker aan te passen, gebruik je de smbpasswd zonder de -a (add user) optie.

pi@raspberrypi:~ $ sudo smbpasswd pi
New SMB password:
Retype new SMB password:

Samba herstarten

De laatste stap is het simpelweg herstarten van Samba om de nieuwe instellingen van kracht te laten worden.

pi@raspberrypi:~ $ sudo systemctl restart smbd.service

Windows Verkenner

Windows heeft naam gemaakt en de wereld veroverd door zijn compatibiliteit met vorige versies, maar dit heeft een keerzijde. In de beginjaren van de computer had je niets te vrezen van het internet, 99% van de computers was er niet op aangesloten. Toen de computers massaal het internet op gingen, moest het delen van mappen en bestanden met extra lagen beveiligd worden. Deze extra lagen kon je achterwege laten (compatibel met vroeger) of toepassen en veilig het internet op gaan. Het gebruik van extra lagen zorgde niet alleen voor compatibiliteit, maar ook voor een ongeziene complexiteit. Bij elke Windowsversie verschenen extra lagen en werd het systeem complexer.

Bij het starten van Windows Verkenner kan je via Netwerk het lokale netwerk laten scannen naar Windows compatibele apparaten. Afhankelijk van de grootte van het netwerk kan dit een tijd in beslag nemen. Na een tijdje verschijnt ook de naam van jouw Raspberry Pi tussen de Computers. Mocht dit niet zo zijn, dan herkent Windows op het netwerk aangesloten apparaten door gebruik te maken van Web Service Discovery. Dit is de vervanger van het verouderde NetBios systeem, dat stilaan uit Windows wordt verwijderd. Samba werkt nog niet met Web Service Discovery, waardoor onze NAS niet altijd in Windows Verkenner wordt weergegeven. Tot het nieuwe Windows Web Service Discovery in Samba is geïntegreerd, kan je de volgende software op jouw Raspberry Pi installeren en gebruiken:

  1. Download het script (software) met de opdracht:

    pi@raspberrypi:~ $ wget https://raw.githubusercontent.com/christgau/wsdd/master/src/wsdd.py
    --2026-07-06 10:45:16--  https://raw.githubusercontent.com/christgau/wsdd/master/src/wsdd.py
    Herleiden van raw.githubusercontent.com (raw.githubusercontent.com)... 2606:50c0:8001::154, 2606:50c0:8003::154, 2606:50c0:8000::154, ...
    Verbinding maken met raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8001::154|:443... verbonden.
    HTTP-verzoek is verzonden; wachten op antwoord... 200 OK
    Lengte: 79923 (78K) [text/plain]
    Wordt opgeslagen als: ‘wsdd.py’

    wsdd.py                         100%[=======================================================>]  78,05K  --.-KB/s    in 0,01s    

    2026-07-06 10:45:16 (7,94 MB/s) - '‘wsdd.py’' opgeslagen [79923/79923]

  2. Verplaats het script naar de softwaremap van de Raspberry Pi:
    pi@raspberrypi:~ $ sudo mv wsdd.py /usr/bin/wsdd
  3. Dit script is voor Raspberry Pi OS nog steeds een eenvoudig tekstbestand. Om dit script als programma te kunnen starten, moeten we het uitvoerrechten geven (eXecutable maken):
    pi@raspberrypi:~ $ sudo chmod +x /usr/bin/wsdd
  4. We testen het script door het uit te voeren:

    pi@raspberrypi:~ $ /usr/bin/wsdd
    2026-07-06 10:47:48,938:wsdd WARNING(pid 4048): no interface given, using all interfaces

    En in Windows Verkenner de inhoud van het onderdeel Netwerk te vernieuwen. Jouw Raspberry Pi NAS wordt door deze extra software zichtbaar in Verkenner.
  5. Stop het wsdd script met de toetscombinatie Ctrl+C. Druk daarna op Enter om de prompt terug tegen de kant van de terminal te plaatsen.
  6. Tijd om het wsdd script automatisch te starten bij het opstarten van de Raspberry Pi:
    1. Download het systemd startscript:

      pi@raspberrypi:~ $ wget https://raw.githubusercontent.com/christgau/wsdd/master/etc/systemd/wsdd.service
      --2026-07-06 10:51:12--  https://raw.githubusercontent.com/christgau/wsdd/master/etc/systemd/wsdd.service
      Herleiden van raw.githubusercontent.com (raw.githubusercontent.com)... 2606:50c0:8002::154, 2606:50c0:8000::154, 2606:50c0:8003::154, ...
      Verbinding maken met raw.githubusercontent.com (raw.githubusercontent.com)|2606:50c0:8002::154|:443... verbonden.
      HTTP-verzoek is verzonden; wachten op antwoord... 200 OK
      Lengte: 876 [text/plain]
      Wordt opgeslagen als: ‘wsdd.service’

      wsdd.service                    100%[=======================================================>]     876  --.-KB/s    in 0s       

      2026-07-06 10:51:12 (45,9 MB/s) - '‘wsdd.service’' opgeslagen [876/876]

    2. Verplaats het opstartscript naar de map met opstartscripts:
      pi@raspberrypi:~ $ sudo mv wsdd.service /etc/systemd/system/
    3. Test het opstartscript door het te starten:
      pi@raspberrypi:~ $ sudo systemctl start wsdd.service
    4. Controleer de meldingen van het opstartscript:

      pi@raspberrypi:~ $ sudo systemctl status wsdd.service
      wsdd.service - Web Services Dynamic Discovery host daemon
          Loaded: loaded (/etc/systemd/system/wsdd.service; disabled; preset: enabled)
          Active: active (running) since Mon 2026-07-06 10:53:37 CEST; 46s ago
      Invocation: 026cd9ef5a014973b75b208bf1529b9b
            Docs: man:wsdd(8)
        Main PID: 4155 (python3)
           Tasks: 1 (limit: 4805)
             CPU: 161ms
          CGroup: /system.slice/wsdd.service
                  └─4155 python3 /usr/bin/wsdd --shortlog --chroot=/run/wsdd

      jul 06 10:53:37 raspberrypi systemd[1]: Started wsdd.service - Web Services Dynamic Discovery host daemon.
      jul 06 10:53:37 raspberrypi (wsdd)[4155]: wsdd.service: Referenced but unset environment variable evaluates to an empty string: WSDD_PARAMS
      jul 06 10:53:38 raspberrypi wsdd[4155]: WARNING: no interface given, using all interfaces

    5. En onze Raspberry Pi NAS verschijnt terug in de Windows Verkenner Netwerkomgeving.
    6. Nu de test geslaagd is, nemen we het startscript op in het opstartsysteem van Raspberry Pi OS:
      pi@raspberrypi:~ $ sudo systemctl enable wsdd.service
      Created symlink /etc/systemd/system/multi-user.target.wants/wsdd.service → /etc/systemd/system/wsdd.service.
  7. Meer info over wsdd op de webpagina van de ontwikkelaar op GitHub. Uit deze info blijkt dat wsdd nu is opgenomen in Raspberry Pi OS (Debian) 13 Trixie en je deze software kunt installeren met sudo apt install wsdd2. Wij gebruikten de GitHub versie omdat deze recenter is.

Herstart je Samba op de Raspberry Pi opnieuw en herscan je het netwerk in Windows Verkenner met Netwerk vernieuwen of een druk op F5. Open de Raspberry Pi computer in Windows Verkenner.

Indien de map nobody verschijnt of de volgende foutmelding verschijnt:
Gebruikersmap
, moet je zelf in de adresbalk de volgende URL invoeren: \\RASPBERRYPI\pi.
Er verschijnt een dialoogvenster waar je de gebruikersnaam en bijhorende wachtwoord moet ingeven.
Gebruikersnaam en wachtwoord
Mocht je ooit de neiging hebben om een vinkje te plaatsen bij Mijn referenties onthouden, hou er dan wel rekening mee dat iedereen zomaar zonder wachtwoord vanaf deze computer toegang heeft tot de gebruikersmap van pi op de Raspberry Pi.

Let ook op het adres van gedeelde gebruikersmap van pi op de Raspberry Pi. \\RASPBERRYPI\pi waarbij de \\ betekenen dat er een computernaam (hostname) volgt (RASPBERRYPI) en de \ het scheidingsteken voor de mappen is (pi). Enkel Windows gebruikt backslashes, vervang op andere besturingssystemen de backslashes door gewone slashes (/). Je kunt dus steeds een Samba gedeelde map bereiken door het correcte adres in de adresbalk te typen. Indien je dit altijd doet is dit veiliger en kan je de wssd software uitschakelen en/of verwijderen.

Gebruikersmap Dolphin
Praktijk opdracht
  1. We kunnen nu wel de gebruikersmap van pi beheren, maar dit maakt van onze Raspberry Pi nog geen NAS. Terug gaan we het principe toepassen waarbij het Raspberry Pi OS besturingssysteem op de SD-kaart staat en onze gegevens op een externe USB schijf met voeding (je kunt voor de opdracht ook een USB-stick gebruiken):
    1. Plug de USB-stick in de Raspberry Pi.
    2. De eigenschappen van de USB-stick geef je weer met:

      pi@raspberrypi:~ $ sudo blkid
      [sudo] wachtwoord voor pi:  
      /dev/mmcblk0p1: LABEL_FATBOOT="bootfs" LABEL="bootfs" UUID="18D4-404A" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="0836e41f-01"
      /dev/mmcblk0p2: LABEL="rootfs" UUID="ed6c7f1b-238b-41a1-b4b6-7bcdef3270fe" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="0836e41f-02"
      /dev/loop0: TYPE="swap"
      /dev/sda1: LABEL_FATBOOT="BOOT" UUID="1234-5678" BLOCK_SIZE="512" TYPE="vfat"
      /dev/zram0: LABEL="zram0" UUID="bef38020-f8dd-41c6-872b-ee0d34db8382" TYPE="swap"

      De blkid opdracht toont twee opslagmedia met in totaal drie opslagruimtes (partities). mmcblk0 is de SD-kaart en deze heeft twee partities: p1 voor het opstarten (bootfs) van de Pi en p2 met het Raspberry Pi OS besturingssysteem (rootfs). sda is de USB-stick. USB-sticks gebruiken in tegenstelling tot USB schijven niet altijd partities. USB-sticks zonder partities hebben daardoor steeds één grote partitie met de naam sda. M.a.w. op USB schijven heeft sda minstens één partitie met de naam sda1. De USB-Stick in het voorbeeld werd als USB schijf geformatteerd en heeft dus een sda1 partitie. Elke schijf wordt gekenmerkt door een uniek nummer, zijn UUID. Bruikbare partities zijn geformatteerd met een bepaald bestandssysteem (TYPE), zo gebruikt de boot partitie van de SD-kaart vfat, het Raspberry Pi OS systeem ext4 en de USB-stick vfat.
    3. Maak een map om de inhoud van de USB-stick beschikbaar te maken:
      pi@raspberrypi:~ $ sudo mkdir /media/SambaDrive
    4. Uit veiligheidsoverwegingen gaan we de inhoud van de USB-stick benaderen als gebruiker pi, als je als root (systeembeheerder) werkt, krijgt een eventuele hacker direct toegang als systeembeheerder met alle gevolgen van dien. Jammer genoeg werken computersystemen met getallen (ID's) en niet met namen, de overeenkomstige ID's voor de gebruikers- en groepsnaam van de pi gebruiker achterhaal je met:

      pi@raspberrypi:~ $ id pi
      UID=1000(pi) GID=1000(pi) groepen=1000(pi),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),996(input),992(render),102(netdev),989(spi),988(i2c),986(gpio),108(lpadmin)

      De UID (User Identifier) en de GID (Group Identifier) stellen de ID's van de gebruiker en de hoofdgroep waarvan deze gebruiker lid is voor.
    5. Om de inhoud van de USB-stick in de mappenstructuur van de Raspberry Pi op te nemen, moet je het configuratiebestand verantwoordelijk voor de bestandssystemen aanpassen. Het /etc/fstab (filesystem table) pas je als systeemgebruiker aan met de nano editor.
      pi@raspberrypi:~ $ sudo nano /etc/fstab
      Voeg de volgende regel toe:

      UUID=1234-5678 /media/SambaDrive vfat rw,uid=1000,gid=1000 0 0

      Vervang daarbij de UUID door deze van jouw USB-stick. /media/SambaDrive is de map waar de inhoud van de USB-stick tevoorschijn zal komen. vfat is het op de USB-stick gebruikte bestandssysteem. De map krijgt de volgende eigenschappen: rw (readwrite, dus lees- en schrijfrechten) bepalen de toegangsrechten, uid en gid zijn de ID's van de gebruiker die toegang tot de map krijgt. Let op: dit configuratiebestand moet eindigen met een lege regel. Sla de aanpassing op en sluit de teksteditor nano af.
    6. Voor de zekerheid testen we de nieuwe configuratie:
      pi@raspberrypi:~ $ sudo mount -a
      mount: (hint) your fstab has been modified, but systemd still uses
             the old version; use 'systemctl daemon-reload' to reload.
      Ok, eerst systemd op de hoogte brengen van de aangepaste fstab:
      pi@raspberrypi:~ $ sudo systemctl daemon-reload
      En we proberen nogmaals:
      pi@raspberrypi:~ $ sudo mount -a
      Geen nieuws is opnieuw goed nieuws, anders pas je /etc/fstab aan tot deze geen fouten meer bevat. Aangezien dit configuratiebestand nodig is bij het opstarten van de Pi, is het belangrijk deze test uit te voeren, anders kan het opstarten afgebroken worden. Ook als je de stick verwijderd of defect raakt, zal de Raspberry Pi niet meer starten.
    7. Herstart de Raspberry Pi met:

      pi@raspberrypi:~ $ sudo systemctl reboot

    8. Bekijk de inhoud van de map met:
      pi@raspberrypi:~ $ ls -l /media/SambaDrive/
      totaal 0
  2. Nu de USB-stick beschikbaar is, moeten we Samba instellen om er gebruik van te maken:
    1. Open als systeembeheerder het Samba configuratiebestand met een teksteditor.
      pi@raspberrypi:~ $ sudo nano -B /etc/samba/smb.conf
    2. Voeg op het einde van het configuratiebestand de volgende sectie toe:

      [NAS]
        comment = Network-Attached Storage
        path = /media/SambaDrive
        read only = no
        public = yes
        force user = pi

      Daarbij wordt de naam van de sectie (NAS) in Windows Verkenner in kleine letters weergeven als de naam van de gedeelde map. De Comment eigenschap is enkel als commentaar bedoeld en mag je dus vrij kiezen. De path eigenschap bepaald het pad waar de inhoud van de gedeelde map op de Raspberry Pi opgeslagen wordt. De read only schakelaar zorgt voor lees- en schrijfrechten. De public schakelaar zorgt dat iedereen zonder wachtwoord toegang krijgt tot de gedeelde map. De force user eigenschap zorgt dat je in de gedeelde map steeds als gebruiker pi werkt, dit moet overeenkomen met de gebruikers ID's opgegeven in het /etc/fstab configuratiebestand.
    3. Herstart samba
      pi@raspberrypi:~ $ sudo systemctl restart smbd.service
    4. En test de nieuwe Samba configuratie in Windows Verkenner.
  3. FreeFileSync

    Een NAS is niet enkel handig om bestanden te delen, maar ook om reservekopieën te maken en dan nog het liefst automatisch. FreeFileSync kan op geregelde tijdstippen mappen en bestand synchroniseren naar een map op een ander systeem. Syncthing (zie verder) gaat nog een stuk verder en maakt bij elke aanpassing direct een kopie op een ander systeem. Daarenboven kan je met Syncthing terugkeren in de tijd. Syncthing onthoud elke aanpassing en werkt als een tijdmachine (vandaar de naam timemachine). Tijdmachines zijn complexer en dus moeilijker te configureren, maar eenmaal ze werken, gaat alles vanzelf. We beginnen met FreeFileSync.
    1. Surf in Windows naar de FreeFileSync webpagina en download het recentste installatie programma.
    2. Installeer FreeFileSync.
    3. Maak in de map Documenten een map met de naam Bron.
    4. Kopieer naar of maak in de map Documenten\Bron een tiental documenten.
    5. Maak op uw Raspberry Pi NAS de map Backup.
    6. Start de toepassing FreeFileSync vanuit de map C:/Program Files/FreeFileSync/. Hoewel FreeFileSync veel instelmogelijkheden en functies heeft, gaan we een eenvoudige synchronisatie uitvoeren:
      1. Plaats (sleep of blader) in de linkerkolom de Windows map Documenten\Bron.
      2. Plaats (sleep of blader) in de rechterkolom de map Backup op uw Raspberry Pi NAS.
      3. Selecteer met de knop Vergelijkings instellingen (F6) (blauw tandwiel) op het tabblad Synchronisatie (F8) de variant Bijwerken.
      4. Aan de hand van knoppen aan de rechterkant kan je nagaan wat er gebeurd bij het aanmaken (Maak), Bijwerken en Verwijderen van bestanden. Merk op dat als je bestanden verwijderd FreeFileSync niets doet, m.a.w. de backup blijft behouden. Pas dit aan naar een knop met een Prullenbak in de kolom Links (de bron). De synchronisatie variant verandert daardoor automatisch naar Aangepast.
      5. Bevestig de aanpassing met de knop .
      6. Klik op de knop (F5) om de uit te voeren bewerkingen te zien.
      7. Klik op de knop (F9) om de bewerkingen daadwerkelijk uit te voeren.
      8. Laat de synchronisatie uitvoeren.
      9. Controleer na het voltooien het Logboek.
      10. Sluit het venster met het overzicht.
      11. Controleer op de Raspberry Pi of de bestanden op de USB Stick staan. Dit kan via de Bestandsbeheerder of met behulp van de volgende opdracht:
        pi@raspberrypi:~ $ ls -l /media/SambaDrive/Backup/
        totaal 27680
        -rw-r--r-- 1 pi pi 5645367 24 aug  2022 '1 Basisbegrippen IT.pdf'
        -rw-r--r-- 1 pi pi 1607040 24 aug  2022 '1 Basisbegrippen Taak.pdf'
        -rw-r--r-- 1 pi pi 5769598 24 aug  2022 '2 Tekstverwerking Deel 1.pdf'
        -rw-r--r-- 1 pi pi  127677 24 aug  2022 '2 Tekstverwerking Deel 1 Taak.pdf'
        -rw-r--r-- 1 pi pi 4961061 24 aug  2022 '3 Rekenbladen Deel 1.pdf'
        -rw-r--r-- 1 pi pi  109141 24 aug  2022 '3 Rekenbladen Deel 1 Taak.pdf'
        -rw-r--r-- 1 pi pi 5526276 24 aug  2022 '4 Presentaties Deel 1.pdf'
        -rw-r--r-- 1 pi pi  244566 24 aug  2022 '4 Presentaties Deel 1 Taak.pdf'
        -rw-r--r-- 1 pi pi 4211135 24 aug  2022 '5 Databanken Deel 1.pdf'
        -rw-r--r-- 1 pi pi   84455 24 aug  2022 '5 Databanken Deel 1 Taak.pdf'
        -rw-r--r-- 1 pi pi     245  5 jul 18:56  sync.ffs_db
      12. Om later deze taak elke dag automatisch te laten uitvoeren, start je in het menu Bestand de opdracht Opslaan als batchtaak...:
        1. Accepteer de standaard instellingen.
        2. Sla de batchverwerking op in de map Documenten als Backup.ffs_batch.
      13. Sluit FreeFileSync af.
    7. Om dagelijks een Backup van de map Documenten\Bron te maken, ga je als volgt te werk:
      1. Start Taakplanner.
      2. Klik bij de Acties op Taak maken....
      3. Op het tabblad Algemeen:
        1. Geef je de taak een Naam, bijvoorbeeld FreeFileSync.
      4. Maak op het tabblad Triggers een Nieuwe trigger. Een trigger bepaald het moment waarop FreeFileSync gestart wordt:
        1. Start FreeFileSync Dagelijks.
        2. Bevestig de aanmaak van de nieuwe trigger.
      5. Maak op het tabblad Acties een nieuwe actie. Acties bepalen wat er bij een trigger moet gebeuren:
        1. De actie wordt Programma starten.
        2. Blader naar het FreeFileSync programmma ("C:\Program Files\FreeFileSync\FreeFileSync.exe") op uw computer.
        3. In het tekstvak Parameters toevoegen (optioneel) plaats je de daarstraks opgeslagen batchverwerking "C:\Users\gebruikersnaam\Documents\Backup.ffs_batch". Vervang daarbij gebruikersnaam door jouw eigen gebruikersnaam in Windows. Achterhaal de gebruikersnaam door in Windows het programma Terminal te starten. De gebruikersnaam verschijnt in de prompt achter C:\Users\.
        4. Bevestig de aanmaak van de nieuwe actie.
      6. Op het tabblad Instellingen activeer je de optie Als de taak mislukt, opnieuw opstarten elke:. En stel in dat er drie pogingen met een tussentijd van één uur worden uitgevoerd.
      7. Bevestig de aanmaak van de nieuwe taak.
      8. Selecteer in de Task Scheduler-bibliotheek de taak FreeFileSync.
      9. Om onze taak de testen, klik je in het rechter deelvenster op de Actie Uitvoeren.
      10. Indien FreeFileSync correct is opgestart en zijn taak heeft volbracht, verschijnt opnieuw het venster met een overzicht. Indien dit niet het geval is, pas je in de Taakplanner van de geopende taak FreeFileSync de Eigenschappen aan.
    8. Een laatste test:
      1. Pas een document in de map Documenten\Bron aan.
      2. Kopieer een extra document naar de map Documenten\Bron.
      3. Verwijder een document uit de map Documenten\Bron.
      4. Voer nogmaals via Taakplanner FreeFileSync uit.
      5. Zoals je merkt, zal FreeFileSync je waarschuwen bij probleemgevallen. Daar een NAS standaard geen Prullenbak heeft, negeer je het Prullenbak probleem op de Raspberry Pi.
      6. Controleer op de Raspberry Pi of de backup gelukt is (aangepaste, toegevoegde en verwijderde bestand). Het verwijderde bestand blijft op de Raspberry Pi NAS staan. Dit kan je aanpassen door de instellingen van de Backup sessie in FreeFileSync aan te passen. Een mooie extra oefening.
        1. Druk in FreeFileSync op de F8 sneltoets
        2. Activeer bij Verwijderen en overschrijven de optie Permanent.
        3. Bevestig de aanpassing en sla de batchtaak opnieuw onder dezelfde naam op in dezelfde map.
        en de batchverwerking opnieuw op te slaan.
      7. Als voorbereiding op de volgende opdracht, verwijder je de taak FreeFileSync uit de Taakplanner.
  4. Syncthing

    Syncthing is een vrij, open-source peer-to-peer applicatie om bestanden te synchroniseren. Het is beschikbaar voor Windows, Mac, Linux, iOS, Android, Solaris, Darwin en BSD, m.a.w. platformonafhankelijk. Het kan bestanden synchroniseren tussen apparaten in een lokaal netwerk en over het internet. Dit programma kan je het best vergelijken met BitTorrent Sync (geen open-source en hogere systeembelasting), Apple Time Machine (enkel voor Apple apparaten) en op internet diensten zoals Dropbox en Google Drive (traag door internetverbinding).
    1. Installeer Syncthing:

      pi@raspberrypi:~ $ sudo apt install syncthing -y
      [sudo] wachtwoord voor pi:  
      Installeren:                               
       syncthing

      Samenvatting:
       Opwaarderen: 0, Installeren: 1, Verwijderen: 0, Niet opwaarderen: 2
       Downloadgrootte: 7.469 kB
       Benodigde ruimte: 22,7 MB / 6.358 MB beschikbaar

      Ophalen:1 http://deb.debian.org/debian trixie/main arm64 syncthing arm64 1.29.5~ds1-2 [7.469 kB]
      7.469 kB opgehaald in 0s (15,4 MB/s)
      Voorheen niet geselecteerd pakket syncthing wordt geselecteerd.
      (Database wordt ingelezen ... 143501 bestanden en mappen momenteel geïnstalleerd.)
      Uitpakken van .../syncthing_1.29.5~ds1-2_arm64.deb wordt voorbereid...
      Bezig met uitpakken van syncthing (1.29.5~ds1-2) ...
      Instellen van syncthing (1.29.5~ds1-2) ...
      Bezig met afhandelen van triggers voor desktop-file-utils (0.28-1) ...
      Bezig met afhandelen van triggers voor hicolor-icon-theme (0.18-2) ...
      Bezig met afhandelen van triggers voor man-db (2.13.1-1) ...
      Bezig met afhandelen van triggers voor mailcap (3.74) ...

    2. Syncthing maakt bij zijn eerste start zelf een standaard configuratie aan. Voer daarvoor op de Raspberry Pi zelf de volgende opdracht uit:

      pi@raspberrypi:~ $ syncthing
      [start] 2026/07/06 15:42:29 INFO: syncthing v1.29.5 "Gold Grasshopper" (go1.24.2 linux-arm64) debian@debian 2025-04-20 21:21:27 UTC
      [start] 2026/07/06 15:42:29 INFO: Generating ECDSA key and certificate for syncthing...
      [start] 2026/07/06 15:42:29 INFO: Default folder created and/or linked to new config
      ...
      [YBXVV] 2026/07/06 15:43:00 INFO: New external port opened: external TCP address(es) [91.180.183.7:19068] to local address [::]:22000.
      [YBXVV] 2026/07/06 15:43:00 INFO: New external port opened: external TCP address(es) [91.180.183.7:56860] to local address [::]:22000.
      [YBXVV] 2026/07/06 15:43:00 INFO: Detected 2 NAT services

      De browser start automatisch op met de bedieningspagina van Syncthing. Indien de Chromium browser voor de eerste keer start, moet je wel nog een keyring wachtwoord aanmaken. Stel in of er Anonieme gebruikersstatistieken verstuurd mogen worden.
      1. Open het menu Acties en start de opdracht Instellingen.
      2. Standaard kan je Syncthing enkel bedienen vanuit een browser op de Raspberry Pi zelf, maar dat is erg onhandig, zeker als je er daarvoor een toetsenbord, muis en scherm moet op aansluiten. Dit doe je door het adres van waarop Syncthing is te bedienen uit te breiden van localhost (127.0.0.1) naar alle apparaten (ongedefinieerd of 0.0.0.0): Pas op het tabblad GUI het GUI-luisteradres aan naar 0.0.0.0:8384.
        De term localhost verwijst naar de locatie van het eigen systeem op een netwerk. Het is een loopback-interface, in IPv4 krijgt dit meestal het IP-adres 127.0.0.1, in IPv6 ::1. Dit adres kan vervolgens door TCP/IP-applicaties gebruikt worden om met het eigen systeem te communiceren indien dit nodig is.

        Dit adres kan aangewend worden voor testdoeleinden zonder dat de machine een "echt" IP-adres moet hebben, of om services, die normaal via het netwerk bereikt worden, te contacteren op de eigen machine.

        Tevens dient het adres om gebruikers die op de computer zelf werken te onderscheiden van diegenen die van een netwerk gebruik maken. Vooral voor wat betreft toegangscontrole is dit onderscheid nuttig.

        In de hackerscene heeft het adres een zeker cultstatus verworven, als symbool van de eigen computer. Dit heeft zijn weerslag gevonden in gevleugelde woorden als "Home is where 127.0.0.1 is" en "There's no place like 127.0.0.1".
      3. Om veiliger te werken, kan je een GUI-gebruikersnaam en GUI-wachtwoord toevoegen en de gegevens tijdens het verzenden en ontvangen versleutelen door HTTPS gebruiken voor GUI in te schakelen. Dit laatste is enkel nodig als je via internet werkt.
      4. Schakel indien gewenst het automatisch opstarten van de browser uit. Dit is namelijk nutteloos en processor belastend op een NAS zonder scherm, toetsenbord en muis.
      5. Sla de aanpassingen op.
      6. Sluit Syncthing af via het menu Acties en sluit de browser op de Raspberry Pi.
        Handig om te weten, mocht er straks niets meer lukken, kan je best helemaal opnieuw beginnen door de configuratiemap van Syncting te wissen:
        pi@raspberrypi:~ $ rm -r .config/syncthing
    3. Je kunt Syncthing bij elke start van de Raspberry Pi manueel starten, maar het is veel eenvoudiger als dit automatisch gaat.
      1. Start Syncthing als pi gebruiker via:
        pi@raspberrypi:~ $ sudo systemctl start syncthing@pi.service
      2. Test de Syncthing service met de opdracht:

        pi@raspberrypi:~ $ sudo systemctl status syncthing@pi.service
        syncthing@pi.service - Syncthing - Open Source Continuous File Synchronization for pi
            Loaded: loaded (/usr/lib/systemd/system/syncthing@.service; disabled; preset: enabled)
            Active: active (running) since Mon 2026-07-06 15:55:42 CEST; 23s ago
        Invocation: c430bc2aa908479db563a4a56cc92418
              Docs: man:syncthing(1)
          Main PID: 2923 (syncthing)
             Tasks: 19 (limit: 4805)
               CPU: 585ms
            CGroup: /system.slice/system-syncthing.slice/syncthing@pi.service
                    ├─2923 /usr/bin/syncthing serve --no-browser --no-restart --logflags=0
                    └─2932 /usr/bin/syncthing serve --no-browser --no-restart --logflags=0

        jul 06 15:55:43 raspberrypi syncthing[2923]: [YBXVV] INFO: Relay listener (dynamic+https://relays.syncthing.net/endpoint) starting
        jul 06 15:55:43 raspberrypi syncthing[2923]: [YBXVV] INFO: TCP listener ([::]:22000) starting
        jul 06 15:55:43 raspberrypi syncthing[2923]: [YBXVV] INFO: Ready to synchronize "Default Folder" (default) (sendreceive)
        jul 06 15:55:43 raspberrypi syncthing[2923]: [YBXVV] INFO: QUIC listener ([::]:22000) starting
        jul 06 15:55:43 raspberrypi syncthing[2923]: [YBXVV] INFO: Using discovery mechanism: IPv6 local multicast discovery on address [ff12::8384]:21027
        jul 06 15:55:43 raspberrypi syncthing[2923]: [YBXVV] INFO: Completed initial scan of sendreceive folder "Default Folder" (default)
        jul 06 15:55:43 raspberrypi syncthing[2923]: [YBXVV] INFO: GUI and API listening on [::]:8384
        jul 06 15:55:43 raspberrypi syncthing[2923]: [YBXVV] INFO: Access the GUI via the following URL: http://127.0.0.1:8384/
        jul 06 15:55:43 raspberrypi syncthing[2923]: [YBXVV] INFO: My name is "raspberrypi"
        jul 06 15:55:51 raspberrypi syncthing[2923]: [YBXVV] INFO: Joined relay relay://23.94.143.119:22067

        Druk op de q (Quit) toets om de opdracht af te breken.
      3. Indien alles goed ging, kan je Syncthing opnemen in de opstartprocedure van de Raspberry Pi:
        pi@raspberrypi:~ $ sudo systemctl enable syncthing@pi.service
        Created symlink /etc/systemd/system/multi-user.target.wants/syncthing@pi.service → /lib/systemd/system/syncthing@.service.
      4. Test of Syncting automatisch opstart bij het opstarten van de Raspberry Pi.
    4. Syncting beheer je via een webpagina die je kan bereiken via poort 8384 (http://127.0.0.1:8384).
      Syncting beheer
      1. Eerst bepaal je waar op de Raspberry Pi de gesynchroniseerde bestanden bewaard worden:
        1. Klik op de knop .
        2. Geef de map een Maplabel (naam) (Sync). Deze mag je zelf kiezen, maar ze moet wel uniek zijn op het apparaat, daarenboven maak je het jezelf eenvoudiger als je systematisch te werk gaat (zie verder).
        3. En een bijhorende Maplocatie in de bestandsstructuur van de Raspberry Pi. Bij het intypen van de Maplocatie wordt je geholpen met een keuzelijst met beschikbare mappen. Indien je een onbestaande map gebruikt, wordt indien mogelijk deze automatisch aangemaakt. Wij kiezen vanzelfsprekende een map op onze USB-stick (/media/SambaDrive/Backup/Sync waarbij de map Sync automatisch wordt aangemaakt). Let op de naamgeving van de map en het Map label, dit is wat we bedoelen met systematisch werken.
        4. Sla de instellingen op.
    5. Op apparaten waarvan mappen moeten synchroniseren met een map op de Raspberry Pi, moet je eveneens Syncthing installeren en configureren:
      1. Download de Base Syncthing versie voor Windows.
      2. Pak het Syncthing archief uit.
      3. Open de uitgepakte map en start het programma syncthing.exe.
      4. Bij de eerste start verschijnt een Firewall dialoogvenster.
        Firewall
        Syncthing moet toegang krijgen tot het netwerk om gegevens (bestanden) te kunnen synchroniseren met de Raspberry Pi. Met andere woorden, als je Syncthing wilt gebruiken, moet je dit bevestigen met de knop . Vanaf dan heeft Syncthing steeds toegang tot het lokale netwerk.
      5. Soms krijg je een melding van Windows SmartScreen dat uw PC wordt beschermd tegen applicaties van Onbekende uitgevers (lees niet door Microsoft erkende uitgevers). Klik op Meer informatie en daarna op de knop om Syncthing toch te starten.
        SmartScreen
        Deze toestemming moet je maar één keer geven, bij de volgende start van Syncthing start Syncthing zonder deze melding.
      6. Start de standaard browser en surf naar het adres http://127.0.0.1:8384 met het Syncting beheer voor de Windows computer. Daarbij kan je een Privacy melding krijgen.
        HTTPS
        Deze melding krijg je omdat Syncthing geen Https gebruikt. Aangezien we niet op internet werken, maar lokaal op de computer is dit helemaal OK. Om door te gaan, klik je op de knop en daarna op de koppeling Doorgaan naar 127.0.0.1 (onveilig).
      7. Lees de informatie die in het dialoogvenster Versturen van anonieme gebruikersstatistieken toestaan? verschijnt. Reageer gepast. M.a.w. stuur je gegevens naar de ontwikkelaars van Syncthing om deze software verder te verbeteren en door te ontwikkelen met informatie over hoe je Syncthing gebruikt.
      8. Hier is geen gebruikersnaam en bijhorend wachtwoord nodig, aangezien de webpagina enkel lokaal bereikbaar is.
      9. Tijd om Syncthing op de hoogte te brengen van een tweede apparaat met Syncthing (onze Raspberry Pi):
        1. Klik op de knop .
        2. Selecteer en vervolledig het correcte Apparaat-ID van jouw Raspberry Pi. Het Apparaat-ID van uw Raspberry Pi kan je op de webpagina van Syncthing op de Raspberry Pi opvragen bij Acties > ID weergeven.
        3. Als Naam kies je de naam van jouw Raspberry Pi (logisch toch).
        4. Sla de instellingen op.
      10. Ondertussen wordt op de webpagina van de Raspberry Pi een melding weergegeven.
        Nieuw apparaat toestaan
        Met de knop in deze melding aanvaard Syncthing de verbinding met Syncthing op Windows. Dit heen en weer gedoe is noodzakelijk om vreemden te weren (beveiliging door middel van aanvraag en toestemming):
        1. Op het tabblad Delen bij Niet-gedeelde mappen activeer je de map Sync. Zo geef je aan dat je de bestanden afkomstig van Windows zult opslaan in de map Sync.
        2. Sla de instellingen op.
      11. Ondertussen verschijnt bovenaan de webpagina van Syncthing op Windows een melding:
        Map delen
        1. Nu de Raspberry Pi een map heeft klaarstaan om bestanden van Windows in op te slaan, kan je met de knop een map op Windows selecteren die synchroniseert met de map op de Raspberry Pi.
        2. Alle gekende informatie afkomstig van de Raspberry Pi is reeds ingevuld, waaronder het Maplabel en de Map-ID. Hier merk je weer dat wij mensen werken met namen en labels en computerprogramma's met ID's. Enkel mappen met hetzelfde ID worden gesynchroniseerd. Als Maplocatie gebruik je ~\Documents\Bron of met andere woorden de bronmap in de map Documenten van de gebruiker op de Windows computer.
        3. Sla de instellingen op.
      12. Automatisch begint de synchronisatie. Let op: zowel de map (gaat snel, lokaal), als het apparaat moet gesynchroniseerd zijn (traag, transfer via netwerk). Na het beëindigen van het synchroniseren staat er bij het Externe Apparaat de groene melding Bijgewerkt.
        Bijgewerkt
      13. Onder Windows kan je aan de map Sync met de gesynchroniseerde mappen en bestanden dankzij de reeds eerder ingestelde Samba. En op de Raspberry Pi geef je de gesynchroniseerde bestanden en mappen weer met:

        pi@raspberrypi:~ $ ls -l /media/SambaDrive/Backup/Sync/
        totaal 22160
        -rwxr-xr-x 1 pi pi 1607040 24 aug  2022 '1 Basisbegrippen Taak.pdf'
        -rwxr-xr-x 1 pi pi 5769598 24 aug  2022 '2 Tekstverwerking Deel 1.pdf'
        -rwxr-xr-x 1 pi pi  127677 24 aug  2022 '2 Tekstverwerking Deel 1 Taak.pdf'
        -rwxr-xr-x 1 pi pi 4961061 24 aug  2022 '3 Rekenbladen Deel 1.pdf'
        -rwxr-xr-x 1 pi pi  109141 24 aug  2022 '3 Rekenbladen Deel 1 Taak.pdf'
        -rwxr-xr-x 1 pi pi 5526276 24 aug  2022 '4 Presentaties Deel 1.pdf'
        -rwxr-xr-x 1 pi pi  244566 24 aug  2022 '4 Presentaties Deel 1 Taak.pdf'
        -rwxr-xr-x 1 pi pi 4211135 24 aug  2022 '5 Databanken Deel 1.pdf'
        -rwxr-xr-x 1 pi pi   84455 24 aug  2022 '5 Databanken Deel 1 Taak.pdf'
        -rwxr-xr-x 1 pi pi     229  6 jul 15:21  sync.ffs_db

    6. Voor het ogenblik moet je op Windows Syncthing zelf starten, dit is enkel handig als je zelf wilt bepalen wanneer er gesynchroniseerd wordt. Gebruiksvriendelijker wordt het als Windows Syncthing automatisch start bij het starten van Windows:
      1. Sluit de webbrowser.
      2. Sluit het venster waarin je de werkzaamheden van Syncthing kunt volgen. Daarmee sluit je ook Syncthing zelf af.
      3. Start Taakplanner.
      4. Klik op de Acties Taak maken....
      5. Op het tabblad Algemeen:
        1. Geef je de taak een Naam, bijvoorbeeld Syncthing.
        2. Activeer je de optie Uitvoeren ongeacht of gebruiker wel of niet is aangemeld.
      6. Maak op het tabblad Triggers een Nieuwe trigger. Een trigger bepaald het moment waarop Syncthing gestart wordt:
        1. Zorg dat deze taak start bij het opstarten.
        2. Elke aanmeldtaak vertraagt het opstarten van uw computer, om dit te vermijden kan je de optie Taakuitstel activeren en een tijd opgeven na hoeveel tijd Syncthing pas mag opstarten (standaard 15 minuten).
        3. Bevestig de aanmaak van de nieuwe trigger.
      7. Maak op het tabblad Acties een nieuwe actie. Acties bepalen wat er bij een trigger moet gebeuren:
        1. De actie wordt Programma starten.
        2. Blader naar het Syncthing programmma op uw computer.
        3. In het tekstvak Parameters toevoegen (optioneel) plaats je de parameters --no-console --no-browser. Dit verhindert het automatisch opstarten van de browser en het venster met de Syncthing meldingen.
        4. Bevestig de aanmaak van de nieuwe actie.
      8. Op het tabblad Instellingen deactiveer je de optie Stoppen als deze taak langer duurt dan:. Het synchroniseren moet namelijk steeds blijven doorgaan.
      9. Bevestig de aanmaak van de nieuwe taak. Daarbij moet je het wachtwoord van de Windows gebruiker opgeven.
      10. Selecteer in de Task Scheduler-bibliotheek de taak Syncthing.
      11. Om onze taak de testen, klik je in het rechter deelvenster op de Actie Uitvoeren.
      12. Indien Syncthing correct is opgestart, moet deze in de browser bereikbaar zijn op het adres http://127.0.0.1:8384/. Indien dit niet het geval is, pas je in de Taakplanner van de geopende taak Syncthing de Eigenschappen aan.
      13. Als ultieme test herstart je Windows.
    7. Met versiebeheer worden wijzigingen in documenten en andere bestanden bijgehouden. Dit betekend in de praktijk dat bestanden die gesynchroniseerd worden, niet zomaar worden overschreven, maar dat oudere versies nog een tijdje bewaard worden. Dit vergt echter voor het bijhouden van de oude versies veel meer schijfruimte. In Syncthink werkt dit als volgt:
      1. Surf naar de beheerspagina van Syncthing op de Raspberry Pi.
      2. Klik op de map Sync.
      3. Daarna op Bewerken.
      4. Selecteer bij Versiebeheer het Gespreid versiebeheer. Een korte uitleg verschijnt op het scherm. Gespreid versiebeheer is het meest geavanceerde versiebeheer dat in Syncthing is ingebouwd. Standaard worden oude versies maximaal een jaar bijgehouden, hoe recenter, hoe meer versies bewaard worden.
      5. Bevestig de nieuwe instelling.
    8. Het pas geactiveerde versiebeheer test je als volgt:
      1. Maak in de map Documenten/Bron een nieuw tekstdocument aan met de naam Versiebeheer.
      2. Open de pas aangemaakte tekst en typ:
        Deze tekst is de eerste versie, met andere woorden een ruwe schets.
      3. Sla de aangepaste tekst op.
      4. Wacht ten minste 1 minuut, want pas bij de volgende synchronisatie, komt het bestand in aanmerking om bewaard te worden door het versiebeheer. De synchronisatie kan je volgen op de webpagina van de Raspberry Pi.
      5. Voeg de volgende tekst toe:
        De tweede versie bevat naast de hoofdlijnen al enkele details, compleet is deze tekst nog lang niet.
      6. Sla de aangepaste tekst op.
      7. Na een tijdje merkt je op de Raspberry Pi inderdaad dat het versiebeheer werkt:

        pi@raspberrypi:~ $ ls -l /media/SambaDrive/Backup/Sync/
        totaal 22176
        -rwxr-xr-x 1 pi pi 1607040 24 aug  2022 '1 Basisbegrippen Taak.pdf'
        -rwxr-xr-x 1 pi pi 5769598 24 aug  2022 '2 Tekstverwerking Deel 1.pdf'
        -rwxr-xr-x 1 pi pi  127677 24 aug  2022 '2 Tekstverwerking Deel 1 Taak.pdf'
        -rwxr-xr-x 1 pi pi 4961061 24 aug  2022 '3 Rekenbladen Deel 1.pdf'
        -rwxr-xr-x 1 pi pi  109141 24 aug  2022 '3 Rekenbladen Deel 1 Taak.pdf'
        -rwxr-xr-x 1 pi pi 5526276 24 aug  2022 '4 Presentaties Deel 1.pdf'
        -rwxr-xr-x 1 pi pi  244566 24 aug  2022 '4 Presentaties Deel 1 Taak.pdf'
        -rwxr-xr-x 1 pi pi 4211135 24 aug  2022 '5 Databanken Deel 1.pdf'
        -rwxr-xr-x 1 pi pi   84455 24 aug  2022 '5 Databanken Deel 1 Taak.pdf'
        -rwxr-xr-x 1 pi pi       0  7 jul 16:50 'Nieuw - Tekstdocument.txt'
        -rwxr-xr-x 1 pi pi     229  6 jul 15:21  sync.ffs_db
        -rwxr-xr-x 1 pi pi       0  7 jul 16:50  Versiebeheer.sync-conflict-20260707-165114-VKIRUOC.txt
        -rwxr-xr-x 1 pi pi      67  7 jul 16:51  Versiebeheer.sync-conflict-20260707-165157-VKIRUOC.txt
        -rwxr-xr-x 1 pi pi     169  7 jul 16:51  Versiebeheer.txt

        pi@raspberrypi:~ $ cat /media/SambaDrive/Backup/Sync/Versiebeheer.sync-conflict-20260707-165157-VKIRUOC.txt  
        Deze tekst is de eerste versie, met andere woorden een ruwe schets.pi@raspberrypi:~ $  

        Let op de tijdstempel in de naam. Druk Return om de prompt voor de volgende opdracht aan het begin van de volgende regel te plaatsen.
    9. In Unix systemen (macOS en Linux) worden bestanden en mappen verborgen door de naam ervan te laten beginnen begint met een punt. Deze verborgen mappen zijn standaard niet zichtbaar in met Samba gedeelde mappen. Verborgen mappen en bestanden worden niet zomaar verborgen, ze bevatten dikwijls kritieke gegevens die je niet ongestraft kunt aanpassen en/of verwijderen.
      1. Voeg in het configuratiebestand van Samba in de sectie NAS de volgende regel toe:

        hide dot files = no

      2. Zorg dat Samba de nieuwe configuratie gebruikt.
      3. Test in Windows Verkenner of je nu de map .stfolder kunt zien en/of openen.
      4. Herstel het verbergen van de verborgen bestanden en mappen door de eigenschap hide dot files de waarde yes te geven of de eigenschap helemaal uit de NAS sectie van de Samba configuratie te verwijderen.
  5. OpenCloud

    Cloud systemen zijn historisch ontstaan uit bestandsdeling via het netwerk/internet. Met extra uitbreidingen ontstonden de hedendaagse cloud systemen. Typisch voor cloud systemen is dat je ze kunt gebruiken via een webpagina, dus vanaf elk systeem waarvoor een browser beschikbaar is. OpenCloud is een open source cloud systeem die we ook op onze Rasbberry Pi kunnen installeren en gebruiken.
    1. Eerst zorgen we dat Syncthing niet langer actief is:

      pi@raspberrypi:~ $ sudo systemctl stop syncthing@pi.service
      [sudo] wachtwoord voor pi:  

      En niet langer automatisch wordt opgestart:

      pi@raspberrypi:~ $ sudo systemctl disable syncthing@pi.service
      Removed '/etc/systemd/system/multi-user.target.wants/syncthing@pi.service'.

      Ook het automatisch koppelen van de USB Stick schakel je uit:

      pi@raspberrypi:~ $ sudo nano /etc/fstab

      Schakel de regel verantwoordelijk voor het koppelen van de USB Stick uit door er een commentaarteken (#) voor te plaatsen:

      #UUID=1234-5678 /media/SambaDrive   vfat    rw,uid=1000,gid=1000      0     0

      Sla de aanpassing op, sluit nano af en test de nieuwe instelling:

      pi@raspberrypi:~ $ sudo systemctl daemon-reload
      pi@raspberrypi:~ $ sudo mount -a

      Enkel als beide opdrachten geen foutmeldingen geven, kan je de Raspberry Pi herstarten:

      pi@raspberrypi:~ $ sudo systemctl reboot  

      Vergeet ook niet Syncthing op jouw andere apparaten uit te schakelen. Bijvoorbeeld in Windows via Taakplanner.
    2. Nu kunnen we OpenCloud downloaden, en dat kan op twee verschillende manieren:
      1. Ga naar de OpenCloud-releasespagina op GitHub om het recentste programma te vinden dat geschikt is voor jouw Raspberry Pi (bijvoorbeeld linux-arm64 voor Raspberry Pi 3, 4 en 5).
      2. Met terminal opdrachten. Eerst bepalen we de laatste versie:

        pi@raspberrypi:~ $ latest=$(curl -s https://api.github.com/repos/opencloud-eu/opencloud/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")' | cut -d$'v' -f 2)

        Test of je wel degelijk een versienummer hebt ontvangen. Het gebeurt soms dat GitHub geen versie doorstuurde, voer bovenstaande opdracht dan nogmaals uit tot je een versienummer hebt ontvangen.

        pi@raspberrypi:~ $ echo $latest
        7.2.1

        Nu we het recentste versienummer hebben ontvangen kunnen we het OpenCloud serverprogramma downloaden:

        pi@raspberrypi:~ $ wget https://github.com/opencloud-eu/opencloud/releases/download/v${latest}/opencloud-${latest}-linux-arm64
        --2026-07-13 18:57:57--  https://github.com/opencloud-eu/opencloud/releases/download/v7.2.1/opencloud-7.2.1-linux-arm64
        Herleiden van github.com (github.com)... 140.82.121.4
        Verbinding maken met github.com (github.com)|140.82.121.4|:443... verbonden.
        HTTP-verzoek is verzonden; wachten op antwoord... 302 Found
        Locatie: https://release-assets.githubusercontent.com/github-production-release-asset/914855243/97b5d36e-61aa-485c-873f-97d675ecbd85?sp=r&sv=2018-11-09&sr=b&spr=https&se=2026-07-13T17%3A56%3A02Z&rscd=attachment%3B+filename%3Dopencloud-7
        .2.1-linux-arm64&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2026-07-13T16%3A55%3A10Z&ske=2026-07-13T17%3A56%3A02Z&sks=b&skv=2018-11-09&sig=nCwzosik1Iogi1ueoP
        E6w2xGw3Edl0%2FUSJfNWv0yfcE%3D&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc4Mzk2NTQ3NywibmJmIjoxNzgzOTYxODc3LCJwYXRoIjoicmVs
        ZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.kVBMo9ti60Yhux6GRu-oyVo23a_-FSnt2z5Ga3hoXCc&response-content-disposition=attachment%3B%20filename%3Dopencloud-7.2.1-linux-arm64&response-content-type=application%2Foctet-stream
        [volgen...]
        --2026-07-13 18:57:58--  https://release-assets.githubusercontent.com/github-production-release-asset/914855243/97b5d36e-61aa-485c-873f-97d675ecbd85?sp=r&sv=2018-11-09&sr=b&spr=https&se=2026-07-13T17%3A56%3A02Z&rscd=attachment%3B+filena
        me%3Dopencloud-7.2.1-linux-arm64&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2026-07-13T16%3A55%3A10Z&ske=2026-07-13T17%3A56%3A02Z&sks=b&skv=2018-11-09&sig=nC
        wzosik1Iogi1ueoPE6w2xGw3Edl0%2FUSJfNWv0yfcE%3D&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc4Mzk2NTQ3NywibmJmIjoxNzgzOTYxODc3
        LCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.kVBMo9ti60Yhux6GRu-oyVo23a_-FSnt2z5Ga3hoXCc&response-content-disposition=attachment%3B%20filename%3Dopencloud-7.2.1-linux-arm64&response-content-type=application
        %2Foctet-stream
        Herleiden van release-assets.githubusercontent.com (release-assets.githubusercontent.com)... 185.199.108.133, 185.199.110.133, 185.199.111.133, ...
        Verbinding maken met release-assets.githubusercontent.com (release-assets.githubusercontent.com)|185.199.108.133|:443... verbonden.
        HTTP-verzoek is verzonden; wachten op antwoord... 200 OK
        Lengte: 123404641 (118M) [application/octet-stream]
        Wordt opgeslagen als: ‘opencloud-7.2.1-linux-arm64’

        opencloud-7.2.1-linux-arm64                                100%[========================================================================================================================================>] 117,69M  20,7MB/s    in 7,7s     

        2026-07-13 18:58:05 (15,3 MB/s) - '‘opencloud-7.2.1-linux-arm64’' opgeslagen [123404641/123404641]

        Daar het programma enkel door de pi gebruiker zal uitgevoerd worden, gaan we het OpenCloud Server programma in de Thuismap opslaan. We maken daarvoor in de Thuismap de map bin aan, een standaard map om alle persoonlijke programma's in op te slaan:

        pi@raspberrypi:~ $ mkdir bin

        En verplaatsen het gedownloade programma naar deze map:

        pi@raspberrypi:~ $ mv opencloud-${latest}-linux-arm64 bin/opencloud

        Alles wat je van het internet download is standaard niet uitvoerbaar, dus zorgen we daar eerst voor:

        pi@raspberrypi:~ $ chmod +x bin/opencloud

        Om de map bin van de gebruiker op te nemen in het systeem, kan je de Raspberry Pi herstarten of de volgende opdracht uitvoeren:

        pi@raspberrypi:~ $ source .profile

        En testen we of de installatie van de OpenCloud Server is gelukt:

        pi@raspberrypi:~ $ opencloud -v
        opencloud version  (OpenCloud GmbH <support@opencloud.eu>) (2026-07-06 00:00:00 +0000 UTC)

        Alles is goed verlopen als je een melding als hierboven ziet verschijnen.
    3. Tijd om OpenCloud te starten. Daarbij laten we OpenCloud een standaard configuratie aanmaken:

      pi@raspberrypi:~ $ opencloud init --insecure true --admin-password admin

      =========================================
      generated OpenCloud Config
      =========================================
      configpath : /home/pi/.opencloud/config/opencloud.yaml

      De opdracht bevat de optie --insecure true waarmee je aangeeft dat er een lokaal beveiligingscertificaat wordt aangemaakt (niet officieel geldig op het internet). Dus voor het gebruik in het lokale LAN netwerk. De --admin-password admin optie maakt voor de OpenCloud beheerder admin het wachtwoord admin aan. Dit is geen sterk wachtwoord en ga je in de praktijk vanzelfsprekend aanpassen, zorg echter wel dat je het wachtwoord straks nog weet. Je merkt ook dat de instellingen werden opgeslagen in een bestand in de Thuismap.
    4. We starten de OpenCloud server met de opdracht:

      pi@raspberrypi:~ $ opencloud server

      Daarbij zie je niets verschijnen en ditmaal is geen nieuws goed nieuws. De OpenCloud Server blijft wachten tot je er gebruik van maakt. Daarvoor start je op de Raspberry Pi een browser (let bij het gebruik van Chromium op het dialoogvenster Unlocking Keyring). Surf naar https://localhost:9200. Je krijgt de volgende melding:
      OpenCloud
      Dit is normaal en te wijten aan het lokale beveiligingscertificaat (niet officieel bekend). Zolang je surft naar een apparaat op jouw eigen LAN netwerk is dit geen probleem, wel op het internet. M.a.w. om het lokale beveiligingscertificaat te accepteren, klik je op de knop .
      OpenCloud
      Om door te gaan, scrol je naar beneden en klik je op de verschenen koppeling Doorgaan naar localhost (onveilig). En daar verschijnt de aanmeldpagina van OpenCloud. Voer de Username admin en het bijhorende wachtwoord in.
      OpenCloud
      Klik op de knop om je als beheerder aan te melden.
    5. Om verder in het Nederlands te werken, klik je rechts bovenaan op het My account pictogram en start je de opdracht Preferences. Selecteer daarna in de linker zijbalk de categorie Preferences. Pas de optie Language aan naar Nederlands - Dutch.

      Keer terug naar de OpenCloud startpagina met het bestandsbeheer met het pictogram App-wisselaar rechts bovenaan de pagina.
      OpenCloud
      Selecteer het item Bestanden.

      De eerste test is geslaagd. Sluit de browser. Om de OpenCloud Server af te sluiten, activeer je de terminal waarin de OpenCloud Server werkt en druk je de sneltoets Ctrl+c in.

      pi@raspberrypi:~ $ opencloud server
      2026/07/15 15:53:43 http: TLS handshake error from [::1]:46098: remote error: tls: unknown certificate
      2026/07/15 15:53:43 http: TLS handshake error from [::1]:46114: remote error: tls: unknown certificate
      2026/07/15 16:18:11 http: TLS handshake error from [::1]:52764: remote error: tls: unknown certificate
      2026/07/15 16:18:11 http: TLS handshake error from [::1]:52778: remote error: tls: unknown certificate
      {"level":"error","service":"settings","error":"{\"id\":\"opencloud-settings\",\"code\":404,\"detail\":\"not found\",\"status\":\"Not Found\"}","userid":"193c481e-e6ab-459c-a937-27ef68c882d7","time":"2026-07-15T16:34:34+02:00","message":"failed to get user locale"}
      ^C{"level":"error","service":"storage-users","host.name":"raspberrypi","pkg":"rgrpc","error":"EOF","time":"2026-07-15T16:49:43+02:00","message":"Disconnected from NATS. Trying to reconnect..."}
      {"level":"error","service":"storage-users","host.name":"raspberrypi","pkg":"rhttp","error":"EOF","time":"2026-07-15T16:49:43+02:00","message":"Disconnected from NATS. Trying to reconnect..."}
      {"level":"error","service":"storage-users","host.name":"raspberrypi","pkg":"rgrpc","error":"EOF","time":"2026-07-15T16:49:43+02:00","message":"Disconnected from NATS. Trying to reconnect..."}
      {"level":"error","service":"storage-users","host.name":"raspberrypi","pkg":"rhttp","error":"EOF","time":"2026-07-15T16:49:43+02:00","message":"Disconnected from NATS. Trying to reconnect..."}
      pi@raspberrypi:~ $  

      Er verschijnen wat extra regels met meldingen en de OpenCloud Server is afgesloten.
    6. Nu is onze OpenCloud Server enkel toegankelijk vanaf de Raspberry Pi zelf. Dit is natuurlijk niet de bedoeling. Met omgevingsvariabelen (Environment Variables) kun je allerlei zaken instellen. Om OpenCloud voor alle apparaten in het netwerk toegankelijk te maken, moeten we een URL gebruiken dat op het ganse LAN netwerk geldig is. En dat is voor onze Raspberry Pi de netwerknaam (hostname) raspberrypi. De URL van de OpenCloud wordt dan https://raspberrypi:9200. Omgevingsvariabelen plaats je voor opdrachten, gescheiden door spaties. M.a.w. gebruik de volgende opdracht om OpenCloud op het LAN netwerk te gebruiken:

      pi@raspberrypi:~ $ OC_URL="https://raspberrypi:9200" opencloud server

      Test dit op een ander apparaat in het thuisnetwerk. Bijvoorbeeld op een macOS of Windows computer. Op een Windows computer met de Edge browser, moet je zoals daarstraks eerst op de knop klikken en vervolgens op de koppeling Doorgaan naar raspberrypi (onveilig) om het lokale beveiligingscertificaat te accepteren.

      Meld je aan en inderdaad het werkt.

      OpenCloud
      Meld je terug af (Mijn account pictogram rechts bovenaan en klik op de opdracht Uitloggen). Sluit de OpenCloud Server in de terminal van de Raspberry Pi af.

      Een overzicht van alle omgevingsvariabelen kan je online raadplegen.

    7. Ook deze keer willen we namelijk externe opslag gebruiken. Dan is het systeem gescheiden van de data en kunnen we grotere opslagmedia gebruiken. Voor deze oefening gebruiken we een USB Stick, maar het werkt even goed met een goed gevoede USB SSD/Harde schijf. Plug de USB Stick in de Raspberry Pi en sluit het Verwijderbaar medium is ingebracht venster met de knop . Eerst onderzoeken we de beschikbare opslagmedia:

      pi@raspberrypi:~ $ sudo blkid
      [sudo] wachtwoord voor pi:  
      /dev/mmcblk0p1: LABEL_FATBOOT="bootfs" LABEL="bootfs" UUID="18D4-404A" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="0836e41f-01"
      /dev/mmcblk0p2: LABEL="rootfs" UUID="ed6c7f1b-238b-41a1-b4b6-7bcdef3270fe" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="0836e41f-02"
      /dev/loop0: LABEL="origin:rpi-swap" TYPE="swap"
      /dev/sda1: UUID="C9D7-79B6" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="c6633160-01"
      /dev/zram0: LABEL="zram0" UUID="91fb3e18-d4d3-4a0b-8b35-ed0d1e9dbb2a" TYPE="swap"

      Uit bovenstaande informatie halen we dat /dev/sda1 onze USB Stick is en dat deze het bestandssysteem vfat gebruikt. Elk cloud systeem maakt gebruik van rechten om bestanden aan bepaalde gebruikers te koppelen, ook OpenCloud. Maar het vfat bestandssysteem kent geen gebruikersrechten. Met de volgende opdracht formatteren we de USB Stick met een geschikt en veel gebruikt bestandssysteem: ext4:

      pi@raspberrypi:~ $ sudo mkfs.ext4 -L opencloud /dev/sda1
      mke2fs 1.47.2 (1-Jan-2025)
      /dev/sda1 is mounted; will not make a filesystem here!

      Oeps, de USB Stick werd automatisch gekoppeld. We ontkoppelen de USB Stick met:

      pi@raspberrypi:~ $ sudo umount /dev/sda1

      En proberen opnieuw:

      pi@raspberrypi:~ $ sudo mkfs.ext4 -L opencloud /dev/sda1
      mke2fs 1.47.2 (1-Jan-2025)
      /dev/sda1 contains a vfat file system
      Proceed anyway? (y,N) y
      Creating filesystem with 3908096 4k blocks and 977280 inodes
      Filesystem UUID: 0ac10392-d2bf-44ff-b186-507c20fac946
      Superblock backups stored on blocks:  
             32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

      Allocating group tables: done                             
      Writing inode tables: done                             
      Creating journal (16384 blocks): done
      Writing superblocks and filesystem accounting information: done    

      Afhankelijk van de grootte en snelheid van de USB Stick duurt dit even. Wees geduldig na het geven van de toestemming met y Return. De optie -L opencloud zorgt dat de partitie de naam opencloud (Label) krijgt. Na het voltooien van het formatteren, controleren we het resultaat:

      pi@raspberrypi:~ $ sudo blkid
      [sudo] wachtwoord voor pi:  
      /dev/mmcblk0p1: LABEL_FATBOOT="bootfs" LABEL="bootfs" UUID="18D4-404A" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="0836e41f-01"
      /dev/mmcblk0p2: LABEL="rootfs" UUID="ed6c7f1b-238b-41a1-b4b6-7bcdef3270fe" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="0836e41f-02"
      /dev/loop0: LABEL="origin:rpi-swap" TYPE="swap"
      /dev/sda1: LABEL="opencloud" UUID="0ac10392-d2bf-44ff-b186-507c20fac946" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="c6633160-01"
      /dev/zram0: LABEL="zram0" UUID="627515cf-d5e1-40a5-bff7-9fb3c78951ca" TYPE="swap"

      Uit veiligheidsoverwegingen gaan we de inhoud van de USB-stick benaderen als gewone gebruiker, als je als root (systeembeheerder) werkt, krijgt een eventuele hacker direct toegang als systeembeheerder met alle gevolgen van dien. Jammer genoeg werken computersystemen met getallen (ID's) en niet met namen, de overeenkomstige ID's voor de gebruikers- en groepsnaam van de actieve gebruiker achterhaal je met:

      pi@raspberrypi:~ $ id $USER
      UID=1000(pi) GID=1000(pi) groepen=1000(pi),4(adm),20(dialout),24(cdrom),27(sudo),29(audio),44(video),46(plugdev),60(games),100(users),996(input),992(render),102(netdev),989(spi),988(i2c),986(gpio),108(lpadmin)

      De UID (User Identifier) en de GID (Group Identifier) stellen de ID's van de actieve gebruiker en de hoofdgroep waarvan deze gebruiker lid is voor.

      Om de inhoud van de USB-stick in de mappenstructuur van het Raspberry Pi systeem op te nemen, moet je het configuratiebestand verantwoordelijk voor de bestandssystemen aanpassen. Het /etc/fstab (filesystem table) configuratiebestand pas je als systeemgebruiker aan met de nano editor.

      pi@raspberrypi:~ $ sudo nano /etc/fstab

      Voeg de volgende regel toe:

      UUID=0ac10392-d2bf-44ff-b186-507c20fac946 /home/pi/.opencloud/   ext4    auto,defaults      0     0

      Vervang daarbij de UUID door deze van jouw USB-stick. /home/pi/.opencloud is de map waar de inhoud van de USB-stick tevoorschijn zal komen. Daarin pas je pi aan naar de actieve gebruiker op jouw Raspberry Pi. ext4 is het op de USB-stick gebruikte bestandssysteem. De map wordt automatisch gekoppeld (auto) en krijgt daarbij de standaard eigenschappen (defaults).

      Let op: dit configuratiebestand moet eindigen met een lege regel. Sla de aanpassing op en sluit de teksteditor nano af.

      Voor we de nieuwe koppeling testen, geven we de huidige inhoud van de map /home/pi/.opencloud/ weer.

      pi@raspberrypi:~ $ ls -l .opencloud/
      totaal 28
      drwx------ 2 pi pi 4096 15 jul 15:17 config
      drwx------ 2 pi pi 4096 15 jul 15:35 idm
      drwx------ 3 pi pi 4096 15 jul 15:35 idp
      drwx------ 3 pi pi 4096 15 jul 15:35 nats
      drwx------ 2 pi pi 4096 15 jul 15:35 proxy
      drwx------ 3 pi pi 4096 15 jul 15:35 search
      drwx------ 5 pi pi 4096 15 jul 15:35 storage

      Voor de zekerheid testen we de nieuwe configuratie. Daarvoor brengen we eerst systemd op de hoogte van de aangepaste fstab:

      pi@raspberrypi:~ $ sudo systemctl daemon-reload

      En testen de nieuwe configuratie:

      pi@raspberrypi:~ $ sudo mount -a

      Geen nieuws is opnieuw goed nieuws, anders pas je /etc/fstab aan tot deze geen fouten meer bevat. Aangezien dit configuratiebestand nodig is bij het opstarten van jouw Raspberry Pi, is het belangrijk deze test uit te voeren, anders kan het opstarten afgebroken worden waardoor jouw Raspberry Pi volledig vastloopt. Zolang de USB regel in /etc/fstab staat, moet de USB Stick in het apparaat zitten bij het opstarten van het systeem. Bekijken we nu de inhoud van de map .opencloud:

      pi@raspberrypi:~ $ ls -l .opencloud/
      totaal 16
      drwx------ 2 root root 16384 15 jul 19:30 lost+found

      Dan zien we een praktisch lege map. M.a.w. de inhoud van de pas met ext4 geformatteerde USB partitie. De map lost+found is typisch voor een ext4 bestandssysteem. De oorspronkelijke inhoud is niet verdwenen, maar wordt verborgen zolang de USB Stick aan deze map is gekoppeld.

      De root root verwijzing geeft aan dat de map eigendom is van de systeembeheerder en zoals voordien opgemerkt, moet voor de veiligheid de map bruikbaar zijn voor de standaard gebruiker. Dit kan met de volgende opdracht:

      pi@raspberrypi:~ $ sudo chown -R 1000:1000 .opencloud

      Daarbij zijn 1000:1000 de uid en gid (gescheiden door :) de ID's van de standaard gebruiker die toegang tot de map krijgt. We controleren het resultaat met:

      pi@raspberrypi:~ $ ls -l .opencloud/
      totaal 16
      drwx------ 2 pi pi 16384 15 jul 19:30 lost+found

      De .opencloud map bevat alle instellingen, gegevens enz. van de OpenCloud Server. Maar deze is nu terug leeg, waardoor we een nieuwe standaard configuratie moeten aanmaken (maar deze keer op een apart opslagmedium, in deze test de USB Stick):

      pi@raspberrypi:~ $ opencloud init --insecure true --admin-password admin

      =========================================
      generated OpenCloud Config
      =========================================
      configpath : /home/pi/.opencloud/config/opencloud.yaml

      Waarna we de OpenCloud Server opnieuw kunnen starten:

      pi@raspberrypi:~ $ OC_URL="https://raspberrypi:9200" opencloud server

      Na een korte test in de browser, log je terug uit en sluit je de OpenCloud Server af (Ctrl+c) voor de volgende stap.
    8. De OpenCloud Server bij elke start van de Raspberry Pi manueel starten, is niet gebruiksvriendelijk. Het automatisch opstarten van een server/dienst wordt op de Raspberry Pi verzorgt door systemd. Met de teksteditor nano maak je als systeembeheerder het volgende systemd opstartscript:

      pi@raspberrypi:~ $ sudo nano /etc/systemd/system/opencloud.service

      Met de volgende inhoud:

      [Unit]
      Description=OpenCloud Server
      After=network.target

      [Service]
      Type=simple
      User=pi
      Group=pi
      Environment="OC_URL=https://raspberrypi:9200"
      ExecStart=/home/pi/bin/opencloud server
      Restart=on-failure
      RestartSec=10

      [Install]
      WantedBy=multi-user.target

      Let daarbij vooral op de regels Users en Group. Het spreekt voor zich dat je daarin pi vervangt door de gebruikersnaam en groepsnaam van jouw standaard gebruiker.

      Opnieuw brengen we systemd op de hoogte van het nieuwe opstartscript:

      pi@raspberrypi:~ $ sudo systemctl daemon-reload
      [sudo] wachtwoord voor pi:  

      En kunnen we als test OpenCloud Server nu als volgt starten:

      pi@raspberrypi:~ $ sudo systemctl start opencloud

      Of alles goed is verlopen, kan je nagaan met de volgende opdracht:

      pi@raspberrypi:~ $ sudo systemctl status opencloud --no-pager
      opencloud.service - OpenCloud Server
          Loaded: loaded (/etc/systemd/system/opencloud.service; disabled; preset: enabled)
          Active: active (running) since Mon 2026-07-20 15:09:14 CEST; 2min 37s ago
      Invocation: 92e155f9293d4ff59b4cfef40fe8d42a
        Main PID: 2736 (opencloud)
           Tasks: 14 (limit: 4805)
             CPU: 678ms
          CGroup: /system.slice/opencloud.service
                  └─2736 /home/pi/bin/opencloud server

      jul 20 15:09:14 raspberrypi systemd[1]: Started opencloud.service - OpenCloud Server.

      Indien je geen foutmeldingen krijgt, mag je de OpenCloud Server automatisch laten starten:

      pi@raspberrypi:~ $ sudo systemctl enable opencloud
      Created symlink '/etc/systemd/system/multi-user.target.wants/opencloud.service' → '/etc/systemd/system/opencloud.service'.

    9. Als je echt van start gaat met OpenCloud kan je online de documentatie raadplegen. Er is documentatie aanwezig voor de OpenCloud gebruikers (User), server beheerder (Admin) en ontwikkelaars die willen helpen aan OpenCloud (Developer). Er is zelfs een apart hoofdstuk voorzien voor OpenCloud op de Raspberry Pi. In de Raspberry Pi handleiding wordt Docker gebruikt om OpenCloud te installeren.
    10. Om OpenCloud beter te integreren in jouw systemen bestaan er verschillende programma's (clients) voor diverse systemen. Een overzicht vind je op https://opencloud.eu/en/product/download-apps.

      Een client voor Linux kan je downloaden vanaf de GitHub Release pagina van de ontwikkelaar. De Linux versie is in het AppImage formaat waardoor het op verschillende distributies werkt. Na het starten en aanmelden bij de OpenCloud Server is OpenCloud een deel van het systeem geworden. Onderstaande afbeelding toont bijvoorbeeld hoe je de OpenCloud inhoud in de standaard KDE bestandsbeheerder kunt beheren. Juist zoals bij commerciële cloud diensten.
      OpenCloud Desktop
      De Windows versie kan je installeren via de Microsoft Store.
      OpenCloud
      De Android versie vind je op Google Play.
      OpenCloud

  6. Vanzelfsprekend bestaan er kant en klare NAS systemen voor de Raspberry Pi. Openmediavault, EasyNAS en Rockstor zijn daar voorbeelden van. Er bestaat zelfs een modern cloud systeem: NextCloud. Op het eerste zicht lijkt het gebruik van een kant en klaar systeem eenvoudiger, maar:
    • Je bent voor de verdere ontwikkeling en updates afhankelijk van de maker.
    • Je kunt meestal zelf geen aanpassingen uitvoeren op een systeem dat je niet kent. Informatie vinden over een specifiek systeem is veel moeilijker dan voor Rasperry Pi OS.
    • Je kunt geen extra software of projecten combineren op zo'n voorgeconfigureerd systeem. Denk aan een mediaserver in combinatie met een NAS en WiFi Access Point. Ook een automatisch back-upsysteem als SyncThing toevoegen wordt dan moeilijk tot onmogelijk.
Als afsluiter enkele opmerkingen over bestandssystemen voor reservekopieën:

Openbare reacties op deze pagina (kunnen door alle bezoekers gelezen worden)

, vrijdag 2 juni 2023 19:28