侧边栏壁纸
博主头像
痕迹 博主等级

行动起来,活在当下

  • 累计撰写 35 篇文章
  • 累计创建 9 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

部署outline知识库服务器

阿杜
2025-08-21 / 0 评论 / 0 点赞 / 6 阅读 / 0 字

部署outline知识库服务器

  1. 准备docker环境(部署服务器底层系统使用centos7)

image-20250820074334196

  1. 准备docker镜像。

image-20250820075328995

  1. 安装

redis

docker run -d \
    --name redis \
    --restart=always \
    -p 6379:6379 \
    -v ~/docker-data/redis-data:/data \
    redis:7.4.2-alpine \
    redis-server --save 60 1 --loglevel warning --requirepass xxxxxx      # xxxxxx为redis的密码

Postgres

docker run -d \
	--name postgres \
  --restart=always \
	-e POSTGRES_PASSWORD=xxxxxx \             # xxxxxx为postgres的密码
	-e POSTGRES_USER=outline \                # outline为postgres的用户名(可以变更与outline容器中保持一致)
	-v ~/docker-data/postgres-data:/var/lib/postgresql/data \
	-p 5432:5432 \
	postgres:15

minio

docker run -d \
    --name minio \
    --restart=always \
    -p 9000:9000 \
    -p 9001:9001 \
    -e MINIO_REGION_NAME="cn-homelab-1" \         # cn-homelab-1 这个名字自定义outline会用到,设置minio是会自动出现
    -e MINIO_ROOT_USER="outline" \                # outline为minio的用户名(可以变更后期登陆minio使用)
    -e MINIO_ROOT_PASSWORD="xxxxxx" \             # xxxxxx为minio的密码
    -v ~/docker-data/minio-data:/data \
    minio/minio:RELEASE.2025-03-12T18-04-18Z server /data --console-address ":9001"    # 9001是outline中使用与设置minio的9000不一样

使用ip:9001进入设置界面填写用户名密码。

img

新建一个名为 outline的Buckets,填个名称就行,其他的都默认。

img

server location 中是自动出现的不用管(这个值是后面的 AWS_REGION的值),comment必须填写不然会报错(随便填个数字即可),点击保存后重启。这样minio设置就完了。

keycloak

docker run -d \
    --name keycloak \
    --restart=always \
    -p 8080:8080 \
    -e KC_DB=postgres \
    -e KC_DB_URL=jdbc:postgresql://ip:5432/postgres \           # 文中出现的ip全部为服务器本机ip、5432为端口号、postgres为数据库名称
    -e KC_DB_USERNAME=outline \                                 # outline为keycloak的数据库用户名
    -e KC_DB_PASSWORD=xxxxxx \                                  # xxxxxx为keycloak的数据库密码
    -e KC_BOOTSTRAP_ADMIN_USERNAME=keycloak \                    # keycloak为keycloak的登陆用户名
    -e KC_BOOTSTRAP_ADMIN_PASSWORD=xxxxxx \                      # xxxxxx为keycloak的登陆密码
    keycloak/keycloak:26.1.4 start-dev

通过ip:8080 进入设置,然后开始创建realm,名称填 outline

img

img

img

img

image-20250821082742708

Root URL: http://xxxx.example.com:3000/
Home URL: http://xxxx.example.com:3000/
Valid redirect URIs: http://xxxx.example.com:3000/*             # 全部按照格式填写 *也要写 不然报错进不去

img

  • 这个是下面要用到的 OIDC_CLIENT_SECRET

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

    img

image-20250821083300275

  #下面是禁用outline的ssl
docker exec -it keycloak bash
/opt/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080 --realm master --user 用户名   #这个用户名是keycload
然后输入设置的密码,再执行下面这行
/opt/keycloak/bin/kcadm.sh update realms/outline  -s sslRequired=NONE

部署outline(里面替换的全部替换完成)

