80ec5eca7b
- Move SECRET_KEY out of docker-compose into .env (env_file), add .env.example - Add flask-limiter with 10 req/min on login route; introduce util/limiter.py - Replace direct mysql.connector.connect() calls with MySQLConnectionPool via util/db_pool.py - Fix deprecated datetime.utcnow() -> datetime.now(timezone.utc) in auth/login.py - Remove dead /api/scripts 410 route from admin.py - Add MD5 security warning in Md5Tool.jsx - Add ErrorBoundary component and wrap App.jsx - Expand README with setup guide, screenshot and project structure Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
121 lines
3.3 KiB
Markdown
121 lines
3.3 KiB
Markdown
# 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
|
||
|
||

|
||
|
||
---
|
||
|
||
## 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
|