LinkAce
Self-hosted bookmark archive with tags and link monitoring
LinkAce is a self-hosted bookmark archive built with PHP and Laravel. It stores links organized by tags and lists, monitors bookmarks for availability, and provides a REST API, import tools, and browser extensions.
Key features
- Bookmark archive with tags
- Link availability checks
- REST API and import tools
- Browser extension
Pros & cons
Strengths
- Powerful bookmark management
- Clean dashboard view
Trade-offs
- Bookmark-focused not service tiles
- Needs a database
LinkAce replaces
Last reviewed Sep 13, 2026 · 854 words
LinkAce sits in the dashboards category on this site, and that is the first thing to correct: it is a bookmark archive, not a start page. If you want tiles for your homelab services, look at Homepage or Dashy. If you want what Raindrop and Pocket do, plus a checker that tells you when a saved link has died and a Wayback Machine snapshot of every link you save, on a MySQL database you control, LinkAce is that, and it does it with more structure than its lighter rivals.
Lists and tags are different things, and that is the point
A link in LinkAce can live in any number of lists and carry any number of tags. Lists are the "collections" you would build by hand: reading for a project, recipes, references for an article. Tags cross-cut them. Every link, list, and tag can be private or public, so a list of resources can be shared as a page while the rest of the archive stays yours. When you save a link, LinkAce fetches the page title and description for you and, if enabled, submits the URL to the Internet Archive so there is a snapshot from the day you saved it. That last feature is what separates it from a plain bookmarks database: it does not archive the page itself, but it makes sure someone did.
Multi-user support arrived later in the project's life and is real, with each user owning their own links; it is still built around one person's archive rather than a team's shared library.
The link checker only runs if you wire the cron
This is the setup step that the Docker instructions state and people skip. LinkAce's scheduled work (checking links for availability, sending the digest of dead links, backups) runs from a cron endpoint. In the settings you generate a token, and then something has to call that URL every minute:
* * * * * curl -fsS https://links.example.com/cron/YOUR-TOKEN >/dev/null
Run that from the host's crontab or a tiny sidecar container. Without it the archive works fine and the dead-link feature silently never fires, so the first hint is 2 years later when half your saved links 404. The check itself is polite: it walks links in batches rather than hammering every site at once.
Docker install: one image, one database, one .env
The project ships linkace/linkace images and a compose file that pairs a PHP-FPM container with nginx and MariaDB; there is also a simple image variant that bundles the web server for a single-container setup. Either way it is a Laravel app, so the .env file holds the app key, the database credentials, and the public URL, and the first-run setup page creates the admin account and runs migrations. Persist the .env and the database volume; the links table is the whole product. Put it behind your reverse proxy with HTTPS, because the browser extension and the API both send your token on every request. At 256 MB the RAM figure is honest for a personal archive; the database container adds its own.
Getting links in and out
Import takes the Netscape HTML bookmark format, which is what every browser, Raindrop, and Pocket export, so migrating is a one-file upload. Export goes the same way, so you are never locked in. Beyond that there is a REST API with per-user tokens, an official browser extension for Chrome and Firefox that saves the current page with tags in two clicks, and a bookmarklet for everything else. The extension is the difference between an archive you use and one you forget; install it before you import.
linkding is lighter, Linkwarden archives pages
linkding is the larger project and the simpler one: a single container on SQLite, tags only, no lists, no link checker, and a fast interface. If you want one container and nothing to maintain, pick it and stop reading. Linkwarden goes the other way: it archives a full copy of every page as HTML, PDF, and screenshot, needs PostgreSQL, and eats storage accordingly. Karakeep adds AI tagging and notes on top of the same idea. LinkAce lands in the middle: more organisation than linkding, no local page archive, and a MySQL dependency. For read-it-later rather than a permanent archive, Wallabag or Readeck are the tools; LinkAce keeps links, not articles.
What I'd do
LinkAce if lists matter to you, you want to know when links die, and you are fine with a database container. The compose from the repo with MariaDB, the cron endpoint wired from the host on the first day, the browser extension installed before importing the 3,000-line HTML file from your old browser. Weekly database dumps to the same place as the rest of your backups. If you find yourself wanting the page contents preserved rather than the pointer, that is Linkwarden's job; if you find yourself never using lists, linkding would have been enough, and moving is one export away.
Compare LinkAce
1 head-to-head comparisons.
Similar dashboards & startpages apps
Portainer CE
Dashboards & StartpagesLightweight management UI for Docker and Kubernetes
Replaces Rancher, Docker Desktop
CasaOS
Dashboards & StartpagesSimple, easy-to-use home cloud system and dashboard
Replaces Google homepage
Glance
Dashboards & StartpagesSelf-hosted feeds and info dashboard
Replaces Heimdall
Web Check
Dashboards & StartpagesAll-in-one OSINT tool for analysing any website
Homepage
Dashboards & StartpagesFast, file-configured application dashboard
Replaces Heimdall
Dashy
Dashboards & StartpagesFeature-rich personal dashboard for self-hosters
Replaces Heimdall