[Outline Wiki] An open, extensible, wiki for your team built using React and Node.js

Bonjour à tous,

I’ve recently discovered Outline wiki tool.
It’s a very nice and fast knowledge base software, open source, that aims at competing with confluence. The design is super elegant and fast, the features are rather simple but very efficient.

The owner of that app uses a SaaS model to fund his project : getoutline.com.
That’s maybe part of why that app is quite difficult to install and that there is not much support or documentation if you want or need to self-host it.

This is why I decided to set myself the challenge of packaging it for Yunohost. I have it running right now in a dedicated VPS within a docker image, but I can’t wait to have it running on my personal server ! This is my first packaging tentative, hence this post where I’ll give you updates about my progress (lots of stuff to learn) and hopefully get a little help from the pro packagers !

Package link & progress

First usable version is now ready :champagne:
You can go to that url :arrow_down: and follow the Readme

Please don’t install this on a productiion server !

Don’t hesitate to fill in issues on Github or make some feedback here, I’ll be very interested.
Emails are still not working, but otherwise you’ll end up with a pretty usable version.

Next big steps

  1. :stop_button: Use Passport.js’ LDAP plugin to connect Yunohost’s SSO to Outline’s identification system
  2. :stop_button: (if possible) Have the app added to Yunohost official catalog

Any help from you guys would be very welcomed !
Anyway I’m very excited and am sure I’ll learn a lot by trying building my first package :slight_smile:

8 Likes

Nice project! as for NGINX, a reverse proxy setting like this should be a good start…

location / {

  # Force usage of https
  if ($scheme = http) {
    rewrite ^ https://$server_name$request_uri? permanent;
  }

  proxy_pass        https://127.0.0.1:__PORT__;
  proxy_redirect    off;
  proxy_set_header  Host $host;
  proxy_set_header  X-Real-IP $remote_addr;
  proxy_set_header  X-Forwarded-Proto $scheme;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header  X-Forwarded-Host $server_name;
  
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
}
2 Likes

Oh, thank you! <3 I have been eyeing at that app for so long.

Ideally, one would use a Passport.js’ LDAP plugin (to connect to YunoHost’s LDAP server). Outline’s team has dedicated theirs to their paid plan (feat: Microsoft authentication by tommoor · Pull Request #1953 · outline/outline · GitHub), but nothing is preventing us to write our own. :innocent:

2 Likes

Hi @ericg ! Thanks for your tip. I made a new file with your proposal inside, named outline.conf inside /etc/nginx/conf.d/outline.myserver.fr.d/ folder then restarted nginx.
The only thing I got so far is a redirect to login page on the main domain :sweat_smile:
Any idea on how I could debug my nginx configuration ?

Usually with proxied apps, it is a matter of the app not knowing its actual address. Maybe there is BASE_URL (or whatever its name) config somewhere in there. Another issue can be that the NGINX config requires a slash after the port. Subtle, but significant change for NGINX.

this line would become proxy_pass https://127.0.0.1:__PORT__/;

Usually I work with my browser’s Inspector, to see which pages are loaded and failed to load, along with NGINX’s logs in /var/log/nginx/DOMAIN-access.log, -error.log, etc.

1 Like

Many thanks for your kind help !

I’ve tested a lot of options, with no luck so far…
Is there a way to bypass the SSO ? I have a feeling it’s related to it.
Sometimes when I go to my outline.myserver.fr page, I get a “Please log in to access to this content” (although I’m already logged in!)

Have you shared you app repo? Otherwise it is quite hard to give your appropriate feed backs.

Not yet since I’m still trying to manually install the app
Let me start my repo and share it here

Just added in my edited first post !

1 Like

Great! It looks good. Eric and I have forked your repo. I think we managed to make the app install without issue. If you are OK, I can open a PR to your repo for that.

You could add in your how-to that we need to set up Redirect URLs in Slack’s API:

1 Like

Wow that’s great, thank you so much ! Of course for the PR.
I will definitely improve my readme, I just had no time yesterday and wanted to share my first version with you guys :sweat_smile:
Next step : I’ll jump in the Minio server to add to the install script.

PR merged :+1:

Done :white_check_mark:

Before working on Minio server installation, I have basic questions :sweat_smile:

  1. Can I add more than one sources to app.src ?
  2. Can the installation of a Yunohost app trigger another app install ?

In other words, shall I manage minio as a separate app ?

Sure! Just rename it into like other_source.src and specify the source name to the helper: ynh_setup_source --dest_dir=dest_dir --source_id=other_source (doc)

Good question! I have never seen it I think.
Alternative, for example: Ztncui checks for Zerotier to be installed, and aborts install if does not find it.

# Testing if ZeroTier is installed
yunohost app list | grep -q "id: zerotier" || ynh_die "ZeroTier is needed, but it is not installed. There is a package for that!"
1 Like

I don’t know anything about packaging for YunoHost (yet), but when I installed my_capsule, Gemserv was installed automatically. Is that what you mean?

1 Like

yalh led the way! :ok_hand:

1 Like

I didn’t find Minio app in the wishlist and I don’t really know who would want or need a minio server on his Yunohost instance → I think I’ll go with the first option and just have minio installed in parallel !

Minio looks simple enough, I can try to package it. :innocent:

1 Like

Right now I have a problem : minio seems to have only one download link that is regularly updated https://dl.min.io/server/minio/release/linux-amd64. I would need the checksum to be downloaded from https://dl.min.io/server/minio/release/linux-amd64/minio.sha256sum rather than being hardcoded into the minio.src file

There’s https://dl.min.io/server/minio/release/linux-amd64/archive/ where all the past and current versions are stored. :wink: So that you can keep the “hardcoded” checksum in the src file, it is more safe like that.