← All templates · Feeds and bookmarks
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.
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
- 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.
- New project opens at Glance. You fill in what it asks for and click Create project: Username, Admin password.
- 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.
- 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:
More in Feeds and bookmarks
- FreshRSSAn RSS and Atom feed reader
- RSSHubRSS feeds for sites that have none
- linkdingA bookmark manager with tags and search
- KarakeepA bookmark app for links, notes and images, with full-text search
- RSS-BridgeRSS and Atom feeds for sites that have none
- ArchiveBoxSave web pages, videos and articles as HTML, PDF, screenshots and media files, your own web archive