# Docker-Webplattform: React + Flask + externe MariaDB Vollständig dockerisierte Webanwendung mit React-Frontend und Flask-Backend in einem einzigen Container. Verbindet sich mit einer externen MariaDB-Datenbank und bietet Setup-System, Login, Rollenverwaltung und modulare Tools. --- ## Screenshot ![Admin-Dashboard](logs/Screenshot%202026-01-22%20151541.png) --- ## Setup-Anleitung ### Voraussetzungen - Docker & Docker Compose installiert - Externe MariaDB/MySQL-Datenbank erreichbar (z.B. auf Unraid, NAS oder anderem Server) ### 1. Repository klonen ```bash git clone https://github.com/Nirodan/Tools.git cd Tools ``` ### 2. Umgebungsvariablen konfigurieren ```bash cp .env.example .env ``` Dann `.env` öffnen und `SECRET_KEY` durch einen sicheren zufälligen Wert ersetzen: ```bash # Sicheren Key generieren: python -c "import secrets; print(secrets.token_hex(32))" ``` ### 3. Container starten ```bash docker compose -f docker-compose.dev.yml up -d ``` ### 4. Datenbank einrichten (Erststart) Beim ersten Start öffnet sich automatisch die Setup-Seite unter `http://localhost:5050/setup`. Dort die MariaDB-Verbindungsdaten eintragen: | Feld | Beispiel | |------------|-------------------| | Host | `192.168.1.100` | | Port | `3306` | | User | `tools_user` | | Password | `geheimes_pw` | | Database | `tools_db` | Nach dem Speichern wird automatisch ein Admin-Account angelegt: - **Benutzername:** `admin` - **Passwort:** `admin` *(bitte sofort im Admin-Dashboard ändern)* ### 5. Anwendung aufrufen ``` http://localhost:5050 ``` --- ## Was der Container macht - Startet automatisch Flask + React in einer Umgebung - Bei Erststart: Setup-Webseite zum Eintragen der DB-Verbindung - Speichert die Konfiguration in einem Docker-Volume (`config/db_config.json`) - Verbindet sich mit der externen MariaDB-Datenbank - Erstellt automatisch ein `admin`-Benutzerkonto - Liefert das React-Frontend direkt über Flask aus (keine extra Node-Instanz) --- ## Projektstruktur ``` Tools/ ├── backend/ │ ├── app.py # Flask-Einstiegspunkt │ ├── admin.py # Admin-API (Nutzer- und Websitenverwaltung) │ ├── auth/ # Login, Logout, Token-Verifikation │ ├── tools/ # Modulare Tools (MD5 etc.) │ └── util/ # DB-Pool, Konfiguration, Logger, Rate-Limiter ├── frontend/ │ └── src/ │ ├── App.jsx │ ├── components/ # React-Komponenten │ └── services/api.js # Axios-Instanz mit Auth-Interceptor ├── docker-compose.dev.yml ├── Dockerfile ├── .env.example # Vorlage für Umgebungsvariablen └── README.md ``` --- ## Sicherheitshinweise - `SECRET_KEY` niemals im Klartext in der Versionskontrolle speichern – immer `.env` verwenden - Standard-Admin-Passwort (`admin`) nach dem Erststart sofort ändern - MD5 ist kryptografisch unsicher – nicht für Passwort-Hashing verwenden --- ## Lizenz Dieses Projekt steht unter der **Creative Commons BY-NC 4.0 Lizenz**. Du darfst es verwenden, verändern und teilen – aber nicht kommerziell nutzen. Volltext: https://creativecommons.org/licenses/by-nc/4.0 Author: Nirodan – https://github.com/Nirodan