在去年的时候,就已经有了搭建一个私有的文档库的想法了。当时是采用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
|
这样就算配置完毕了。