DEV Community

Cover image for Expanding Your Self-Hosted Server: Portainer, Homarr, and Netdata
Sarthak Goyal
Sarthak Goyal

Posted on

Expanding Your Self-Hosted Server: Portainer, Homarr, and Netdata

Following last week’s blog — Getting Started with Self-Hosting Your First Home Server — we’ll take things a step further and explore a few more services you can run on your server.

These are beginner-friendly tools that don’t require much configuration but still provide meaningful functionality:

  1. Portainer - Container Management
  2. Homarr - A Sleek Dashboard
  3. Netdata - Server Monitoring

All three will be deployed using Docker Compose for simplicity and easy management.


What is Docker compose?

If you have never heard of it then you can think of it as a overpowered feature of docker that allows you manage containers state and what not with just a 1 line of command. It consist of a YAML file which are basically configuration files that tell compose what containers to run with what all settings.
To install docker compose on you machine you can follow the official documentation here.

Once installed, we’ll set up a clean directory structure to organize our Compose files.


Setting up the directory structure

SSH into your server and run:

cd $HOME
mkdir -p docker/{portainer,netdata,homarr}
cd docker
Enter fullscreen mode Exit fullscreen mode

This will create a docker folder in your home directory, with subfolders for each service. Keeping things organized now will save you headaches later when you add more services.


1. Deploying Portainer

Portainer provides a web-based interface to manage your Docker environment — images, containers, volumes, and networks — without touching the command line.
More details: portainer.io

Navigate to the Portainer directory and create a docker-compose.yml:

cd $HOME/docker/portainer
sudo nano docker-compose.yml

Enter fullscreen mode Exit fullscreen mode

Paste the following:

services:
  portainer:
    image: portainer/portainer-ce:latest
    ports:
      - 9443:9443
    volumes:
      - data:/data
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped

volumes:
  data:

Enter fullscreen mode Exit fullscreen mode

Start Portainer:

sudo docker compose up -d

Enter fullscreen mode Exit fullscreen mode

Access it in your browser:

https://<server-ip>:9443

Enter fullscreen mode Exit fullscreen mode

You’ll be prompted to create your admin account.
Tip: If port 9443 is already in use, change it in the ports section.


2. Deploying Homarr

Homarr is a beautiful, customizable dashboard that puts all your apps and services in one place. It can even integrate with certain apps to display live stats.
More details: homarr.dev

Navigate to the Homarr directory:

cd $HOME/docker/homarr
sudo nano docker-compose.yml

Enter fullscreen mode Exit fullscreen mode

Paste the following:

services:
  homarr:
    container_name: homarr
    image: ghcr.io/homarr-labs/homarr:latest
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./homarr/appdata:/appdata
    environment:
      - SECRET_ENCRYPTION_KEY=<your_encryption_key>
    ports:
      - '7575:7575'

Enter fullscreen mode Exit fullscreen mode

You can generate a 32-byte encryption key with:

openssl rand -hex 32

Enter fullscreen mode Exit fullscreen mode

Or use the key generator in Homarr’s installation docs.

Start Homarr:

sudo docker compose up -d

Enter fullscreen mode Exit fullscreen mode

Access it at:

http://<server-ip>:7575

Enter fullscreen mode Exit fullscreen mode

From there, you can start customizing your dashboard.
Setup guide: Homarr post-install docs


3. Deploying Netdata

Netdata gives you real-time performance and health monitoring for your server — CPU usage, RAM, disk activity, network stats, and much more.
More details: netdata.cloud

Navigate to the Netdata directory:

cd $HOME/docker/netdata
sudo nano docker-compose.yml

Enter fullscreen mode Exit fullscreen mode

Paste the following:

services:
  netdata:
    image: netdata/netdata
    container_name: netdata
    ports:
      - 19999:19999
    restart: unless-stopped
    cap_add:
      - SYS_PTRACE
    security_opt:
      - apparmor:unconfined
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro

Enter fullscreen mode Exit fullscreen mode

Start Netdata:

sudo docker compose up -d

Enter fullscreen mode Exit fullscreen mode

Access it in your browser:

http://<server-ip>:19999

Enter fullscreen mode Exit fullscreen mode

You can skip account creation and use the dashboard anonymously if you prefer.


Wrapping up

With Portainer, Homarr, and Netdata running, you now have:

  • An easy way to manage containers (Portainer)
  • A sleek dashboard for quick access (Homarr)
  • Real-time server analytics (Netdata)

All deployed using Docker Compose, making them easy to start, stop, or upgrade later.

If you found this guide helpful, consider subscribing or following for more self-hosting tutorials. Feel free to leave your thoughts or questions in the comments.

Cheers,
Sarthak

Top comments (0)