Docker deployment for most users
This commit is contained in:
41
README.md
41
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)
|
||||
|
||||
@@ -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
|
||||
|
||||
19
aggregator-server/Dockerfile
Normal file
19
aggregator-server/Dockerfile
Normal 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"]
|
||||
@@ -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
|
||||
|
||||
@@ -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-db-data:
|
||||
- ./aggregator-server/.env:/app/.env
|
||||
- server-data:/app/data
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
postgres-data:
|
||||
server-data:
|
||||
|
||||
Reference in New Issue
Block a user