Deployment Options
LinkPeek supports three primary deployment patterns. Pick the model that balances speed, isolation, and maintenance effort for your team.
Balance setup effort against the amount of control you need when selecting a deployment path.
Single-container Docker image
Section titled “Single-container Docker image”- Image: 
hoseiny/linkpeek - Best for: Local demos, CI pipelines, quick reproductions.
 - Runtime: Mount 
DATA_DIR, supply an admin password, optionally link to an external Postgres database. - Trade-offs: Lowest setup overhead, but limited control over sidecars (no built-in tunnel or analytics) without extra containers.
 
Read the full steps in Docker image deployment.
Full Docker Compose stack
Section titled “Full Docker Compose stack”- Stack file: 
docker-compose.ymlin the repository. - Best for: Staging or production environments that require Postgres persistence, Cloudflared tunnel automation, and log shipping.
 - Runtime: Compose orchestrates LinkPeek, Postgres, Cloudflared, and optional db-ip enrichment. Environment variables live in 
.env. - Trade-offs: More services to monitor, but delivers a closer-to-production topology with health checks and restart policies.
 
Detailed instructions live in Compose deployment.
Bare-metal or alternative orchestration
Section titled “Bare-metal or alternative orchestration”- Build the Go binary (
go build ./cmd/linkpeek) and provision supporting services manually. - Configure systemd services, reverse proxies, and TLS termination according to your platform standards.
 - Ideal for Kubernetes or Nomad clusters where you prefer to template your own manifests.
 
Whichever path you choose, ensure you expose port 9009 securely and persist the DATA_DIR volume to protect payload uploads and audit logs.