Sleepstars 的记录室

Sleepstars 的记录室

Docker 部署 Alist 搭配 Casdoor 支持飞书(Lark)单点登录+自动注册

2024-09-01
https://alist.nn.ci/zh/https://casdoor.org/

本次部署会用到的软件或环境

  • Docker Compose

  • Alist

  • Casdoor

  • PostgreSQL

一、前言

本次部署全程使用 Docker,抹平各个系统之间的差异,可以快速部署,降低部署精力。如果你希望裸机部署说明你是配环境高手,本篇博文参考即可。

OAuth2 可以参看 DigitalOcean 的这篇博文,其他的别问我,我也不懂)

在 Alist v3.22.1 后就添加了单点登录自动注册,刚刚好满足了我所有的需求,本次也跟据 Alist 和 Casdoor 官方文档部署飞书的单点登录。

二、Alist 安装

services:
    alist:
        image: 'xhofe/alist:latest'
        container_name: alist
        volumes:
            - '/etc/alist:/opt/alist/data'
            - '/容器内路径:/宿主机路径'
        ports:
            - '5244:5244'
        environment:
            - PUID=0
            - PGID=0
            - UMASK=022
        restart: unless-stopped

先进入 /opt/alist,新建 docker-compose.yml,将上文配置填入,docker compose up -d

Port 5244 可以自己随意更改。

三、Postgres 安装

懒得写了,相信聪明的你肯定是会的吧~

点击图片跳转到官方镜像

DockerHub Postgres镜像

假设你已经安装好了数据库,且配置如下:

  • 数据库名为:casdoor

  • 用户名:user

  • 密码:password

  • 端口:5432

  • 连接地址:127.0.0.1

四、Casdoor 安装

请参考官网教程:

https://casdoor.org/zh/docs/basic/try-with-docker

docker compose 参考文件:

services:
  casdoor:
    restart: always
    build:
      context: ./
      dockerfile: Dockerfile
      target: STANDARD
    entrypoint: /bin/sh -c './server --createDatabase=true'
    ports:
      - "8000:8000"
    environment:
      RUNNING_IN_DOCKER: "true"
    volumes:
      - ./conf:/conf/

在 ./conf 文件夹中,新建 app.conf

appname = casdoor
httpport = 8000
runmode = dev
copyrequestbody = true
driverName = postgres
dataSourceName = "user=user password=password host=127.0.0.1 port=5432 sslmode=disable dbname=casdoor"
dbName = casdoor
tableNamePrefix =
showSql = false
redisEndpoint =
defaultStorageProvider =
isCloudIntranet = false
authState = "casdoor"
socks5Proxy = "127.0.0.1:10808"
verificationCodeTimeout = 10
initScore = 0
logPostOnly = true
isUsernameLowered = false
origin =
originFrontend =
staticBaseUrl = "https://cdn.casbin.org"
isDemoMode = false
batchSize = 100
enableErrorMask = false
enableGzip = true
ldapServerPort = 389
radiusServerPort = 1812
radiusSecret = "secret"
quota = {"organization": -1, "user": -1, "application": -1, "provider": -1}
logConfig = {"filename": "logs/casdoor.log", "maxdays":99999, "perm":"0770"}
initDataFile = "./init_data.json"
frontendBaseDir = "../casdoor"

请注意数据库部分请根据自己实际填写

driverName = postgres
dataSourceName = "user=user password=password host=127.0.0.1 port=5432 sslmode=disable dbname=casdoor"
dbName = casdoor

五、飞书(Lark)配置

前往飞书开放平台:https://open.feishu.cn/app,新建一个应用

添加如下所示的两个权限:

点击上方黄色方框中的“创建版本”

根据提示创建版本,如果你不是企业管理员,请找管理员给你添加

六、Casdoor 配置

登录并进入 Casdoor

默认账号密码应该是 admin 123

1. 新建组织

请勿直接使用默认组织(app-built-in),因为这个组织内的用户都是全局管理员帐号

新建组织1

根据需要进行命名,这里我们叫做alist-org

重命名组织

2. 新建证书

操作类似的,但是组织注意选择我们之前创建的

3. 新建应用

与之类似的

注意选择刚刚新建的组织和证书

注意重定向 URLs 需要多添加一行空行的,具体地址请修改为 Alist 的地址,尾部记得添加 /callback。

4. 添加提供商

添加一个提供商,选择飞书

接着加入 Lark

回到飞书开放平台,找到客户端 ID 和客户端密钥并填入 Casdoor 中

再回到 Casdoor 的应用中,启用飞书提供商。

七、Alist 配置

进入 Alist 管理界面,找到单点登录

1 选择 Casdoor

2 3 4 5 都在 Casdoor 中新建的应用中寻找

找到刚刚新建的应用

按红圈标识填入

8 在证书中找到

找到公钥,全部复制进去

7 则是 Casdoor 的访问地址

打开 9 则会在单点登录时自动注册新用户

至此已经全部完成!

八、Alist 实际体验

点击此处即可体验!