Outline v Dockeru s ověřením Synology SSO
Instalace Outline knowlge base (self-hosted) na Synology DSM 7.2 s použitím lokálního Synology SSO serveru. Jedná se o náhradu přihlášení přes Slack, která je jediná dostupná u self-hosted varianty.
TO-DO
- Outline v Dockeru (pomocí nativního Container manageru)
- Přístup k datovým a databázovým souborům přímo z File Station
- Přístup z internetu skrze DDNS
- Náhrada Slack API za lokální Synology SSO server
- Outline a SSO na vlastní doméně
- Náhrada lokálních příloh, napojení na Synology C2 storage 1
Konfigurace Synology SSO
- Nainstaluj balíček Synology SSO (Nikoliv “Synology OAuth Service”)
- Otevři balíček “Server SSO” a v Obecných nastavní nastav URL serveru a v Nastavení příhlášení Přizpůsobenou doménu.
V záložce služba povolit Server OIDC, zkopírum Well-known URL a otevři ji v nové záložce
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
{ "authorization_endpoint": "https://sso.xxx.dscloud.me/webman/sso/SSOOauth.cgi", "claims_supported": [ "aud", "email", "exp", "groups", "iat", "iss", "sub", "username" ], "code_challenge_methods_supported": [ "S256", "plain" ], "grant_types_supported": [ "authorization_code", "implicit" ], "id_token_signing_alg_values_supported": [ "RS256" ], "issuer": "https://sso.xxx.dscloud.me/webman/sso", "jwks_uri": "https://sso.xxx.dscloud.me/webman/sso/openid-jwks.json", "response_types_supported": [ "code", "code id_token", "id_token", "id_token token" ], "scopes_supported": [ "email", "groups", "openid" ], "subject_types_supported": [ "public" ], "token_endpoint": "https://sso.xxx.dscloud.me/webman/sso/SSOAccessToken.cgi", "token_endpoint_auth_methods_supported": [ "client_secret_basic", "client_secret_post" ], "userinfo_endpoint": "https://sso.xxx.dscloud.me/webman/sso/SSOUserInfo.cgi" }
Zkopíruj endpointy do odpovídajících parametrů v Outline configu
.env
nebo přímo dodocker-compose.yaml
authorization_endpoint
→OIDC_AUTH_URI
token_endpoint
→OIDC_TOKEN_URI
userinfo_endpoint
→OIDC_USERINFO_URI
V Server SSO vyber z levého bočního menu Aplikace a přidej novou apliakaci
Vyplň jméno aplikace a její URL adresu (lze později změnit)
Název aplikace: třeba “Outline“ (je to jen pro přehlednost)
Přesměrovat URI:
https://docs.tvojedoména.xx/auth/oidc.callback
Jedná se o hlavní doménu Outline apliace s/auth/oidc.callback
na konci.
Pokud používáš reverzní proxy, tak použij veřejnou URL
Otevři tuto nově vytvořenou “Outline” aplikaci
Zkopíruj ID a Tajný klíč apliace do tvé Outline konfigurace
.env
nebodocker-compose.yaml
ID aplikace →
OIDC_CLIENT_ID
Tajný klíč aplikace →
OIDC_CLIENT_SECRET
Změň nebo přidej hodnotu
OIDC_USERNAME_CLAIM=username
(default jepreferred_username
, která není SSO serverem podporovaná)
Je nutné se ujistit, že všechny adresy jsou takové, jaké se zobrazují v prohlížeči, zejména URI přesměrování. Pokud chcete více adres (třeba HTTP i HTTPS), tak je můžete následně přidat.
A to by mělo být ohledně SSO vše!
Instalace Outline (Docker)
Skrze File Station ve složce
docker
vytvoř složkuoutline
a v ní další 2 pod-složkypostgres-data
(Databáze)storage-data
(Přílohy)
U složky
storage-data
:Vlastnosti - Oprávnění - Pokročilé funkce - “Změnit zděděná oprávnění na výslovná“
Následně uprav uživatele “Everyone“ a přijdej mu oprávnění k zápisu
Zaklikni použít pro tuto složku i podsložky a dej uložit
Do složky
outline
nahraj svůj nakonfigurovanýdocker-compose.yaml
V balíčku Container manager vytvoř projekt:
Název projektu
outline
(musí být malým písmem)Cesta:
docker
-outline
Použit existující docker-compose.yaml
Pokud je zakliklý Webový portál, tak vypnout
Jedná se o 3 kontejnery (app, redis, postgres), celé to startuje v závislosti na výkonu cca 5 minut
Konfigurace
Hodnoty SECRET_KEY
a UTILS_SECRET
lze vygenrovat v terminálu pomocí příkazu
1
openssl rand -hex 32
Já jsem nepoužil konfigurační
.env
, ale všechno na pevno definoval vdocker-compose.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
version: "3.7"
services:
outline:
image: outlinewiki/outline:latest
ports:
- "3002:3000"
depends_on:
- postgres
- redis
volumes:
- /volume1/docker/outline/storage-data:/var/lib/outline/data
environment:
NODE_ENV: production
SECRET_KEY: ###SMAZÁNO###
UTILS_SECRET: ###SMAZÁNO###
# HTTP
URL: https://docs.xxx.dscloud.me
PORT: 3000
FORCE_HTTPS: false
WEB_CONCURRENCY: 1
# Rate limiter
RATE_LIMITER_ENABLED: true
RATE_LIMITER_DURATION_WINDOW: 60
RATE_LIMITER_REQUESTS: 600
# Authentication
OIDC_CLIENT_ID: ###SMAZÁNO###
OIDC_CLIENT_SECRET: ###SMAZÁNO###
OIDC_AUTH_URI: https://sso.xxx.dscloud.me/webman/sso/SSOOauth.cgi
OIDC_TOKEN_URI: https://sso.xxx.dscloud.me/webman/sso/SSOAccessToken.cgi
OIDC_USERINFO_URI: https://sso.xxx.dscloud.me/webman/sso/SSOUserInfo.cgi
OIDC_USERNAME_CLAIM: username
OIDC_SCOPES: openid groups email
# Storage
FILE_STORAGE: local
FILE_STORAGE_LOCAL_ROOT_DIR: /var/lib/outline/data
FILE_STORAGE_UPLOAD_MAX_SIZE: 26214400
# Database
DATABASE_URL: postgres://outline:SMAZÁNO@postgres:5432/outline
PGSSLMODE: disable
# Redis
REDIS_URL: redis://redis:6379
# Other
LOG_LEVEL: info
ENABLE_UPDATES: true
DEFAULT_LANGUAGE: cs_CZ
redis:
image: redis:7
expose:
- 6379
command: redis-server
postgres:
image: postgres:16
expose:
- 5432
environment:
POSTGRES_USER: outline
POSTGRES_PASSWORD: ###SMAZÁNO###
POSTGRES_DB: outline
volumes:
- /volume1/docker/outline/postgres-data:/var/lib/postgresql/data
Reverzní Proxy
Ovládací panel - Přihlašovací portál - Reverzní server proxy
Vytořit - Název: Outline (jen pro přehlednost)
Zdroj
Protokol: HTTPS
Název hostitele: vaše veřejná URL nebo DDNS adresa (bez https://)
Port: 443
HSTS: zatím ne
Cíl
Protokol: HTTP
Název hostitele: localhost
Port: 3002
Záložka - Vlastní záhlaví - Vytvořit - WebSocket
Následně by tě po zadání veřejné URL nebo DDNS adresy měl čekat SSO login portál.