# Flask Deploy Pattern (PersoEnt, 19.07.2026) ## venv anlegen (Ubuntu 24.04) ```bash apt-get install -y python3.12-venv python3 -m venv /var/www//backend/venv /var/www//backend/venv/bin/pip install flask flask-cors requests ``` ## systemd Service `/etc/systemd/system/-api.service`: ```ini [Unit] Description= API (Flask) After=network.target [Service] User=www-data Group=www-data WorkingDirectory=/var/www//backend Environment=PATH=/var/www//backend/venv/bin ExecStart=/var/www//backend/venv/bin/python app.py Restart=always RestartSec=5 [Install] WantedBy=multi-user.target ``` ## Kritisch: Berechtigungen nach jedem File-Edit! `patch`/`write_file`/`sed` ändern den Owner → `chown www-data:www-data app.py` VOR `systemctl restart`! Sonst: `Permission denied` + Restart-Loop. ## Nginx (in sites-enabled/) ```nginx location /api/ { proxy_pass http://127.0.0.1:5000/api/; 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; } ``` `nginx -t && systemctl reload nginx` ## Token in Code schreiben (NICHT via sed!) ⚠️ `sed -i "s|^PB_TOKEN = .*|PB_TOKEN = \"$TOKEN\"|"` schneidet langen Token ab (Terminal kürzt bei Display, aber das Problem: sed ersetzt mit gekürztem Wert wenn Variable im Heredoc/SSH-Kontext kaputt ist). **Sicher:** Python-Script nutzen: ```python import re token = "VOLLER_TOKEN" with open('app.py') as f: c = f.read() c = re.sub(r'PB_TOKEN = ".*"', f'PB_TOKEN = "{token}"', c) with open('app.py','w') as f: f.write(c) ```