Der Code ist bereits vorbereitet und verwendet automatisch die BASE_URL aus der .env-Datei für alle QR-Codes.
# In temporäres Verzeichnis wechseln
cd /tmp
# No-IP Client herunterladen
wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
# Entpacken
tar xzf noip-duc-linux.tar.gz
cd noip-2.1.9-1/
# Kompilieren und installieren
sudo make
sudo make installWährend der Installation:
- Email: Deine No-IP Email-Adresse
- Password: Dein No-IP Passwort
- Hostname: Wähle deinen erstellten Hostname aus
- Update interval: 30 (Minuten) ist Standard
# Service erstellen
sudo nano /etc/systemd/system/noip2.serviceInhalt der Datei:
[Unit]
Description=No-IP Dynamic DNS Update Client
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/noip2
Restart=always
[Install]
WantedBy=multi-user.targetService aktivieren:
sudo systemctl enable noip2
sudo systemctl start noip2
sudo systemctl status noip2Port-Forwarding einrichten:
- Externer Port: 80
- Interner Port: 80 (oder 5001 für Test)
- IP-Adresse: Raspberry Pi IP (z.B. 192.168.1.100)
- Protokoll: TCP
Hinweis: Die genaue Vorgehensweise variiert je nach Router-Modell.
cd /pfad/zu/foodBot
cp .env.example .env
nano .envIn der .env die BASE_URL anpassen:
BASE_URL=http://dein-hostname.no-ip.orgWichtig:
- Mit
http://oderhttps://(bei SSL) - Ohne abschließenden Slash
# Wenn als Service
sudo systemctl restart foodbot
# Oder manuell
pkill -f "python.*run.py"
python3 run.py-
Von außerhalb des Netzwerks:
- Mit Smartphone (mobile Daten, kein WLAN)
- Öffne:
http://dein-hostname.no-ip.org
-
QR-Code prüfen:
- Im Admin-Bereich QR-Code öffnen
- URL sollte mit deinem No-IP Hostname beginnen
# Certbot installieren
sudo apt install certbot python3-certbot-nginx
# Nginx konfigurieren (siehe deployment/nginx-foodbot)
sudo certbot --nginx -d dein-hostname.no-ip.orgDann in .env:
BASE_URL=https://dein-hostname.no-ip.org# Status prüfen
sudo systemctl status noip2
# Logs anschauen
journalctl -u noip2 -f
# Manuell starten zum Testen
sudo /usr/local/bin/noip2 -d-
IP-Adresse prüfen:
curl ifconfig.me # Muss mit No-IP Hostname-IP übereinstimmen -
Port offen prüfen:
- Online Tool: https://www.yougetsignal.com/tools/open-ports/
- Port 80 eingeben
-
Firewall auf Raspberry Pi:
sudo ufw status sudo ufw allow 80/tcp
# .env prüfen
cat .env | grep BASE_URL
# FoodBot neu starten nach Änderung
sudo systemctl restart foodbot-
Starkes Admin-Passwort in
.envsetzen:ADMIN_PASSWORD=Sehr-Sicheres-Passwort-123! -
SSL verwenden (Let's Encrypt siehe oben)
-
Rate Limiting ist bereits aktiv (50 Anfragen/Stunde)
-
Regelmäßige Updates:
sudo apt update && sudo apt upgrade -
Fail2Ban installieren (optional):
sudo apt install fail2ban
- No-IP Free: Kostenlos, Hostname muss alle 30 Tage bestätigt werden
- No-IP Plus (~25$/Jahr): Automatische Bestätigung, mehr Hostnames
- SSL-Zertifikat: Kostenlos mit Let's Encrypt
Falls Port-Forwarding nicht möglich:
# Cloudflare Tunnel = kein Port-Forwarding nötig
# Anleitung: https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/Bei Fragen oder Problemen beim Setup, einfach melden! 🚀