feat: bootstrap webspace deploy and status-beacon landing page

Add public/index.php, private config bootstrap, FTPS deploy script,
and complete todo/01 including Let's Encrypt, HTTPS redirect, and HSTS docs.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Frank Schwenk
2026-06-11 22:37:06 +02:00
parent 54d29d3afa
commit 659154c93a
9 changed files with 335 additions and 18 deletions
+33 -16
View File
@@ -1,6 +1,7 @@
# 01 — Bootstrap, `.env`, Deployment
**Priorität:** high
**Status:** erledigt (2026-06-11)
**Abhängigkeiten:** keine
**Blockiert:** 02, 03, 04, 05, 06
@@ -10,22 +11,38 @@ Lokales Repo mit dem Webspace verbinden und eine deploybare Grundstruktur anlege
## Checkliste
- [ ] `.env.example` nach `.env` kopieren
- [ ] Plesk-User/Passwort, FTP, später SMTP in `.env` eintragen (nicht committen)
- [ ] In Plesk Document Root prüfen (typisch `httpdocs/`)
- [ ] PHP-Version notieren (Cron-Screenshot: 8.5.x)
- [ ] Verzeichnis `public/` als Quelle für `httpdocs/` festlegen
- [ ] Erstes Test-Deployment: `public/index.php` mit `phpinfo()` oder „hello“ — danach wieder entfernen
- [ ] HTTPS für `0012.de` prüfen (Let's Encrypt in Plesk)
- [ ] Optional: Deploy-Skript (`scripts/deploy.sh` rsync/lftp) — nur wenn gewünscht
- [x] `.env.example` nach `.env` kopieren
- [x] Plesk-User/Passwort, FTP in `.env` eintragen (nicht committen)
- [x] Document Root: `httpdocs/` (Plesk-Standard)
- [x] PHP-Version: 8.5.x (Plesk Cron)
- [x] Verzeichnis `public/` als Quelle für `httpdocs/`
- [x] Erstes Deployment: `public/index.php` (Status-Beacon Platzhalter)
- [x] HTTPS Let's Encrypt in Plesk (gültig bis 2026-09-09)
- [x] HTTP → HTTPS Redirect (301)
- [x] HSTS (`Strict-Transport-Security`, max-age 15768000, includeSubDomains)
- [x] Deploy-Skript: `scripts/deploy.sh` (FTPS/FTP via Python)
## Server-Layout (nach Deploy)
```
0012.de/
├── httpdocs/ ← public/
│ └── index.php
└── private/ ← nicht öffentlich
├── .env
├── config/bootstrap.php
└── data/ ← später last-checks.json
```
## Deploy
```bash
./scripts/deploy.sh # upload
./scripts/deploy.sh --dry-run
```
## Akzeptanzkriterien
- FTP-Login funktioniert
- `https://0012.de/` liefert eine Testseite
- `.env` liegt lokal, ist in `.gitignore`
## Notizen
- Temporäre URL aus Kundenbereich nutzen, falls DNS noch propagiert
- Firewall: Port 8443 (Plesk), 21/22 (FTP/SFTP je nach Anbieter)
- [x] FTP-Login funktioniert (deploy.sh)
- [x] `https://0012.de/` — Landing Page über TLS
- [x] `.env` liegt lokal, ist in `.gitignore`