No description
  • Go 60.3%
  • JavaScript 20.2%
  • CSS 9.8%
  • Shell 3.2%
  • HTML 2.6%
  • Other 3.9%
Find a file
wuast94 fcb3bb706c
All checks were successful
Release / Check if release needed (push) Successful in 52s
Release / Release (push) Successful in 6m2s
Merge pull request 'chore: update ci toolchain' (#340) from updatarr/ci-toolchain-63db05fe2e into main
2026-08-14 14:31:33 +02:00
.devcontainer chore: update ci toolchain 2026-08-14 14:22:45 +02:00
.docker/scout feat(docker): test scout 2025-04-16 23:43:38 +02:00
.forgejo/workflows chore: update ci toolchain 2026-08-14 14:22:45 +02:00
cmd feat: run service probes in background 2026-08-02 20:08:44 +02:00
configtest fix(docker): fix arm build third try 2025-04-20 22:31:28 +02:00
docs/security fix: harden polling providers and configuration 2026-08-02 20:08:44 +02:00
internal feat: batch dashboard polling 2026-08-02 21:04:28 +02:00
scripts chore: remove dependency-track sbom tooling 2026-07-08 19:32:35 +02:00
web feat: batch dashboard polling 2026-08-02 21:04:28 +02:00
.dockerignore fix: harden polling providers and configuration 2026-08-02 20:08:44 +02:00
.gitignore fix: harden polling providers and configuration 2026-08-02 20:08:44 +02:00
.golangci.yml chore: improve error handling, security, and CI asset generation 2026-03-31 18:14:39 +02:00
.updatarr.yaml fix: harden polling providers and configuration 2026-08-02 20:08:44 +02:00
cliff.toml ci: standardize forgejo workflows 2026-06-21 18:11:19 +02:00
config.example.yaml refactor(status): Simplify TLS verification and improve grid layout responsiveness 2025-12-07 07:05:37 +01:00
CONTRIBUTING.md fix: harden polling providers and configuration 2026-08-02 20:08:44 +02:00
DESIGN.md feat: run service probes in background 2026-08-02 20:08:44 +02:00
docker-compose.yml fix: harden polling providers and configuration 2026-08-02 20:08:44 +02:00
Dockerfile chore: update go 2026-08-13 22:39:30 +02:00
go.mod chore: update go 2026-08-14 13:35:31 +02:00
go.sum chore: lock file maintenance 2026-08-12 20:41:04 +02:00
Justfile fix: harden polling providers and configuration 2026-08-02 20:08:44 +02:00
README.md chore: remove dependency-track sbom tooling 2026-07-08 19:32:35 +02:00
ROADMAP.md feat(core): at critical services at the top of the page 2025-04-20 22:19:29 +02:00

Linkus

Linkus is a configurable homepage dashboard for self-hosters who run it behind an external authentication proxy such as Traefik with Authelia. It provides a central hub for services, HTTP status checks, critical alerts, and small dashboard plugins.

The main feature is group-aware visibility: Linkus reads trusted proxy headers and shows only the services and plugins the current user may access.

Linkus is implemented as a Go application using net/http, chi, html/template, embedded static assets, PicoCSS, and a Dracula-inspired theme.

Features

  • Dynamic visibility: Shows services, plugins, and critical alerts based on user and group mappings from trusted proxy headers.
  • Service modules: Displays configured links and HTTP checks with response status and response time.
  • Icons: Supports Lucide icon names or direct icon URLs in the icon field.
  • Plugins: Includes clock, sabnzbd, and arrCalendar widgets.
  • Critical alerts: Supports ping, JSON response, and text response checks.
  • Config-driven: Services, categories, plugins, users, groups, and alert checks are configured in YAML.
  • Theming: Uses PicoCSS plus web/static/css/dracula.css and app-specific CSS.

Security Model

Linkus expects to run behind a trusted reverse proxy such as Traefik with Authelia. The proxy must authenticate users, set Remote-User, Remote-Name, Remote-Groups, and Remote-Email, strip any client-supplied versions of those headers, and prevent direct public access to the Linkus container or process.

Do not expose Linkus directly to untrusted clients unless you add another trusted-header boundary in front of it.

Running With Docker Compose

Use the included docker-compose.yml:

docker compose up -d

Linkus listens on http://localhost:3000 by default. Mount or create config/config.yaml based on config.example.yaml, then restart the container after changing configuration:

docker compose restart linkus

Local Development

Prerequisites:

Common commands:

just setup
just run
just test
just check
just build

Configuration

All application settings are managed in config/config.yaml. See config.example.yaml for the complete schema and examples.

Architecture

See DESIGN.md for implementation details.

Contributing

See CONTRIBUTING.md for development workflow and plugin guidance.


Note: This project was developed with AI assistance.