Systemd Deployment¶
Deploy the ByteFreezer Proxy as a systemd service on Linux servers.
Installation¶
Download Binary¶
# Create directories
sudo mkdir -p /opt/bytefreezer/bin
sudo mkdir -p /etc/bytefreezer
sudo mkdir -p /var/spool/bytefreezer-proxy
sudo mkdir -p /var/cache/bytefreezer-proxy
sudo mkdir -p /var/log/bytefreezer
# Download latest release
curl -L https://github.com/bytefreezer/proxy/releases/latest/download/bytefreezer-proxy-linux-amd64 \
-o /opt/bytefreezer/bin/bytefreezer-proxy
# Make executable
sudo chmod +x /opt/bytefreezer/bin/bytefreezer-proxy
Create Service User¶
sudo useradd -r -s /bin/false bytefreezer
sudo chown -R bytefreezer:bytefreezer /var/spool/bytefreezer-proxy
sudo chown -R bytefreezer:bytefreezer /var/cache/bytefreezer-proxy
sudo chown -R bytefreezer:bytefreezer /var/log/bytefreezer
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
cache_directory: "/var/cache/bytefreezer-proxy"
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"
max_size_bytes: 1073741824 # 1GB - queue/retry size limit
dlq_max_size_bytes: 10737418240 # 10GB - DLQ hard limit, oldest removed first (FIFO)
retry_attempts: 5
retry_interval_seconds: 60
cleanup_interval_seconds: 300
health_reporting:
enabled: true
report_interval: 30
logging:
level: info
encoding: console
Set permissions:
sudo chown bytefreezer:bytefreezer /etc/bytefreezer/config.yml
sudo chmod 600 /etc/bytefreezer/config.yml # Protect API key
Systemd Unit File¶
Create /etc/systemd/system/bytefreezer-proxy.service:
[Unit]
Description=ByteFreezer Proxy
Documentation=https://docs.bytefreezer.com/proxy
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=bytefreezer
Group=bytefreezer
ExecStart=/opt/bytefreezer/bin/bytefreezer-proxy -config /etc/bytefreezer/config.yml
Restart=always
RestartSec=5
# Allow binding to privileged ports (< 1024)
AmbientCapabilities=CAP_NET_BIND_SERVICE
# Security hardening
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/spool/bytefreezer-proxy /var/cache/bytefreezer-proxy /var/log/bytefreezer
PrivateTmp=yes
# Resource limits
LimitNOFILE=65536
LimitNPROC=4096
[Install]
WantedBy=multi-user.target
Enable and Start¶
sudo systemctl daemon-reload
sudo systemctl enable bytefreezer-proxy
sudo systemctl start bytefreezer-proxy
Management¶
# Check status
sudo systemctl status bytefreezer-proxy
# View logs
sudo journalctl -u bytefreezer-proxy -f
# View last 100 lines
sudo journalctl -u bytefreezer-proxy -n 100
# Restart
sudo systemctl restart bytefreezer-proxy
# Stop
sudo systemctl stop bytefreezer-proxy
Firewall Configuration¶
Open ports for your data sources:
firewalld (RHEL/CentOS/Fedora)¶
sudo firewall-cmd --permanent --add-port=514/udp # Syslog
sudo firewall-cmd --permanent --add-port=514/tcp # Syslog TCP
sudo firewall-cmd --permanent --add-port=6343/udp # sFlow
sudo firewall-cmd --permanent --add-port=4739/udp # IPFIX
sudo firewall-cmd --permanent --add-port=2055/udp # NetFlow
sudo firewall-cmd --permanent --add-port=8008/tcp # API
sudo firewall-cmd --reload
ufw (Ubuntu/Debian)¶
sudo ufw allow 514/udp # Syslog
sudo ufw allow 514/tcp # Syslog TCP
sudo ufw allow 6343/udp # sFlow
sudo ufw allow 4739/udp # IPFIX
sudo ufw allow 2055/udp # NetFlow
sudo ufw allow 8008/tcp # API
iptables¶
sudo iptables -A INPUT -p udp --dport 514 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 514 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 6343 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 4739 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 2055 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8008 -j ACCEPT
UDP Buffer Tuning¶
For high-throughput UDP sources, increase kernel buffer sizes:
# Apply immediately
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.rmem_default=8388608
sudo sysctl -w net.core.netdev_max_backlog=50000
# Persist across reboots
cat <<EOF | sudo tee /etc/sysctl.d/99-bytefreezer.conf
net.core.rmem_max=16777216
net.core.rmem_default=8388608
net.core.netdev_max_backlog=50000
EOF
sudo sysctl --system
Updating¶
# Stop service
sudo systemctl stop bytefreezer-proxy
# Download new version
curl -L https://github.com/bytefreezer/proxy/releases/latest/download/bytefreezer-proxy-linux-amd64 \
-o /opt/bytefreezer/bin/bytefreezer-proxy
sudo chmod +x /opt/bytefreezer/bin/bytefreezer-proxy
# Start service
sudo systemctl start bytefreezer-proxy
# Verify
sudo systemctl status bytefreezer-proxy
Troubleshooting¶
Service Won't Start¶
# Check for errors
sudo journalctl -u bytefreezer-proxy -n 50
# Verify config syntax
/opt/bytefreezer/bin/bytefreezer-proxy -config /etc/bytefreezer/config.yml -validate
Port Already in Use¶
Permission Denied on Port < 1024¶
Ensure the service has AmbientCapabilities=CAP_NET_BIND_SERVICE in the unit file, or run as root (not recommended).
High CPU/Memory¶
Check for high-volume data sources. Consider:
- Enabling sampling in source devices
- Increasing
worker_countin dataset config - Reviewing transformation complexity