5 Self-Hosted Notion Alternatives: Run Your Own Knowledge Management and Collaboration Platform
Video
Transcript
Hello, this is the channel Easy Self Host.
In this video, we are going to explore 5 self-hosted Notion alternatives.
Each of these apps features some or all of the good features of Notion, including search, organization, templates, collaboration, sharing to the public and many more.
After this video, you can choose what you like and start running your own note/wiki app.
In the era of generative AI, keeping our data, like notes, on our own devices allows us to have a more personalized local AI without getting charged.
The first app we are going to run is BookStack, which is an OG Wiki app thatās been around for almost 10 years.
It may not look like Notion but it has its own powerful features and has been very stable for a long time.
Letās take a look at how to run BookStack with Docker Compose.
In this video, Iāll quickly go through the high levels of the Docker Compose files since we have a lot to cover.
Please use the link in the description below to check out these files on GitHub.
The BookStack Docker Compose has 2 services: the BookStack server and the MariaDB database.
The BookStack image and the database image both come from LinuxServer.io.
The only thing we need to customize in this Docker Compose is the APP_URL environment of the BookStack Server.
For me, the URL will be ābookstack.home.easyselfhost.comā.
For this URL to work, we need to attach the BookStack server container to the same Docker network of our proxy container.
And we also need to set up the proxy rule for this domain name.
Check out my video on HTTP proxy if you are not familiar with it.
Here I actually have Caddy proxy rules set up for all of the apps Iām going to run today.
And Iāll go to the command line to start or restart the Caddy proxy with the updated configuration, so I donāt have to do it again for the other apps.
After this, letās run the Docker Compose in the BookStack directory.
Then, we can head to the browser and type the URL we set.
For me, itās bookstack.home.easyselfhost.com.
The default login email is [email protected] and the password is 'password'.
Now we are viewing the homepage of our BookStack web app.
Documents are organized as books in BookStack.
To create a new document, we first need to create a book and then create a page within that book.
BookStack supports two types of editors.
The default one is the traditional WYSIWYG editor, similar to MS Word.
You can opt for the side-by-side markdown editor if you prefer.
By pasting something here, we can see that it supports all common formatting options.
In BookStack, remember that we have to manually save the content.
BookStack also supports templates.
We can turn any page into a template by opening the template panel in the editor and selecting the 'page is a template' checkbox.
When creating a new page, we can use the template from the template side panel to include all the template content.
For searching, we can easily find our content using the search bar at the top of the page.
BookStack supports multi users, and as an admin user, we can create a new user in the setting.
When creating the user, we can assign the username, email and the password for the new user.
Then letās login the new account in another browser using the email address and the password.
By default the user will have no permission to access any book or page.
The admin user has to go to the setting and assign a role like editor to the new user.
With the permission set up, the new user can see the books and pages, and can even edit the page with the editor role.
There is no support for real-time collaboration in BookStack though.
Each user will have to save the changes to let other users see the updates.
BookStack also supports sharing content to the public site.
To enable this, we have to go to the setting and enable the āallow public accessā option.
After this, for each book or page we want to share to the public, we need to go to its permission section, and enable the view option for everyone else.
In the other browser, letās log out the account to test the public site.
Now, we can see the page we just shared, but we wonāt have the edit option as a guest user.
Thatās all I want to share about BookStack, but it has many more features you can try.
BookStack is a true open-source project, with the MIT license, so thereās no limitation on how you want to use the software.
Outline is the second app Iām going to run.
It is a knowledge management app that resembles Notion in both its user interface and its features.
It has excellent collaboration support, as we'll see in just a moment.
The Docker Compose file for self-hosting Outline includes three services: the Outline server, a Redis cache server, and a Postgres database.
The Outline server image is hosted by the official outline website.
All the configurations we need to adjust are in this outline.env file, located in the same directory.
Here, we need to generate two random secrets: the SECRET_KEY and the UTILS_SECRET.
We can leave the database URL and redis URL unchanged as they have already been set up as the default credentials.
You can modify the passwords to make the database more secure.
Like BookStack, we also need to specify the URL we are going to use.
I will continue my tradition of using the domain outline.home.easyselfhost.com.
Outline requires that we use an external OAuth provider for authentication.
We could self-host authentication providers like Authelia and Authentik, but that requires significant effort and deserves its own video.
So, we will use external OAuth providers here for simplicity.
Note that the Google option only supports Workspace accounts for some reasons, so Gmail accounts wonāt work.
Here, I will choose the Slack option as itās free and quite easy to set up.
We will need to create a Slack account and a workspace for this setting, and I have already done so.
Then, letās head over to api.slack.com/apps and create our app integration.
Letās name our app, bind it to our workspace, and click 'Create App'.
The only setting we need to adjust here is the trusted redirect URL for our Outline app.
The redirect URL is YOUR_DOMAIN/auth/slack.callback.
Then, letās navigate to the 'OAuth & Permissions' page in Slack and scroll down to Redirect URLs.
Here, letās add the redirect URL for our Outline App.
Next, we'll move to the 'Basic Information' page where we can find the Client ID and Client Secret.
These two fields are required for our Outline configuration to set up authentication.
Letās copy and paste these fields into the outline.env file.
Now we can go to the server command line and start the Docker Compose for Outline.
Then, letās open the browser and navigate to our URL for Outline.
Here, click 'Continue with Slack' and log in to our Slack account.
At the Slack login page, we need to authorize the Outline App integration.
Next, we are logged into the Outline App.
Documents in Outline are organized into collections.
Letās create a new collection and name it 'Notes'.
From this collection, we can create a new document.
The editor in Outline is block-based WYSIWYG; you can type in Markdown or use the UI to format, similar to Notion.
We can see that it supports all common formatting.
Besides basic formatting, if we type ā/ā in the editor, a variety of embed options appear for different applications.
For instance, we can use the YouTube option to embed one of my videos here.
Templates in Outline are managed in the settings.
Here, we can create a template for a collection.
Letās create a template for a project tracking dashboard.
This template will include some predefined content like tables.
Letās publish this template.
Then, when we create a new document, we can apply the template we created by selecting the template option at the top right.
Searching for content is easily accessible from the side panel.
Next, let's test the real-time collaboration feature by logging into a different account in another browser profile.
For this browser, I already have another Slack account logged in.
We need to share the document with the new user and grant them the editor permission for them to collaborate in the same document.
After this, we can open the same document as the new user.
Here, we can start the collaboration session with real-time synchronization.
Resources
- https://www.bookstackapp.com
- https://www.getoutline.com
- https://affine.pro
- https://docmost.com
- https://github.com/zadam/trilium
- https://github.com/easyselfhost/self-host/tree/main/apps/notion-alts
- https://docs.getoutline.com/s/hosting/doc/authentication-7ViKRmRY5o
- https://api.slack.com/apps
- https://support.google.com/accounts/answer/185833