Skip to content

Repository files navigation

Dockpal

Self-hosted Docker management panel — single binary, embedded UI, no dependencies.

Manage containers, deploy compose stacks, monitor resources, control multiple remote Docker hosts from one dashboard.


Quick Start

Production Install (Debian/Ubuntu)

curl -fsSL https://raw.githubusercontent.com/sdldev/dockpal/main/update.sh | sudo bash

Installs systemd service at /etc/systemd/system/dockpal.service.

Post-install

# Check status
systemctl status dockpal
# Read logs
journalctl -u dockpal -f
# Get admin password (first run only)
journalctl -u dockpal | grep "admin password"# Set custom password for next restart
DOCKPAL_INITIAL_ADMIN_PASSWORD=mypassword systemctl restart dockpal

Update command: same as install.


Update

Auto-update via update.sh script. Runs manually or via cron.

Daily update (cron):

# Edit crontab
crontab -e
# Add line (daily at 2 AM)
0 2 *** /opt/dockpal/update.sh >> /var/log/dockpal-update.log 2>&1

Manual update:

/opt/dockpal/update.sh

Optional environment variables:

VariableDefaultDescription
DOCKPAL_VERSIONlatestRelease tag to install
DOCKPAL_REPOsdldev/dockpalGitHub repository
DOCKPAL_FORCE0Force reinstall even if already up-to-date
DOCKPAL_UPDATE_TEMPLATES1Refresh templates from release

Backup automatic on every update. Rollback happens automatically if health check fails.


Configuration

All via environment variables. No config file needed.

VariableDefaultDescription
DOCKPAL_DATA_DIR/opt/dockpal/dataRoot directory for db, log, backups
PORT3012Server listen port
DOCKPAL_TLS_DOMAINDomain for ACME/Let's Encrypt auto-cert
DOCKPAL_BACKUP_INTERVAL24hScheduled backup interval (0 = disabled)
DOCKPAL_BACKUP_RETENTION168hBackup retention window (7 days)
DOCKPAL_INITIAL_ADMIN_PASSWORDrandomAdmin password (only on first startup)

TLS modes

  • Let's Encrypt: DOCKPAL_TLS_DOMAIN=panel.example.com DOCKPAL_TLS=true ./dockpal server
  • Custom cert: DOCKPAL_TLS=true DOCKPAL_TLS_CERT=/path/cert.crt DOCKPAL_TLS_KEY=/path/key.crt ./dockpal server
  • Self-signed: DOCKPAL_TLS=true ./dockpal server (testing only)

CLI Reference

dockpal <subcommand> [flags]
Subcommands:
server Start the HTTP server
backup Create a database backup
restore Restore database from backup
reset-password Reset user password
version Print version
help Show help

Examples:

# Start server
./dockpal server
# On-demand backup
./dockpal backup --output /tmp/backup.db
# Reset admin password (stop server first)
./dockpal reset-password --username admin --password NewPass123
# View version
./dockpal version

Passwords set via UI are preserved across updates. Only reset-password CLI command changes them.


Features

CategoryDetails
ContainersList, start, stop, restart, delete, inspect, logs, stats
DeployCompose YAML, Git repo, 5 built-in templates (PostgreSQL 17, MariaDB, Redis 7, Grafana, Adminer)
ImagesPull, updates check, registry auth, prune
FilesBrowse, read, write, upload, download inside containers
DomainsTraefik integration, custom routing, SSL
MonitoringPrometheus metrics, real-time charts, health checks
Multi-hostManage remote Docker hosts (direct HTTP or edge WebSocket)
SecurityRBAC (admin/operator/viewer), JWT auth, audit log
BackupScheduled + manual, SHA-256 checksum, retention policy

Health & Metrics

Endpoints:

PathDescription
/healthFull health report (HTTP 200/503)
/api/metricsPrometheus metrics (no auth)
/api/docsAPI documentation UI

Example metrics:

scrape_configs:
- job_name: dockpalstatic_configs:
- targets: ['localhost:3012']metrics_path: /api/metrics

Project Structure

dockpal/
├── main.go # Entry point
├── Makefile # Build/test targets
├── internal/ # Go packages
│ ├── server/ # Gin routes, middleware, RBAC
│ ├── docker/ # Moby client wrapper
│ ├── auth/ # JWT, login, passwords
│ ├── db/ # BBolt persistence
│ └── ...
├── web/ # Embedded frontend
├── templates/ # JSON deploy templates
└── update.sh # Self-updater script

License

MIT

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages