Espial - Open-Source, Web-Based Link Aggregation

Quickly save website links using your very own self hosted Espial server.

Espial - Open-Source, Web-Based Link Aggregation

Espial is a great tool for saving website links with some pretty awesome features! Using the bookmarklet makes saving links to your Espial server effortless and we will cover all of this after the jump!

From the developer

Espial is an open-source, web-based bookmarking server.

Espial Core Features

  • Public or private links
  • Public or private notes
  • Search links
  • Auto title fetching
  • Auto description fetching via clipboard
  • Bookmarlet
  • RSS
  • Account management
  • SQLite 3 DB
  • Open-Source
  • Add favorites
  • Archiving web pages (not sure if this still works)

At first glance, Espial may seem quite... bland. But that's not a bad thing because it actually packs some great features. The simple design makes it feel more like a search engine for your saved links. And basically that's what it is, and it's awesome!

If you navigate to the settings page, you can see the bookmarklet link.

Add the bookmarket to your favorites toolbar so you can easily add links to Espial. If you want the description to autofill, you will need to copy the text to your clipboard before pressing the bookmarklet. This will then place the text in your clipboard into the description field.

Install Espial using Docker Compose

It's important to note that if you are using the Espial Docker repo to source your Docker Compose, the repo does say it has been a year since there has been an update. However, the Dockerhub stats state there has been an update only 2 months ago. Updates to Docker images do not always reflect on Github repos because sometimes files on the repo are not altered.

With that being said, here is the Docker Compose straight from the Espial Docker repo.

version: '3'
    image: 'jonschoning/espial:espial'
    # ports:
    #   - "3000:3000"
      - '/docker/espial:/app/data'
    network_mode: host
      - PORT=80
      - IP_FROM_HEADER=true
      - SQLITE_DATABASE=/app/data/espial.sqlite3
      # - SSL_ONLY=false
      # - DETAILED_LOGGING=false
      # - SHOULD_LOG_ALL=false
      # - ARCHIVE_SOCKS_PROXY_HOST=localhost 
      # - SOURCE_CODE_URI=

If you'd like to use a different port other than 80 to expose Espial, it is recommended that you uncomment the port "3000:3000" and use that instead and make the changes in the environment variable to reflect that.

Once you start the Espial container, you will need to create a user through the CLI by running the following command.

docker compose exec espial ./migration createuser --conn /app/data/espial.sqlite3 --userName myusername --userPassword myuserpassword

If using Portainer, you can omit the "docker compose exec espial" portion as you will already be inside the container when you connect using /bin/sh

It's noteworthy that when creating a user, you know that this name will be used and shown in your public links and any public links will be shown on a per user basis as shown in the examples below.

Espial Archiving using

This is a feature I could not get working. For some reason it would not bypass the Captcha on the website. So it appears that something is broken or it is blocking specific countries. See issue #56 for follow-up.

UPDATE: From the developer

Looks like you might be using cloud flare DNS. will not work with cloud flare DNS. Here's an explanation for the reasons:
Subscribe to Noted and get articles delivered via E-Mail!

Final Notes and Thoughts

Espial makes a really great link aggregator and the search and favorites feature is an added bonus that allows you to easily find links you save.

If you want to learn more about Espial or if you find it useful, give it a star on the Espial Github repo.

Readme Card

You can also check out the Espial demo server here

log in — username: demo password: demo