likwid/docs/admin/installation.md
Marco Allegretti 910a6465f2 Initial commit: Likwid governance platform
- Backend: Rust/Axum with PostgreSQL, plugin architecture
- Frontend: Astro with polished UI
- Voting methods: Approval, Ranked Choice, Schulze, STAR, Quadratic
- Features: Liquid delegation, transparent moderation, structured deliberation
- Documentation: User and admin guides in /docs
- Deployment: Docker/Podman compose files for production and demo
- Demo: Seeded data with 3 communities, 13 users, 7 proposals

License: AGPLv3
2026-01-27 17:21:58 +01:00

2.4 KiB

Installation Guide

This guide covers deploying Likwid for production use.

Requirements

  • PostgreSQL 16+
  • Rust 1.75+ (for building backend)
  • Node.js 20+ (for building frontend)
  • Container runtime (Podman or Docker) - optional but recommended

Quick Start with Containers

1. Clone the Repository

git clone https://codeberg.org/likwid/likwid.git
cd likwid

2. Configure Environment

cp compose/.env.production.example compose/.env.production
# Edit .env.production with your settings

Required settings:

  • POSTGRES_PASSWORD - Strong database password
  • JWT_SECRET - Random 64+ character string

3. Deploy

cd compose
podman-compose --env-file .env.production -f production.yml up -d

4. Access

Manual Installation

Backend

cd backend

# Install dependencies and build
cargo build --release

# Run migrations
export DATABASE_URL="postgres://user:pass@localhost/likwid"
sqlx migrate run

# Start server
./target/release/likwid

Frontend

cd frontend

# Install dependencies
npm ci

# Build for production
npm run build

# Start server
node ./dist/server/entry.mjs

Configuration Files

File Purpose
compose/production.yml Production container deployment
compose/demo.yml Demo instance deployment
compose/.env.production.example Environment template
backend/.env Backend configuration

Reverse Proxy

For production, use a reverse proxy (nginx, Caddy) with:

  • HTTPS termination
  • WebSocket support (for real-time features)
  • Proper headers

Example nginx config:

server {
    listen 443 ssl http2;
    server_name likwid.example.org;

    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;

    location / {
        proxy_pass http://127.0.0.1:4321;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    location /api {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Next Steps