Docs: translate README and guides to German
README and all guides under docs/ are now in German, with German anchors for the cross references. Code and configuration blocks are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
2e3f79236c
commit
019c74a418
8 files changed
+469
-463
No files matched your search
@@ -1,34 +1,34 @@
|
||||
# fail2ban-webui
|
||||
|
||||
A small, self-hosted web interface to **view, ban and unban fail2ban IPs on several hosts** –
|
||||
bare metal, VMs, LXC containers or Docker hosts.
|
||||
Eine schlanke, selbst gehostete Weboberfläche, um **fail2ban-Sperren auf mehreren Hosts
|
||||
anzuzeigen, zu setzen und aufzuheben** – Bare Metal, VMs, LXC-Container oder Docker-Hosts.
|
||||
|
||||
- One page for all hosts: current bans per jail, origin (GeoIP) with a world map, search and filters
|
||||
- Ban an IP permanently on any selection of hosts, unban per jail or everywhere
|
||||
- Audit log of every action (who, when, from where)
|
||||
- Optional: log history per IP from **Loki**, links into **Grafana**
|
||||
- Sign-in with a local user, **OpenID Connect** (e.g. Authentik) or your reverse proxy
|
||||
- English and German UI, more languages via one JSON file
|
||||
- Runs as a hardened container (read-only, no capabilities, non-root), `amd64` and `arm64`
|
||||
- Eine Seite für alle Hosts: aktuelle Sperren pro Jail, Herkunft (GeoIP) mit Weltkarte, Suche und Filter
|
||||
- IP dauerhaft auf beliebigen Hosts sperren, pro Jail oder überall entsperren
|
||||
- Protokoll jeder Aktion (wer, wann, von wo)
|
||||
- Optional: Log-Verlauf pro IP aus **Loki**, Links nach **Grafana**
|
||||
- Anmeldung mit lokalem Benutzer, **OpenID Connect** (z. B. Authentik) oder über den Reverse Proxy
|
||||
- Oberfläche auf Englisch und Deutsch, weitere Sprachen über eine JSON-Datei
|
||||
- Läuft als gehärteter Container (schreibgeschützt, ohne Capabilities, nicht als root), `amd64` und `arm64`
|
||||
|
||||
```
|
||||
Browser ──HTTPS──▶ reverse proxy ──▶ fail2ban-webui (Docker)
|
||||
│ SSH, one restricted key
|
||||
Browser ──HTTPS──▶ Reverse Proxy ──▶ fail2ban-webui (Docker)
|
||||
│ SSH, ein eingeschränkter Schlüssel
|
||||
┌─────────────────────┼─────────────────────┐
|
||||
▼ ▼ ▼
|
||||
host A (bare) LXC container Docker host
|
||||
Host A (Bare Metal) LXC-Container Docker-Host
|
||||
f2b-webctl f2b-webctl f2b-webctl
|
||||
fail2ban fail2ban fail2ban
|
||||
```
|
||||
|
||||
The web UI never gets a shell on your hosts. Every host runs a tiny agent,
|
||||
[`f2b-webctl`](agent/f2b-webctl), as SSH *forced command*. It only knows
|
||||
`list`, `ban <ip>`, `unban <jail> <ip>`, `unban-all <ip>` and `version`, refuses to ban
|
||||
private networks, the host's own addresses or anything on its protected list, and logs
|
||||
every action to syslog. Access to the fail2ban socket would be equivalent to root –
|
||||
the agent is the security boundary, not the web UI.
|
||||
Die Weboberfläche bekommt nie eine Shell auf deinen Hosts. Auf jedem Host läuft ein kleiner
|
||||
Agent, [`f2b-webctl`](agent/f2b-webctl), als SSH-*Forced-Command*. Er kennt nur
|
||||
`list`, `ban <ip>`, `unban <jail> <ip>`, `unban-all <ip>` und `version`, sperrt niemals
|
||||
private Netze, die eigenen Adressen des Hosts oder Einträge seiner Schutzliste und
|
||||
protokolliert jede Aktion im Syslog. Zugriff auf den fail2ban-Socket wäre gleichbedeutend
|
||||
mit root – die Sicherheitsgrenze ist der Agent, nicht die Weboberfläche.
|
||||
|
||||
## Quick start
|
||||
## Schnellstart
|
||||
|
||||
```bash
|
||||
mkdir -p /opt/fail2ban-webui/{config,data} && cd /opt/fail2ban-webui
|
||||
@@ -37,40 +37,40 @@ curl -fsSLo .env https://git.retronerd.at/schiwagoa/fail2ban-webui
|
||||
curl -fsSLo config/hosts.yaml https://git.retronerd.at/schiwagoa/fail2ban-webui/raw/branch/main/examples/hosts.yaml.example
|
||||
chown -R 10050:10050 data
|
||||
|
||||
docker compose run --rm -it fail2ban-webui hash-password # paste the line into .env
|
||||
docker compose run --rm fail2ban-webui keygen # public key for the agents
|
||||
# on every fail2ban host: install the agent (docs/agent.md), then:
|
||||
docker compose run --rm -it fail2ban-webui hash-password # Zeile in die .env übernehmen
|
||||
docker compose run --rm fail2ban-webui keygen # öffentlicher Schlüssel für die Agenten
|
||||
# auf jedem fail2ban-Host den Agenten installieren (docs/agent.md), danach:
|
||||
docker compose run --rm -it fail2ban-webui keyscan
|
||||
docker compose run --rm fail2ban-webui check
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
The UI listens on `127.0.0.1:8080` – put a reverse proxy with TLS in front of it.
|
||||
Die Oberfläche lauscht auf `127.0.0.1:8080` – davor gehört ein Reverse Proxy mit TLS.
|
||||
|
||||
## Documentation
|
||||
## Dokumentation
|
||||
|
||||
| | |
|
||||
|---|---|
|
||||
| [Installation](docs/installation.md) | web UI step by step, from `mkdir` to the first login |
|
||||
| [Agent](docs/agent.md) | installing `f2b-webctl` on bare metal, LXC and Docker hosts |
|
||||
| [Configuration](docs/configuration.md) | every setting in `.env` and `hosts.yaml` |
|
||||
| [Authentication](docs/authentication.md) | local login, OpenID Connect (Authentik), reverse-proxy auth |
|
||||
| [Reverse proxy](docs/reverse-proxy.md) | Nginx Proxy Manager, Caddy, Traefik, nginx |
|
||||
| [Operations](docs/operations.md) | logs, updates, backups, troubleshooting |
|
||||
| [Development](docs/development.md) | local testbed, tests, adding a language |
|
||||
| [Security](SECURITY.md) | security model and reporting vulnerabilities |
|
||||
| [Installation](docs/installation.md) | Weboberfläche Schritt für Schritt, von `mkdir` bis zur ersten Anmeldung |
|
||||
| [Agent](docs/agent.md) | `f2b-webctl` auf Bare Metal, LXC und Docker-Hosts installieren |
|
||||
| [Konfiguration](docs/configuration.md) | alle Einstellungen in `.env` und `hosts.yaml` |
|
||||
| [Anmeldung](docs/authentication.md) | lokaler Login, OpenID Connect (Authentik), Anmeldung über den Reverse Proxy |
|
||||
| [Reverse Proxy](docs/reverse-proxy.md) | Nginx Proxy Manager, Caddy, Traefik, nginx |
|
||||
| [Betrieb](docs/operations.md) | Logs, Updates, Backups, Fehlersuche |
|
||||
| [Entwicklung](docs/development.md) | lokales Testbed, Tests, neue Sprache hinzufügen |
|
||||
| [Sicherheit](SECURITY.md) | Sicherheitsmodell und Melden von Schwachstellen |
|
||||
|
||||
## Requirements
|
||||
## Voraussetzungen
|
||||
|
||||
- Web UI: Docker with Compose v2, `amd64` or `arm64`
|
||||
- Every fail2ban host: fail2ban ≥ 0.11 (start/end times need `--with-time`), `python3`,
|
||||
`sshd`, `sudo` (or a root key), `bash`
|
||||
- Weboberfläche: Docker mit Compose v2, `amd64` oder `arm64`
|
||||
- Jeder fail2ban-Host: fail2ban ≥ 0.11 (Start-/Endzeiten brauchen `--with-time`), `python3`,
|
||||
`sshd`, `sudo` (oder ein root-Schlüssel), `bash`
|
||||
|
||||
## License
|
||||
## Lizenz
|
||||
|
||||
[MIT](LICENSE). IP geolocation by [DB-IP Lite](https://db-ip.com) (CC BY 4.0), downloaded
|
||||
only when `GEOIP_AUTO_DOWNLOAD=1`. World map from [Natural Earth](https://www.naturalearthdata.com)
|
||||
(public domain), bundled with the app.
|
||||
[MIT](LICENSE). IP-Geolokalisierung durch [DB-IP Lite](https://db-ip.com) (CC BY 4.0), wird
|
||||
nur bei `GEOIP_AUTO_DOWNLOAD=1` heruntergeladen. Weltkarte von [Natural Earth](https://www.naturalearthdata.com)
|
||||
(Public Domain), in der App enthalten.
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user