docs(deployment): add 2026-02-14 progress and update platform domains
Some checks failed
CI / pytest (push) Successful in 34m7s
CI / dependency-scanning (push) Successful in 26s
CI / audit (push) Successful in 7s
CI / ruff (push) Successful in 9s
CI / architecture (push) Successful in 11s
CI / docs (push) Failing after 36s
CI / deploy (push) Failing after 3s
Some checks failed
CI / pytest (push) Successful in 34m7s
CI / dependency-scanning (push) Successful in 26s
CI / audit (push) Successful in 7s
CI / ruff (push) Successful in 9s
CI / architecture (push) Successful in 11s
CI / docs (push) Failing after 36s
CI / deploy (push) Failing after 3s
Updates hetzner-server-setup.md with: - Wizamart → Orion rename completion - Production DB rebuild with orion_db/orion_user - Platform domains: wizard.lu, oms.lu, rewardflow.lu - .dockerignore and env_file additions - CapacitySnapshot fix - loyaltyplus.lu → rewardflow.lu throughout Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -54,9 +54,26 @@ Complete step-by-step guide for deploying Orion on a Hetzner Cloud VPS.
|
||||
|
||||
**Deferred (not urgent, do when all platforms ready):**
|
||||
|
||||
- [ ] DNS A + AAAA records for platform domains (`oms.lu`, `loyaltyplus.lu`)
|
||||
- [ ] DNS A + AAAA records for platform domains (`oms.lu`, `rewardflow.lu`)
|
||||
- [ ] Uncomment platform domains in Caddyfile after DNS propagation
|
||||
- [ ] Update `platforms` table `domain` column to match production domains
|
||||
|
||||
!!! success "Progress — 2026-02-14"
|
||||
**Completed:**
|
||||
|
||||
- **Wizamart → Orion rename** — 1,086 occurrences replaced across 184 files (database identifiers, email addresses, domains, config, templates, docs, seed data)
|
||||
- Template renamed: `homepage-wizamart.html` → `homepage-orion.html`
|
||||
- **Production DB rebuilt from scratch** with Orion naming (`orion_db`, `orion_user`)
|
||||
- Platform domains configured in seed data: wizard.lu (main), oms.lu, rewardflow.lu (loyalty)
|
||||
- Docker volume explicitly named `orion_postgres_data`
|
||||
- `.dockerignore` added — prevents `.env` from being baked into Docker images
|
||||
- `env_file: .env` added to `docker-compose.yml` — containers load host env vars properly
|
||||
- `CapacitySnapshot` model import fixed (moved from billing to monitoring in `alembic/env.py`)
|
||||
- All services verified healthy at `https://api.wizard.lu/health`
|
||||
|
||||
**Next steps:**
|
||||
|
||||
- [ ] Step 17: Backups — verify Hetzner backup scope, add PostgreSQL pg_dump
|
||||
- [ ] Step 18: Monitoring & observability — Prometheus, Grafana, uptime checks, alerting
|
||||
|
||||
|
||||
## Installed Software Versions
|
||||
@@ -386,7 +403,7 @@ docker compose --profile full exec -e PYTHONPATH=/app api python scripts/seed/se
|
||||
|
||||
| Data | Count |
|
||||
|---|---|
|
||||
| Admin users | 1 (`admin@orion.lu`) |
|
||||
| Admin users | 1 (`admin@wizard.lu`) |
|
||||
| Platforms | 3 (OMS, Main, Loyalty+) |
|
||||
| Admin settings | 15 |
|
||||
| Subscription tiers | 4 (Essential, Professional, Business, Enterprise) |
|
||||
@@ -417,7 +434,7 @@ Before setting up Caddy, point your domain's DNS to the server.
|
||||
| A | `@` | `91.99.65.229` | 300 |
|
||||
| A | `www` | `91.99.65.229` | 300 |
|
||||
|
||||
### loyaltyplus.lu (Loyalty+ Platform) — TODO
|
||||
### rewardflow.lu (Loyalty+ Platform) — TODO
|
||||
|
||||
| Type | Name | Value | TTL |
|
||||
|---|---|---|---|
|
||||
@@ -442,7 +459,7 @@ It should match the value in the Hetzner Cloud Console (Networking tab). Then cr
|
||||
| AAAA | `git` | `2a01:4f8:1c1a:b39c::1` | 300 |
|
||||
| AAAA | `flower` | `2a01:4f8:1c1a:b39c::1` | 300 |
|
||||
|
||||
Repeat for `oms.lu` and `loyaltyplus.lu`.
|
||||
Repeat for `oms.lu` and `rewardflow.lu`.
|
||||
|
||||
!!! tip "DNS propagation"
|
||||
Set TTL to 300 (5 minutes) initially. DNS changes can take up to 24 hours to propagate globally, but usually complete within 30 minutes. Verify with: `dig api.wizard.lu +short`
|
||||
@@ -484,14 +501,14 @@ www.wizard.lu {
|
||||
# redir https://oms.lu{uri} permanent
|
||||
# }
|
||||
|
||||
# ─── Platform 3: Loyalty+ (loyaltyplus.lu) ──────────────────
|
||||
# Uncomment after DNS is configured for loyaltyplus.lu
|
||||
# loyaltyplus.lu {
|
||||
# ─── Platform 3: Loyalty+ (rewardflow.lu) ──────────────────
|
||||
# Uncomment after DNS is configured for rewardflow.lu
|
||||
# rewardflow.lu {
|
||||
# reverse_proxy localhost:8001
|
||||
# }
|
||||
#
|
||||
# www.loyaltyplus.lu {
|
||||
# redir https://loyaltyplus.lu{uri} permanent
|
||||
# www.rewardflow.lu {
|
||||
# redir https://rewardflow.lu{uri} permanent
|
||||
# }
|
||||
|
||||
# ─── Services ───────────────────────────────────────────────
|
||||
@@ -509,7 +526,7 @@ flower.wizard.lu {
|
||||
```
|
||||
|
||||
!!! info "How multi-platform routing works"
|
||||
All platform domains (`wizard.lu`, `oms.lu`, `loyaltyplus.lu`) point to the **same FastAPI backend** on port 8001. The `PlatformContextMiddleware` reads the `Host` header to detect which platform the request is for. Caddy preserves the Host header by default, so no extra configuration is needed.
|
||||
All platform domains (`wizard.lu`, `oms.lu`, `rewardflow.lu`) point to the **same FastAPI backend** on port 8001. The `PlatformContextMiddleware` reads the `Host` header to detect which platform the request is for. Caddy preserves the Host header by default, so no extra configuration is needed.
|
||||
|
||||
The `domain` column in the `platforms` database table must match:
|
||||
|
||||
@@ -517,7 +534,7 @@ flower.wizard.lu {
|
||||
|---|---|---|
|
||||
| Main | `main` | `wizard.lu` |
|
||||
| OMS | `oms` | `oms.lu` |
|
||||
| Loyalty+ | `loyalty` | `loyaltyplus.lu` |
|
||||
| Loyalty+ | `loyalty` | `rewardflow.lu` |
|
||||
|
||||
Start Caddy:
|
||||
|
||||
@@ -574,7 +591,7 @@ When stores start using subdomains like `acme.oms.lu`, add wildcard blocks:
|
||||
reverse_proxy localhost:8001
|
||||
}
|
||||
|
||||
*.loyaltyplus.lu {
|
||||
*.rewardflow.lu {
|
||||
reverse_proxy localhost:8001
|
||||
}
|
||||
|
||||
@@ -777,7 +794,7 @@ sudo systemctl status gitea-runner
|
||||
| Orion API | 8000 | 8001 | `api.wizard.lu` |
|
||||
| Main Platform | 8000 | 8001 | `wizard.lu` |
|
||||
| OMS Platform | 8000 | 8001 | `oms.lu` (TODO) |
|
||||
| Loyalty+ Platform | 8000 | 8001 | `loyaltyplus.lu` (TODO) |
|
||||
| Loyalty+ Platform | 8000 | 8001 | `rewardflow.lu` (TODO) |
|
||||
| PostgreSQL | 5432 | 5432 | (internal only) |
|
||||
| Redis | 6379 | 6380 | (internal only) |
|
||||
| Flower | 5555 | 5555 | `flower.wizard.lu` |
|
||||
@@ -914,7 +931,7 @@ After Caddy is configured:
|
||||
| Gitea | `https://git.wizard.lu` |
|
||||
| Flower | `https://flower.wizard.lu` |
|
||||
| OMS Platform | `https://oms.lu` (after DNS) |
|
||||
| Loyalty+ Platform | `https://loyaltyplus.lu` (after DNS) |
|
||||
| Loyalty+ Platform | `https://rewardflow.lu` (after DNS) |
|
||||
|
||||
Direct IP access (temporary, until firewall rules are removed):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user