script | ||
.env-dist | ||
.gitignore | ||
build-and-push-latest.sh | ||
docker-compose.yml | ||
Dockerfile | ||
entrypoint.sh | ||
lmn-logo.png | ||
README.md | ||
requirements.txt | ||
version.txt |
voucher.morz.de
Überblick
Dieses Projekt stellt eine Flask-basierte Anwendung bereit, die WLAN-Voucher generiert und QR-Codes für den einfachen Zugang erstellt. Die Anwendung ist als Docker-Image verpackt und kann in einer Container-Umgebung betrieben werden.
Voraussetzungen
- Docker und Docker Compose müssen installiert sein.
- Ein funktionierender UniFi-Controller, der über die API erreichbar ist.
- Ein Reverse Proxy (z. B. Nginx oder Traefik) für die Weiterleitung und HTTPS-Unterstützung.
Installation
1. Repository klonen
Klonen Sie das Repository:
git clone <repository-url>
cd voucher.morz.de
### 2. .env-Datei konfigurieren
Erstellen Sie eine .env-Datei im Projektverzeichnis oder passen Sie die vorhandene Datei an. Diese Datei enthält die Konfigurationsparameter für die Anwendung.
Beispiel .env:
UNIFI_HOST=wlan.morz.de UNIFI_USERNAME=admin UNIFI_PASSWORD=afoilka9Z UNIFI_PORT=443 UNIFI_SSL_VERIFY=True UNIFI_SITE_ID=qfasa90u WLAN_SSID=BZZ-Gast WLAN_PASSWORD=Gast-Guest-522 DEBUG=False
### 3. **Docker-Image bauen**
Bauen Sie das Docker-Image:
```bash
docker compose build
4. Container starten
Starten Sie den Container:
docker compose up -d
Die Anwendung ist unter http://<server-ip>:42425
erreichbar.
Reverse Proxy einrichten
Um die Anwendung über HTTPS und eine benutzerfreundliche URL bereitzustellen, richten Sie einen Reverse Proxy ein. Hier ist ein Beispiel für die Konfiguration mit Nginx.
Beispiel Nginx-Konfiguration:
server {
listen 80;
server_name voucher.morz.de;
location / {
proxy_pass http://127.0.0.1:42425;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Optional: Weiterleitung auf HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name voucher.morz.de;
ssl_certificate /etc/letsencrypt/live/voucher.morz.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/voucher.morz.de/privkey.pem;
location / {
proxy_pass http://127.0.0.1:42425;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Schritte:
-
Installieren Sie Nginx:
sudo apt update sudo apt install nginx
-
Konfigurieren Sie die oben genannte Datei unter
/etc/nginx/sites-available/voucher.morz.de
und aktivieren Sie sie:sudo ln -s /etc/nginx/sites-available/voucher.morz.de /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
-
Optional: Installieren Sie ein SSL-Zertifikat mit Let's Encrypt:
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d voucher.morz.de
Verwendung
1. Startseite
Rufen Sie die Startseite unter http://voucher.morz.de
(oder der konfigurierten URL) auf. Hier können Sie Voucher für 45 oder 90 Minuten erstellen.
2. Voucher erstellen
- Klicken Sie auf einen der Buttons, um einen Voucher zu erstellen.
- Die Seite zeigt den generierten Zugangscode und einen QR-Code an, der die WLAN-Zugangsdaten enthält.
Anpassungen
1. Logo ändern
Ersetzen Sie die Datei /app/custom/logo.png
durch Ihr eigenes Logo. Das Logo wird auf der Startseite angezeigt.
2. WLAN-Symbol ändern
Ersetzen Sie die Datei /app/custom/wifi-icon.png
, um das WLAN-Symbol auf der Voucher-Seite anzupassen.
3. Port ändern
Passen Sie den Port in der docker-compose.yml
an:
ports:
- "8080:42425"
Fehlerbehebung
1. Fehler: ModuleNotFoundError
Stellen Sie sicher, dass alle Abhängigkeiten installiert sind:
docker compose exec <container-name> pip install -r /app/requirements.txt
2. UniFi-Controller nicht erreichbar
- Überprüfen Sie die Zugangsdaten in der
.env
-Datei. - Stellen Sie sicher, dass der UniFi-Controller über die API erreichbar ist.
3. Logs prüfen
Prüfen Sie die Logs des Containers:
docker compose logs -f
Lizenz
Dieses Projekt steht unter der MIT-Lizenz. Weitere Informationen finden Sie in der Datei LICENSE
.
Falls Sie Fragen oder Probleme haben, erstellen Sie bitte ein Issue im Repository. 😊