Self-Hosted Apps

    Deploy Homarr Dashboard

    A modern, self-hosted dashboard for all your services. Integrates with Sonarr, Radarr, Docker, and dozens more for live stats and quick-launch tiles.

    What Is Homarr?

    Homarr is a modern, self-hosted dashboard that gives you a single pane of glass for all your running services. It integrates with tools like Sonarr, Radarr, qBittorrent, Proxmox, and dozens of others, pulling in live stats and providing quick-launch tiles for your entire stack. On a RamNode VPS, it runs comfortably on even the entry-level $4/month plan.

    System Requirements

    • • RamNode VPS (1 vCPU / 1GB RAM / 15GB SSD plan at $4/month is sufficient)
    • • Ubuntu 22.04 or 24.04 (recommended)
    • • A domain or subdomain pointed at your VPS IP (e.g., dashboard.yourdomain.com)
    • • SSH access as root or a sudo user
    1

    Initial Server Setup

    Log in to your VPS and get the system up to date:

    Update system
    apt update && apt upgrade -y

    Create a non-root user and add it to the sudo group:

    Create user
    adduser deploy
    usermod -aG sudo deploy

    Configure the firewall:

    Configure firewall
    ufw allow OpenSSH
    ufw allow 80/tcp
    ufw allow 443/tcp
    ufw enable

    Switch to the new user:

    Switch user
    su - deploy
    2

    Install Docker and Docker Compose

    Install Docker using the official convenience script:

    Install Docker
    curl -fsSL https://get.docker.com | sudo sh

    Add your user to the docker group:

    Add to docker group
    sudo usermod -aG docker $USER
    newgrp docker

    Verify the installation:

    Verify Docker
    docker --version
    docker compose version
    3

    Create the Homarr Project Directory

    Set up a clean directory structure:

    Create directories
    mkdir -p ~/homarr/{configs,icons,data}
    cd ~/homarr
    PathPurpose
    ~/homarr/configsDashboard configuration files
    ~/homarr/iconsCustom icons uploaded through the UI
    ~/homarr/dataInternal app data (database, session state)
    4

    Write the Docker Compose File

    Create the Compose file:

    ~/homarr/docker-compose.yml
    services:
      homarr:
        container_name: homarr
        image: ghcr.io/ajnart/homarr:latest
        restart: unless-stopped
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
          - ./configs:/app/data/configs
          - ./icons:/app/public/icons
          - ./data:/data
        ports:
          - "7575:7575"
        environment:
          - TZ=America/Chicago

    Adjust TZ to match your timezone. The Docker socket mount gives Homarr read access to your running containers for live status display. Remove that line if you prefer not to expose the socket.

    5

    Start Homarr

    Pull the image and bring up the stack:

    Start containers
    docker compose up -d

    Confirm the container is running:

    Check status
    docker compose ps

    At this point Homarr is accessible at http://YOUR_VPS_IP:7575.

    6

    Install and Configure Nginx

    Install Nginx:

    Install Nginx
    sudo apt install nginx -y
    sudo systemctl enable nginx
    sudo systemctl start nginx

    Create a server block for your Homarr subdomain:

    /etc/nginx/sites-available/homarr
    server {
        listen 80;
        listen [::]:80;
        server_name dashboard.yourdomain.com;
    
        location / {
            proxy_pass         http://127.0.0.1:7575;
            proxy_http_version 1.1;
            proxy_set_header   Host              $host;
            proxy_set_header   X-Real-IP         $remote_addr;
            proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;
            proxy_set_header   Upgrade           $http_upgrade;
            proxy_set_header   Connection        "upgrade";
            proxy_read_timeout 86400;
        }
    }

    Enable the site and test configuration:

    Enable site
    sudo ln -s /etc/nginx/sites-available/homarr /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx
    7

    Issue an SSL Certificate with Certbot

    Install Certbot and the Nginx plugin:

    Install Certbot
    sudo apt install certbot python3-certbot-nginx -y

    Request a certificate for your domain:

    Certbot
    sudo certbot --nginx -d dashboard.yourdomain.com

    Verify automatic renewal is active:

    Check renewal
    sudo systemctl status certbot.timer
    sudo certbot renew --dry-run
    8

    First-Run Configuration

    Open https://dashboard.yourdomain.com in your browser. On first launch, Homarr presents an onboarding screen where you can:

    • • Name your dashboard
    • • Choose a default layout (default, compact, or minimal)
    • • Set your color theme and background

    Adding Your First Tiles

    Click the pencil (edit) icon in the top-right corner to enter edit mode. Common integrations that work well:

    • Docker - shows live container status
    • Sonarr / Radarr / Prowlarr - media automation
    • Portainer - container management UI
    • Uptime Kuma - uptime monitoring
    • Dashdot - live server stats widget

    Enabling Authentication

    Navigate to Settings → Security and enable the built-in username/password authentication. Set a strong password before exposing the dashboard to the internet.

    9

    Keep Homarr Updated

    To pull the latest image and restart the container:

    Update Homarr
    cd ~/homarr
    docker compose pull
    docker compose up -d

    Your configuration persists across updates because it is stored in the bind-mounted directories on the host.

    10

    Optional: Restrict Direct Port Access

    Once Nginx is handling traffic, block direct access to port 7575:

    Block port
    sudo ufw deny 7575/tcp

    All traffic should now flow through Nginx on port 443.

    Troubleshooting

    Container fails to start

    Check the logs: docker compose logs homarr. Permission issues on bind mounts are the most common cause:

    Fix permissions
    sudo chown -R 1000:1000 ~/homarr/configs ~/homarr/icons ~/homarr/data

    502 Bad Gateway from Nginx

    Confirm Homarr is listening on port 7575: ss -tlnp | grep 7575

    Dashboard loads but integrations show errors

    Double-check that each integration is configured with the correct internal hostname or IP. For Docker auto-discovery, verify the socket mount is present in the Compose file.