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>
This commit is contained in:
@@ -1,34 +1,120 @@
|
||||
# 🐳 Docker-Webplattform: React + Flask + externe MariaDB
|
||||
# Docker-Webplattform: React + Flask + externe MariaDB
|
||||
|
||||
Dieses Projekt ist eine vollständig dockerisierte Webanwendung, die ein React-Frontend und ein Flask-Backend **in einem einzigen Container** vereint. Sie kommuniziert mit einer **externen MariaDB-Datenbank** (z. B. auf einem Unraid-Server) und bietet ein Setup-System, Login, Rollenverwaltung und modulare Tools.
|
||||
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.
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Was macht der Docker-Container?
|
||||
## Screenshot
|
||||
|
||||
- 🚀 Startet automatisch **Flask + React** in einer Umgebung
|
||||
- 🛠 Bei Erststart zeigt er eine **Setup-Webseite** zum Eintragen der DB-Verbindung
|
||||
- 💾 Speichert die Konfiguration in `config/db_config.json`
|
||||
- 🌐 Verbindet sich mit der **externen MariaDB-Datenbank**
|
||||
- 👤 Erstellt automatisch ein `admin`-Benutzerkonto (`admin / admin`)
|
||||
- 🔐 Ermöglicht Login und Rollenzuordnung
|
||||
- 🧰 Liefert das React-Frontend direkt über Flask aus (keine extra Node-Instanz)
|
||||
- 🧾 Verwaltet Tools wie z. B. ein MD5-Hash-Modul
|
||||
- ✅ Docker-fähig, kompatibel mit Docker Compose oder Portainer
|
||||

|
||||
|
||||
---
|
||||
|
||||
## 📦 Projektstruktur
|
||||
## Setup-Anleitung
|
||||
|
||||
## 📄 Lizenz
|
||||
### Voraussetzungen
|
||||
|
||||
- Docker & Docker Compose installiert
|
||||
- Externe MariaDB/MySQL-Datenbank erreichbar (z.B. auf Unraid, NAS oder anderem Server)
|
||||
|
||||
Außerdem ist es notwendig den Ursprüglichen Entwickler anzugeben
|
||||
### 1. Repository klonen
|
||||
|
||||
Dieses Projekt steht unter der **Creative Commons BY-NC 4.0 Lizenz**.
|
||||
➡️ Du darfst ihn verwenden, verändern und teilen – **aber nicht kommerziell nutzen.**
|
||||
Volltext: [https://creativecommons.org/licenses/by-nc/4.0] (https://creativecommons.org/licenses/by-nc/4.0)
|
||||
```bash
|
||||
git clone https://github.com/Nirodan/Tools.git
|
||||
cd Tools
|
||||
```
|
||||
|
||||
💡 Hinweis: Die Urheberschaft erfolgt unter Pseudonym.
|
||||
### 2. Umgebungsvariablen konfigurieren
|
||||
|
||||
Author: Source page: Nirodan/Github:Nirodan Production
|
||||
```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
|
||||
|
||||
Reference in New Issue
Block a user