Harden against bot floods and add post-provisioning service check
- Traefik rate-limits all routes (60 req/min standard, 300 for Nextcloud) and writes access logs to /var/log/traefik/access.log - Fail2ban watches Traefik access logs and bans IPs after 10 x 403/404 within 60 s for 24 h - Nextcloud html directory created as www-data (UID 33) so Apache can process .htaccess and serve requests correctly - scripts/check-services.sh verifies all seven endpoints return the expected HTTP status after provisioning
This commit is contained in:
@@ -3,6 +3,35 @@
|
||||
First-run configuration steps to perform after the Ansible playbook has
|
||||
provisioned the server. See `runbook-provisioning.md` for the provisioning steps.
|
||||
|
||||
## 1. Verify all services are reachable
|
||||
|
||||
Before configuring individual services, confirm every HTTPS endpoint is up and
|
||||
TLS certificates are valid. Run this from your local machine:
|
||||
|
||||
```bash
|
||||
bash scripts/check-services.sh
|
||||
```
|
||||
|
||||
The script checks these endpoints and verifies the expected HTTP status code:
|
||||
|
||||
| URL | Expected | Notes |
|
||||
|-----|----------|-------|
|
||||
| `https://cloud.ladkau.de/dashboard/` | 401 | Basic-auth prompt — correct without credentials |
|
||||
| `https://gitea.ladkau.de` | 200 | Gitea sign-in page |
|
||||
| `https://nextcloud.ladkau.de` | 200 | First visit triggers setup and takes 1–2 min |
|
||||
| `https://sso.ladkau.de/realms/master` | 200 | Keycloak realm JSON — first start takes ~90 s |
|
||||
| `https://mail.ladkau.de` | 200 | Roundcube webmail login |
|
||||
| `https://cr.ladkau.de/v2/` | 401 | Registry API — auth required, correct without credentials |
|
||||
| `https://k8s.ladkau.de` | 200 | Placeholder page |
|
||||
|
||||
A `000` result means the connection was refused or timed out — a container that
|
||||
did not start. Keycloak and Nextcloud may return `502` for up to 90 seconds on
|
||||
first boot; wait and retry before investigating.
|
||||
|
||||
Once the script passes, open `https://cloud.ladkau.de/dashboard/` in a browser
|
||||
and authenticate with the `traefik_dashboard_users` credentials to verify the
|
||||
dashboard loads correctly.
|
||||
|
||||
## Gitea
|
||||
|
||||
`gitea_disable_registration` defaults to `true`. For the first deploy, override
|
||||
|
||||
Reference in New Issue
Block a user