# Storage Box – SMB Share versleutelen met gocryptfs

Met deze configuratie wordt een **onversleutelde SMB-share** van een Storage Box gebruikt als opslag voor een **versleutelde gocryptfs-container**.

De structuur wordt:

```text
Storage Box
└── SMB Share
    └── encrypted/          ← Versleutelde bestanden
        ├── ...              ← Niet rechtstreeks openen/bewerken
        └── ...
            
/mnt/decrypted/             ← Normale, leesbare bestanden

```

Je werkt dus altijd met:

```text
/mnt/decrypted

```

De bestanden die daadwerkelijk op de Storage Box staan, bevinden zich in:

```text
/mnt/smb/encrypted

```

en zijn daar **versleuteld en onleesbaar zonder de gocryptfs-sleutel**.

---

# 1. Benodigde pakketten installeren

Installeer `cifs-utils` voor SMB en `gocryptfs` voor de encryptie:

```bash
sudo apt update
sudo apt install cifs-utils gocryptfs -y

```

---

# 2. Mountpoints aanmaken

Maak de directories aan waarop de SMB-share en de gedecrypteerde bestanden worden gemount:

```bash
sudo mkdir -p /mnt/smb
sudo mkdir -p /mnt/decrypted

```

---

# 3. SMB-inloggegevens opslaan

Maak een apart bestand voor de inloggegevens van de Storage Box:

```bash
sudo nano /etc/backup-credentials.txt

```

Zet hierin:

```text
username=u474777
password=PASSWORD

```

Vervang `PASSWORD` uiteraard door het daadwerkelijke wachtwoord.

Sla het bestand op:

```text
CTRL + X
Y
Enter

```

Zorg vervolgens dat alleen `root` het bestand kan lezen:

```bash
sudo chmod 600 /etc/backup-credentials.txt

```

> **Belangrijk:** dit bestand bevat het wachtwoord van de Storage Box. Deel het niet en zorg dat de permissies `600` blijven.

---

# 4. SMB-share automatisch mounten

Maak een systemd mount-unit:

```bash
sudo nano /etc/systemd/system/mnt-smb.mount

```

Plaats hierin:

```ini
[Unit]
Description=Mount SMB share
Wants=network-online.target
After=network-online.target

[Mount]
What=//u474777.your-storagebox.de/backup
Where=/mnt/smb
Type=cifs
Options=vers=3.1.1,credentials=/etc/backup-credentials.txt,uid=0,gid=0,file_mode=0755,dir_mode=0755,nofail
TimeoutSec=30

[Install]
WantedBy=multi-user.target

```

Sla het bestand op:

```text
CTRL + X
Y
Enter

```

### systemd opnieuw laden

```bash
sudo systemctl daemon-reload

```

Zorg dat de netwerk-wachtservice actief is:

```bash
sudo systemctl enable systemd-networkd-wait-online.service
sudo systemctl start systemd-networkd-wait-online.service

```

Activeer vervolgens de SMB-mount:

```bash
sudo systemctl enable mnt-smb.mount
sudo systemctl start mnt-smb.mount

```

Controleer de status:

```bash
systemctl status mnt-smb.mount

```

Als alles goed staat, moet de SMB-share beschikbaar zijn via:

```text
/mnt/smb

```

Je kunt dit eventueel controleren met:

```bash
ls -la /mnt/smb

```

---

# 5. Versleutelde directory aanmaken

Maak binnen de SMB-share een directory voor de versleutelde opslag:

```bash
sudo mkdir -p /mnt/smb/encrypted

```

> **Let op:** de directory `encrypted` bevat straks de versleutelde data. Bewerk de bestanden hierin **niet rechtstreeks**.

---

# 6. gocryptfs initialiseren

Initialiseer gocryptfs:

```bash
sudo gocryptfs -init /mnt/smb/encrypted

```

gocryptfs vraagt nu om een wachtwoord.

Dit wachtwoord is belangrijk: **zonder dit wachtwoord kan de versleutelde data niet worden ontsleuteld.**

Bewaar het wachtwoord daarom veilig.

---

# 7. gocryptfs-wachtwoord opslaan

Om de decrypted mount automatisch bij het opstarten te kunnen mounten, slaan we het wachtwoord op in een beveiligd bestand.

Maak het bestand:

```bash
sudo nano /root/.gocryptfs-key

```

Zet daarin het gocryptfs-wachtwoord:

```text
gocryptfs-PASSWORD

```

Sla op:

```text
CTRL + X
Y
Enter

```

Beperk de toegang tot het bestand:

```bash
sudo chmod 600 /root/.gocryptfs-key

```

> **Belangrijk:** dit bestand bevat de sleutel/wachtwoord waarmee de versleutelde Storage Box kan worden geopend. Zorg dat hiervan een veilige back-up bestaat. Als zowel de data als deze sleutel verloren gaan, kan de data niet meer worden geopend.

---

# 8. Decrypted mount aanmaken

Nu maken we een tweede systemd mount-unit.

Deze mount zorgt ervoor dat de versleutelde directory:

```text
/mnt/smb/encrypted

```

zichtbaar wordt als normale, leesbare bestanden via:

```text
/mnt/decrypted

```

Maak de unit aan:

