qidao123.com技术社区-IT企服评测·应用市场

标题: 搭建开源笔记平台:outline [打印本页]

作者: 千千梦丶琪    时间: 2025-3-31 08:12
标题: 搭建开源笔记平台:outline
折腾的意义

为什么要本身搭建一个笔记平台?没理由,就是突然想试试。有时间突然有个想法,搜了一下正好有符合的方案,就顺手试一下。

其实已经有很多成熟的笔记软件,例如Notion/OneNote,但谁不想要一个数据完全在本身服务器的笔记呢。
开始搭建

这个搭建是真的贫苦,需要一堆东西:
这种依赖多镜像的平台一般推荐docker-compose来搭建,不过我照旧喜欢使用docker一个容器一个容器的启动。postgre和redis的容器其实可以复用,没须要每次都重新启动一个,使用docker-compose也可以通过环境变量传递。
docker可用源可以看:https://www.wangdu.site/course/2109.html,我现在用的是docker.mybacc.com,只需要在pull镜像的时间加上,然后重定名一下镜像就可以,源失效的太快,每次改源文件更贫苦。
另外因为证书的申请需要80/443端口,而我使用的是本地电脑没有公网的80和443端口,以是只能部署http的服务,测试会无法使用邮箱登录。
redis

docker pull docker.mybacc.com/redis:7.4.2-alpine
docker tag docker.mybacc.com/redis:7.4.2-alpine redis:7.4.2-alpine
docker rmi docker.mybacc.com/redis:7.4.2-alpine
  1. docker run -d \
  2.     --name redis \
  3.     -p 6379:6379 \
  4.     -v ~/docker-data/redis-data:/data \
  5.     redis:7.4.2-alpine \
  6.     redis-server --save 60 1 --loglevel warning --requirepass 密码
复制代码
postgresql

docker pull docker.mybacc.com/postgres:15.12
  1. docker run -d \
  2.         --name postgres \
  3.         -e POSTGRES_PASSWORD=密码 \
  4.         -e POSTGRES_USER=用户名 \
  5.         -v ~/docker-data/postgres-data:/var/lib/postgresql/data \
  6.         -p 5432:5432 \
  7.         postgres:15.12
复制代码
minio

https://github.com/minio/minio
这是个文件服务,在outline里做图床用的。直接复制图片到网页里就能上传到minio,不过删除好像需要到minio删除,这个后面研究。
docker pull minio/minio:RELEASE.2025-03-12T18-04-18Z
  1. docker run -d \
  2.     --name minio \
  3.     -p 29000:9000 \
  4.     -p 29001:9001 \
  5.     -e MINIO_REGION_NAME="cn-homelab-1" \
  6.     -e MINIO_ROOT_USER="minio用户名" \
  7.     -e MINIO_ROOT_PASSWORD="minio密码" \
  8.     -v ~/docker-data/minio-data:/data \
  9.     minio/minio:RELEASE.2025-03-12T18-04-18Z server /data --console-address ":9001"
复制代码
创建完成后新建一个名为outline的Buckets,填个名称就行,其他的都默认。

然后设置Region(如果启动的时间给定了MINIO_REGION_NAME环境变量,这里应该有值了),名称随意,保存之后会提示需要重启,点击重启就保存乐成了。这个值是后面的AWS_REGION的值

keycloak

https://github.com/keycloak/keycloak
这个是有什么用的就说来话长,反正在outline里就起个登录作用。
  1. docker run -d \
  2.     --name keycloak \
  3.     -p 8080:8080 \
  4.     -e KC_DB=postgres \
  5.     -e KC_DB_URL=jdbc:postgresql://ip:端口/数据库名称 \
  6.     -e KC_DB_USERNAME=数据库用户名 \
  7.     -e KC_DB_PASSWORD=数据库密码 \
  8.     -e KC_BOOTSTRAP_ADMIN_USERNAME=keycloak用户名 \
  9.     -e KC_BOOTSTRAP_ADMIN_PASSWORD=keycloak密码 \
  10.     keycloak/keycloak:26.1.4 start-dev
复制代码
启动的时间有个红色的提示,只是让你不要在生产环境下使用开发者模式(start-dev)。不过要是使用start启动的话会强制https,比较贫苦。当然你也可以使用steveltn/https-portal镜像来一键配置HTTPS,需要80和443端口才能申请证书.

