diff --git a/README.md b/README.md index 970f3b8..38a8921 100644 --- a/README.md +++ b/README.md @@ -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) diff --git a/TEST-CLONE.md b/TEST-CLONE.md index dc52dfe..54b60f3 100644 --- a/TEST-CLONE.md +++ b/TEST-CLONE.md @@ -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 +# Test server: http://localhost:8080 +# Admin: http://localhost:8080/admin ``` ## What Should Work diff --git a/aggregator-server/Dockerfile b/aggregator-server/Dockerfile new file mode 100644 index 0000000..3e73e0a --- /dev/null +++ b/aggregator-server/Dockerfile @@ -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"] \ No newline at end of file diff --git a/aggregator-server/go.mod b/aggregator-server/go.mod index 1cc0593..c835911 100644 --- a/aggregator-server/go.mod +++ b/aggregator-server/go.mod @@ -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 diff --git a/docker-compose.yml b/docker-compose.yml index 7a13734..a5ddc28 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -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: