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 - .envnebo přímo do- docker-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.callbackna 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 - .envnebo- docker-compose.yaml- ID aplikace → - OIDC_CLIENT_ID
- Tajný klíč aplikace → - OIDC_CLIENT_SECRET
 
- Změň nebo přidej hodnotu - OIDC_USERNAME_CLAIM=username(default je- preferred_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 - dockervytvoř složku- outlinea v ní další 2 pod-složky- postgres-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 - outlinenahraj 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.




