Hvorfor Nextcloud?
Google Drive er bekvemt. Det er billigt. Det virker overalt. Men du betaler med noget andet end penge: Google scanner dine filer, dine billeder og din kalender. Det bruger de til at vise dig reklamer og til at forstå dine vaner.
iCloud er bedre på privatlivsfronten, men du betaler 35 kr. om måneden for 200 GB. Og du er stadig afhængig af Apples infrastruktur.
Nextcloud koster ingenting at køre, når du har hardwaren. Dine billeder er dine. Ikke Googles. Familiens feriefotos fra 2019 sidder ikke på en server i Oregon.
Det virker også offline. Er du hjemme på dit LAN, kan du tilgå alle dine filer, selv om internettet er nede.
Hvad du skal bruge
- Raspberry Pi 4 med minimum 2 GB RAM. 4 GB anbefales, særligt hvis familien bruger det aktivt.
- SSD tilsluttet via USB 3. Brug ikke et SD-kort til at gemme data på. SD-kort slides ned af mange små skrive-operationer, og du mister dine filer. En SSD på 500 GB eller 1 TB er et godt udgangspunkt.
- Docker og Docker Compose installeret på Pi'en. Se vores guide til Docker på Pi hvis du ikke har det endnu.
- Statisk IP til din Pi på dit LAN. Sæt det op i din router (DHCP reservation på Pi'ens MAC-adresse).
Forbered SSD
Find ud af hvad din SSD hedder på systemet:
lsblk
Den vil typisk hedde sda eller sdb. Opret et filsystem på den (kun nødvendigt første gang):
sudo mkfs.ext4 /dev/sda1
Opret en mappe og mount SSD'en:
sudo mkdir -p /data
sudo mount /dev/sda1 /data
For at den monteres automatisk ved genstart, tilføj en linje til /etc/fstab:
# Find UUID på SSD
sudo blkid /dev/sda1
# Tilføj til /etc/fstab (udskift UUID med din)
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults 0 2
Opret mapperne Nextcloud skal bruge og sæt rettigheder:
sudo mkdir -p /data/nextcloud
sudo chown -R 33:33 /data/nextcloud
www-data, der har UID 33. Derfor sætter vi ejerskabet til 33:33.
Docker Compose opsætning
Opret en mappe til din Nextcloud-installation:
mkdir -p ~/nextcloud
cd ~/nextcloud
Opret filen docker-compose.yml:
services:
db:
image: mariadb:10.11
restart: unless-stopped
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: skift-dette-til-et-stærkt-password
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: skift-dette-til-et-andet-stærkt-password
nextcloud:
image: nextcloud:latest
restart: unless-stopped
ports:
- "8080:80"
volumes:
- /data/nextcloud:/var/www/html/data
- nextcloud_html:/var/www/html
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: skift-dette-til-et-andet-stærkt-password
NEXTCLOUD_ADMIN_USER: admin
NEXTCLOUD_ADMIN_PASSWORD: skift-dette-til-admin-password
NEXTCLOUD_TRUSTED_DOMAINS: "192.168.1.100 nextcloud.ditdomæne.dk"
depends_on:
- db
volumes:
db_data:
nextcloud_html:
NEXTCLOUD_TRUSTED_DOMAINS skal du bruge din Pi's faktiske IP-adresse. Find den med hostname -I.
Start Nextcloud
Start hele stacken:
docker compose up -d
Første gang tager det lidt tid. Docker henter images og Nextcloud sætter databasen op. Følg med i hvad der sker:
docker compose logs -f nextcloud
Når du ser linjer om at Nextcloud er klar, åbn en browser og gå til:
http://[din-pi-ip]:8080
Du burde se Nextcloud velkomstskærmen.
Første opsætning
Log ind med admin-brugeren du satte i docker-compose.yml. Nextcloud spørger om du vil installere anbefalede apps. Sig ja. Det inkluderer typisk:
- Calendar: kalender der synkroniserer med iPhone og Android
- Contacts: kontakter med CardDAV-support
- Photos: billedgalleri med album og automatisk kategorisering
- Notes: simpel notat-app, velegnet til familiens indkøbslister
Du kan altid installere flere apps senere under Indstillinger → Apps.
Tilføj familiemedlemmer
Gå til øverste højre hjørne, klik på dit avatar, og vælg Brugere. Opret en konto til hvert familiemedlem.
Sæt en kvote på hver bruger. Det forhindrer, at ét familiemedlem utilsigtet fylder hele SSD'en med video. 50-100 GB pr. person er et fornuftigt udgangspunkt.
For at dele en mappe: højreklik på mappen i filbrowseren, vælg Del, og skriv brugernavnet. Du kan give læseadgang eller fuld skriveadgang.
Sikr din Pi inden du fortsætter
Inden du eksponerer Nextcloud ud mod internettet, er det værd at sikre selve Pi'en. To ting er særligt vigtige:
- SSH hardening: skift til nøglebaseret login, deaktiver password-login og sæt fail2ban op. Se vores SSH hardening guide.
- UFW firewall: bloker alt indgående trafik undtagen det du eksplicit tillader. Port 8080 bør kun være tilgængelig fra dit LAN. Se vores UFW firewall guide.
Tilgå udefra med Cloudflare Tunnel
Som standard kan Nextcloud kun tilgås fra dit LAN. Hvis familien vil bruge det fra telefonen ude i byen, skal du eksponere det.
Den sikre måde er via Cloudflare Tunnel. Du åbner ingen porte i din router. Cloudflare håndterer HTTPS. Se vores guide til Cloudflare Tunnel på Raspberry Pi for den fulde opsætning.
Foretrækker du VPN frem for en Cloudflare-afhængighed, er WireGuard et godt alternativ. Se vores WireGuard guide.
Når du har opsat tunnelen, skal du tilføje dit domæne til Nextclouds betroede domæner. Rediger config/config.php inde i containeren:
docker exec -it nextcloud-nextcloud-1 bash
nano /var/www/html/config/config.php
Find trusted_domains og tilføj dit domæne:
'trusted_domains' =>
array (
0 => '192.168.1.100:8080',
1 => 'nextcloud.ditdomæne.dk',
),
Mobilapp
Nextcloud-appen findes til både iOS og Android og er gratis.
- Automatisk foto-upload: Appen kan uploade nye billeder fra telefonens kamera automatisk. Gå til Indstillinger → Auto-upload i appen. Familiens billeder lander direkte i Nextcloud.
- Kalender på iPhone: Gå til iPhone Indstillinger → Kalender → Konti → Tilføj konto → Anden → CalDAV. Serveradresse er din Nextcloud-URL, brugernavn og password som i Nextcloud.
- Kalender på Android: Brug DAVx5-appen (gratis på F-Droid, lille betaling på Google Play). Den synkroniserer kalender og kontakter fra Nextcloud til Androids egne apps.
Backup
En Pi kan gå ned. En SSD kan fejle. Backup er ikke valgfrit.
Den simple tilgang: stop Nextcloud, kopier data, start igen.
# Stop containerne
cd ~/nextcloud
docker compose stop
# Lav database-dump
docker exec nextcloud-db-1 sh -c \
'mysqldump --all-databases -u root -p"dit-root-password"' \
> backup-db-$(date +%Y%m%d).sql
# Kopier Nextcloud-data til ekstern disk (tilpas stien)
rsync -av /data/nextcloud/ /mnt/backup/nextcloud-data/
# Start containerne igen
docker compose start
Automatiser det med cron. Kør crontab -e og tilføj:
# Kør backup hver søndag kl. 02:00
0 2 * * 0 cd ~/nextcloud && docker compose stop && rsync -aq /data/nextcloud/ /mnt/backup/nextcloud/ && docker compose start
Performance tips
Nextcloud på en Pi 4 er fuldt brugbart for en familie, men der er et par ting der gør det markant hurtigere.
Redis til hukommelsescache
Tilføj Redis til din docker-compose.yml:
redis:
image: redis:alpine
restart: unless-stopped
Tilføj derefter disse environment-variabler til nextcloud-servicen:
REDIS_HOST: redis
Og tilføj redis til depends_on i nextcloud-servicen. Redis gemmer Nextclouds session-data og lock-information i hukommelsen, så databasen aflastes. Det mærkes tydeligt på svartiderne.
PHP OPcache
Tilføj disse environment-variabler til nextcloud-servicen:
PHP_MEMORY_LIMIT: 512M
PHP_UPLOAD_LIMIT: 512M
Cron-job til baggrundstasks
Nextcloud har baggrundstasks der skal køre regelmæssigt (indeksering, thumbnails m.m.). Tilføj et cron-job på Pi'en:
# Kør Nextcloud cron hvert 5. minut
*/5 * * * * docker exec -u www-data nextcloud-nextcloud-1 php -f /var/www/html/cron.php
Skift til Cron (ikke AJAX) i Nextcloud under Indstillinger → Grundlæggende opsætning.
Hvad Nextcloud ikke er
Nextcloud er ikke en cloud-backup. Det er lokal storage med en web-grænseflade. Brænder huset eller stjæles Pi'en, er dataene væk, medmindre du har en ekstern backup.
En Raspberry Pi 4 er ikke bygget til at håndtere 100 samtidige brugere. Til en familie på 4-6 personer virker det fint. Vil du køre det for en hel afdelings worth of kolleger, skal du have kraftigere hardware.
Det er heller ikke Google Fotos. Nextcloud Fotos er god, men den genkender ikke ansigter eller steder automatisk på samme måde som Googles AI. Det er prisen for privatlivet.
Kilder
- Nextcloud Administration Manual: officiel dokumentation til opsætning, apps og konfiguration
- Nextcloud – Docker Hub: officiel Docker-image med environment-variable dokumentation
- Raspberry Pi Foundation – Official Documentation: hardware, OS og opsætningsvejledninger