Skip to content
forked from dockpeek/dockpeek

Easily access your Docker container web interfaces and keep them up to date — across all your hosts.

License

Notifications You must be signed in to change notification settings

buyaka/dockpeek

 
 

Repository files navigation

dockpeek logo

Dockpeek

GitHub release (latest by date) GitHub Repo stars License Package Registry Docker Image Size Buy Me a Coffee

Quick Access & One-Click Updates for Your Docker Containers

Dockpeek is a lightweight, self-hosted Docker dashboard built for efficiency and simplicity. With Dockpeek, you can instantly access container web interfaces, monitor ports, and apply updates in a single click. It also auto-detects Traefik labels to display container addresses, helping you keep everything organized — all from one clean and intuitive interface.

✨ Key Features

  • Port Mapping Overview — Instantly see all running containers and their published ports
  • Traefik Integration — Auto-detect and display container addresses from Traefik labels
  • One-Click Access — Jump directly into containerized web interfaces
  • Multi-Host Management — Manage multiple Docker hosts in one place
  • Zero Configuration — Works out of the box, no manual setup required
  • Update Management — Check for image updates and upgrade containers with a click
  • Responsive UI — Smooth experience on desktop, tablet, and mobile

🏷️ Labels Support

Customize how your containers are displayed with custom labels:

  • dockpeek.https — Force HTTPS protocol for specific ports
  • dockpeek.link — Turn container names into clickable links
  • dockpeek.ports — Add custom ports to display alongside detected ones
  • dockpeek.tags — Organize and categorize containers with custom tags

Dockpeek Night mode screenshot

Checking for updates

Dockpeek Checking for updates

Updates available

Dockpeek Updates available

Light mode

Dockpeek Light mode screenshot


🔧 Installation

Basic Setup (Recommended)

The easiest way to get started with Dockpeek:

services:
  dockpeek:
    image: ghcr.io/dockpeek/dockpeek:latest
    container_name: dockpeek
    environment:
      - SECRET_KEY=your_secure_secret_key # Required: Set a secure secret key
      - USERNAME=admin # username
      - PASSWORD=secure_password # password
    ports:
      - "3420:8000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped

Then visit: http://localhost:3420

Option 2: Secure Setup with Socket Proxy

For enhanced security, use a socket proxy to limit Docker API access:

services:
  dockpeek:
    image: ghcr.io/dockpeek/dockpeek:latest
    container_name: dockpeek
    environment:
      - SECRET_KEY=your_secure_secret_key
      - USERNAME=admin
      - PASSWORD=secure_password
      - DOCKER_HOST=tcp://socket-proxy:2375 # Connect via socket proxy
    ports:
      - "3420:8000"
    depends_on:
      - socket-proxy
    restart: unless-stopped

  socket-proxy:
    image: lscr.io/linuxserver/socket-proxy:latest
    container_name: dockpeek-socket-proxy
    environment:
      - CONTAINERS=1
      - IMAGES=1
      - PING=1
      - VERSION=1
      - INFO=1
      - POST=1
      # Required for container updates
      - ALLOW_START=1
      - ALLOW_STOP=1
      - ALLOW_RESTARTS=1
      - NETWORKS=1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    read_only: true
    tmpfs:
      - /run
    restart: unless-stopped

🌐 Multi-Host Setup

Manage multiple Docker hosts from a single dashboard:

services:
  dockpeek:
    image: ghcr.io/dockpeek/dockpeek:latest
    container_name: dockpeek
    restart: unless-stopped
    ports:
      - "3420:8000"
    environment:
      - SECRET_KEY=your_secure_secret_key
      - USERNAME=admin
      - PASSWORD=secure_password

      # --- Docker Host 1 (Local) ---
      - DOCKER_HOST_1_URL=unix:///var/run/docker.sock # Local Docker socket
      - DOCKER_HOST_1_NAME=Local Development # Display name in UI
      # DOCKER_HOST_1_PUBLIC_HOSTNAME is optional; uses host IP by default

      # --- Docker Host 2 (Remote Server) ---
      - DOCKER_HOST_2_URL=tcp://192.168.1.100:2375 # Remote socket proxy
      - DOCKER_HOST_2_NAME=Production Server # Display name in UI
      - DOCKER_HOST_2_PUBLIC_HOSTNAME=server.local # Optional: Custom hostname for links

      # --- Docker Host 3 (Tailscale) ---
      - DOCKER_HOST_3_URL=tcp://100.64.1.5:2375 # Tailscale IP
      - DOCKER_HOST_3_NAME=Remote VPS # Display name in UI
      - DOCKER_HOST_3_PUBLIC_HOSTNAME=vps.tailnet.ts.net # Optional: Tailscale FQDN

      # --- Continue pattern for additional hosts (4, 5, etc.) ---
    volumes:
      # Required only if you are connecting to a local socket
      - /var/run/docker.sock:/var/run/docker.sock:ro

Tip

Install a Docker Socket Proxy on each remote host for secure API access.


⚙️ Configuration

Required Environment Variables

Variable Description
SECRET_KEY Required. Essential for application functionality and session security
USERNAME Required. Username for dashboard login
PASSWORD Required. Password for dashboard login

Optional Configuration

Variable Default Description
DISABLE_AUTH false Set to true to disable authentication
TRAEFIK_LABELS true Set to false to hide Traefik integration column
TAGS true Set to false to disable container tagging
DOCKER_HOST Local socket Primary Docker connection URL
DOCKER_HOST_NAME default Display name for the primary server in the UI
DOCKER_HOST_PUBLIC_HOSTNAME Auto-detected Optional hostname or IP for generating clickable links

