Running a Self-Hosted Bookmarking Service with Shaarli

Image credit: Shaarli Project

I wanted to be able to synchronize browser bookmarks in a way that provided:

  • A good user experience
  • Privacy (self-hosted)
  • Easy to configure using docker and docker-compose
  • Low resource usage

There are an absolute plethora of alternatives in this space, most notably Wallabag, but I found it to be slower and heavier than Shaarli. Other alternatives like Unmark, Shaark, and LinkAce attempt to do more than I need and therefore tend to be more resource intensive.

Features / Interface

The main user interface (after logging in) looks a little cluttered, but in actually quite easy to use:

The search is very fast, supports highlighting, and “just works” as expected. It doesn’t try to do anything fancy here.

The overall feature set is well focused, although I could do without the “Picture wall” because it typically just pulls logos or random stock photos from the bookmarked pages which don’t add much value (at least to me).

The Tag Cloud is completely standard, so if you find them useful you’ll enjoy the feature. It has instant search results (results as you type) and results are displayed very quickly.

Unfortunately multi-word tagging (“Professional Development” not “Professional”, “Development”) is not supported, but they’re working on it.

Importing Links (from the “Tools”) menu works very well, easily handling my ~200 bookmarks. Other users have reported no issues supporting many thousands of links.

Browser Plugins

For Firefox users there is a basic but functional web extension that instantly adds your current page to your Shaarli instance via a simple popup window:

The user experience here isn’t great: the popup can get “lost” behind the main window (better if it was a modal), the content in the popup requires scrolling (why not hide or collapse elements, or increase the size of the window?), and it requires an additional click to save/submit the bookmark to your Shaarli instance (as opposed to the native browser behavior of a single-click adding of a bookmark).

Despite the shortcomings it’s still functional enough to encourage use.

There’s also a similar extension for Chromium browsers, as well as an Android utility (but I found this too cumbersome to be very useful).

Neither of these extensions allow for bookmark syncing.

Performance

Shaarli has excellent performance. The interface feels native or pre-fetched even when running in docker on a 5-year-old machine. Clicking to view details on a bookmark, searching, adding tags, and other functions all work instantly.

Configuration

Run Shaarli locally easily by using docker-compose:

version: '3'

services:
  shaarli:
    image: shaarli/shaarli:master
    container_name: shaarli
    restart: unless-stopped
    ports:
      - 8093:80
    volumes:
      - ./cache:/var/www/shaarli/cache
      - ./data:/var/www/shaarli/data

In my case port 8093 is behind a Caddy proxy:

# Shaarli Bookmark Manager
links.MYDOMAIN.com:80 {
  proxy / localhost:8093 {
    transparent
    header_upstream X-Forwarded-Proto {scheme}
  }
  # Wildcard TLS is handled upstream
  tls off
}

Shaarli runs without any trouble behind any reverse proxy, requiring no tweaking or special configuration.

Conclusion

If you’re looking for a fast, simple alternative to insecure public bookmark managers definitely give Shaarli a try!

Technical Program Manager

The key to everything is mastery of your frame of mind. Everything is relative.

comments powered by Disqus