marlon 6c4fb2c70b
All checks were successful
continuous-integration/drone/tag Build is passing
continuous-integration/drone/push Build is passing
chore: publish 2.9.1+0.82.0 release
2025-06-07 15:07:39 -04:00
2025-01-08 10:09:13 -08:00
2021-10-28 18:33:56 +00:00
2024-10-24 14:50:21 +02:00
2023-12-14 12:29:37 +01:00
2024-10-24 14:50:21 +02:00
2023-06-20 12:58:15 +02:00
2023-12-17 15:51:28 +01:00
2024-10-24 14:50:21 +02:00
2025-06-07 13:51:39 -04:00

Outline

Wiki and knowledge base for growing teams

  • Category: Apps
  • Status: 3, beta
  • Image: outlinewiki/outline, 4, upstream
  • Healthcheck: No
  • Backups: Yes
  • Email: Yes
  • Tests: 2
  • SSO: 3 (OAuth)

Basic usage

  1. Set up Docker Swarm and abra
  2. Deploy coop-cloud/traefik
  3. abra app new ${REPO_NAME}
    • WARNING: Choose "n" when abra asks if you'd like to generate secrets
  4. abra app config YOURAPPNAME - be sure to change $DOMAIN to something that resolves to your Docker swarm box
  5. Insert secrets:
    • abra app secret insert YOURAPPNAME secret_key v1 $(openssl rand -hex 32) #12
    • abra app secret generate -a YOURAPPNAME
  6. abra app deploy YOURAPPNAME
  7. Open the configured domain in your browser to finish set-up

Tips & Tricks

Create an initial admin user

abra app cmd YOURAPPNAME app create_email_user test@example.com

Setting up your .env config

Avoid the use of quotes ("...") as much as possible, the NodeJS scripts flip out for some reason on some vars.

Deleting a user (e.g. to fix SSO weirdness)

abra app cmd YOURAPPNAME db delete_user <username-to-delete> <username-to-replace>

Where <username-to-delete> is the username of the user to be removed, and <username-to-replace> is the username of another user, to assign documents and revisions to (instead of deleting them).

Migrate from S3 to local storage

  • abra app config <domain>, add
    • COMPOSE_FILE="$COMPOSE_FILE:compose.local.yml"
    • FILE_STORAGE_UPLOAD_MAX_SIZE=26214400
  • abra app deploy <domain> -f
    • compose.aws.yml should still be deployed!
  • abra app undeploy <domain>
  • on the docker host, find mountpoint of newly created volume via docker volume ls and docker volume inspect
    • volume name is smth like <domain>_storage-data
  • take note which linux user owns <storage_mountpoint> (likely 1001)
  • use s3cmd/rclone/... to sync your bucket to <storage_mountpoint>
  • chown -R <storage_user>:<storage_user> <storage_mountpoint>
  • abra app config <domain>, switch storage backend
    • remove AWS_* vars, SECRET_AWS_SECRET_KEY_VERSION and COMPOSE_FILE="$COMPOSE_FILE:compose.aws.yml"
    • set FILE_STORAGE=local
  • abra app deploy <domain> -f
  • enjoy getting rid of S3 🥳

Single Sign On with Keycloak/Authentik

  • Create an OIDC client in Keycloak (in Authentik this is called a provider and application)
  • Run abra app config YOURAPPNAME, then uncomment everything in the OIDC_ section.
    • Valid Redirect URIs: https://YOURAPPDOMAIN/auth/oidc.callback
    • Reference the client/provider info to populate the _AUTH_URI _TOKEN_URI and _USERINFO_URI values
  • Set the OIDC secret using the value from the client/provider abra app secret insert YOURAPPNAME oidc_client_secret v1 SECRETVALUE
  • abra app deploy YOURAPPDOMAIN
Description
Wiki and knowledge base for growing teams
https://github.com/outline/outline Readme 312 KiB
Languages
Shell 78.8%
Roff 21.2%