Outline what?
Outline is a nice personal wiki tool that
- Supports Markdown natively
- Self hosting option
- Fast
- Nice searching function
- Not overly complicated
- Supports live collaboration
making it great for hosting personal wiki.
However there's no free official hosted version of Outline - but it's pretty simple to host on Heroku for free.
Preparations
Heroku
Register an account, and bind a credit card: this will give you 1,000 hours of running time per month, which is good enough. A worker dyno is needed so this shall give you 500 hours of usable time per month.
Slack
Slack app is required for authentication and integration.
Go to https://api.slack.com/apps and create an app - in a space you feel comfortable.
Other authentication
OIDC is supported but I have not tried it - Auth0 and Okta have free plan that supports OAuth.
S3
S3 is needed for rich media storage.
There are a couple of free providers:
- Backblaze B2: 10GB space, 1GB download traffic per day. Technically should work with Cloudflare but I have not figured out how.
- Scaleway: 75GB space, 75GB/month traffic. DC located in EU.
- IBM: 25GB space, 5GB/month traffic.
- Storj DCS: 150GB space, 150GB traffic.
Create an account and collect all the details.
Get something that supports SMTP. Free options includes:
Create an account, verify the domain and collect SMTP config.
(optional) Cloudflare
Use Cloudflare to use your own domain. A free plan is good enough but you may need a Page Rule for overriding SSL settings.
(optional) GitHub account
Use this to update the application in the future, or configure auto update.
Fork the repo;
Install wei/pull
, enable it for your forked repo so your personal fork is always up to date.
Setup
Instructions as follow:
Get it running first
Click here to deploy the application. Follow the instructions, and put in environment variables as requested. Generate UTILS_SECRET
with openssl rand -hex 32
. URL
is the https://xxx.herokuapp.com
for now.
Do not bother with Google OAuth - you need a paid account to get it working.
You should have a working app: try logging in. If in doubt, check logs under More
.
Remember to enable workers at Configure Dynos
under Overview
.
Cloudflare setup
This official documentation is not very clear - TLDR version:
- Add your desired domain to Heroku, don't bother with SSL - it's paid addon
- Go to Cloudflare, add a CNAME record from that domain to
xxx.herokuapp.com
- NOT the record Heroku gave you! - If your SSL settings is NOT Strict, add a Page Rule to override it;
- Change
URL
in Heroku config to the new domain underSettings
.
Now you should have access on the new domain. It may take a while for Cloudflare to issue the new SSL certificate.
Setting up app update
Go to Deploy
, connect your Github, select your fork.
Enable auto update as you wish(de facto nightly build), or conduct manual updates.
Database backup(for Heroku Postgres)
It seems that there's no way to set this up in the UI:
- Go to https://data.heroku.com/ and click in the Postgres DB
- Settings - View credentials
- Copy the Heroku CLI command, something like
heroku pg:psql postgresql-blah-12345 --app outline-yourname
- In your local shell that has
heroku
setup, runheroku pg:backups:schedule postgresql-blah-12345 --at '02:00 America/Los_Angeles' --app outline-yourname
, change the time as your preference.
Limitation for free DB:
- Only 1 backup per day
- No point in time
- Only preserving the last 2 backups