默认监听 8080 端口,且需准备 .env 文件供 compose 读取;使用 Docker 容器组件需额外挂载 /var/run/docker.sock;Pi-Hole、AdGuard 等 DNS 限速易导致请求超时,需调高限速;默认禁止被 iframe 嵌入,需在 server 下配置 allowed-embed-hosts

dynacat
PanonimAGPL-3.0活跃维护用 Go 写的可动态重载的仪表盘,改配置或接外部应用不用重启,适合做 RSS 阅读器这类常变的信息面板。
Dynacat is a dashboard focused on dynamic reloading and easy integration with external applications.
mkdir dynacat && cd dynacat && curl -sL https://github.com/Panonim/dynacat-compose-template/releases/latest/download/dynacat.tar.gz | tar -xzf - && docker compose up -dREADME 未说明具体硬件要求,仅称内存占用低、依赖少,提供小于 20MB 的单文件二进制和多架构 Docker 镜像
自托管信息仪表盘,支持动态刷新与外部应用集成,是 Glance 的分支
用 Go 写的可动态重载的仪表盘,改配置或接外部应用不用重启,适合做 RSS 阅读器这类常变的信息面板。
核心能力
- 用 UI 编辑器拖拽组件并自动写回 YAML 配置
- 可视化构建 custom-api 组件,绑定 API 字段免写模板
- 提供 JSON API 供脚本或其他应用读取已抓取数据
- 组件自动定时刷新,无需手动重载页面
- 支持 OIDC 登录与自定义 CSS、主题
容易踩的坑
- 3.0.2Release - 3.0.2最新正式版2026-10-23 · 2026-10-23 20:42 UTC
Breaking change:
The UI editor is only available to logged-in users when authentication is configured; set EDITOR_REQUIRE_LOGIN=false to let anonymous visitors edit
Added
- home-assistant widget showing entity states, with toggles for lights, switches, fans and others
- node-exporter server type in server-stats for hosts running Prometheus node_exporter, no agent needed -> https://github.com/Panonim/dynacat/issues/172
- page-background and global-background page options to set a background image on one page or on every page
- show-missing option in docker-containers to display configured containers the engine no longer reports -> https://github.com/Panonim/dynacat/pull/173
- auto-redirect-oidc auth option to skip the login page and go straight to the OIDC provider (requires disable-password: true) -> https://github.com/Panonim/dynacat/issues/182
- Passwordless Pi-hole v6 support in dns-stats -> https://github.com/Panonim/dynacat/issues/177
- Windows installer
- Widgets created by the widget editor can be split into separate files using
EDITOR_SEPARATE_WIDGET_FILES
Changed
- Reddit search now requires app-auth, since Reddit no longer allows signed-out searches
- Reddit widget falls back to the subreddit RSS feed when Reddit blocks signed-out requests (points and comment counts are hidden for those posts)
- mountpoints and mountpoint-order now also apply to remote servers in server-stats
- compact servers in server-stats show the server name when the widget has more than one server
- Cross-page search in the search widget includes pages restricted with allowed-users or allowed-groups for logged-in users who can access them -> https://github.com/Panonim/dynacat/issues/198
Fixed
- Users randomly logged out after a config reload -> https://github.com/Panonim/dynacat/issues/174
- secureImageURL in custom-api never refreshing cached images; they are now re-downloaded after the widget cache duration -> https://github.com/Panonim/dynacat/issues/176
- Reddit widget returning 403 again; it now uses Reddit's guest token on oauth.reddit.com, and blocked requests show a short error pointing to app-auth
- Variables in commented-out config sections and inline comments in env files are now ignored
- Crash in the monitor widget when a site has no url; it now shows a site-specific error -> https://github.com/Panonim/dynacat/issues/192
- Database not being created on start, which broke the todo widget -> https://github.com/Panonim/dynacat/issues/196
New Contributors
- @Bbocks made their first contribution in https://github.com/Panonim/dynacat/pull/195
Full Changelog: https://github.com/Panonim/dynacat/compare/3.0.1...3.0.2
- 3.0.1Bugfix - 3.0.12026-10-05 · 2026-10-05 14:44 UTC
查看更新说明
I want to thank everyone who has supported this project. I never thought it would grow this big!
A few days ago, we reached 0.5M downloads, and I’m really proud of this milestone and achievement. It truly means the world to me.
Thank you for trusting in this project!!
Added
mountpoint-orderoption to server-stats -> https://github.com/Panonim/dynacat/issues/159gridstyle to thebookmarkswidget -> https://github.com/Panonim/dynacat/issues/162
.exesupport for releases- Small/Full column size controls in the page editor
Changed
- Updated docs website
- Calendar now shows releases on the previous and next month days visible in the grid -> https://github.com/Panonim/dynacat/issues/156
-
Non-root users can now use folders easily -> https://github.com/Panonim/dynacat/issues/165
Read more here: https://dynacat.artur.zone/#installation/running-as-a-non-root-user
-
Full text finding for bookmarks in
searchwidget -> https://github.com/Panonim/dynacat/issues/167
Fixed
- Dashless includes not working in the UI editor
releaseswidget ignoringgitlab:,codeberg:anddockerhub:- Group widget refresh resetting the active tab and making later clicks open its title URL -> https://github.com/Panonim/dynacat/issues/157
- qBittorrent not logging in correctly -> https://github.com/Panonim/dynacat/issues/155
clockwidget blanking after widget updates -> https://github.com/Panonim/dynacat/pull/160
- 3.0.0Is it a bird? Is it a plane? No, it’s new Dynacat version! - Release2026-09-12 · 2026-09-12 18:36 UTC
查看更新说明
Changenotes - Dynacat v3
Dynacat now has a UI editor, so you never have to worry about editing
.yamlfiles manually!You can now edit your project either through YAML or directly in the UI, and everything stays in sync. All your widgets are available in both places, and the UI editor supports widgets, page configuration, and theming. Use whichever way you prefer and switch between them whenever you want, without having to worry about anything breaking.
There’s also a new widget editor, something I haven’t seen in any other dashboard before. You can now create your own custom API widgets without writing a single line of code. It’s really simple to use, and the feedback from beta testers has been really positive.
Below is an example of a widget created 100% using the editor. You can learn more here: https://dynacat.artur.zone/#widget-editor
There’s also a new partnership with degoog. You can easily use their search engine by setting
search-engine: degooganddegoog-urlin your configuration.I’ve also created a widget for the official degoog store, along with a theme.
There’s also a new read-only API that lets you pull your dashboard data into pretty much any app. It works with your existing widgets, so there’s no extra configuration needed besides giving a widget an
api-id.It’s also built with security in mind. Secrets are automatically removed from the response, permissions are respected, and you can control exactly which pages are exposed. Everything is rate-limited as well, and it reuses the existing widget cache, so it doesn’t create extra load by fetching your data again.
The API is fully documented, so it’s easy to get started and use your dashboard data wherever you need it. As an example you can find a TUI that shows data from Dynacat.
If you’re worried about a performance hit, don’t be! I’ve taken care of it. Based on my testing, the new image uses less RAM and network bandwidth, while also having a smaller container image and a few other small improvements under the hood.
Metric 2.4.0 3.0.0 CPU 0.05% 0.02% Memory usage 22.13 MiB 12.34 MiB Network I/O 5.03 MB / 5.95 MB 389 kB / 97.1 kB
All Changes
Added
- tcp:// http:// remote Docker host support in
docker-controller(sock-path), matchingdocker-containers→ https://github.com/Panonim/dynacat/issues/137 id/parentgrouping docs forcontainersproperty indocker-containerswidget -> https://github.com/Panonim/dynacat/issues/134- Automatic update checks for cached
dynawidgetstemplates, with notice on widget when changed - Visual configuration editor
- Bookmarks view in search widget → https://github.com/Panonim/dynacat/issues/126
- Release type shown in
calendarwidget releases - Current media state (e.g. grabbed) shown
- tcp:// http:// remote Docker host support in
- 2.4.0Release - 2.4.02026-06-29 · 2026-06-29 18:39 UTC
查看更新说明
[!NOTE] I never thought I’d be writing this, but this will be the last update for a while.
For those who have followed this project, thank you for all the support. It may seem like development is coming to an end... but this isn’t goodbye.
I’m stepping away to focus on something much bigger during the summer break. When I return, it won’t be with a small patch or another minor release.
It’ll be
3.0.0. 👀Added
- Brave Search as autocompletion engine
- Support for icons in page title
- Speedtest widget
- Support for Sonarr/Radarr releases in calendar widget
- Setting to open stream instead of category on click -> https://github.com/Panonim/dynacat/pull/123
Changed
- Improved endpoint fetching by adding shared cache
- Added server-stats
compact: trueoption -> https://github.com/Panonim/dynacat/pull/104
Fixed
- Todo widget highlight too short
- Todo widget trash animation icon slower than highlight
- Incorrect thumbnails pulled for series
- Testing repo not detected correctly in dynawidgets
- Log level functionality -> https://github.com/Panonim/dynacat/pull/96
- Incorrect daily percentage in market widget -> https://github.com/Panonim/dynacat/pull/117
- Auth redirect preservation -> https://github.com/Panonim/dynacat/pull/120
- Combining subreddits showing incorrect title
- Theme syncing issue
latest-mediawidgets interfering with each other -> https://github.com/Panonim/dynacat/issues/124
New Contributors
- @kyndadumb made their first contribution in https://github.com/Panonim/dynacat/pull/116
- @spin-drift made their first contribution in https://github.com/Panonim/dynacat/pull/120
Full Changelog: https://github.com/Panonim/dynacat/compare/2.3.1...2.4.0
- 2.3.1Bug fix - 2.3.12026-06-01 · 2026-06-01 21:16 UTC
查看更新说明
Changed
- Added support for loading environment variables from a file via
--env-file-> https://github.com/Panonim/dynacat/issues/107 - Made initial loading faster by fetching data on service start
- Bumped up Go packages to latest
Fixed
- Issue where
glance.ymlwas not detected correctly which would cause issues when transitioning -> https://github.com/Panonim/dynacat/issues/110 - Reddit widget and Reddit RSS feeds returning
403-> https://github.com/Panonim/dynacat/issues/113
New Contributors
- @gissehel made their first contribution in https://github.com/Panonim/dynacat/pull/112
Full Changelog: https://github.com/Panonim/dynacat/compare/2.3.0...2.3.1
- Added support for loading environment variables from a file via
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。