```bash
sudo nano /etc/systemd/system/mnt-decrypted.mount

```

Plaats hierin:

```ini
[Unit]
Description=Mount gocryptfs decrypted folder
Requires=mnt-smb.mount
After=mnt-smb.mount network-online.target local-fs.target

[Mount]
What=/mnt/smb/encrypted
Where=/mnt/decrypted
Type=fuse.gocryptfs
Options=passfile=/root/.gocryptfs-key,allow_other,nonempty
TimeoutSec=30

[Install]
WantedBy=multi-user.target

```

Sla op:

```text
CTRL + X
Y
Enter

```

---

# 9. Decrypted mount activeren

Laad systemd opnieuw:

```bash
sudo systemctl daemon-reload

```

Activeer de mount bij het opstarten:

```bash
sudo systemctl enable mnt-decrypted.mount

```

Start de mount:

```bash
sudo systemctl start mnt-decrypted.mount

```

Controleer de status:

```bash
systemctl status mnt-decrypted.mount

```

Als alles goed werkt, zijn de bestanden beschikbaar via:

```text
/mnt/decrypted

```

---

# 10. Controleren of alles werkt

Controleer eerst de SMB-mount:

```bash
sudo systemctl status mnt-smb.mount

```

Controleer daarna de gocryptfs-mount:

```bash
sudo systemctl status mnt-decrypted.mount

```

Controleer of de decrypted directory toegankelijk is:

```bash
ls -la /mnt/decrypted

```

Maak eventueel een testbestand:

```bash
sudo touch /mnt/decrypted/test.txt

```

Controleer vervolgens of het bestand zichtbaar is:

```bash
ls -la /mnt/decrypted

```

Het bestand moet ook in de versleutelde opslag aanwezig zijn, maar **niet als leesbare `test.txt`**. Op de SMB-share zal gocryptfs hiervoor een versleutelde bestandsnaam en versleutelde inhoud gebruiken.

Verwijder het testbestand daarna:

```bash
sudo rm /mnt/decrypted/test.txt

```

---

# 11. Test na een reboot

Een reboot is belangrijk om te controleren of beide mounts automatisch correct worden opgebouwd:

```bash
sudo reboot

```

Na het opnieuw opstarten:

### Netwerk

```bash
sudo systemctl status systemd-networkd-wait-online.service

```

### SMB

```bash
sudo systemctl status mnt-smb.mount

```

### gocryptfs

```bash
sudo systemctl status mnt-decrypted.mount

```

### Bestanden controleren

```bash
ls -la /mnt/decrypted

```

---

# 12. Logs bekijken bij problemen

Als de SMB-mount niet werkt:

```bash
journalctl -u mnt-smb.mount

```

Als de gocryptfs-mount niet werkt:

```bash
journalctl -u mnt-decrypted.mount

```

Voor uitgebreidere informatie kun je ook gebruiken:

```bash
journalctl -u mnt-smb.mount -b

```

en:

```bash
journalctl -u mnt-decrypted.mount -b

```

De optie `-b` toont alleen de meldingen van de huidige boot.

---

# 13. Belangrijke structuur

Na de configuratie zijn er twee belangrijke locaties:

<table id="bkmrk-locatie-functie-%2Fmnt"><thead><tr><th>Locatie</th><th>Functie</th></tr></thead><tbody><tr><td>`/mnt/smb`</td><td>De originele SMB-share</td></tr><tr><td>`/mnt/smb/encrypted`</td><td>Versleutelde gocryptfs-opslag</td></tr><tr><td>`/mnt/decrypted`</td><td>Normale leesbare bestanden</td></tr></tbody></table>

**Gebruik voor normale bestanden altijd:**

```text
/mnt/decrypted

```

**Gebruik `/mnt/smb/encrypted` niet om bestanden handmatig te wijzigen.**

De encryptie wordt door gocryptfs geregeld.

---

# 14. Hoe de encryptie werkt

De Storage Box zelf weet niets van gocryptfs en ziet alleen bestanden in:

```text
/mnt/smb/encrypted

```

De server waarop gocryptfs draait, ontsleutelt de bestanden wanneer ze via:

```text
/mnt/decrypted

```

worden benaderd.

Het resultaat is:

```text
┌──────────────────────────┐
│       Storage Box        │
│                          │
│   SMB Share              │
│        │                 │
│        ▼                 │
│   /encrypted/            │
│                          │
│   🔒 Versleutelde data   │
└──────────┬───────────────┘
           │
           │ SMB
           ▼
┌──────────────────────────┐
│         Server           │
│                          │
│      gocryptfs           │
│          │               │
│          ▼               │
│   /mnt/decrypted/        │
│                          │
│   📁 Normale bestanden   │
└──────────────────────────┘

```

Hierdoor staat de data **versleuteld op de Storage Box**, terwijl applicaties op de server gewoon met normale bestanden kunnen werken.

# 15. Wat je absoluut moet bewaren

Bewaar veilig:

1. Het **Storage Box-wachtwoord**
2. Het **gocryptfs-wachtwoord**
3. Bij voorkeur ook de volledige gocryptfs-configuratie/back-up

Het belangrijkste is het **gocryptfs-wachtwoord**. Zonder dit wachtwoord kan de versleutelde data niet worden ontsleuteld.