Stop Memorising Port Numbers: Set Up Homepage as Your Home Server Dashboard with Docker

Stop Memorising Port Numbers: Set Up Homepage as Your Home Server Dashboard with Docker

Once you get into self-hosting, your home server fills up quickly: Nextcloud for files, Vaultwarden for passwords, Immich for photos, Paperless-ngx for documents.

Then comes the problem everyone hits — you cannot remember which port belongs to which service.

Typing 192.168.1.100:8080 for passwords and 192.168.1.100:2283 for photos gets old fast. Browser bookmarks help, until you switch to a different machine or reach for your phone, and none of them follow you.

The usual fix in the self-hosting community is a personal dashboard, and the one worth your time is Homepage.

Why Homepage

Homepage is an open-source dashboard built to be the front door to everything on your server. What sets it apart:

  • Fast and light. Built with Go and React. It loads instantly and uses only a few tens of megabytes of RAM per container.
  • Genuinely good-looking. Clean, responsive on any screen size, with light and dark themes built in.
  • Docker aware. It reads container status straight from the Docker socket and shows running/stopped state on each card.
  • Real-time system widgets. CPU, RAM, disk usage and network throughput for the server itself.
  • Service APIs. It can pull live data from the services themselves — ads blocked by Pi-hole, free space in Nextcloud — and show it on that service's card.

Before you start

1. A home server with Docker and Docker Compose already installed

2. SSH access to a terminal on that server

Step 1: Folder structure and Docker Compose

SSH into the server and create a folder for Homepage's configuration:


mkdir -p ~/homepage/config
cd ~/homepage

Then write docker-compose.yml:


version: '3.8'

services:
  homepage:
    image: ghcr.io/gethomepage/homepage:latest
    container_name: homepage
    ports:
      - "3000:3000"
    volumes:
      - ./config:/app/config
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped

Mounting the Docker socket is what lets Homepage read container status.

Step 2: The configuration files

Homepage is configured entirely through YAML, which keeps things tidy. You need five files in ~/homepage/config.

docker.yaml — lets Homepage talk to the Docker daemon:


kubernetes:
  role: ""
docker:
  - name: my-home-server
    socket: /var/run/docker.sock

settings.yaml — page title, header style and layout:


title: Private Brain OS
headerStyle: clean
layout:
  Personal Cloud:
    columns: 2
  Security & Tools:
    columns: 2

widgets.yaml — clock, search box and system resources:


- datetime:
    text_size: l
    format:
      timeStyle: short
      dateStyle: long
      hour12: false

- search:
    provider: duckduckgo
    target: _blank

- system:
    showHost: true
    cpu: true
    memory: true
    disk: /

services.yaml — the important one. This is where your services and their live status come from (assuming your server is at 192.168.1.100):


- Personal Cloud:
    - Nextcloud:
        - icon: nextcloud
          href: http://192.168.1.100:8000
          description: Private file storage and cloud
          server: my-home-server
          container: nextcloud

    - Immich:
        - icon: immich
          href: http://192.168.1.100:2283
          description: Photo and video library at home
          server: my-home-server
          container: immich

- Security & Tools:
    - Vaultwarden:
        - icon: vaultwarden
          href: http://192.168.1.100:8080
          description: Password and secrets manager
          server: my-home-server
          container: vaultwarden

    - Linkwarden:
        - icon: linkwarden
          href: http://192.168.1.100:3000
          description: Bookmark manager
          server: my-home-server
          container: linkwarden

Tip: Homepage ships with hundreds of icons and fetches more automatically. Just write the service name in lowercase — nextcloud, vaultwarden, immich — and the right logo appears.

bookmarks.yaml — external sites you open often:


- Developer Tools:
    - GitHub:
        - icon: github
          href: https://github.com/

Step 3: Start it


docker compose up -d

Open http://:3000. You should see cards for each service with a green or red dot showing live container status, and CPU, RAM and disk gauges across the top.

Where to go next

Two additions make this a genuinely useful front door:

1. Tailscale — reach the dashboard securely from anywhere, over a private network, without opening a single port to the internet.

2. A reverse proxy with a real hostname — so you stop typing IP addresses entirely and use something like home.yourdomain.com.

At that point the port numbers you started with are gone for good.

🛒 TREND DEE STORE • ร้านเทรนด์ดี

🛠️ Hardware for Home Server & Private Cloud

Curated hardware and tools tailored for this guide