Files
Tools/README.md
T
Nirodan 80ec5eca7b Security, code quality and frontend improvements
- 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>
2026-04-24 13:52:53 +02:00

121 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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