Files
the_order/scripts/deploy/README.md
T

181 lines
4.1 KiB
Markdown

# Deployment Automation Scripts
Automated deployment scripts for The Order using the Sankofa Phoenix / Proxmox runtime.
## Overview
The active deployment path is now Sankofa Phoenix / Proxmox-native. The scripts in this directory now:
- build The Order locally
- package the `portal-public` Next.js standalone bundle
- sync it to the Order public CT on Proxmox
- refresh the Order HAProxy edge
- verify direct, edge, and public health endpoints
The default topology is:
- `order-portal-public` CT `10090` at `192.168.11.36:3000`
- `order-haproxy` CT `10210` at `192.168.11.39:80`
- public URL `https://the-order.sankofa.nexus`
- Phoenix public URL `https://phoenix.sankofa.nexus`
## Quick Start
```bash
# Deploy the frontend to the default dev target
./scripts/deploy/deploy.sh --phase 11 --environment dev
# Run the direct sync script
./scripts/deploy/sync-portal-public-to-sankofa-phoenix.sh
# Full phase flow
./scripts/deploy/deploy.sh --all --environment dev
```
## Configuration
Configuration is managed in `config.sh`. The most important variables are:
- `PROXMOX_HOST`
- `ORDER_PORTAL_PUBLIC_VMID`
- `ORDER_PORTAL_PUBLIC_IP`
- `ORDER_HAPROXY_VMID`
- `ORDER_HAPROXY_IP`
- `SANKOFA_PHOENIX_URL`
- `THE_ORDER_PUBLIC_URL`
- `IMAGE_REGISTRY`
- `IMAGE_TAG`
Example:
```bash
export ENVIRONMENT=prod
export PROXMOX_HOST=192.168.11.11
export ORDER_PORTAL_PUBLIC_VMID=10090
export ORDER_HAPROXY_VMID=10210
./scripts/deploy/deploy.sh --phase 11
```
## Phase Scripts
### Phase 1: Prerequisites
- verifies local tooling
- verifies SSH access to Proxmox
- records the Sankofa / Order runtime targets
```bash
./scripts/deploy/phase1-prerequisites.sh
```
### Phase 2: Sankofa Phoenix Target Preparation
- confirms the Order public CT and HAProxy CT are reachable
- previews the HAProxy config for `the-order.sankofa.nexus`
- probes Phoenix public health
```bash
./scripts/deploy/phase2-sankofa-phoenix-target.sh
```
### Phase 6: Build & Package
- builds all packages and applications
- creates local Docker images for services and apps
- previews the Phoenix deployment artifact
```bash
./scripts/deploy/phase6-build-package.sh
```
### Phase 11: Frontend Applications Deployment
- builds `portal-public`
- syncs the standalone bundle to CT `10090`
- installs or refreshes the `the-order-portal-public` systemd service
- reprovisions the Order HAProxy edge on `10210`
- verifies LAN and public health endpoints
```bash
./scripts/deploy/phase11-frontend-apps.sh
```
## Usage Examples
### Frontend deployment
```bash
./scripts/deploy/deploy.sh --phase 11 --environment dev
```
### Build only
```bash
./scripts/deploy/deploy.sh --phase 6 --environment dev
```
### Continue from the last saved state
```bash
./scripts/deploy/deploy.sh --continue
```
## State Management
Deployment state is saved in `.deployment/${ENVIRONMENT}.state`.
Artifacts and image manifests are written under `.deployment/artifacts/`.
## Logging
All deployment logs are saved to `logs/deployment-YYYYMMDD-HHMMSS.log`.
```bash
tail -f logs/deployment-*.log
```
## Manual Steps
Some phases still require external operator work:
- `Phase 3`: identity-provider / Entra setup
- `Phase 8`: secret injection into the chosen backend
- `Phase 12`: DNS / NPM updates if you are changing routing
- `Phase 13`: central monitoring / alert wiring
## Troubleshooting
### Check deployment state
```bash
cat .deployment/dev.state
```
### Verify Order runtime access
```bash
ssh [email protected] "pct status 10090 && pct status 10210"
curl -fsS http://192.168.11.36:3000/api/health
curl -fsS -H 'Host: the-order.sankofa.nexus' http://192.168.11.39/api/health
curl -fsS https://the-order.sankofa.nexus/api/health
```
### Verify Phoenix public access
```bash
curl -fsS https://phoenix.sankofa.nexus/health
```
### View CT service logs
```bash
ssh [email protected] "pct exec 10090 -- journalctl -u the-order-portal-public -n 100 --no-pager"
```
## Security Notes
- never commit secrets to the repository
- keep Proxmox SSH access limited to operator hosts
- review CT and HAProxy targets before applying changes
- prefer the documented `10090 -> 10210 -> public` path over ad hoc edits