Skip to main content

Troubleshooting

Common issues and their fixes for Control Zero Self-Managed deployments.

First Step: Check System Status

Before investigating specific issues, run the system status check to get an overview of all services:

czctl status

This displays the health of every service, container states, resource usage, and any active warnings. Use this output to narrow down which service requires attention.

Service Won't Start

Invalid or missing license key

Symptom: Services exit immediately after starting. Logs show license validation failed.

Fix: Verify the license key is correctly set in your configuration:

# Check if the key is present
grep LICENSE_KEY config/controlzero.env

# Re-apply the key
czctl update-license cz_ent_<your-key>

Port conflict

Symptom: Docker Compose reports port is already allocated.

Fix: Identify which process holds the port and either stop it or change the Control Zero port:

# Find the conflicting process
sudo lsof -i :8443

# Change the gateway port in docker-compose.yml
# Under the gateway service, update the ports mapping

Insufficient disk space

Symptom: Container images fail to load. Docker logs show no space left on device.

Fix: Free at least 10 GB on the Docker data partition:

# Check disk usage
df -h /var/lib/docker

# Remove unused Docker resources
docker system prune --volumes

Configuration file missing or malformed

Symptom: A specific service fails to start. Logs reference a missing or invalid config file.

Fix: Re-initialize the configuration:

czctl init

Then reapply any customizations you had made to the generated files.

Gateway Not Intercepting Traffic

Wrong base URL in client configuration

Symptom: LLM requests bypass the gateway and go directly to the provider.

Fix: Verify the client's base URL points to the gateway:

# The base URL should be the gateway address, not the provider
# Correct:
ANTHROPIC_API_URL=https://<gateway-host>:8443

# Incorrect:
ANTHROPIC_API_URL=https://api.anthropic.com

Certificate not trusted by the client

Symptom: Client reports TLS errors such as certificate verify failed or unable to get local issuer certificate.

Fix: Ensure the CA certificate is trusted by the system or application making the request:

# For system-level trust (Debian/Ubuntu)
sudo cp config/certs/ca.pem /usr/local/share/ca-certificates/controlzero.crt
sudo update-ca-certificates

# For Python requests library
export REQUESTS_CA_BUNDLE=/path/to/config/certs/ca.pem

# For Node.js
export NODE_EXTRA_CA_CERTS=/path/to/config/certs/ca.pem

Gateway health check failing

Symptom: The gateway container is running but not accepting connections.

Fix: Check the gateway health endpoint and logs:

curl -k https://localhost:8443/health

docker compose logs gateway --tail 50

Scout Not Reporting

Incorrect API URL

Symptom: Scout agent is running but no data appears in the dashboard.

Fix: Verify the Scout agent configuration points to your on-premises API:

# Check the Scout config
cat /etc/controlzero/scout.yml

# The api_url should point to your local deployment
# api_url: https://<your-host>:8080

Network connectivity between Scout and the API

Symptom: Scout logs show connection refused or timeout errors.

Fix: Verify network reachability:

# From the Scout host, test connectivity to the API
curl -k https://<api-host>:8080/health

If the hosts are on different network segments, verify firewall rules allow traffic on port 8080.

Insufficient permissions

Symptom: Scout reports partial results or permission errors.

Fix: Scout requires read access to process lists and network connections. On Linux, run Scout with appropriate capabilities:

# Verify Scout has the required capabilities
sudo setcap cap_net_raw,cap_net_admin+eip /opt/controlzero/scout

Database Connection Issues

Symptom: Audit log queries fail. Dashboard shows "Unable to load audit data."

Fix: Check the audit database health:

# Run targeted diagnostics
czctl diagnostics database

# Verify the audit database container is running
docker compose ps audit-db

# Check database connectivity
docker compose exec audit-db cz-db-check --query "SELECT 1"

# Check for disk space on the database volume
docker compose exec audit-db df -h /var/lib/audit-data

If the database volume is full, refer to Logging for log rotation configuration.

SSL Proxy Certificate Errors

Symptom: Browsers show certificate warnings when accessing inspected AI domains.

Fix: The CA certificate is not trusted on the endpoint. See SSL Proxy Setup for deployment instructions by platform (GPO, MDM, Linux system trust).

Symptom: Certificate errors only in Firefox.

Fix: Firefox uses its own certificate store by default. Either import the CA manually in Firefox settings, or enable the security.enterprise_roots.enabled policy to inherit the OS trust store.

Log Locations

ServiceLog Location
Gatewaydocker compose logs gateway or /var/log/controlzero/gateway.log
APIdocker compose logs api or /var/log/controlzero/api.log
Audit DBdocker compose logs audit-db
Scout/var/log/controlzero/scout.log
SSL Proxydocker compose logs ssl-proxy or /var/log/controlzero/proxy.log
Installer/opt/controlzero/logs/install.log

Enabling Debug Mode

For detailed diagnostic output, enable debug logging temporarily:

# Set debug mode for all services
czctl set-log-level debug

# Or for a specific service
czctl set-log-level debug --service gateway

Remember to restore the log level after troubleshooting:

czctl set-log-level info

See Logging for detailed log level configuration.