Featured image of post 使用outline自建文档库

使用outline自建文档库

使用outline自建文档库,并配置gitea作为OIDC认证源

在去年的时候,就已经有了搭建一个私有的文档库的想法了。当时是采用gitlab作为OIDC认证源,但是gitlab实在是太吃资源了,内存不一会就被吃满了。后面又去调研了一些开源自建的OIDC认证源项目,无一例外这些项目都很复杂,从而这个想法就被搁置了。

最近,突然发现gitea作为gitlab的轻量级平替,其也提供了OIDC认证的功能,故直接一鼓作气将这些项目部署完毕了,顺便发篇博客证明还活着(

gitea部署与配置

首先部署的是gitea,因为它要为后面的outline提供身份认证功能。直接采用docker compose的方式来部署:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
services:
  server:
    image: docker.gitea.com/gitea:latest-rootless
    restart: always
    volumes:
      - ./data:/var/lib/gitea
      - ./config:/etc/gitea
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"
      - "2222:2222"

之后是对其进行一些配置,需要修改config/app.ini

我主要修改了下面的内容:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
[server]
; 关闭SSH服务,这个用的次数太少了
DISABLE_SSH = true

[service]
; 需要管理员手动激活账号
REGISTER_MANUAL_CONFIRM = true
REGISTER_EMAIL_CONFIRM = false

[openid]
; 禁用openid注册与登录
ENABLE_OPENID_SIGNIN = false
ENABLE_OPENID_SIGNUP = false

由此一来gitea就算部署完成了。

Outline部署与配置

这部分同样是采用docker compose来部署:

 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
services:
  outline:
    image: outlinewiki/outline:latest
    container_name: outline
    user: '1000:1000'
    env_file: ./outline.env
    ports:
      - "3015:3015"
    volumes:
      - ./outline:/var/lib/outline/data
    depends_on:
      - postgres
      - redis

  redis:
    image: redis
    container_name: redis
    env_file: ./outline.env
    expose:
      - "6379"
    # volumes:
    #   - ./redis.conf:/redis.conf
    # command: ["redis-server", "/redis.conf"]
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 30s
      retries: 3

  postgres:
    image: postgres:18
    container_name: postgres
    env_file: ./outline.env
    user: '1000:1000'
    expose:
      - "5432"
    volumes:
      - ./postgresql:/var/lib/postgresql/18/docker
    healthcheck:
      test: ["CMD", "pg_isready", "-d", "outline", "-U", "user"]
      interval: 30s
      timeout: 20s
      retries: 3
    environment:
      POSTGRES_USER: 'user'
      POSTGRES_PASSWORD: 'password'
      POSTGRES_DB: 'outline'

主要是它的配置文件需要修改

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# 修改端口号
PORT=3015

# gitea的OIDC配置
OIDC_CLIENT_ID=123
OIDC_CLIENT_SECRET=123
OIDC_AUTH_URI=https://your.domain/login/oauth/authorize
OIDC_TOKEN_URI=https://your.domain/login/oauth/access_token
OIDC_USERINFO_URI=https://your.domain/login/oauth/userinfo
OIDC_USERNAME_CLAIM=preferred_username
OIDC_DISPLAY_NAME=Gitea
OIDC_SCOPES=openid profile email

这样就算配置完毕了。