[{"data":1,"prerenderedAt":205},["ShallowReactive",2],{"seo-verification":3,"blog-homarr-vs-glance-self-hosted-dashboard-vps-en":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-homarr-vs-glance-self-hosted-dashboard-vps-en",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":145,"ctaBody":146,"ctaButton":147,"ctaUrl":148,"relatedPosts":149},400,"homarr-vs-glance-self-hosted-dashboard-vps",{"fr":12,"en":10,"ar":13,"es":14},"heberger-dashboard-selfhosted-homarr-glance","homarr-glance-لوحة-تحكم-self-hosted-vps","homarr-glance-panel-self-hosted-vps","Homarr vs Glance: self-hosted dashboard for your VPS","Compare Homarr and Glance to centralize your Docker services on a VPS. Deployment, YAML config, HTTPS reverse proxy and comparison table included.",8,0,false,"2026-09-30T00:00:00+00:00","2026-09-30T11:20:31+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"Self-hosting","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-dashboard-selfhosted-homarr-glance-poster.svg",{"categorySlug":34,"appSlug":35},"monitoring-observability","glance","You manage five, ten, fifteen Docker containers on a VPS and navigate between interfaces one by one — Dozzle for logs, Uptime Kuma for status, Gitea for code. A self-hosted dashboard solves this in under an hour. Two tools stand out today: **Homarr**, feature-rich and visual, and **Glance**, minimal and lightweight (\u003C 50 MB RAM). This guide compares both, installs each step by step and helps you choose.",[38,42,52,55,77,80,98,132,135,139,142],{"type":39,"title":40,"body":41},"h2","Why a self-hosted dashboard on your VPS","A multi-application VPS without a central page is infrastructure managed blind. You memorize each port (`http:\u002F\u002Fyour-domain.com:3001`, `:8080`, `:9000`…), you waste time finding the interface of a service stopped three weeks ago, and you have no consolidated view of your containers' status.\n\nA self-hosted dashboard solves this without weighing down your infrastructure: a single page, accessible over HTTPS behind your reverse proxy, aggregating status, shortcuts and metrics. You share no data with a third-party service, and you pay no extra subscription.",{"type":43,"title":44,"items":45},"ul","Concrete use cases",[46,47,48,49,50,51],"**Browser home page** pointing to your own VPS: all your services one click away.","**Real-time status view** of your Docker containers without opening Portainer or Dozzle.","**RSS feed aggregation** and tech news (Hacker News, Reddit, GitHub releases) on the same screen as your services.","**Centralized access** for a team or agency sharing a common VPS.","**Start page for your homelab** or development infrastructure.","**Lightweight monitoring** without deploying a full Grafana\u002FPrometheus stack.",{"type":39,"title":53,"body":54},"Homarr: full-featured dashboard with a graphical interface","Homarr is a self-hosted Next.js dashboard with a fully graphical configuration interface — you drag and drop tiles, configure Docker integrations, Sonarr, Radarr, Jellyfin or any service with an API. It runs in a single Docker container (image `ghcr.io\u002Fhomarr-labs\u002Fhomarr`) and persists its configuration on a volume.\n\n**Requirements**: a VPS with at least 512 MB of RAM available after your other containers, Docker and Docker Compose installed, and a domain name or subdomain pointed to your IP. Expect 150 to 250 MB of RAM at rest depending on active integrations.",{"type":56,"title":57,"steps":58},"steps","Deploy Homarr with Docker Compose",[59,62,65,68,71,74],{"title":60,"body":61},"Create the directory and Compose file","On your VPS, create a dedicated directory and a `docker-compose.yml` file:\n\n```bash\nmkdir -p \u002Fopt\u002Fhomarr && cd \u002Fopt\u002Fhomarr\n```\n\nContent of the `docker-compose.yml` file:\n\n```yaml\nservices:\n  homarr:\n    image: ghcr.io\u002Fhomarr-labs\u002Fhomarr:latest\n    container_name: homarr\n    restart: unless-stopped\n    volumes:\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro\n      - .\u002Fappdata:\u002Fappdata\n    environment:\n      - SECRET_ENCRYPTION_KEY=your-random-32-char-key\n    ports:\n      - \"7575:7575\"\n```\n\n`SECRET_ENCRYPTION_KEY` is **required**: Homarr encrypts its integration secrets (API tokens, passwords) with this key. Generate one with `openssl rand -hex 32`.",{"title":63,"body":64},"Generate the encryption key","Homarr requires a 64-character hexadecimal key:\n\n```bash\nopenssl rand -hex 32\n```\n\nCopy the value into `SECRET_ENCRYPTION_KEY` in the Compose file. Without this variable, the container refuses to start.",{"title":66,"body":67},"Start the container","```bash\ndocker compose up -d\n```\n\nHomarr is accessible at `http:\u002F\u002Fyour-domain.com:7575`. On first access, create your administrator account. Initial configuration (tiles, theme, integrations) is done entirely from the web interface.",{"title":69,"body":70},"Configure the Docker integration","The Docker socket (`\u002Fvar\u002Frun\u002Fdocker.sock`) is mounted read-only. In the Homarr interface, go to **Settings → Integrations** and add a Docker integration pointing to `unix:\u002F\u002F\u002Fvar\u002Frun\u002Fdocker.sock`. Homarr will automatically display the status (running\u002Fstopped) of your containers on the associated tiles.",{"title":72,"body":73},"Configure Traefik as reverse proxy","To expose Homarr over HTTPS, add these labels to your service in the Compose file:\n\n```yaml\nlabels:\n  - \"traefik.enable=true\"\n  - \"traefik.http.routers.homarr.rule=Host(`dashboard.your-domain.com`)\"\n  - \"traefik.http.routers.homarr.entrypoints=websecure\"\n  - \"traefik.http.routers.homarr.tls.certresolver=letsencrypt\"\n  - \"traefik.http.services.homarr.loadbalancer.server.port=7575\"\n```\n\nRemove the `ports` block if you expose only via Traefik. See the article \u003Ca href=\"\u002Fblog\u002Fdeployer-avec-traefik\">Deploy with Traefik\u003C\u002Fa> for the full configuration.",{"title":75,"body":76},"nginx alternative","If you use nginx, create a vhost `\u002Fetc\u002Fnginx\u002Fsites-available\u002Fhomarr.conf`:\n\n```nginx\nserver {\n    listen 443 ssl;\n    server_name dashboard.your-domain.com;\n\n    ssl_certificate     \u002Fetc\u002Fletsencrypt\u002Flive\u002Fdashboard.your-domain.com\u002Ffullchain.pem;\n    ssl_certificate_key \u002Fetc\u002Fletsencrypt\u002Flive\u002Fdashboard.your-domain.com\u002Fprivkey.pem;\n\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:7575;\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n    }\n}\n```\n\nLet's Encrypt certificate via `certbot --nginx -d dashboard.your-domain.com`.",{"type":39,"title":78,"body":79},"Glance: a Go binary, a YAML config, no database","Glance is at the opposite end of the complexity spectrum from Homarr. It is a static Go binary: no Node.js, no database, no configuration interface. Everything is declared in a `glance.yml` file. It consumes **less than 50 MB of RAM** at rest, making it the natural choice for a tight VPS or a server where every megabyte counts.\n\nLicense: **AGPL-3.0** (same as Homarr). Source code on GitHub.",{"type":56,"title":81,"steps":82},"Deploy Glance with Docker",[83,86,89,92,95],{"title":84,"body":85},"Create the directory and configuration file","```bash\nmkdir -p \u002Fopt\u002Fglance && cd \u002Fopt\u002Fglance\n```\n\nCreate a minimal `glance.yml` file with a Hacker News widget and a Docker widget:\n\n```yaml\nserver:\n  host: 0.0.0.0\n  port: 8080\n\npages:\n  - name: Home\n    columns:\n      - size: full\n        widgets:\n          - type: hacker-news\n            title: Hacker News\n\n      - size: small\n        widgets:\n          - type: docker-containers\n            title: Containers\n            collapsed-by-default: false\n```\n\nGlance exposes port **8080** by default.",{"title":87,"body":88},"Launch with Docker Compose","Create a `docker-compose.yml` file:\n\n```yaml\nservices:\n  glance:\n    image: glanceapp\u002Fglance:latest\n    container_name: glance\n    restart: unless-stopped\n    volumes:\n      - .\u002Fglance.yml:\u002Fapp\u002Fglance.yml:ro\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro\n    ports:\n      - \"8080:8080\"\n```\n\nStart with:\n\n```bash\ndocker compose up -d\n```\n\nGlance is accessible at `http:\u002F\u002Fyour-domain.com:8080`.",{"title":90,"body":91},"Add a weather widget","The `weather` widget is one of the simplest to configure — it only requires a location:\n\n```yaml\n- type: weather\n  title: Weather\n  location: London, UK\n  units: metric\n  hour-format: 24h\n```\n\nAdd this block in the `widgets` section of your chosen column.",{"title":93,"body":94},"Configure the reverse proxy for Glance","With Traefik, add in your `docker-compose.yml`:\n\n```yaml\nlabels:\n  - \"traefik.enable=true\"\n  - \"traefik.http.routers.glance.rule=Host(`glance.your-domain.com`)\"\n  - \"traefik.http.routers.glance.entrypoints=websecure\"\n  - \"traefik.http.routers.glance.tls.certresolver=letsencrypt\"\n  - \"traefik.http.services.glance.loadbalancer.server.port=8080\"\n```\n\nWith nginx, same structure as Homarr, replacing the port with `8080`.",{"title":96,"body":97},"Hot reload of configuration","Glance monitors its configuration file and reloads automatically when you modify it. No need to restart the container after each widget addition — `docker logs glance -f` will display the `Config reloaded` line after a few seconds.",{"type":99,"title":100,"headers":101,"rows":105},"comparison","Homarr vs Glance: comparison table",[102,103,104],"Criterion","Homarr","Glance",[106,110,114,118,122,125,128],[107,108,109],"RAM at rest","150 – 250 MB","\u003C 50 MB",[111,112,113],"Configuration","Drag & drop graphical interface","YAML file only",[115,116,117],"Database","Embedded SQLite","None",[119,120,121],"Available widgets","Integrations (Sonarr, Jellyfin, Docker…) + free tiles","RSS, Hacker News, weather, Docker, GitHub, calendar…",[123,124,124],"Update","`docker compose pull && docker compose up -d`",[126,127,127],"License","AGPL-3.0",[129,130,131],"Ideal for","Rich infrastructure, daily use, team sharing","Lightweight VPS, minimalist homelabs, quick overview",{"type":39,"title":133,"body":134},"Exposing over HTTPS with a reverse proxy","Both tools listen on HTTP locally (`7575` for Homarr, `8080` for Glance). Exposing a dashboard directly to the Internet without TLS means transmitting your integration tokens and sessions in plain text.\n\nTwo common options:\n\n**Traefik** — the recommended option if you already have Traefik on your VPS. Labels are sufficient (examples above). Traefik requests and renews Let's Encrypt certificates automatically via ACME DNS-01 or HTTP-01. See the article \u003Ca href=\"\u002Fblog\u002Fdeployer-avec-traefik\">Deploy with Traefik\u003C\u002Fa> for the `letsencrypt` resolver configuration.\n\n**nginx** — the natural option if your VPS already runs nginx. The `proxy_pass http:\u002F\u002F127.0.0.1:\u003Cport>` vhost structure is identical for both tools; only the port changes.",{"type":136,"title":137,"body":138},"tip","Hardening: restrict access to your dashboard","A self-hosted dashboard exposes your internal services. A few precautions:\n\n**Homarr authentication**: enable built-in authentication on first login. Do not leave the dashboard open without a password, even behind an obscure subdomain.\n\n**Glance**: does not offer native authentication. Protect it with a Traefik middleware (`BasicAuth` or `ForwardAuth`) or via nginx `auth_basic` before exposing it publicly.\n\n**Dedicated Docker network**: create an `internal: true` network for services that do not need external access, and connect only Homarr or Glance to the Traefik network.\n\n**Read-only Docker socket**: both tools mount `\u002Fvar\u002Frun\u002Fdocker.sock` — mount it as `:ro` (read-only) as shown in the examples above. A compromised container cannot launch new containers via the socket.",{"type":39,"title":140,"body":141},"Troubleshooting: common errors","**Homarr refuses to start — `SECRET_ENCRYPTION_KEY missing`**: the environment variable is missing or empty. Generate a key with `openssl rand -hex 32` and add it to the Compose file.\n\n**Homarr shows \"Docker integration error\"**: verify that `\u002Fvar\u002Frun\u002Fdocker.sock` is mounted in the container (`docker inspect homarr | grep docker.sock`) and that the socket is readable by the user running Docker.\n\n**Glance does not load the `docker-containers` widget**: the Docker socket is not mounted or the Docker service is not accessible from the container. Add the volume `\u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro` to the Compose file.\n\n**Glance shows a blank screen**: your `glance.yml` has a YAML syntax error (indentation, tab instead of spaces). Check with `docker logs glance` — the error message indicates the exact line.\n\n**502 Bad Gateway behind nginx\u002FTraefik**: the container is not running or the port does not match. Check with `docker ps | grep homarr` or `docker ps | grep glance`, and make sure the port in your reverse proxy matches the one exposed (`7575` or `8080`).",{"type":39,"title":143,"body":144},"Which tool to choose?","**Choose Homarr** if you have multiple services with APIs (Sonarr, Radarr, Jellyfin, Pi-hole…), if you prefer configuring via a graphical interface, or if you share your dashboard with others. Budget an extra 200 MB of RAM in your container allocation.\n\n**Choose Glance** if your VPS is tight on memory, if you are comfortable with YAML, or if you want a tool that starts in seconds and consumes the minimum. Configuration versioned in a text file is also an advantage for infrastructure-as-code managed environments.\n\nBoth coexist without issue on the same VPS if you have the RAM — Homarr as the main dashboard, Glance as a quick side view.","A VPS to host your dashboard","A ServOrbit VPS with root access and a dedicated IPv4 gives you the freedom to run Homarr, Glance and all your services behind a reverse proxy, with no port or container restrictions.","Deploy on VPS","\u002Fvps-cloud",[150,171,187],{"id":151,"slug":152,"slugs":153,"title":157,"excerpt":158,"readTime":159,"views":18,"isPinned":19,"publishedAt":160,"updatedAt":161,"category":162,"categories":167,"featuredImage":30,"bgImage":31,"posterImage":169,"relatedSolution":170},190,"self-host-glance-your-startpage-dashboard-on-a-vps",{"fr":154,"en":152,"ar":155,"es":156},"self-host-glance-vps","استضف-glance-ذاتيا-لوحة-بداية-على-خادم-vps","alojar-glance-en-un-vps","Self-host Glance: your startpage dashboard on a VPS","Deploy Glance on a ServOrbit VPS to consolidate Hacker News, RSS feeds, CPU\u002FRAM\u002Fdisk stats and Docker container status on one page — Go binary, no database.",4,"2026-07-24T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":17,"name":163,"slug":164,"color":165,"icon":166},"Security & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[168],{"id":17,"name":163,"slug":164,"color":165,"icon":166},"\u002Fblog\u002Fcovers\u002Fself-host-glance-vps-poster.svg",{"categorySlug":34,"appSlug":35},{"id":172,"slug":173,"slugs":174,"title":178,"excerpt":179,"readTime":23,"views":180,"isPinned":19,"publishedAt":181,"updatedAt":182,"category":183,"categories":184,"featuredImage":30,"bgImage":31,"posterImage":186,"relatedSolution":30},92,"hosting-homepage-on-your-own-vps",{"fr":175,"en":173,"ar":176,"es":177},"heberger-homepage","استضافة-homepage-على-خادم-vps-الخاص-بك","alojar-homepage-en-un-vps","Hosting Homepage on your own VPS","Deploy Homepage, the open-source dashboard, on your VPS with Docker. Complete guide: YAML architecture, widgets, Caddy\u002FTraefik reverse proxy, SSL, security and backup.",2,"2026-03-20T00:00:00+00:00","2026-09-19T02:00:43+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[185],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-homepage-poster.svg",{"id":188,"slug":189,"slugs":190,"title":194,"excerpt":195,"readTime":196,"views":18,"isPinned":19,"publishedAt":197,"updatedAt":161,"category":198,"categories":202,"featuredImage":30,"bgImage":31,"posterImage":204,"relatedSolution":30},38,"deploy-your-applications-with-traefik-on-a-vps",{"fr":191,"en":189,"ar":192,"es":193},"deployer-avec-traefik","انشر-تطبيقاتك-باستخدام-traefik-على-خادم-vps","desplegar-con-traefik","Deploy your applications with Traefik on a VPS","Deploy Traefik as a reverse proxy on your VPS: automatic routing of Docker containers, Let's Encrypt SSL certificates and load balancing.",3,"2026-05-13T00:00:00+00:00",{"id":196,"name":199,"slug":200,"color":201,"icon":200},"Deployment","deploiement","bg-success\u002F10 text-success",[203],{"id":196,"name":199,"slug":200,"color":201,"icon":200},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-traefik-poster.svg",1790779509558]