mirror of
https://codeberg.org/likwid/likwid.git
synced 2026-02-09 21:13:09 +00:00
189 lines
6.5 KiB
Markdown
189 lines
6.5 KiB
Markdown
|
|
# Likwid Deployment Guide
|
||
|
|
|
||
|
|
Likwid supports two distinct deployment modes: **Production** and **Demo**. These are separate instances with their own databases.
|
||
|
|
|
||
|
|
## Architecture Overview
|
||
|
|
|
||
|
|
```
|
||
|
|
┌─────────────────────────────────────────────────────────────────┐
|
||
|
|
│ PRODUCTION │
|
||
|
|
│ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │
|
||
|
|
│ │ Frontend │───▶│ Backend │───▶│ PostgreSQL (prod_db) │ │
|
||
|
|
│ │ :4321 │ │ :3000 │ │ :5432 │ │
|
||
|
|
│ └──────────┘ └──────────┘ └──────────────────────┘ │
|
||
|
|
│ DEMO_MODE=false │ No demo data │ Clean database │
|
||
|
|
└─────────────────────────────────────────────────────────────────┘
|
||
|
|
|
||
|
|
┌─────────────────────────────────────────────────────────────────┐
|
||
|
|
│ DEMO │
|
||
|
|
│ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │
|
||
|
|
│ │ Frontend │───▶│ Backend │───▶│ PostgreSQL (demo_db) │ │
|
||
|
|
│ │ :4322 │ │ :3001 │ │ :5433 │ │
|
||
|
|
│ └──────────┘ └──────────┘ └──────────────────────┘ │
|
||
|
|
│ DEMO_MODE=true │ Seed data │ Resettable database │
|
||
|
|
└─────────────────────────────────────────────────────────────────┘
|
||
|
|
```
|
||
|
|
|
||
|
|
## Quick Start
|
||
|
|
|
||
|
|
### Production Deployment
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 1. Copy and configure environment
|
||
|
|
cp compose/.env.production.example compose/.env.production
|
||
|
|
|
||
|
|
# 2. Edit .env.production with secure values
|
||
|
|
# - Set strong POSTGRES_PASSWORD
|
||
|
|
# - Set random JWT_SECRET (64+ chars)
|
||
|
|
# - Set your domain in API_BASE
|
||
|
|
|
||
|
|
# 3. Remove demo seed migration (important!)
|
||
|
|
rm backend/migrations/20260127150000_demo_seed_data.sql
|
||
|
|
|
||
|
|
# 4. Deploy
|
||
|
|
cd compose
|
||
|
|
podman-compose --env-file .env.production -f production.yml up -d
|
||
|
|
|
||
|
|
# 5. Access at http://localhost:4321
|
||
|
|
```
|
||
|
|
|
||
|
|
### Demo Deployment
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 1. Copy environment (defaults are fine for demo)
|
||
|
|
cp compose/.env.demo.example compose/.env.demo
|
||
|
|
|
||
|
|
# 2. Deploy
|
||
|
|
cd compose
|
||
|
|
podman-compose --env-file .env.demo -f demo.yml up -d
|
||
|
|
|
||
|
|
# 3. Access at http://localhost:4322
|
||
|
|
```
|
||
|
|
|
||
|
|
## Demo Instance Details
|
||
|
|
|
||
|
|
### Demo Accounts
|
||
|
|
|
||
|
|
| Username | Password | Role |
|
||
|
|
|-------------|----------|------------------------------|
|
||
|
|
| contributor | demo123 | Standard member |
|
||
|
|
| moderator | demo123 | Can moderate content |
|
||
|
|
| observer | demo123 | Read-only access |
|
||
|
|
|
||
|
|
### Pre-seeded Data
|
||
|
|
|
||
|
|
- **3 Communities**
|
||
|
|
- Aurora Framework (tech/OSS governance)
|
||
|
|
- Civic Commons Network (civic engagement)
|
||
|
|
- Regional Makers Collective (federated makerspaces)
|
||
|
|
|
||
|
|
- **13 Users** with realistic profiles
|
||
|
|
|
||
|
|
- **7 Proposals** in various states (draft, discussion, voting, closed)
|
||
|
|
|
||
|
|
- **Delegation relationships** demonstrating liquid democracy
|
||
|
|
|
||
|
|
- **Moderation history** showing governance in action
|
||
|
|
|
||
|
|
### Resetting Demo
|
||
|
|
|
||
|
|
To reset the demo to a clean state:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# Windows
|
||
|
|
.\scripts\demo-reset.ps1
|
||
|
|
|
||
|
|
# Linux/macOS
|
||
|
|
./scripts/demo-reset.sh
|
||
|
|
|
||
|
|
# Or manually:
|
||
|
|
podman-compose -f compose/demo.yml down -v
|
||
|
|
podman-compose --env-file .env.demo -f compose/demo.yml up -d
|
||
|
|
```
|
||
|
|
|
||
|
|
## Configuration Reference
|
||
|
|
|
||
|
|
### Environment Variables
|
||
|
|
|
||
|
|
| Variable | Production Default | Demo Default | Description |
|
||
|
|
|-------------------|-------------------|---------------------------|--------------------------------|
|
||
|
|
| POSTGRES_USER | likwid | likwid_demo | Database username |
|
||
|
|
| POSTGRES_PASSWORD | (required) | demo_secret_change_me | Database password |
|
||
|
|
| POSTGRES_DB | likwid_prod | likwid_demo | Database name |
|
||
|
|
| DB_PORT | 5432 | 5433 | Database port |
|
||
|
|
| JWT_SECRET | (required) | demo_jwt_secret_... | JWT signing secret |
|
||
|
|
| BACKEND_PORT | 3000 | 3001 | Backend API port |
|
||
|
|
| FRONTEND_PORT | 4321 | 4322 | Frontend port |
|
||
|
|
| API_BASE | (your domain) | http://localhost:3001 | Public API URL |
|
||
|
|
| DEMO_MODE | false | true | Enable demo features |
|
||
|
|
|
||
|
|
### Demo Mode Features
|
||
|
|
|
||
|
|
When `DEMO_MODE=true`:
|
||
|
|
- Demo accounts are recognized and can log in
|
||
|
|
- Destructive actions on demo data are restricted
|
||
|
|
- Reset endpoint available at `/api/demo/reset` (admin only)
|
||
|
|
- Demo status shown at `/api/demo/status`
|
||
|
|
|
||
|
|
## Development Setup
|
||
|
|
|
||
|
|
For local development without containers:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 1. Start only the database
|
||
|
|
podman-compose -f compose/dev.yml up -d
|
||
|
|
|
||
|
|
# 2. Run backend natively
|
||
|
|
cd backend
|
||
|
|
cp ../.env.example .env # Configure DATABASE_URL
|
||
|
|
cargo run
|
||
|
|
|
||
|
|
# 3. Run frontend natively
|
||
|
|
cd frontend
|
||
|
|
npm run dev
|
||
|
|
```
|
||
|
|
|
||
|
|
## Monitoring & Logs
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# View all logs
|
||
|
|
podman-compose -f compose/demo.yml logs -f
|
||
|
|
|
||
|
|
# View specific service
|
||
|
|
podman-compose -f compose/demo.yml logs -f backend
|
||
|
|
|
||
|
|
# Check health
|
||
|
|
curl http://localhost:3001/health
|
||
|
|
```
|
||
|
|
|
||
|
|
## Troubleshooting
|
||
|
|
|
||
|
|
### Database connection issues
|
||
|
|
```bash
|
||
|
|
# Check if postgres is running
|
||
|
|
podman-compose -f compose/demo.yml ps
|
||
|
|
|
||
|
|
# View postgres logs
|
||
|
|
podman-compose -f compose/demo.yml logs postgres
|
||
|
|
```
|
||
|
|
|
||
|
|
### Migration failures
|
||
|
|
```bash
|
||
|
|
# Connect to database and check
|
||
|
|
podman exec -it likwid-demo-db psql -U likwid_demo -d likwid_demo
|
||
|
|
|
||
|
|
# List tables
|
||
|
|
\dt
|
||
|
|
|
||
|
|
# Check migration status
|
||
|
|
SELECT * FROM _sqlx_migrations;
|
||
|
|
```
|
||
|
|
|
||
|
|
### Reset everything
|
||
|
|
```bash
|
||
|
|
# Nuclear option - removes all data and volumes
|
||
|
|
podman-compose -f compose/demo.yml down -v
|
||
|
|
podman volume prune -f
|
||
|
|
podman-compose -f compose/demo.yml up -d
|
||
|
|
```
|