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
Initial Server Setup
Log in to your VPS and get the system up to date:
apt update && apt upgrade -yCreate a non-root user and add it to the sudo group:
adduser deploy
usermod -aG sudo deployConfigure the firewall:
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enableSwitch to the new user:
su - deployInstall Docker and Docker Compose
Install Docker using the official convenience script:
curl -fsSL https://get.docker.com | sudo shAdd your user to the docker group:
sudo usermod -aG docker $USER
newgrp dockerVerify the installation:
docker --version
docker compose versionCreate the Homarr Project Directory
Set up a clean directory structure:
mkdir -p ~/homarr/{configs,icons,data}
cd ~/homarr| Path | Purpose |
|---|---|
| ~/homarr/configs | Dashboard configuration files |
| ~/homarr/icons | Custom icons uploaded through the UI |
| ~/homarr/data | Internal app data (database, session state) |
Write the Docker Compose File
Create the Compose file:
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/ChicagoAdjust 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.
Start Homarr
Pull the image and bring up the stack:
docker compose up -dConfirm the container is running:
docker compose psAt this point Homarr is accessible at http://YOUR_VPS_IP:7575.
Install and Configure Nginx
Install Nginx:
sudo apt install nginx -y
sudo systemctl enable nginx
sudo systemctl start nginxCreate a server block for your Homarr subdomain:
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:
sudo ln -s /etc/nginx/sites-available/homarr /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginxIssue an SSL Certificate with Certbot
Install Certbot and the Nginx plugin:
sudo apt install certbot python3-certbot-nginx -yRequest a certificate for your domain:
sudo certbot --nginx -d dashboard.yourdomain.comVerify automatic renewal is active:
sudo systemctl status certbot.timer
sudo certbot renew --dry-runFirst-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.
Keep Homarr Updated
To pull the latest image and restart the container:
cd ~/homarr
docker compose pull
docker compose up -dYour configuration persists across updates because it is stored in the bind-mounted directories on the host.
Optional: Restrict Direct Port Access
Once Nginx is handling traffic, block direct access to port 7575:
sudo ufw deny 7575/tcpAll 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:
sudo chown -R 1000:1000 ~/homarr/configs ~/homarr/icons ~/homarr/data502 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.
