Diese Anleitung beschreibt die vollständige Einrichtung eines Raspberry Pi 4 mit Docker, Portainer und WG-Easy zur einfachen Verwaltung von WireGuard-VPN-Verbindungen.
raspi-vpn.local
Nach dem Flashen: SD-Karte einsetzen, Raspberry Pi starten.
Nach dem Login via SSH:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git docker.io docker-compose
sudo systemctl enable docker
sudo usermod -aG docker $USER
Dann den Pi neustarten:
sudo reboot
docker volume create portainer_data
docker run -d \
--name portainer \
--restart=always \
-p 8000:8000 \
-p 9000:9000 \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Portainer Web-UI erreichbar unter:
https://<raspi-ip>:9443
mkdir -p /docker/wg-easy && cd /docker/wg-easy
version: '3.8'
services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:latest
container_name: wg-easy
environment:
- WG_HOST=<DEINE.DOMAIN.ODER.IP> # z. B. vpn.example.com
- PASSWORD_HASH=<BCRYPT_HASH> # erzeugt mit htpasswd (s. u.)
- WG_DEFAULT_DNS=<DNS_SERVER> # optional z. B. 192.168.1.1
- WG_EASY_WEBHOOK_URL=<NTFY_WEBHOOK_URL> # optional: ntfy-Benachrichtigung
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
volumes:
- /docker/wg-easy:/etc/wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
restart: unless-stopped
sudo apt install apache2-utils
htpasswd -nbBC 10 admin DEINPASSWORT
Nur den Teil ab $2a$...
in PASSWORD_HASH
einsetzen.
Öffne deinen Browser und rufe Portainer auf:
https://<deine-raspi-ip>:9443
(z. B. https://raspberrypi.local:9443
)
Melde dich an.
In der linken Navigation:
"Stacks" → "Add stack"
Gib einen Namen ein, z. B. wg-easy
.
Wähle "Web editor" als Eingabemethode.
Kopiere den Inhalt deiner docker-compose.yml
in das Textfeld.
(Optional) .env
-Datei verwenden:
Wenn du Umgebungsvariablen wie WG_HOST
, PASSWORD_HASH
etc. nicht direkt in der Compose-Datei speichern willst, kannst du alternativ eine .env
-Datei hochladen.
Ganz unten: "Deploy the stack" klicken
✅ Jetzt ist dein Stack in Portainer sichtbar und voll bearbeitbar – du kannst ihn dort starten, stoppen oder verändern.
Webinterface erreichbar unter:
http://<raspi-ip>:51821
Nein. Für einfache Setups kannst du alle Werte direkt in der docker-compose.yml
eintragen.
Eine .env
-Datei ist aber sinnvoll, wenn du:
Webinterface erreichbar unter:
http://<raspi-ip>:51821
/docker/wg-easy
sichern