Własny generator QR w Pythonie na Biedahostingu
Wstęp: Po co to robimy?
Zamiast korzystać z zewnętrznych generatorów QR, postawiliśmy własne, surowe narzędzie. Wykorzystaliśmy do tego Pythona (Flask) oraz Reverse Proxy, aby ukryć port aplikacji przed światem.
0. - BiedaHosting
Hosting kosztuje 15 PLN na rok i powinien wystarczyć do tego zastosowania. Jeżeli planujesz większe pliki - wybierz większy pakiet
1. Przygotowanie środowiska
Logujemy się przez SSH na serwer i instalujemy niezbędne biblioteki. Wystarczą dwie komendy:
python3 -m pip install --user Flask qrcode[pil]
2. Kod aplikacji (Python)
Tworzymy plik qr_app.py. Kluczowym rozwiązaniem jest generowanie obrazka bezpośrednio do pamięci (BytesIO) i wysyłanie go jako Base64. Dzięki temu serwer nie musi zapisywać żadnych plików na dysku (oszczędzamy I/O).
from flask import Flask, render_template_string, request, send_file import qrcode from io import BytesIO app = Flask(__name__) HTML_TEMPLATE = """BIEDA-QR: Generator Biedahosting.pl """ import base64 @app.route("/", methods=["GET", "POST"]) def index(): qr_base64 = None if request.method == "POST": data = request.form.get("data") if data: # --- GENEROWANIE KODU QR --- qr = qrcode.QRCode(version=1, box_size=10, border=4) qr.add_data(data) qr.make(fit=True) img = qr.make_image(fill_color="black", back_color="white") # --- KONWERSJA DO BASE64 (aby wyswietlic na stronie bez zapisywania pliku) --- buffered = BytesIO() img.save(buffered, format="PNG") qr_base64 = base64.b64encode(buffered.getvalue()).decode('utf-8') return render_template_string(HTML_TEMPLATE, qr_base64=qr_base64) if __name__ == "__main__": # UWAGA: Na produkcji używa sie gunicorn, ale do testów i Biedahostingu to wystarczy. # Ustaw port, który udostepni Ci Admin (jezeli nie 5000). app.run(host='127.0.0.1', port=5000)[ BIEDA-QR GENERATOR v0.1 ]
Wpisz tekst lub URL, aby wygenerowa~G kod QR.
Zero reklam. Czysty prestiż Biedahostingu.
{% if qr_base64 %}Twój Kod QR:
![]()
Kliknij prawym -> "Zapisz grafikę jako...", żeby pobrać.
{% endif %}
3. Magia Reverse Proxy (.htaccess)
To najważniejszy krok. Aby aplikacja była dostępna pod adresem TwojaDomena.pl/qr/ zamiast TwojaDomena.pl:5000, w pustym folderze /qr/ tworzymy plik .htaccess:
RewriteEngine On
RewriteRule ^(.*)$ http://127.0.0.1:5000/$1 [P,L]
4. Uruchomienie
Aby uruchomić skrypt używamy komendy python3 qr_app.py Otrzymyjemy informacje żeby nie robić tak produkcyjnie, więc pewnie nie należy tak robic produkcyjnie.
5. Sprawdzenie
Wchodzimy na twojadomena.pl/qr i sprawdzamy nasz generator
6. Uwaga, bardzo ważne
W biedahostingu staramy zachować sie minumum bezpieczeństwa. Tak wystawiony port będize dostępny dla każdego posaidającego konto na serwerze. Pamiętaj o tym podczas wystawiania skryptów!!! Nie wystawiaj wrażliwych danych, dbaj o odpowiednie zabezpieczenie kodu.