部署outline知识库服务器

docker4周前更新 djd221
61 0 0

title: 部署outline知识库服务器
id: d533d573-63b9-4221-883a-6c0fed376dd9
date: 2025-08-21 08:39:58
auther: djd221
cover: https://chevereto.lovemascot.cn/i/2025/08/21/68a66bdf2fd38.jpg
excerpt: 部署outline知识库服务器 准备docker环境(部署服务器底层系统使用centos7) 准备docker镜像。 安装 redis docker run -d –name redis –restart=alwa
permalink: /archives/4e737fed-9e38-4640-8468-841e2bdb985e
categories:

  • default
  • du-shu-bi-ji
  • docker
    tags:
  • zhi-shi-ku
  • docker

部署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

© 版权声明

相关文章

暂无评论

none
暂无评论...