Production installation
EdgeComet requires minimal dependencies: Redis for service discovery and cache indexing, and optionally Prometheus for monitoring. The project has been extensively tested on Ubuntu and is fully compatible.
Depending on your installation scheme (single machine, distributed renders, multiple gateways), your configuration will differ.
Prerequisites
- Go 1.21+ (for building)
- Redis 6.0+
- Google Chrome (latest stable) - for Render Service machines
- Linux (Ubuntu LTS recommended)
Install Google Chrome
On Render Service machines, install Google Chrome:
apt-get update && apt-get install -y fonts-liberation wget gnupg
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | \
gpg --dearmor -o /usr/share/keyrings/google-chrome.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/google-chrome.gpg] \
http://dl.google.com/linux/chrome/deb/ stable main" | \
tee /etc/apt/sources.list.d/google-chrome.list
apt-get update && apt-get install -y google-chrome-stableBuild from source
# Clone repository
git clone <repository-url>
cd edgecomet
# Build all services
GOOS=linux GOARCH=amd64 go build -o bin/edge-gateway ./cmd/edge-gateway
GOOS=linux GOARCH=amd64 go build -o bin/render-service ./cmd/render-service
GOOS=linux GOARCH=amd64 go build -o bin/cache-daemon ./cmd/cache-daemonDirectory structure
/opt/edgecomet/
bin/
edge-gateway
render-service
cache-daemon
configs/
edge-gateway.yaml
render-service.yaml
cache-daemon.yaml
hosts.d/
example.com.yaml
cache/
# rendered HTML files
logs/
# log files (if file logging enabled)Create directories
sudo mkdir -p /opt/edgecomet/{bin,configs/hosts.d,cache,logs}Create service user
sudo useradd -r -s /bin/false edgecomet
sudo chown -R edgecomet:edgecomet /opt/edgecometCopy binaries
sudo cp bin/* /opt/edgecomet/bin/
sudo chmod +x /opt/edgecomet/bin/*Copy configurations
sudo cp configs/sample/*.yaml /opt/edgecomet/configs/
sudo cp configs/sample/hosts.d/*.yaml /opt/edgecomet/configs/hosts.d/Set permissions
# Binaries
sudo chmod 755 /opt/edgecomet/bin/*
# Configs (read-only for service)
sudo chmod 640 /opt/edgecomet/configs/*.yaml
sudo chmod 640 /opt/edgecomet/configs/hosts.d/*.yaml
# Cache directory (writable)
sudo chmod 755 /opt/edgecomet/cacheVerify installation
/opt/edgecomet/bin/edge-gateway -h
/opt/edgecomet/bin/render-service -hUse the -t flag to validate your Edge Gateway configuration without starting the service. This checks syntax, required fields, and host configuration files:
/opt/edgecomet/bin/edge-gateway -t -c /opt/edgecomet/configs/edge-gateway.yamlYou can also test how a specific URL would be processed by passing it as an argument:
/opt/edgecomet/bin/edge-gateway -t -c /opt/edgecomet/configs/edge-gateway.yaml \
"https://example.com/products/widget?utm_source=google"Test manual startup
Before configuring systemd, verify the services start correctly. Open separate terminals for each service:
# Terminal 1: Start Edge Gateway
/opt/edgecomet/bin/edge-gateway -c /opt/edgecomet/configs/edge-gateway.yaml
# Terminal 2: Start Render Service
/opt/edgecomet/bin/render-service -c /opt/edgecomet/configs/render-service.yamlYou should see startup logs indicating successful initialization. Press Ctrl+C to stop each service.

