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知识库服务器
- 准备docker环境(部署服务器底层系统使用centos7)
- 准备docker镜像。
- 安装
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进入设置界面填写用户名密码。
新建一个名为 outline的Buckets,填个名称就行,其他的都默认。
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
Root URL: http://xxxx.example.com:3000/
Home URL: http://xxxx.example.com:3000/
Valid redirect URIs: http://xxxx.example.com:3000/* # 全部按照格式填写 *也要写 不然报错进不去
- 这个是下面要用到的
OIDC_CLIENT_SECRET值接着创建一个用来登录的用户,后面就是跳转到keycloak然后用这个用户登录进去
#下面是禁用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的步骤,如果想外网访问可以搭建专用网络访问,使用单纯的内网穿透是不行的,单独穿透一个端口无法访问。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...
