Tesserae
Free, open-source dashboard server for e-ink displays. Compose dashboards in a browser, render dithered frames, and push them over MQTT or REST to e-ink panels. Self-hosted, AGPL-3.0, no tracking.
Backend infrastructure and microservices for Kometa, featuring OAuth proxies (Plex, Trakt, MAL, SIMKL) and cached metadata APIs (IMDb, AniDB).
Developer toolsPython · HTMLGitHub @Kometa-TeamOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Kometa Utilities is a collection of backend services designed to support the Kometa ecosystem. It provides secure OAuth authentication flows for third-party platforms (Plex, Trakt, MyAnimeList, and SIMKL) alongside robust API proxying and metadata caching services (IMDb, AniDB, and SIMKL). By handling authentication and rate-limited data scraping centrally, these utilities ensure fast, reliable, and compliant data access for Kometa users.
A suite of support services for Kometa, including:
This repository publishes Docker images for its locally maintained utility services:
ghcr.io/kometa-team/anidb-mirrorghcr.io/kometa-team/plex-oauthghcr.io/kometa-team/trakt-oauthghcr.io/kometa-team/mal-oauthghcr.io/kometa-team/simkl-serviceghcr.io/kometa-team/imdb-serviceThe base docker-compose.yml uses those published GHCR images.
For local development, docker-compose.override.yml is automatically picked up by Docker Compose and switches those same services back to local build: contexts. In practice that means:
If you want to force a local rebuild, use:
docker compose up -d --build
For imdb-service, the Playwright/browser layer now lives in a separate base image so code-only updates stay small. To rebuild both the IMDb base image and the app image locally in one step, use:
./imdb-service/build-local.sh
Optional overrides:
BASE_IMAGE=ghcr.io/kometa-team/imdb-service-base:dev \
APP_IMAGE=ghcr.io/kometa-team/imdb-service:dev \
./imdb-service/build-local.sh
The repository includes two Docker-related GitHub Actions workflows:
main: build the utility images for validation onlymain: build and publish the utility images to GHCRRelevant workflow files:
.github/workflows/docker-pr-build.yml.github/workflows/docker-build.yml.github/workflows/deploy.ymlThis lets contributors verify Docker changes in PRs while keeping image publishing limited to the main branch.
The repository also includes a deployment workflow that connects to the remote server over SSH after the Docker Builds workflow completes successfully on main.
The workflow:
docker compose pulldocker compose up -dRequired GitHub Actions secrets:
DEPLOY_HOSTDEPLOY_USERDEPLOY_SSH_KEYDEPLOY_PROJECT_DIROptional secrets:
DEPLOY_PORT (defaults to 22)DEPLOY_BRANCH (defaults to main)The IMDb parental guide fetch path supports optional proxy rotation so repeated browser-backed parental requests do not all originate from the same IP.
Supported environment variables for imdb-service:
PARENTAL_PROXY_ENABLEDPARENTAL_PROXY_URLSPARENTAL_PROXY_RETRY_COUNTPARENTAL_PROXY_BAN_TTL_MINUTESPARENTAL_BROWSER_MAX_CONTEXTSExample:
PARENTAL_PROXY_ENABLED=true
PARENTAL_PROXY_URLS=http://user:[email protected]:8080,http://user:[email protected]:8080
PARENTAL_PROXY_RETRY_COUNT=2
PARENTAL_PROXY_BAN_TTL_MINUTES=30
PARENTAL_BROWSER_MAX_CONTEXTS=8
Notes:
PARENTAL_BROWSER_MAX_CONTEXTS caps how many are held at once, with idle least-recently-used contexts closed above the cap so the container never exhausts its thread/pid limit.env file rather than committing credentials into docker-compose.ymlExample server-side .env values:
PARENTAL_PROXY_ENABLED=true
PARENTAL_PROXY_URLS=http://username:password@proxy-host:port
PARENTAL_PROXY_RETRY_COUNT=1
PARENTAL_PROXY_BAN_TTL_MINUTES=30