Introduction

I first learned about the open-source project Outline because of another open-source project, also called Outline, which is used for setting up private VPN services. By chance, I discovered the Outline project on Github, and unexpectedly, two years later, I ended up using it for work.

In my previous article, I mentioned that after setting up the Wiki.js system and implementing it on a small scale within the team, I decided to abandon it after a few days of use. The reasons were as follows:

  1. Extremely complex permission management
  2. Very unfriendly for non-technical personnel
  3. Slow rendering speed
  4. Some bugs in permission management

Of course, for us, the main issue was the high learning curve. This was true even for our technical staff, let alone other non-technical members of the company. After abandoning Wiki.js, I remembered Outline, which I had seen on Github before, so I decided to spend a morning researching it and deploying a usable environment.

Introduction

Outline offers a Cloud version and also supports Self-Host mode. For those who want to try it out, you can first use the Cloud version without having to deploy it yourself. After understanding its features and characteristics, you can then decide whether internal deployment is necessary based on your own needs.

In my view, Outline has the following advantages compared to Wiki.js:

  1. Clean, beautiful, and efficient UI
  2. Excellent OAuth support
  3. Support for rich third-party content embedding in documents (many platforms cannot achieve this; the multi-text editor is extremely powerful)
  4. Simple and intuitive permission management and document sharing
  5. Real-time saving based on Websocket long connections

Although Outline has these advantages, it also has limitations:

  1. Single document organization structure, no support for multi-level directories
  2. No support for multi-team management (the original author stated that this is supported in Cloud and Enterprise versions)
  3. No support for operations such as comments (this feature has been included in the development milestone)

Although it’s not very strong in team management, it’s sufficient to meet our current needs, so we decided to use this open-source project to build our internal knowledge system.

Installation

I deployed it by referring to the official documentation, and encountered some issues during the process:

Failed to Create Database

Because the PostgreSQL database is specified in docker-compose.yml, it will be automatically created when the container starts, so executing the command in the official documentation will fail:

docker-compose run --rm outline yarn db:create --env=production-ssl-disabled

You can just skip this command!

Multi-domain Login Issue

The rest can be configured according to the official documentation. Another point to note is that Outline has certain restrictions on the domain suffix of members’ emails. If team members’ emails are not under the same domain, the administrator needs to add the corresponding email domain suffix in the backend.

Setting method: Visit the /settings/security URL under the Outline domain, and at the bottom, there is an Allowed Domains option where you can add the corresponding TLD.

Usage

Outline’s document organization method is different from other document systems I’ve used before. It has an open organization form, mainly organizing multiple documents into a collection, and the order of documents can be arranged by dragging and dropping.

Document hierarchy is achieved through sub-documents, which might be why it’s relatively simple.

External Sharing

Outline allows documents to be shared externally. Clicking share will generate a fixed link, but it only supports sharing individual documents, not document collections.

However, thinking about it, this can force us to consider how to organize document structures reasonably when organizing document structures. Under normal circumstances, we rarely need to make the entire document externally accessible; often, we only need to share a small portion of the content that we want the other party to know.

So we just need to organize the content that needs to be shared into one document, and then share it externally.

Conclusion

After using Outline, I found that the documents I wrote looked much better, and I didn’t have to spend too much time on additional mental overhead. The only thing to pay attention to is the organization of knowledge structure. Outline has left us a way out—we can drag documents around later to reorganize the knowledge structure.

I hope this is helpful, Happy hacking…