diff --git a/INSTALL.md b/INSTALL.md new file mode 100644 index 0000000..497a4ab --- /dev/null +++ b/INSTALL.md @@ -0,0 +1,91 @@ +# What To Cook (WTC) - Kochbuch & Wochenplaner + +Digitales Kochbuch, Wochenmen?planer & Buchdruck-Engine (FastAPI & MariaDB). + +## Systemanforderungen +- Debian 12 / 13 (oder kompatibles Linux) +- Python 3.13+ mit `python3-venv` +- Nginx (Reverse Proxy mit SSL) +- MariaDB Server auf \`db.waiswuaschd.de:3306\` (Datenbank: \`v2_db_wtc_cookbook\`) + +## 1. Installation +```bash +# Repository klonen +cd /home/maxi/Projekt +git clone https://gitea.sp13l.de/kobold-ai/wtc.waiswuaschd.de.git wtc.waiswuaschd.de +cd wtc.waiswuaschd.de + +# Python Virtualenv erstellen und Abh?ngigkeiten installieren +python3 -m venv venv +./venv/bin/pip install --upgrade pip +./venv/bin/pip install -r requirements.txt +``` + +## 2. Umgebungsvariablen (.env) +Erstelle im Projektverzeichnis eine `.env` Datei: +```ini +DB_ENGINE=mariadb +MARIADB_HOST=db.waiswuaschd.de +MARIADB_PORT=3306 +MARIADB_USER=v2_usr_wtc_cookbook +MARIADB_PASS=XKikHf&j6Wj!rs5%A8#ZzyvE#*A1hT +MARIADB_NAME=v2_db_wtc_cookbook + +APP_USERNAME=admin +APP_PASSWORD=wtc2026! +SECRET_KEY=wtc_secure_hmac_secret_key_2026_kochbuch_session +``` + +## 3. Systemd Service (/etc/systemd/system/wtc.service) +```ini +[Unit] +Description=What To Cook (WTC) Zufallsgenerator f?r Essen (FastAPI) +After=network.target + +[Service] +Type=simple +User=maxi +Group=maxi +WorkingDirectory=/home/maxi/Projekt/wtc.waiswuaschd.de +Environment="PATH=/home/maxi/Projekt/wtc.waiswuaschd.de/venv/bin:/usr/local/bin:/usr/bin:/bin" +ExecStart=/home/maxi/Projekt/wtc.waiswuaschd.de/venv/bin/uvicorn app.main:app --host 127.0.0.1 --port 8003 --workers 1 +Restart=always +RestartSec=3 + +[Install] +WantedBy=multi-user.target +``` +Aktivieren und starten: +```bash +sudo systemctl daemon-reload +sudo systemctl enable --now wtc +``` + +## 4. Nginx Reverse Proxy +```nginx +server { + listen 80; + server_name wtc.dev.waiswuaschd.de; + return 301 https://$host$request_uri; +} + +server { + listen 443 ssl http2; + server_name wtc.dev.waiswuaschd.de; + client_max_body_size 50M; + + # SSL Zertifikate hier konfigurieren (z. B. via certbot) + + location /static/ { + alias /home/maxi/Projekt/wtc.waiswuaschd.de/app/static/; + } + + location / { + proxy_pass http://127.0.0.1:8003; + 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; + } +} +``` diff --git a/app/static/uploads/recipes/1b4b93c271_IMG_5316.jpg b/app/static/uploads/recipes/1b4b93c271_IMG_5316.jpg new file mode 100644 index 0000000..0e0d2ef Binary files /dev/null and b/app/static/uploads/recipes/1b4b93c271_IMG_5316.jpg differ diff --git a/app/static/uploads/recipes/28f58b5fac_IMG_5320.jpg b/app/static/uploads/recipes/28f58b5fac_IMG_5320.jpg new file mode 100644 index 0000000..0496d7c Binary files /dev/null and b/app/static/uploads/recipes/28f58b5fac_IMG_5320.jpg differ diff --git a/app/static/uploads/recipes/389bd753d5_IMG_5245.jpg b/app/static/uploads/recipes/389bd753d5_IMG_5245.jpg new file mode 100644 index 0000000..f2c86d9 Binary files /dev/null and b/app/static/uploads/recipes/389bd753d5_IMG_5245.jpg differ diff --git a/app/static/uploads/recipes/464aae35a6_IMG_5237.jpg b/app/static/uploads/recipes/464aae35a6_IMG_5237.jpg new file mode 100644 index 0000000..e1d6645 Binary files /dev/null and b/app/static/uploads/recipes/464aae35a6_IMG_5237.jpg differ diff --git a/app/static/uploads/recipes/47d66699a1_IMG_5252.jpg b/app/static/uploads/recipes/47d66699a1_IMG_5252.jpg new file mode 100644 index 0000000..e52c6fd Binary files /dev/null and b/app/static/uploads/recipes/47d66699a1_IMG_5252.jpg differ diff --git a/app/static/uploads/recipes/4db424c6a9_IMG_5213.jpg b/app/static/uploads/recipes/4db424c6a9_IMG_5213.jpg new file mode 100644 index 0000000..995acff Binary files /dev/null and b/app/static/uploads/recipes/4db424c6a9_IMG_5213.jpg differ diff --git a/app/static/uploads/recipes/501dd138bf_IMG_5317.jpg b/app/static/uploads/recipes/501dd138bf_IMG_5317.jpg new file mode 100644 index 0000000..e0a6f09 Binary files /dev/null and b/app/static/uploads/recipes/501dd138bf_IMG_5317.jpg differ diff --git a/app/static/uploads/recipes/737cdc080b_IMG_5317.jpg b/app/static/uploads/recipes/737cdc080b_IMG_5317.jpg new file mode 100644 index 0000000..8a977b7 Binary files /dev/null and b/app/static/uploads/recipes/737cdc080b_IMG_5317.jpg differ diff --git a/app/static/uploads/recipes/7dce1d35a3_IMG_5315.jpg b/app/static/uploads/recipes/7dce1d35a3_IMG_5315.jpg new file mode 100644 index 0000000..cdbcd5a Binary files /dev/null and b/app/static/uploads/recipes/7dce1d35a3_IMG_5315.jpg differ diff --git a/app/static/uploads/recipes/806a030cd9_IMG_5319.jpg b/app/static/uploads/recipes/806a030cd9_IMG_5319.jpg new file mode 100644 index 0000000..946c7bb Binary files /dev/null and b/app/static/uploads/recipes/806a030cd9_IMG_5319.jpg differ diff --git a/app/static/uploads/recipes/86f504bf4b_IMG_5245.jpg b/app/static/uploads/recipes/86f504bf4b_IMG_5245.jpg new file mode 100644 index 0000000..d8efe86 Binary files /dev/null and b/app/static/uploads/recipes/86f504bf4b_IMG_5245.jpg differ diff --git a/app/static/uploads/recipes/9ad97691a3_IMG_5211.jpg b/app/static/uploads/recipes/9ad97691a3_IMG_5211.jpg new file mode 100644 index 0000000..09ac223 Binary files /dev/null and b/app/static/uploads/recipes/9ad97691a3_IMG_5211.jpg differ diff --git a/app/static/uploads/recipes/9ca3e191f0_IMG_5321.jpg b/app/static/uploads/recipes/9ca3e191f0_IMG_5321.jpg new file mode 100644 index 0000000..27208e4 Binary files /dev/null and b/app/static/uploads/recipes/9ca3e191f0_IMG_5321.jpg differ diff --git a/app/static/uploads/recipes/b02d6b951d_IMG_5314.jpg b/app/static/uploads/recipes/b02d6b951d_IMG_5314.jpg new file mode 100644 index 0000000..5d515eb Binary files /dev/null and b/app/static/uploads/recipes/b02d6b951d_IMG_5314.jpg differ diff --git a/app/static/uploads/recipes/f7e9b47667_IMG_5149.jpg b/app/static/uploads/recipes/f7e9b47667_IMG_5149.jpg new file mode 100644 index 0000000..d9d71d3 Binary files /dev/null and b/app/static/uploads/recipes/f7e9b47667_IMG_5149.jpg differ diff --git a/app/static/uploads/recipes/fed5a3e4e1_IMG_5318.jpg b/app/static/uploads/recipes/fed5a3e4e1_IMG_5318.jpg new file mode 100644 index 0000000..42eac50 Binary files /dev/null and b/app/static/uploads/recipes/fed5a3e4e1_IMG_5318.jpg differ diff --git a/requirements.txt b/requirements.txt index 80ee062..605f8e4 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,9 +1,31 @@ -fastapi>=0.110.0 -uvicorn>=0.29.0 -jinja2>=3.1.3 -python-dotenv>=1.0.1 -pydantic>=2.6.0 -python-multipart>=0.0.9 -pymysql>=1.1.0 -cryptography>=42.0.0 -pillow>=10.0.0 +annotated-doc==0.0.5 +annotated-types==0.8.0 +anyio==4.15.1 +certifi==2026.7.22 +cffi==2.1.1 +click==8.5.0 +cryptography==50.0.2 +fastapi==0.141.1 +h11==0.16.0 +httpcore==1.0.9 +httpx==0.28.1 +idna==3.20 +Jinja2==3.1.6 +lxml==6.1.3 +MarkupSafe==3.0.3 +pillow==12.3.0 +pycparser==3.11 +pydantic==2.13.5 +pydantic_core==2.46.5 +PyMySQL==1.2.3 +pypdf==6.20.1 +python-docx==1.2.0 +python-dotenv==1.2.3 +python-multipart==0.0.32 +python-pptx==1.0.2 +starlette==1.7.0 +typing-inspection==0.4.4 +typing_extensions==4.16.0 +uvicorn==0.53.0 +websockets==17.2 +xlsxwriter==3.2.9