刚启动的时间通过8080端口访问web界面会出现HTTPS required的提示,导致无法正常登录,可以通过进入到容器的shell,执行两个下令来忽略它
  1. docker exec -it keycloak bash
  2. /opt/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080 --realm master --user 用户名
  3. 然后输入设置的密码,再执行下面这行
  4. /opt/keycloak/bin/kcadm.sh update realms/master  -s sslRequired=NONE
复制代码
接着刷新页面就可以正常登录了,然后开始创建realm,名称填outline

接着再outline下创建Clients



第三步的值需要填你outline部署的地址,可以加端口,例如下面的
  1. Root URL: http://xxxx.example.com:3000/
  2. Home URL: http://xxxx.example.com:3000/
  3. Valid redirect URIs: http://xxxx.example.com:3000/*
复制代码
然后复制Credentials选项卡的Client Secret内容,这个是下面要用到的OIDC_CLIENT_SECRET值

接着创建一个用来登录的用户,后面就是跳转到keycloak然后用这个用户登录进去

然后设置这个用户的暗码,这个Temporary的选项可以关了,开启的话用户第一次登录需要修改暗码

这里还需要禁用outline下的ssl
  1. docker exec -it keycloak bash
  2. /opt/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080 --realm master --user 用户名
  3. 然后输入设置的密码,再执行下面这行
  4. /opt/keycloak/bin/kcadm.sh update realms/outline  -s sslRequired=NONE
复制代码
outline

现在万事俱备,只需要启动outline了
docker pull outlinewiki/outline:0.82.0
  1. docker run -d \
  2.     -p 3000:3000 \
  3.     --name outline \
  4.     -v ~/docker-data/outline-data:/var/lib/outline/data \
  5.     -e DATABASE_URL=postgres://用户名:密码@域名:端口/数据库名 \
  6.     -e REDIS_URL=redis://:密码@域名:端口/0 \
  7.     -e PGSSLMODE=disable \
  8.     -e FORCE_HTTPS=false \
  9.     -e SECRET_KEY=22a3dbd6fd96864cb125504826b153cf60a454e43a019afe4692e06f6cacd700 \
  10.     -e UTILS_SECRET=11121c684ca0dc0352bf7567db9aaf9bc26c45fc34cacd5dbe883c086d7c7e00 \
  11.     -e URL=http://域名:3000 \
  12.     -e OIDC_CLIENT_ID=outline \
  13.     -e OIDC_CLIENT_SECRET=xxxxxxxxxxxxxxx \
  14.     -e OIDC_AUTH_URI=http://域名:端口/realms/outline/protocol/openid-connect/auth \
  15.     -e OIDC_TOKEN_URI=http://域名:端口/realms/outline/protocol/openid-connect/token \
  16.     -e OIDC_USERINFO_URI=http://域名:端口/realms/outline/protocol/openid-connect/userinfo \
  17.     -e OIDC_USERNAME_CLAIM=preferred_username \
  18.     -e OIDC_DISPLAY_NAME=keycloak \
  19.     -e OIDC_SCOPES="openid profile email" \
  20.     -e AWS_ACCESS_KEY_ID=minio用户名 \
  21.     -e AWS_SECRET_ACCESS_KEY=minio密码 \
  22.     -e AWS_S3_UPLOAD_BUCKET_URL=http://域名:端口 \
  23.     -e AWS_S3_UPLOAD_BUCKET_NAME=outline \
  24.     -e AWS_REGION=cn-homelab-1 \
  25.     -e FILE_STORAGE_UPLOAD_MAX_SIZE=26214400 \
  26.     -e AWS_S3_FORCE_PATH_STYLE=true \
  27.     -e AWS_S3_ACL=private \
  28.     outlinewiki/outline:0.82.0
复制代码
环境变量的解释可以看:https://github.com/outline/outline/blob/main/.env.sample
接着访问outline的端口就能跳转到keycloak的界面,输入之前创建的用户名暗码就登陆乐成了,复制图片到网页也能正常上传。等我体验一下再说怎么样
从这里就能看出docker-compose的优点了。
参考链接

本文由博客一文多发平台 OpenWrite 发布!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4