Environment Variables
Core Settings
Port number for the web server. The application listens on
0.0.0.0 by default.Host address to bind the web server. Use
0.0.0.0 to accept connections from any interface.Directory for storing application data (database, stacks, cache). Should be mounted as a volume for data persistence.
Override the detected Docker host hostname. Useful for licensing and multi-host setups.
If not set, Dockhand automatically detects the hostname from the Docker daemon.
Database Configuration
PostgreSQL connection string. If not set, Dockhand uses SQLite (stored in Format:
DATA_DIR/dockhand.db).postgres://USERNAME:PASSWORD@HOST:PORT/DATABASEStop application startup if database migrations fail. Set to
false to continue despite migration errors (not recommended).Enable verbose SQL query logging for debugging database issues.
Skip database migrations entirely. Useful for read-only replicas or troubleshooting.
Docker Connection
Path to the Docker socket inside the container. Useful when Docker socket is mounted at a non-standard location.
Docker daemon connection URL. Supports Unix socket, TCP, and SSH protocols.
When using TCP, configure TLS certificates via the web UI (Settings > Environments) for secure connections.
Force a specific Docker API version. Normally auto-negotiated with the daemon.
Host path to the data directory. Used for translating container paths when creating stacks. Auto-detected by inspecting Dockhand’s own container.
Host path to the Docker socket. Used for socket-proxy scenarios or non-standard socket locations.
Security & Authentication
Base64-encoded 32-byte encryption key for encrypting sensitive data (passwords, tokens, certificates). Auto-generated if not provided.
Generate a key with:
openssl rand -base64 32Force secure cookies (HTTPS-only). Auto-detected based on
x-forwarded-proto header.true: Always use Secure flag (requires HTTPS)false: Never use Secure flag (allows HTTP)- Not set: Auto-detect based on
x-forwarded-proto: httpsheader
Disable username/password authentication and require SSO/OIDC login.
User & Permissions
User ID to run the application as. Useful for matching host user permissions.
The container automatically configures the
dockhand user with this UID on startup.Group ID to run the application as. Useful for matching host group permissions.
Performance & Timeouts
Timeout in seconds for Docker Compose operations (up, down, pull). Increase for slow networks or large images.
Skip disk usage collection (
df command). Recommended for Synology NAS and other systems where df is slow.Disabling this removes disk usage graphs from the dashboard but significantly improves performance on affected systems.
Enable memory usage tracking and RSS snapshots for debugging memory leaks. Enables the
/api/debug/memory endpoint.Interval in minutes for memory snapshots when
MEMORY_MONITOR=true.Disable metrics collection subprocess. Metrics include container stats, system info, and resource usage.
Disable Docker event stream monitoring. Events drive real-time UI updates.
Git Integration
Directory for storing cloned Git repositories (for Git-based stacks).
Configuration Examples
Production Deployment with PostgreSQL
docker-compose.yaml
Remote Docker Host Management
docker-compose.yaml
Configure TLS certificates for the remote Docker host via the web UI (Settings > Environments).
High-Performance Configuration
docker-compose.yaml
Debugging Configuration
docker-compose.yaml
Session Management
Session timeout is configured via the web UI:Set Session Timeout
Configure Session Timeout in seconds:
- Minimum:
1second - Maximum:
2592000seconds (30 days) - Default:
86400seconds (24 hours)
Sessions are stored in the database and survive container restarts.
TLS & HTTPS
Dockhand does not include a built-in TLS/HTTPS server. Use a reverse proxy for production deployments.Nginx Reverse Proxy Example
nginx.conf
The
X-Forwarded-Proto: https header enables automatic secure cookie mode.Traefik Reverse Proxy Example
docker-compose.yaml
Backup & Restore
SQLite Database
- Backup
- Restore
PostgreSQL Database
- Backup
- Restore
Troubleshooting
Database migration errors
Database migration errors
Symptoms: “Migration failed” errors on startupSolutions:
-
Check database connectivity:
-
Verify DATABASE_URL format:
-
Skip migrations temporarily (for diagnosis only):
Performance issues on Synology NAS
Performance issues on Synology NAS
Symptom: Slow dashboard, high CPU usageSolution: Disable disk usage collectionThe
df command is extremely slow on Synology DSM and can freeze the UI.Memory leaks or high memory usage
Memory leaks or high memory usage
Symptom: Container memory grows over timeSolution: Enable memory monitoringThen access:
http://localhost:3000/api/debug/memoryCompose operations timeout
Compose operations timeout
Symptom: Stack deployments fail with “timeout” errorsSolution: Increase timeoutUseful for large images or slow networks.
Cannot access Docker socket
Cannot access Docker socket
Symptom: “Permission denied” or “Socket not accessible”Solutions:
-
Add Docker socket group:
-
Verify socket is mounted:
-
Check entrypoint logs:
Locked out after enabling DISABLE_LOCAL_LOGIN
Locked out after enabling DISABLE_LOCAL_LOGIN
Solution: Temporarily re-enable local loginThen configure OIDC provider before re-enabling.
Next Steps
Authentication
Configure OIDC/SSO and LDAP authentication
Stacks
Deploy and manage Docker Compose stacks
API Reference
Integrate Dockhand with automation tools
Deployment Guide
Production deployment best practices
