Getting Started
Three steps. That's it.
- Run one command — start Buggregator with a single command. No installation, no registration, no configuration files.
- Add one env variable — change one line in your
.envfile. Your existing Sentry SDK, VarDumper, Monolog, or Ray — they all just work. - Open your browser — navigate to http://127.0.0.1:8000 and start debugging. No login required.
Quick Start
Standalone Binary (Recommended)
Buggregator is a single ~30 MB binary with no dependencies. Download and run:
# Linux (amd64)
curl -sL https://github.com/buggregator/server/releases/latest/download/buggregator-linux-amd64 -o buggregator \
&& chmod +x buggregator \
&& ./buggregatorOther platforms
# Linux (arm64)
curl -sL https://github.com/buggregator/server/releases/latest/download/buggregator-linux-arm64 -o buggregator \
&& chmod +x buggregator
# macOS (Apple Silicon)
curl -sL https://github.com/buggregator/server/releases/latest/download/buggregator-darwin-arm64 -o buggregator \
&& chmod +x buggregator
# macOS (Intel)
curl -sL https://github.com/buggregator/server/releases/latest/download/buggregator-darwin-amd64 -o buggregator \
&& chmod +x buggregatorOpen http://127.0.0.1:8000 in your browser. Done.
Docker
docker run --pull always \
-p 127.0.0.1:8000:8000 \
-p 127.0.0.1:1025:1025 \
-p 127.0.0.1:9912:9912 \
-p 127.0.0.1:9913:9913 \
ghcr.io/buggregator/server:latestDocker Compose
Add Buggregator to your docker-compose.yml alongside your other services:
services:
buggregator:
image: ghcr.io/buggregator/server:latest
ports:
- 127.0.0.1:8000:8000
- 127.0.0.1:1025:1025
- 127.0.0.1:9912:9912
- 127.0.0.1:9913:9913No environment configuration needed. Works out of the box.
Just change the address
If Buggregator is part of an existing Docker Compose stack, other services can reach it by its service name. Change your app's .env to point at the container — that's the only change you need:
# Sentry — only the host changed. Your Sentry SDK keeps working exactly the same.
SENTRY_LARAVEL_DSN=http://sentry@buggregator:8000/1
# Ray
RAY_HOST=ray@buggregator
RAY_PORT=8000
# VarDumper
VAR_DUMPER_FORMAT=server
VAR_DUMPER_SERVER=buggregator:9912
# Monolog
LOG_CHANNEL=socket
LOG_SOCKET_URL=buggregator:9913
# SMTP — email capture
MAIL_HOST=buggregator
MAIL_PORT=1025Ports
Each port serves a specific module. You only need to expose the ports for the features you use:
| Port | Protocol | Module | What it does |
|---|---|---|---|
| 8000 | HTTP | Sentry, Ray, Inspector, HTTP Dumps, XHProf, SMS | Web UI + HTTP-based event ingestion. This is the only required port. |
| 1025 | SMTP | Fake SMTP Server | Captures outgoing emails. Point your app's SMTP config here. |
| 9912 | TCP | Symfony VarDumper | Receives dump() / dd() output. |
| 9913 | TCP | Monolog | Receives log records via Monolog's SocketHandler. |
If you only need specific features, omit the unused ports. For example, VarDumper only:
docker run --pull always \
-p 127.0.0.1:8000:8000 \
-p 127.0.0.1:9912:9912 \
ghcr.io/buggregator/server:latestKubernetes
The recommended way to deploy Buggregator on Kubernetes is using the Helm chart:
helm install buggregator oci://ghcr.io/buggregator/helm-chart/buggregatorSee the Helm chart documentation for SSO, Ingress, Prometheus, and more.
Or deploy manually as a Deployment + Service:
apiVersion: apps/v1
kind: Deployment
metadata:
name: buggregator
spec:
replicas: 1
selector:
matchLabels:
app: buggregator
template:
metadata:
labels:
app: buggregator
spec:
containers:
- name: buggregator
image: ghcr.io/buggregator/server:latest
ports:
- containerPort: 8000
- containerPort: 1025
- containerPort: 9912
- containerPort: 9913
---
apiVersion: v1
kind: Service
metadata:
name: buggregator
spec:
selector:
app: buggregator
ports:
- name: http
port: 8000
- name: smtp
port: 1025
- name: var-dumper
port: 9912
- name: monolog
port: 9913Configuration
Buggregator can be configured via a YAML config file, environment variables, or CLI flags. The priority order is: CLI flags > Environment variables > Config file > Defaults.
See the server configuration guide for the full reference.
Quick example with environment variables
docker run --pull always \
-p 127.0.0.1:8000:8000 \
-e DATABASE_DSN=data.db \
-e METRICS_ENABLED=true \
-v ./data:/data \
ghcr.io/buggregator/server:latestImage Tags
| Tag | Description |
|---|---|
latest | Latest stable release. Recommended. |
dev | Latest development build. May be less stable. |
X.Y (e.g., 2.0) | A specific release version, pinned. |
Security
By default, all ports are bound to 127.0.0.1 (localhost only). This prevents external access. Your debug data never leaves your machine.
Warning: If you remove the
127.0.0.1:prefix (e.g.,-p 8000:8000), the port becomes accessible from outside your machine. Only do this if you understand the implications.
For team environments, consider enabling SSO authentication to restrict access to the UI.