Multi-Host Variables

For additional Docker hosts, use the pattern DOCKER_HOST_N_*:

Variable Description
DOCKER_HOST_N_URL Docker API URL (e.g., tcp://host:2375)
DOCKER_HOST_N_NAME Display name in the dashboard
DOCKER_HOST_N_PUBLIC_HOSTNAME Optional public hostname for links

Important

Important Configuration Requirements:

  • SECRET_KEY must always be set - dockpeek will not function without it
  • USERNAME and PASSWORD are required unless DISABLE_AUTH=true
  • Multi-host variables require matching N identifiers (URL, name, hostname)

🏷️ Container Labels

Customize how containers appear and behave in Dockpeek:

services:
  webapp:
    image: nginx:latest
    ports:
      - "3001:80"
    labels:
      - "dockpeek.ports=8080,9090" # Show additional ports
      - "dockpeek.https=3001,8080" # Force HTTPS for these ports
      - "dockpeek.link=https://myapp.local" # Make container name clickable
      - "dockpeek.tags=frontend,production" # Add organization tags

Available Labels

Label Purpose Example
dockpeek.ports Show additional ports dockpeek.ports=8080,9090
dockpeek.https Force HTTPS for ports dockpeek.https=9002,3000
dockpeek.link Custom container link dockpeek.link=https://app.com
dockpeek.tags tags dockpeek.tags=web,prod

🐳 Docker Swarm Support

Dockpeek natively supports Docker Swarm, You can deploy Dockpeek as a stack, with a single socket-proxy instance, and view/manage all Swarm services and tasks in the dashboard. This configuration is ideal for production clusters using Traefik as an ingress proxy.

swarm

Click to see Example stack file (docker-compose-swarm-socket.yml)
services:
  dockpeek:
    image: ghcr.io/dockpeek/dockpeek:latest
    environment:
      - SECRET_KEY=your_secure_secret_key
      - USERNAME=admin
      - PASSWORD=secure_password
      - TRAEFIK_LABELS=true
      - DOCKER_HOST=tcp://tasks.socket-proxy:2375 # Connect to Swarm manager via socket-proxy
    ports:
      - "3420:8000"
    networks:
      - traefik
      - dockpeek-internal
    deploy:
      replicas: 1
      labels:
        - "traefik.enable=true"
        - "traefik.http.routers.dockpeek.rule=Host(`dockpeek.example.com`)"
        - "traefik.http.routers.dockpeek.entrypoints=websecure"
        - "traefik.http.routers.dockpeek.tls=true"
        - "traefik.http.services.dockpeek.loadbalancer.server.port=8000"

  socket-proxy:
    image: lscr.io/linuxserver/socket-proxy:latest
    environment:
      - CONTAINERS=1
      - IMAGES=1
      - PING=1
      - VERSION=1
      - INFO=1
      - POST=1
      - SERVICES=1 # Enable Swarm services API
      - TASKS=1 # Enable Swarm tasks API
      - NODES=1 # Enable Swarm nodes API
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - type: tmpfs
        target: /run
        tmpfs:
          size: 100000000
    networks:
      - socket-proxy
    deploy:
      replicas: 1
      placement:
        constraints:
          - node.role == manager

networks:
  socket-proxy:
  traefik:
    external: true

How it works:

  • The dockpeek and socket-proxy services share a private network for secure API access.
  • The traefik network is external and should be pre-created by your Traefik deployment.
  • Traefik labels on dockpeek expose the dashboard securely at your chosen domain.
  • The DOCKER_HOST variable points to the socket-proxy service, which must run on a Swarm manager node.
  • Dockpeek will auto-detect Swarm mode and show all services/tasks in the dashboard, with all the usual features (port mapping, Traefik integration, update checks, etc.).

Deploy with:

docker stack deploy -c docker-compose-swarm-socket.yml dockpeek

FAQ

Answers to common questions:


How do I search for containers by port?

Use the format :port in the search box. For example, typing :8080 will show all containers exposing port 8080.

When does Dockpeek use HTTPS automatically?

Dockpeek automatically uses HTTPS for:

  • Container port 443/tcp
  • Host ports ending with 443 (e.g., 8443, 9443)
  • Ports specified with the dockpeek.https label
How do I make container names clickable?

Use the dockpeek.link label:

labels:
  - "dockpeek.link=https://myapp.example.com"

This is especially useful with reverse proxies to link directly to public addresses.

How do I show ports for containers without port mapping?

Some containers (like those using host networking or behind reverse proxies) don't expose ports through Docker's standard port mapping. Use the dockpeek.ports label:

labels:
  - "dockpeek.ports=8096,8920"
How do I clear the search filter?

Click on the "Dockpeek" logo/title at the top of the page to reset the search and return to the full container view.

Which environment variables are required for updates when using Docker socket-proxy?

For socket-proxy setups, ensure these permissions are enabled:

environment:
  - ALLOW_START=1 
  - ALLOW_STOP=1 
  - ALLOW_RESTARTS=1 
  - NETWORKS=1 

The update feature works with all supported connection methods (local socket, remote socket-proxy, and multi-host configurations).



Made with ❤️ for the self-hosted & open-source community
Report a bugCheck releases

About

Easily access your Docker container web interfaces and keep them up to date — across all your hosts.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • CSS 30.7%
  • JavaScript 29.2%
  • Python 27.5%
  • HTML 12.2%
  • Dockerfile 0.4%