Features List
Various widgets
- RSS feeds
- Subreddit posts
- Hacker News posts
- Weather forecasts
- YouTube channel uploads
- Twitch channels
- Market prices
- Docker containers status
- Server stats
- Custom widgets
- and many more...
Fast and lightweight
- Low memory usage
- Few dependencies
- Minimal vanilla JS
- Single <20mb binary available for multiple OSs & architectures and just as small Docker container
- Uncached pages usually load within ~1s (depending on internet speed and number of widgets)
Tons of customizability
- Different layouts
- As many pages/tabs as you need
- Numerous configuration options for each widget
- Multiple styles for some widgets
- Custom CSS
Optimized for mobile devices
Because you'll want to take it with you on the go.

Themeable
Easily create your own theme by tweaking a few numbers or choose from one of the already available themes.

Other features worth mentioning
- UI editor - add pages, drag widgets between columns and change their options from the dashboard itself, Dynacat writes it back into your YAML
- Widget editor - a visual builder for
custom-apiwidgets, point it at an API and bind blocks to fields instead of writing the template by hand - Dynawidgets - ready-made widgets from a community repository, fetched and cached from a single slug
- JSON API - read the data your widgets already fetched from scripts or other apps
- Dynamic updates - widgets refresh on their own, no manual reload
- OIDC - log in through your own identity provider
- More widgets - docker controller, currently playing, latest media, torrenting, speedtest, stopwatch and Sonarr/Radarr releases in the calendar
Installation
There are currently two ways to use Dynacat: the UI editor and editing YAML files manually. If you'd like to use the UI, here's the recommended configuration.
The quickest start is to grab the ready-made directory structure:
mkdir dynacat && cd dynacat && \
curl -sL https://github.com/Panonim/dynacat-compose-template/releases/latest/download/dynacat.tar.gz | tar -xzf - && \
docker compose up -d
services:
dynacat:
container_name: dynacat
image: panonim/dynacat
restart: unless-stopped
volumes:
- ./config:/app/config
- ./assets:/app/assets
- /etc/localtime:/etc/localtime:ro
# Optionally, also mount docker socket if you want to use the docker containers widget
# - /var/run/docker.sock:/var/run/docker.sock:ro
# You can also use the assets as non-root easily
# environment:
# - PUID=1000
# - PGID=1000
ports:
- 8080:8080
env_file: .env
orr you can just be that guy and click here...
Configuration
There are two ways to configure Dynacat, and they work on the same files:
- UI editor - drag widgets into columns, change their options and pick your colors from the dashboard itself. Dynacat writes the result back into your YAML. See the UI editor documentation.
- YAML by hand - edit the config files directly. To learn more about how the layout works, how to add more pages and how to configure widgets, visit the configuration documentation.
The editor is an addition to the config file, not a replacement, so hand-written config keeps working exactly as before.
- 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
- type: twitch-channels
channels:
- theprimeagen
- j_blow
- piratesoftware
- cohhcarnage
- christitustech
- EJ_SA
- 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: 12h
- 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:
- panonim/dynacat
- go-gitea/gitea
- immich-app/immich
- syncthing/syncthing
Common issues
The most common cause of this is when using Pi-Hole, AdGuard Home or other ad-blocking DNS services, which by default have a fairly low rate limit. Depending on the number of widgets you have in a single page, this limit can very easily be exceeded. To fix this, increase the rate limit in the settings of your DNS service.
If using Podman, in some rare cases the timeout can be caused by an unknown issue, in which case it may be resolved by adding the following to the bottom of your docker-compose.yml file:
networks:
podman:
external: true
This is almost always caused by the browser extension Dark Reader. To fix this, disable dark mode for the domain where Dynacat is hosted.
The most common cause of this is having a pages key in your dynacat.yml and then also having a pages key inside one of your included pages. To fix this, remove the pages key from the top of your included pages.
By default Dynacat only allows itself to be embedded on the same origin (frame-ancestors 'self'). To allow embedding from another host such as Homepage, add the allowed-embed-hosts option under server in your dynacat.yml:
server:
allowed-embed-hosts:
- https://homepage.mydomain.com
You can list multiple origins. Each entry must be a full origin including the scheme (e.g. https://).
If you like this project, please consider sponsoring.