Docker deployment for most users

This commit is contained in:
Fimeg
2025-10-29 12:37:00 -04:00
parent c48ea033fc
commit 740d75f3cf
5 changed files with 85 additions and 43 deletions

View File

@@ -78,37 +78,44 @@ A self-hosted, cross-platform update management platform built for homelabs and
## Quick Start
### 1. Server Setup (Linux)
### 1. Server Setup (Docker - Recommended)
```bash
# Clone and build
# Clone repository
git clone https://github.com/Fimeg/RedFlag.git
cd RedFlag
# Option 1: Use Makefile (recommended)
# Start database and server
docker-compose up -d
# Setup server (one-time)
docker-compose exec server ./redflag-server --setup
# Run database migrations
docker-compose exec server ./redflag-server --migrate
# Restart server with configuration
docker-compose restart server
# Access: http://localhost:8080
# Admin: http://localhost:8080/admin
```
### 2. Manual Setup (Development)
```bash
# Build components
make build-all
# Option 2: Manual build
cd aggregator-server && go mod tidy && go build -o redflag-server cmd/server/main.go
cd ../aggregator-agent && go mod tidy && go build -o redflag-agent cmd/agent/main.go
# Interactive setup wizard
sudo ./redflag-server --setup
# Follow prompts for:
# - Admin credentials
# - Database configuration
# - Server settings
# - Agent seat limits
# Start database
docker-compose up -d postgres
# Setup server
cd aggregator-server && sudo ./redflag-server --setup
# Run migrations
./redflag-server --migrate
# Start server
./redflag-server
# Server: http://redflag.wiuf.net:8080
# Dashboard: http://redflag.wiuf.net:8080
```
### 2. Agent Deployment (Linux)

View File

@@ -11,28 +11,20 @@
git clone https://github.com/Fimeg/RedFlag.git
cd RedFlag
# Build components (requires Go)
make build-all
# Docker deployment (recommended)
docker-compose up -d
# Start database
docker-compose up -d postgres
# Configure server (interactive)
cd aggregator-server
./redflag-server --setup
# One-time server setup
docker-compose exec server ./redflag-server --setup
# Run database migrations
./redflag-server --migrate
docker-compose exec server ./redflag-server --migrate
# Start server
./redflag-server
# Restart server with config
docker-compose restart server
# In another terminal, generate and deploy agent
cd ../aggregator-agent
# Get token from admin UI: http://localhost:8080/admin
# Then deploy:
./aggregator-agent --server http://localhost:8080 --token <YOUR_TOKEN>
# Test server: http://localhost:8080
# Admin: http://localhost:8080/admin
```
## What Should Work

View File

@@ -0,0 +1,19 @@
FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o redflag-server cmd/server/main.go
FROM alpine:latest
RUN apk --no-cache add ca-certificates tzdata
WORKDIR /app
COPY --from=builder /app/redflag-server .
EXPOSE 8080
CMD ["./redflag-server"]

View File

@@ -1,6 +1,6 @@
module github.com/Fimeg/RedFlag/aggregator-server
go 1.21
go 1.23.0
require (
github.com/gin-gonic/gin v1.11.0

View File

@@ -1,23 +1,47 @@
version: '3.8'
services:
aggregator-db:
postgres:
image: postgres:16-alpine
container_name: aggregator-db
container_name: redflag-postgres
environment:
POSTGRES_DB: aggregator
POSTGRES_USER: aggregator
POSTGRES_PASSWORD: aggregator
POSTGRES_DB: redflag
POSTGRES_USER: redflag
POSTGRES_PASSWORD: redflag
volumes:
- aggregator-db-data:/var/lib/postgresql/data
- postgres-data:/var/lib/postgresql/data
ports:
- "5432:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U aggregator"]
test: ["CMD-SHELL", "pg_isready -U redflag"]
interval: 10s
timeout: 5s
retries: 5
restart: unless-stopped
server:
build:
context: ./aggregator-server
dockerfile: Dockerfile
container_name: redflag-server
depends_on:
postgres:
condition: service_healthy
ports:
- "8080:8080"
environment:
- REDFLAG_DB_HOST=postgres
- REDFLAG_DB_PORT=5432
- REDFLAG_DB_NAME=redflag
- REDFLAG_DB_USER=redflag
- REDFLAG_DB_PASSWORD=redflag
- REDFLAG_SERVER_HOST=0.0.0.0
- REDFLAG_SERVER_PORT=8080
volumes:
- ./aggregator-server/.env:/app/.env
- server-data:/app/data
restart: unless-stopped
volumes:
aggregator-db-data:
postgres-data:
server-data: