---
title: "Glance Docker Compose and one-click hosting"
description: "Self-host Glance, the light open-source dashboard of RSS feeds, Reddit, Hacker News, YouTube, weather and markets, behind a sign-in, in one YAML file."
---

[← All templates](https://pethost.dev/templates/) · [Feeds and bookmarks](https://pethost.dev/templates/reading/)

# Deploy Glance in one click

A fast, light dashboard of your feeds, news, weather, markets and more

A self-hosted alternative to Netvibes and Feedly.

[Deploy on Pethost](https://console.pethost.dev/?template=glance)

## What is Glance?

Glance is a self-hosted dashboard that puts what you read and check every day on one page: RSS feeds, subreddits, Hacker News and Lobsters, YouTube and Twitch channels, weather, market prices, a calendar, new releases of GitHub repositories and the status of your sites. People use it as a browser start page, in place of Netvibes or a feed reader such as Feedly, and on the phone, where the page fits the screen.

Everything is written in one YAML file: as many pages as you like, each in columns of widgets, with themes, custom CSS, and widgets of your own that read any JSON API. Glance is a single Go program of less than 20 MB, takes a few tens of megabytes of memory and loads a page in about a second.

This template runs Glance with its config in a volume, starting from a sample page, and with a sign-in by the username and password you give, so the dashboard is closed to strangers. The password goes into the config as a bcrypt hash, and failed sign-ins are counted by each visitor’s own address.

## Hosting Glance on Pethost

1. You sign in to Pethost with a passkey, GitHub or Google. No machine yet? You pick a plan, and the link waits until it is ready.
2. New project opens at Glance. You fill in what it asks for and click Create project: **Username**, **Admin password**.
3. In a minute or two Glance is live at its own address with HTTPS. Its secrets are made at random, and its data is in the nightly backup.
4. It is a project like any other: you or your agent can change it, roll it back or restore it.

## Questions about Glance

**Is Glance free?**

Yes. Glance is open source under the AGPL-3.0 license, with no paid edition, and running it yourself costs only the server.

**How do I add a widget or a page to Glance?**

Edit glance.yml: each page has columns, and each column a list of widgets, each with a type, such as rss, reddit, weather or videos, and its options. Glance reloads the page as soon as the file is saved, and if the file has a mistake it keeps showing the last good one.

**Can Glance show my own services or APIs?**

Yes. The monitor widget shows whether your sites answer, and the custom-api widget reads any JSON API and draws it with a template you write. Community widgets add many services this way.

**Does Glance work on a phone?**

Yes. Its page is made for small screens too, and you can add it to the home screen. Sign in once and the session lasts 14 days.

**How much memory and disk does Glance need?**

Glance is very light: about 20 MB of memory, and it keeps nothing on disk but its config file. On Pethost the Starter plan is enough for it, with room for other apps beside it.

## Glance Docker Compose file

The template is this compose.yaml and the variables written into the project’s .env as it is created. Pethost runs the file as it is written.

**Containers:** glance (glanceapp/glance:v0.8.7).

**Volumes, in the nightly backup:** config.

```
services:
  glance:
    image: glanceapp/glance:v0.8.7
    restart: unless-stopped
    environment:
      ADMIN_USERNAME: ${ADMIN_USERNAME}
      ADMIN_PASSWORD: ${ADMIN_PASSWORD}
    # The dashboard is /app/config/glance.yml, yours to edit: Glance reloads it when it is saved.
    # Its first start writes it from the one below and makes the key that signs sessions. Glance
    # puts ${VARIABLES} into the file as text before it reads it, so the password goes in as its
    # bcrypt hash, made at every start from the project's .env.
    entrypoint: ["/bin/sh", "-c"]
    command:
      - |
        set -e
        cd /app/config
        [ -f .secret-key ] || (umask 077 && /app/glance secret:make > .secret-key)
        [ -f glance.yml ] || cat /etc/glance/glance.yml > glance.yml
        GLANCE_SECRET_KEY="$$(cat .secret-key)"
        GLANCE_PASSWORD_HASH="$$(/app/glance password:hash "$$ADMIN_PASSWORD")" || {
          echo "$$GLANCE_PASSWORD_HASH" >&2
          exit 1
        }
        export GLANCE_SECRET_KEY GLANCE_PASSWORD_HASH
        unset ADMIN_PASSWORD
        exec /app/glance --config /app/config/glance.yml
    configs:
      - source: glance
        target: /etc/glance/glance.yml
    volumes:
      - config:/app/config

configs:
  glance:
    content: |
      server:
        # Requests come through the proxy: failed sign-ins are counted by the client's own address.
        proxied: true

      auth:
        secret-key: $${GLANCE_SECRET_KEY}
        users:
          "$${ADMIN_USERNAME}":
            password-hash: $${GLANCE_PASSWORD_HASH}

      pages:
        - name: Home
          columns:
            - size: small
              widgets:
                - type: calendar
                  first-day-of-week: monday

                - type: rss
                  limit: 10
                  collapse-after: 3
                  cache: 12h
                  feeds:
                    - url: https://selfh.st/rss/
                      title: selfh.st
                      limit: 4
                    - url: https://ciechanow.ski/atom.xml
                    - url: https://www.joshwcomeau.com/rss.xml
                      title: Josh Comeau
                    - url: https://samwho.dev/rss.xml
                    - url: https://ishadeed.com/feed.xml
                      title: Ahmad Shadeed

            - size: full
              widgets:
                - type: group
                  widgets:
                    - type: hacker-news
                    - type: lobsters

                - type: videos
                  channels:
                    - UCXuqSBlHAE6Xw-yeJA0Tunw # Linus Tech Tips
                    - UCR-DXc1voovS8nhAvccRZhg # Jeff Geerling
                    - UCsBjURrPoezykLs9EqgamOA # Fireship
                    - UCBJycsmduvYEL83R_U4JriQ # Marques Brownlee
                    - UCHnyfMqiRRG1u-2MsSQLbXA # Veritasium

                - type: group
                  widgets:
                    - type: reddit
                      subreddit: technology
                      show-thumbnails: true
                    - type: reddit
                      subreddit: selfhosted
                      show-thumbnails: true

            - size: small
              widgets:
                - type: weather
                  location: London, United Kingdom
                  units: metric
                  hour-format: 24h

                - type: markets
                  markets:
                    - symbol: SPY
                      name: S&P 500
                    - symbol: BTC-USD
                      name: Bitcoin
                    - symbol: NVDA
                      name: NVIDIA
                    - symbol: AAPL
                      name: Apple
                    - symbol: MSFT
                      name: Microsoft

                - type: releases
                  cache: 1d
                  repositories:
                    - glanceapp/glance
                    - go-gitea/gitea
                    - immich-app/immich
                    - syncthing/syncthing

volumes:
  config:
```

[compose.yaml](https://pethost.dev/templates/glance/compose.yaml)[See it on GitHub](https://github.com/pethost-dev/templates/tree/main/glance)

## [More in Feeds and bookmarks](https://pethost.dev/templates/reading/)

- [**FreshRSS**An RSS and Atom feed reader](https://pethost.dev/templates/freshrss/)
- [**RSSHub**RSS feeds for sites that have none](https://pethost.dev/templates/rsshub/)
- [**linkding**A bookmark manager with tags and search](https://pethost.dev/templates/linkding/)
- [**Karakeep**A bookmark app for links, notes and images, with full-text search](https://pethost.dev/templates/karakeep/)
- [**RSS-Bridge**RSS and Atom feeds for sites that have none](https://pethost.dev/templates/rss-bridge/)
- [**ArchiveBox**Save web pages, videos and articles as HTML, PDF, screenshots and media files, your own web archive](https://pethost.dev/templates/archivebox/)

Pethost · Stephan Gomer · NIP 1133096755

Pethost

- [Templates](https://pethost.dev/templates/)
- [About](https://pethost.dev/about/)
- [Docs](https://pethost.dev/docs/)
- [Blog](https://pethost.dev/blog/)
- [API](https://pethost.dev/docs/api/)
- [CLI](https://pethost.dev/docs/cli/)
- [Plugin](https://github.com/pethost-dev/plugin)
- [Terms](https://pethost.dev/terms/)
- [Privacy](https://pethost.dev/privacy/)
- [Refunds](https://pethost.dev/refunds/)
- [support@pethost.dev](mailto:support@pethost.dev)

Databases

- [Postgres](https://pethost.dev/postgres/)

Comparisons

- [Coolify vs Dokploy vs CapRover vs Dokku](https://pethost.dev/blog/coolify-vs-dokploy-vs-caprover-vs-dokku/)
- [Coolify Cloud vs Dokploy Cloud](https://pethost.dev/blog/coolify-cloud-vs-dokploy-cloud/)
- [Railway vs Render vs Fly.io pricing](https://pethost.dev/blog/railway-vs-render-vs-fly-io-pricing/)
- [Managed Docker Compose hosting](https://pethost.dev/blog/managed-docker-compose-hosting/)

Alternatives

- [Railway alternatives](https://pethost.dev/blog/railway-alternatives/)
- [Heroku alternatives](https://pethost.dev/blog/heroku-alternatives/)
- [Dokploy alternatives](https://pethost.dev/blog/dokploy-alternatives/)
- [Coolify alternatives](https://pethost.dev/blog/coolify-alternatives/)
- [Render alternatives](https://pethost.dev/blog/render-alternatives/)
- [Sliplane alternatives](https://pethost.dev/blog/sliplane-alternatives/)
