A beautiful, customizable service dashboard for Nextcloud.
LinkBoard turns your Nextcloud into a personal homelab dashboard. Organize all your self-hosted services in one place — with live status checks, real-time widgets, custom icons, and a fully configurable layout. Inspired by Gethomepage, but deeply integrated into Nextcloud.
![]() |
![]() |
![]() |
![]() |
![]() |
- Service Dashboard – Organize services in categories with drag & drop sorting
- Grid Layout – Grafana-style grid layout with free drag, resize, and placement of cards within categories
- Configurable Grid – Set grid granularity per category (6, 12, or 24 columns) with auto-arrange and row-height options
- Edit Mode – Lock/unlock edit mode toggle to prevent accidental changes
- Status Checks – Live health checks with dot or border indicators
- Status History – Response time charts, uptime tracking, and a dedicated status overview page
- Offline Notifications – Nextcloud notifications when services go down, with configurable threshold and recovery alerts
- External Notification Channels – 19 providers: Discord, Slack, Telegram, Matrix, Teams, Ntfy, Gotify, Pushover, E-Mail (SMTP), and more, with per-service overrides
- 136 Built-in Widgets – Real-time data from Proxmox, Patchman, Immich, Uptime Kuma, and 130+ more; plus an inline-editable Table widget (full list)
- System Resources – Monitor CPU, memory, disk usage, uptime, and CPU temperature with progress bars
- Category Spacers – Decorative separator categories with multiple styles (solid, dashed, dotted, dots, stars, and more)
- Flexible Icons – Upload custom images (PNG, SVG, WebP…), use Material Design Icons (inline SVG), or any URL
- Theming – Dark, light, or auto mode with custom background images and blur effects
- Card Styles – Glass, Solid, Flat, or Transparent card backgrounds
- Configurable Layout – Adjust columns, card styles, search bar, and more
- Import / Export – YAML & JSON support, compatible with Gethomepage services.yaml
- Keyboard Shortcuts – Quick access via
/,E,R,Esc(see below) - Multi-Language – Full i18n support with 57 languages
- Per-User – Each Nextcloud user gets their own private dashboard
| Key | Action |
|---|---|
/ |
Focus search bar |
E |
Toggle edit mode |
R |
Refresh all (status checks, widgets, resources) |
Escape |
Close editor / exit edit mode / clear search |
Shortcuts are disabled while typing in input fields.
EandRare ignored when Ctrl/Cmd is held.
- Nextcloud 32 or 33
- PHP 8.2 – 8.4
Download the latest release tarball and extract it into your Nextcloud apps/ directory:
cd /path/to/nextcloud/apps
tar xzf linkboard.tar.gzThen enable the app:
cd /path/to/nextcloud/
php occ app:enable linkboard- Node.js 20+
- npm
- PHP 8.2+
- Composer
- A Nextcloud development instance
cd /path/to/nextcloud/apps/
git clone https://github.com/tschuegy/linkboard-nextcloud.git linkboard
cd linkboard
composer install
npm install
npm run build
cd /path/to/nextcloud/
php occ app:enable linkboardnpm run watch # Auto-rebuild on changes
npm run build # Production build
npm run lint # Lint check
npm run lint:fix # Auto-fix lint issueslinkboard/
├── appinfo/ # App metadata & routes
├── lib/ # PHP backend
│ ├── Controller/ # REST API controllers
│ ├── Db/ # Entity & mapper classes
│ ├── Service/ # Business logic
│ ├── Widget/ # 136 widget definitions
│ └── Migration/ # Database migrations
├── src/ # Vue.js frontend
│ ├── components/ # Vue components
│ ├── store/ # Pinia state management
│ └── services/ # API client
├── css/ # Global styles
├── img/ # App icon & screenshots
├── l10n/ # Translation files (57 languages)
└── templates/ # PHP templates
All endpoints under /apps/linkboard/api/v1/:
| Endpoint | Methods | Description |
|---|---|---|
/dashboard |
GET | Full dashboard (categories + services + settings) |
/categories |
GET, POST | List / create categories |
/categories/{id} |
GET, PUT, DELETE | Single category CRUD |
/categories/reorder |
PUT | Reorder categories |
/services |
GET, POST | List / create services |
/services/{id} |
GET, PUT, DELETE | Single service CRUD |
/services/reorder |
PUT | Reorder services |
/services/{id}/move/{catId} |
PUT | Move service to category |
/settings |
GET, PUT | User settings |
/icons |
GET, POST | List / upload icons |
/icons/{filename} |
GET, DELETE | Serve / delete icon |
/widgets/catalog |
GET | Available widget types |
/widgets/data |
POST | Fetch widget data |
/status/{id}/history |
GET | Status history for a service |
/status/history |
GET | Status history for all services |
/resources/{categoryId} |
GET | System resources (CPU, memory, disk) |
AGPL-3.0-or-later




