Post

Trilium Notes (Self-Hosted)

Trilium Notes (Self-Hosted)

Hello and happy new year. Welcome to my first blog in โ€˜23 where i will be showing you how easy you can self-host your note-taking application at home. I feel like the search for a good notetaking platform is never-ending. Iโ€™ve been using Github Gists, Obsidian and Notion for preety much 2 years now but this year i decided to try something new. Trilium Notes, a project by zadam is a hierarchical note taking application with focus on building large personal knowledge bases.

It is provided as either desktop application (Linux and Windows) or web application hosted on your server (Linux). Mac OS desktop build is available, but it is unsupported.

With that said, lets get started.๐Ÿ™‚ Iโ€™m hosting it on my home network on a Raspberry-Pi, running Ubuntu server. Deployment method is a docker container.๐Ÿ˜ I followed zadamโ€™s knowledge base.

I used this docker-compose file to bring up the container:

1
2
3
4
5
6
7
8
9
version: "3.3"
services:
  trilium:
    image: zadam/trilium:latest
    restart: unless-stopped
    ports:
      - "9999:8080"
    volumes:
      - /home/ubuntu/containers/trillium:/home/node/trilium-data

A lil about the compose file.

  • We are using compose version 3.3
  • We are using the latest build image from docker hub
  • We are setting the container restart policy to always keep the instance running unless the container is stopped.
  • By default, trilium runs on port 8080. Since i have another different container using the same port, i assigned mine 9999.
  • Trilium needs a directory where it can store its data, this then needs to be mounted into the docker container. The container needs to runs as a root to be able to access it in write mode.. In my case, /home/ubuntu/containers/trillium is the directory created.

From there we can go ahead and compose the file as show below:

image

After getting similar output, access the trilium web editor by opening a browser and going to the server IP/FQDN followed by the port specificed earlier. Here we find the initial setup guide:

image

After selecting the first option, we proceed to setup a password.

image

Once set, you will be prompted to login.

image

Upon a successful login, we get access to a beautiful homepage. The UI honestly looks preety awesome ๐Ÿ˜.

Trillium has been written in JavaScript btw.

image

Before we even start diving in, lets look at how much resources are consumed by the container.

image

Very minimal. ๐Ÿ‘Œ


Poking around the templates on the left navigation pane, we get a variety of good looking and helpful teamplates. For example:

Weight Tracker

image


Statistics

image


Mermaid Diagrams

image


Canvas Notes

image


Formatting Options

image


Family Trees

image


Ohh, and its search functionality is powerfull too ๐Ÿ™Œ

image

Trilium also has a switch for changing the web layout to Mobile View as shown:

image

Moving on, clicking on the icon on the top left, shows you more options you can tinker with.

image

For instance, You can use the SQL Console to query your notes from the Database.

image

I also tried creating a dummy text as shown:

image

Review

  • It looks preety awesome and powerful and cant wait to unleash its full potential overtime. However, i feel like its abit complex ๐Ÿ™ˆ. Time will tell .
  • Can I compare it to Notion? ๐Ÿ™…โ€โ™‚๏ธ, Notion is quite powerful with tons of integrations (GitHub, Figma, Trello, GoogleDrive, CodePen. Slack, Zoom, Asana). Iโ€™m yet to see if Trilium accepts integrations or installing plugins.๐Ÿ˜
  • Can you import or export notes on Trilium? Trilium can import ENEX files which are used by Evernote for backup/export and also markdown. You can also export notes as MD, HTML and OPML. Compared to notion, i feel like notion is King, in the sense that i can import notes from/as: Evernote, Trello, Asana, Confluence, txt, MD, CSV, HTML, Word, Google Docs, Dropbox paper, Quip and Workflowy. Exporting? PDF,HTML, MD & CSV. Notion wins on this one.
  • Lets talk about synchronization. Trilium supports synchronization between desktop client and a server instance. In my case I am using a server instance. If i had a desktop client on a different workstation and wanted to sync notes with my server instance, I would select that option when doing the initial installation setup as shown in the third option below:

image

More information about its sync capabilities can be found here. Obsidian doesnโ€™t have that sync feature. Notion is not self-hosted but you can sync your notes from the browser, mobile application and also desktop application.

From their Github README, they boast of the following features:

image

Since i havenโ€™t tested them all, i will do a proper review of the same in subsequent blogs. Thanks for reading up to this point, lemmy know your thought on the same should you try it out. If you have any other #OpenSource deployable solutions or fun projects that you would want me to cover, feel free to reach out on the same. Cheers โœŒ๐Ÿผ

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.