docker run -d \
    -p 3000:3000 \
    --name outline \
    --restart=always \
    -v ~/docker-data/outline-data:/var/lib/outline/data \
    -e DATABASE_URL=postgres://outline:xxxxxx@ip:5432/postgres \
    -e REDIS_URL=redis://:xxxxxx@ip:6379/0 \
    -e PGSSLMODE=disable \
    -e FORCE_HTTPS=false \
    -e SECRET_KEY= \                                  # 使用openssl rand   -hex  32  生成
    -e UTILS_SECRET= \                               # 使用openssl rand   -hex  32  生成
    -e URL=http://ip:3000 \
    -e OIDC_CLIENT_ID=outline \
    -e OIDC_CLIENT_SECRET=xxxxxxxxxxxx \              #设置keycloak时需要拷贝,Credentials选项卡的Client Secret内容
    -e OIDC_AUTH_URI=http://ip:8080/realms/outline/protocol/openid-connect/auth \               #8080端口看个人设置与自己的相同
    -e OIDC_TOKEN_URI=http://ip:8080/realms/outline/protocol/openid-connect/token \             #与上相同
    -e OIDC_USERINFO_URI=http://ip:8080/realms/outline/protocol/openid-connect/userinfo \        #与上相同
    -e OIDC_USERNAME_CLAIM=preferred_username \
    -e OIDC_DISPLAY_NAME=keycloak \
    -e AWS_ACCESS_KEY_ID=outline \
    -e AWS_SECRET_ACCESS_KEY=xxxxxx \
    -e AWS_S3_UPLOAD_BUCKET_URL=http://ip:9000 \
    -e AWS_S3_UPLOAD_BUCKET_NAME=outline \
    -e AWS_REGION=cn-homelab-1 \
    -e FILE_STORAGE_UPLOAD_MAX_SIZE=26214400 \
    -e AWS_S3_FORCE_PATH_STYLE=true \
    -e AWS_S3_ACL=private \
    outlinewiki/outline:0.82.0
DATABASE_URL: 指定postgre数据库的连接信息
REDIS_URL:指定redis的连接信息
PGSSLMODE:不用ssl连接postgre数据库
FORCE_HTTPS:禁用强制https
SECRET_KEY:不知道有什么用,可以通过openssl rand -hex 32生成
UTILS_SECRET: 不知道有什么用,可以通过openssl rand -hex 32生成
URL:outline的访问地址,就是ip加上-p映射的端口
OIDC_CLIENT_ID: 这个是在keycloak里设置的Clients里的Client ID
OIDC_CLIENT_SECRET: 这个就算Credentials里的Client Secret
OIDC_AUTH_URI:这个链接的构成:http://keycloak的域名:keycloak的端口/realms/keycloak的realm/protocol/openid-connect/auth
OIDC_TOKEN_URI:跟上面一样
OIDC_USERINFO_URI:跟上面一样
OIDC_USERNAME_CLAIM:不知道有什么用,照抄吧
OIDC_DISPLAY_NAME:没什么用
AWS_ACCESS_KEY_ID:minio用户名
AWS_SECRET_ACCESS_KEY:minio密码
AWS_S3_UPLOAD_BUCKET_URL:minio连接地址,端口是9000,不是9001(这个是web界面的地址)
AWS_S3_UPLOAD_BUCKET_NAME:bucket的名称
AWS_REGION:region
FILE_STORAGE_UPLOAD_MAX_SIZE:设置上传的最大大小,这个数字是25M
AWS_S3_FORCE_PATH_STYLE:不知道什么用
AWS_S3_ACL:不知道什么用

以下是没有添加--restart=always 参数解决办法

创建一个新的 .service文件,例如 /etc/systemd/system/mydockercontainers.service

[Unit]
Description=Start multiple Docker containers on boot
After=docker.service
Requires=docker.service
 
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -c 'docker start mycontainer1; docker start mycontainer2; docker start mycontainer3'
 
[Install]
WantedBy=multi-user.target
sudo systemctl enable mydockercontainers.service
sudo systemctl start mydockercontainers.service

以上为内网部署outline的步骤,如果想外网访问可以搭建专用网络访问,使用单纯的内网穿透是不行的,单独穿透一个端口无法访问。

文章参考大神制作 https://www.cnblogs.com/kanadeblisst/p/18801543

0

评论区