Skip to content
View dockpeek's full-sized avatar

Block or report dockpeek

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 250 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
dockpeek/README.md
dockpeek logo

Dockpeek

Intuitive Docker Dashboard for Quick Access and Updates



Dockpeek is a lightweight, self-hosted dashboard that gives you instant access to your Docker container web apps. Monitor ports, check and install updates with one click, and integrate seamlessly with Traefik — all from a single, intuitive interface.

✨ Key Features

  • Port Mapping Overview — See all running containers and their published ports at a glance
  • One-Click Access — Open containerized web apps instantly with direct links
  • Traefik Integration — Auto-detect and display container addresses from Traefik labels
  • Multi-Host Management — Manage multiple Docker hosts from one dashboard
  • Zero Configuration — Works out of the box, auto-detecting containers
  • Update Management — Check for image updates and install with a single click
  • Responsive UI — Optimized for desktops, tablets, and smartphones

Labels Support

Enhance control with custom labels:

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

Dockpeek Night 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 Show Traefik integration column
TAGS true Enable container tagging feature
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 Organization 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

Frequently Asked Questions

Here are some common questions about using Dockpeek.


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.

What permissions does Dockpeek need for updates?

To install container updates, Dockpeek needs:

For direct Docker socket access:

  • Read/write access to /var/run/docker.sock

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

environment:
  - POST=1             # Required for API write operations
  - ALLOW_START=1      # Start containers after update
  - ALLOW_STOP=1       # Stop containers for update
  - ALLOW_RESTARTS=1   # Restart containers if needed
  - NETWORKS=1         # Connect containers to networks

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



Made with ❤️ for the Docker community

Report BugRequest FeatureCheck out the latest release

Pinned Loading

  1. dockpeek dockpeek Public

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

    JavaScript 755 21