m-mattia-m/LinkShelf

📌 LinkShelf is a web app that helps you organize, manage, and share your favorite links and bookmarks with ease. Perfect for students, professionals, and casual users, it offers a simple, user-friendly way to keep all your important web resources in one place 🔗✨

Go

2

215 commits

updated Oct 1, 2026

See the code

See what people are saying

SourceMessageScoreDate

Cloud-native Linktree alternative for k8s (r/selfhosted)

Hi everyone, I know there are other popular open-source link-page tools. I tried a few of them, but I always ran into the same problems: they either don't work well on k8s (only with a Docker/VPS setup), or they have no shelf system, so you can't create shelves on the fly and have to configure them…

3

Oct 1, 2026

README

LinkShelf

CI backend coverage frontend coverage GitHub go.mod Go version Release

Open source Linktree alternative. Collect your links on a page (a shelf), style it, share it. Self-hosted.

LinkShelf dashboard and shelf editor

Features

Shelves

  • Unlimited shelves, sections and links
  • Drag and drop ordering
  • Icons from Lucide and Simple Icons, optional color per link
  • Share via URL or QR code
  • Optional footer: default "Powered by LinkShelf", your own text (bold, italic, links), or none
  • noindex per shelf to keep it out of search engines

URLs

  • Path: /<path>
  • User-based paths: /<username>/<path>, so two users can both own /profile
  • Custom domain per shelf: profile.example.com

Themes

  • 13 built-in themes
  • Own themes: colors, gradients, font, corner radius, background image
  • Import and export as plain text
  • Instance themes from a mounted directory, plus static assets like background images
  • Validated on save: no raw CSS, so themes are safe on public pages

Accounts and auth

  • Local accounts or OIDC (Keycloak, Zitadel, Auth0, Google, ...)
  • Email verification, password reset, invite by email (needs SMTP)
  • Bootstrap admin from config
  • Registration can be turned off

Admin

  • Manage users: create, invite, edit, verify, delete
  • Moderate user themes
  • Edit About, Contact, Imprint, Terms and Privacy pages (Markdown, per language)
  • Dashboard with shelf, section and link counts

Self-hosting

  • One container image, frontend and backend together
  • PostgreSQL or MySQL
  • Helm chart, works on OpenShift
  • Strict origins to lock the API to your instance
  • OpenAPI spec and Swagger UI at /swagger
  • UI in English, Deutsch, SchwiizerdĂĽtsch and Español

Quick start

  1. Copy the compose file from the Docker docs and create its .env with a random JWT secret and admin password (e.g. openssl rand -base64 48), as described there
  2. docker compose up -d
  3. Open http://localhost:3000
  4. Sign in with the bootstrap admin you configured

Docs

Contributing and Development

See CONTRIBUTING.md

License

LinkShelf is licensed under the GNU AGPLv3. See LICENSING.md for details, exceptions and trademark notes.

links
linktree-alternative
self-hosted
selfhosted

m-mattia-m/LinkShelf

📌 LinkShelf is a web app that helps you organize, manage, and share your favorite links and bookmarks with ease. Perfect for students, professionals, and casual users, it offers a simple, user-friendly way to keep all your important web resources in one place 🔗✨

Go

2

215 commits

updated Oct 1, 2026

See the code

See what people are saying

SourceMessageScoreDate

Cloud-native Linktree alternative for k8s (r/selfhosted)

Hi everyone, I know there are other popular open-source link-page tools. I tried a few of them, but I always ran into the same problems: they either don't work well on k8s (only with a Docker/VPS setup), or they have no shelf system, so you can't create shelves on the fly and have to configure them…

3

Oct 1, 2026

README

LinkShelf

CI backend coverage frontend coverage GitHub go.mod Go version Release

Open source Linktree alternative. Collect your links on a page (a shelf), style it, share it. Self-hosted.

LinkShelf dashboard and shelf editor

Features

Shelves

  • Unlimited shelves, sections and links
  • Drag and drop ordering
  • Icons from Lucide and Simple Icons, optional color per link
  • Share via URL or QR code
  • Optional footer: default "Powered by LinkShelf", your own text (bold, italic, links), or none
  • noindex per shelf to keep it out of search engines

URLs

  • Path: /<path>
  • User-based paths: /<username>/<path>, so two users can both own /profile
  • Custom domain per shelf: profile.example.com

Themes

  • 13 built-in themes
  • Own themes: colors, gradients, font, corner radius, background image
  • Import and export as plain text
  • Instance themes from a mounted directory, plus static assets like background images
  • Validated on save: no raw CSS, so themes are safe on public pages

Accounts and auth

  • Local accounts or OIDC (Keycloak, Zitadel, Auth0, Google, ...)
  • Email verification, password reset, invite by email (needs SMTP)
  • Bootstrap admin from config
  • Registration can be turned off

Admin

  • Manage users: create, invite, edit, verify, delete
  • Moderate user themes
  • Edit About, Contact, Imprint, Terms and Privacy pages (Markdown, per language)
  • Dashboard with shelf, section and link counts

Self-hosting

  • One container image, frontend and backend together
  • PostgreSQL or MySQL
  • Helm chart, works on OpenShift
  • Strict origins to lock the API to your instance
  • OpenAPI spec and Swagger UI at /swagger
  • UI in English, Deutsch, SchwiizerdĂĽtsch and Español

Quick start

  1. Copy the compose file from the Docker docs and create its .env with a random JWT secret and admin password (e.g. openssl rand -base64 48), as described there
  2. docker compose up -d
  3. Open http://localhost:3000
  4. Sign in with the bootstrap admin you configured

Docs

Contributing and Development

See CONTRIBUTING.md

License

LinkShelf is licensed under the GNU AGPLv3. See LICENSING.md for details, exceptions and trademark notes.

links
linktree-alternative
self-hosted
selfhosted

Languages

Go

53.4%

TypeScript

35.6%

Vue

10.0%