pyUpload (TKInter Version)
⚠️ Projektstatus: Eingefroren – Nur noch Bugfixes
Diese Version von pyUpload wird nicht weiterentwickelt und erhält nur noch Fehlerbehebungen.
Die neue Version mit Flask-Backend ist BALD verfügbar unter:
🔗 https://github.com/realAscot/pyUpload2
- pyUpload (TKInter Version)
pyUpload – Sicherer Datei-Upload-Server über HTTPS (lokal & offline)
Diese Version basiert auf Tkinter (GUI + QR) sowie einer optionalen reinen CLI-Nutzung.
Sie ist vollständig lokal lauffähig – ganz ohne Installation von externen Tools oder komplexen Abhängigkeiten.
🛠 Features
- HTTPS-gesicherter Datei-Upload
- Selbstsigniertes SSL-Zertifikat bei Bedarf
- QR-Code-basierte Verbindung für Smartphones
- Client-spezifische Verzeichnisse und Logs
- GUI und Konsolen-Modus verfügbar
- automatische Einrichtung von
.venv
und Abhängigkeiten - kein Installationsskript mehr nötig – alles passiert beim Start von
main.py
🚀 Schnellstart
▶️ Für Windows:
-
Lade das Projekt herunter oder klone es:
git clone https://github.com/realAscot/pyUpload
Alternativ einfach eine bereinigte
.zip
bei den Releases auf GitHub herrunterladen. Diese enthällt kein.git Archiv
und enthält nur das aller nötigste zum Betrieb des Programms. -
Starte die App mit:
start.cmd
Alternativ in PowerShell:
cmd /c start.cmd
⚠️ Alternative 2 falls die Ausführung per Doppelklick auf .bat oder .cmd gesperrt ist:
Doppelklick auf ->
start.pyw
Es ist möglich das beim ersten mal gefragt wird womit das Programm gestartet werden soll. Einfach die Python-Installation suchen und
python.exe
wählen.Ich empfehle einfach eine Verknüpfung der
start.pyw
zB auf den Desktop oder ins Startmenü zu legen.
🐧 Für Linux / macOS:
-
Stelle sicher, dass Python 3.8+ installiert ist:
python3 --version
-
Mache das Startscript ausführbar:
chmod +x start.sh
-
Starte die App:
./start.sh
Beim ersten Start wird automatisch:
- eine virtuelle Umgebung
.venv/
imapp/
-Verzeichnis erzeugt requirements.txt
installiert- das Programm danach neu aus der Umgebung gestartet
🧩 Kommandozeilenoptionen
Du musst Dich im Verzeichnis ./app
befinden:
python main.py -h oder --h # Hilfe
python main.py --nogui # Start ohne GUI / QR
python main.py --port 9999 # Custom-Port verwenden
oder für Verknüpfungen die start.pyw
verwenden:
pythonw.exe start.pyw -h oder --h # Hilfe
pythonw.exe start.pyw --nogui # Start ohne GUI / QR
pythonw.exe start.pyw --port 9999 # Custom-Port verwenden
Wenn Du die Dateierweiterung .pyw
mit pythonw.exe
verknüpfst, klappt es auch ohne mit Doppelklick im Explorer :-)
🌐 Zugriff im Browser
Sobald gestartet:
https://<lokale-IP>:4443 (oder Port, der mit der option `--port` gestartet wurde)
Alternativ QR-Code scannen (GUI-Modus).
Dateien werden im upload/<Client-IP>/
gespeichert.
Wichtig dabei ist es darauf zu achten, das tatsächlich auch https verwendet wird, falls man die Adresse händisch eingibt statt mit QR-Code! Man könnte noch zusätzlich einen http-server in der App laufen lassen, der dann automatisch umleitet, aber wir möchten das Programm so klein wie möglich halten.
📁 Logs & Uploads
- Uploads: im Ordner
upload/
nach Client-IP - Zentrale Logs:
logs/pyupload.log
- Pro-Client Logs:
logs/<Client-IP>.log
🔐 Hinweis zur SSL-Zertifikatswarnung
Beim ersten Aufruf im Browser erscheint eine Warnung wegen des selbstsignierten Zertifikats.
Du kannst:
- auf „Erweitert“ > „Trotzdem fortfahren“ klicken
- eigene Zertifikate in
cert.pem
undkey.pem
hinterlegen
🐛 Bekannte Bugs
- Frontend: wenn im Browser der Button Hochladen gewählt wird, OHNE das Dateien ausgewählt wurden, kommt es zu einem Error response - Error code: 400 im Browser. Lösungsansatz wäre den Button über JS zu sperren solange keine Datei ausgewählt ist. Lässt sich schnell im template erledigen.
Wenn jemand Lust und Zeit hat sich diesem anzunehmen, nur zu. Ich Danke im Vorraus!
👨💻 Autor
- Adam Skotarczak
Kontakt: adam@skotarczak.net
GitHub: realAscot
📝 Lizenz
- Proprietär, © 2025 Adam Skotarczak
Keine Weitergabe ohne ausdrückliche Genehmigung