- setup.sh: interaktives Ersteinrichtungs-Skript - Makefile: Komfort-Befehle (start/stop/logs/backup/wp-cli) - .env.example: vollständig dokumentiert - README.md: Quickstart, Architektur, Befehle Made-with: Cursor |
||
|---|---|---|
| .. | ||
| src | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| Makefile | ||
| README.md | ||
| setup.sh | ||
| STATE.md | ||
Redax-WP
KI-gestützter WordPress-Redakteur mit Dashboard, RSS-Feed-Integration und Telegram-Anbindung.
Was ist Redax-WP? Ein selbst gehostetes System aus WordPress + einem Flask-Dashboard, das KI-Artikel generiert, einplant und veröffentlicht. RSS-Feeds können automatisch importiert werden. KI-Artikel landen in WordPress und Telegram, RSS-Artikel nur in WordPress.
Schnellstart
# 1. Repository klonen
git clone https://github.com/DEIN_USER/redax-wp mein-blog
cd mein-blog
# 2. Interaktives Setup starten
chmod +x setup.sh
./setup.sh
Das Setup-Skript erledigt automatisch:
.envgenerieren (mit zufälligen Passwörtern)- Docker Stack starten
- WordPress installieren (6.9+)
- Blocksy Theme + Yoast SEO installieren
- Kategorien & Navigation anlegen
- Application Password für REST-API generieren
Voraussetzungen
| Software | Version |
|---|---|
| Docker | 24+ |
| Docker Compose | 2.x |
| Freie Ports | 80 (WordPress), 8080 (Dashboard) |
Manuelle Konfiguration
Falls setup.sh nicht verwendet wird:
cp .env.example .env
# .env anpassen
docker compose up -d --build
Nützliche Befehle
make help # Alle Befehle anzeigen
make start # Stack starten
make stop # Stack stoppen
make restart # Dashboard neustarten (nach .env-Änderung)
make logs # Live-Logs aller Container
make logs-web # Nur Dashboard-Logs
make status # Container-Status
make shell-web # Shell im Dashboard
make shell-db # MySQL-Shell
make backup # Datensicherung nach ./backups/
make update # Docker-Images aktualisieren
WP-CLI Befehle
# Beliebige WP-CLI Befehle ausführen:
make wp plugin list
make wp user list
make wp cache flush
Architektur
┌─────────────────────────────────────────────────┐
│ Docker Stack │
│ │
│ ┌──────────────┐ ┌───────────────────────┐ │
│ │ redax-web │ │ redax-wordpress │ │
│ │ Flask :8080 │◄──►│ Apache/PHP :80 │ │
│ └──────┬───────┘ └──────────┬────────────┘ │
│ │ │ │
│ └──────────┬────────────┘ │
│ ▼ │
│ ┌──────────────┐ │
│ │ redax-db │ │
│ │ MySQL :3306│ │
│ └──────────────┘ │
└─────────────────────────────────────────────────┘
│ │
▼ ▼
https://redax. https://blog.
example.com example.com
(Dashboard) (Blog)
Cloudflare Tunnel einrichten
Für öffentliche Erreichbarkeit ohne offene Ports:
- Cloudflare Zero Trust → Networks → Tunnels → Create
- Tunnel 1 (Dashboard):
- Hostname:
redax.example.com - Service:
http://localhost:8080
- Hostname:
- Tunnel 2 (Blog):
- Hostname:
blog.example.com - Service:
http://localhost:80
- Hostname:
- Docker-Befehle aus Cloudflare kopieren und ausführen
Nach dem Setup
Pflichtfelder nachträglich setzen
Nach dem Setup unbedingt in .env eintragen:
nano .env
# OPENROUTER_API_KEY=sk-or-v1-...
# TELEGRAM_BOT_TOKEN=...
# TELEGRAM_CHANNEL_ID=...
make restart # Änderungen übernehmen
WordPress konfigurieren
- WP-Admin:
https://blog.example.com/wp-admin - Kategorien umbenennen: WP-Admin → Beiträge → Kategorien
- Yoast SEO einrichten: SEO → Allgemein
Daten & Verzeichnisse
redax-wp/
├── data/
│ ├── mysql/ # MySQL-Datenbank (persistent)
│ ├── wordpress/ # WordPress-Dateien + Uploads
│ └── db/ # Redax-WP SQLite-Datenbank
├── logs/ # Anwendungs-Logs
├── src/ # Dashboard-Quellcode (Flask)
├── .env # Konfiguration (nicht ins Git!)
├── .env.example # Vorlage
├── docker-compose.yml
├── setup.sh # Automatisches Ersteinrichtungs-Skript
└── Makefile # Komfort-Befehle
Features
| Feature | Status |
|---|---|
| KI-Artikel generieren (OpenRouter) | ✅ |
| WordPress REST API Integration | ✅ |
| Yoast SEO Felder | ✅ |
| RSS Feed Import | ✅ |
| Redaktionskalender (7 Tage) | ✅ |
| Telegram Benachrichtigungen | ✅ |
| Morgen-Briefing (10:00 Uhr) | ✅ |
| Featured Image (og:image) | ✅ |
| Strukturierte Logs | ✅ |
| Multi-Reviewer Support | ✅ |
Lizenz
MIT — frei verwendbar, anpassbar, weitergabe erlaubt.