Skip to content
intarwebPublic
forked from Panonim/dynacat

About

Dynacat is a dashboard focused on dynamic reloading and easy integration with external applications.

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

Dynacat

Configuration • Discord • Sponsor

Dynawidgets • Custom-api widgets • Preconfigured pages • Themes

Self-hosted dashboard built for people who want their information in one place.
Forked from Glance - it focuses on dynamic content updates and seamless integration with external applications.

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-api widgets, 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 in which you can use Dynacat, the UI editorand 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
Docker compose file
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
    ports:
      - 8080:8080
    env_file: .env

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.

Preview example configuration file
  - 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

Requests timing out

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
Broken layout for markets, bookmarks or other widgets

This is almost always caused by the browser extension Dark Reader. To fix this, disable dark mode for the domain where Dynacat is hosted.

cannot unmarshal !!map into []dynacat.page

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.

Cannot embed Dynacat in an iframe

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.

About

Dynacat is a dashboard focused on dynamic reloading and easy integration with external applications.

Resources

Code of conduct

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages