Skip to content

Docker Deployment

Deploy the ByteFreezer Proxy using Docker for development or single-host production deployments.

Quick Start

# Create config directory
mkdir -p /etc/bytefreezer

# Create config file (see Configuration section below)
vim /etc/bytefreezer/config.yml

# Run proxy
docker run -d \
  --name bytefreezer-proxy \
  --restart unless-stopped \
  -v /etc/bytefreezer/config.yml:/etc/bytefreezer/config.yml \
  -v /var/spool/bytefreezer-proxy:/var/spool/bytefreezer-proxy \
  -v /var/cache/bytefreezer-proxy:/var/cache/bytefreezer-proxy \
  -p 514:514/udp \
  -p 514:514/tcp \
  -p 6343:6343/udp \
  -p 4739:4739/udp \
  -p 8008:8008/tcp \
  bytefreezer/proxy:latest

Port Mapping

Map ports based on your data sources:

Source Port Protocol Docker Flag
Syslog 514 UDP/TCP -p 514:514/udp -p 514:514/tcp
sFlow 6343 UDP -p 6343:6343/udp
IPFIX 4739 UDP -p 4739:4739/udp
NetFlow v5/v9 2055 UDP -p 2055:2055/udp
eBPF 2056 UDP -p 2056:2056/udp
API 8008 TCP -p 8008:8008/tcp

Host Network Mode

For dynamic port configuration from Control, use host networking:

docker run -d \
  --name bytefreezer-proxy \
  --network host \
  -v /etc/bytefreezer/config.yml:/etc/bytefreezer/config.yml \
  -v /var/spool/bytefreezer-proxy:/var/spool/bytefreezer-proxy \
  -v /var/cache/bytefreezer-proxy:/var/cache/bytefreezer-proxy \
  bytefreezer/proxy:latest

With --network host, the proxy binds directly to host ports. No -p flags needed - ports open automatically based on configuration from Control.

Docker Compose

version: '3.8'

services:
  bytefreezer-proxy:
    image: bytefreezer/proxy:latest
    container_name: bytefreezer-proxy
    restart: unless-stopped
    network_mode: host    # Or use 'ports:' for explicit mapping
    volumes:
      - ./config.yml:/etc/bytefreezer/config.yml:ro
      - proxy-spool:/var/spool/bytefreezer-proxy
      - proxy-cache:/var/cache/bytefreezer-proxy
    # If not using host network, map ports explicitly:
    # ports:
    #   - "514:514/udp"
    #   - "514:514/tcp"
    #   - "6343:6343/udp"
    #   - "8008:8008/tcp"

volumes:
  proxy-spool:
  proxy-cache:

Configuration

Create /etc/bytefreezer/config.yml:

app:
  name: bytefreezer-proxy

config_mode: "control-only"
account_id: "your-account-id"
bearer_token: "your-api-key"
control_url: "https://api.bytefreezer.com"

config_polling:
  enabled: true
  interval_seconds: 60

receiver:
  base_url: "http://your-receiver:8080"    # Your Receiver webhook endpoint

batching:
  enabled: true
  max_bytes: 10485760
  timeout_seconds: 60
  compression_enabled: true

spooling:
  enabled: true
  directory: "/var/spool/bytefreezer-proxy"

health_reporting:
  enabled: true
  report_interval: 30

UDP Buffer Tuning

For high-throughput UDP sources:

# On the Docker host
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.rmem_default=8388608

Logs

# View logs
docker logs -f bytefreezer-proxy

# View last 100 lines
docker logs --tail 100 bytefreezer-proxy

Updating

docker pull bytefreezer/proxy:latest
docker stop bytefreezer-proxy
docker rm bytefreezer-proxy
# Re-run with same docker run command