什么是Outline Wiki知识库 Outline 是开源软件,软件由Node 编写、数据库为Postgres 9.x +、可以使用Redis 作为缓存、部分存储使用S3 兼容的对象存储协议。 允许用户随意改动和进行私有化部署,所有数据由用户自己掌控。
我个人日常在公司里呢又是一个喜欢使用Confluence软件的用户,这种开放式的wiki知识库要比平常我们所使用的World、Exel要更加的直观。当然今天我们并不考虑将Confluence搭建到自己的轻量服务器上,毕竟这个软件实在是太吃服务器性能了。
服务器环境搭建 这里我使用的是Centos7操作系统,也是接着上一次我们按照Filerun
的服务器基础上继续来配置我们的Outline
私人Wiki知识库
在开始之前大家一定要将对应的关键软件:
这里需要提醒大家的是,整个部署会非常的麻烦,我也是参考了我的好朋友所写的 【Outline】纯Docker部署指南 来实现部署的,之前我使用了Outline官网的Docker部署脚本,但是遇到了一些难以解决的问题,例如:
minio服务的传参出现了问题,无法被拉起来 docker.env中的一部分参数填写错误导致对应的服务出现异常问题 这里我们就不过多的讨论了,我们直接进入主题
第一步 部署 postgres 12 1 2 3 4 5 6 7 8 docker run -d \ --name postgres_12 \ --restart=always \ -e POSTGRES_PASSWORD=mysecretpassword \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v postgres_12:/var/lib/postgresql/data \ -p 5432:5432 \ postgres:12.10
创建用户和数据库
1 2 3 4 5 6 7 8 9 10 11 12 docker exec -it --user postgres postgres_12 psql -U postgres CREATE USER outline WITH PASSWORD '123456' ; CREATE DATABASE outline OWNER outline; CREATE DATABASE outline_test OWNER outline; \q
第二步 部署 Redis 1 2 3 4 5 docker run -d \ --name redis_6 \ --restart=always \ -p 6379:6379 \ redis:6.2.7
第三步 部署 minio,用来代替 AWS S3 这里参考苏洋大佬的脚本docker-compose.minio.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 docker run -d \ --name minio \ --restart=always \ -p 9000:9000 \ -p 9001:9001 \ -e MINIO_ROOT_USER="ad7df79980f863d7" \ -e MINIO_ROOT_PASSWORD="27f4308fff7fba719ed98f51dc8beab6751dbbc20ba286e0637e1415ce5d35f9" \ -e MINIO_REGION_NAME="cn-homelab-1" \ -e MINIO_BROWSER="on" \ -e MINIO_SERVER_URL="http://localhost:9000/" \ -e MINIO_BROWSER_REDIRECT_URL="http://localhost:9001/" \ --volume minio:/data \ minio/minio:RELEASE.2021-09-03T03-56-13Z server /data --console-address ":9001"
MINIO_ROOT_USER
使用小写字母加数字长度为16位的随机数 这里你可以使用openssl rand -hex 8
命令在你的终端里面生成一个随机数
MINIO_ROOT_PASSWORD
使用小写字母加数字长度为64位的随机数 这里你可以使用openssl rand -hex 32
命令在你的终端里面生成一个随机数
MINIO_SERVER_URL
是API地址,反向代理请务必开启 proxy_pass,否则会无法连接,导致附件及图片无法上传
MINIO_BROWSER_REDIRECT_URL
是本机的 URL 地址,即反代后的地址比如 https://file-admin.lab.com/
,如果目前不考虑反代的话就填写你的真实IP地址即可
这里需要注意的是如果使用了``需要在代理高级设置中添加一下的代码,否则反代会工作不正常
1 2 3 4 5 6 7 location / { proxy_pass http://localhost:9000; proxy_set_header Host $http_host ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_set_header X-Scheme $scheme ; proxy_set_header X-Script-Name /; }
当你运行完成后你应该可以访问到一个网页:http://localhost:9001
在登录界面输入正确的用户和密码后进入到控制台,并点击Buckets
,创建一个outline
,否则之后会遇到无法上传图片。也导不出文件
第四步 搭建 OIDC 服务器(sso-server),用于代替 slack 或 google 登录 sso-server项目地址
1 2 3 4 5 6 7 8 docker run -d \ --name=sso-server \ -e CLIENT_NAME="My SSO Service" \ -e CLIENT_ID="bf14cbab-6fc3-432c-9f92-857b1593a3ad" \ -e CLIENT_SECRET="60b211a3-6a1f-484a-8fc3-6b0319444600" \ -e USER_PASS="password" \ -p 3000:80 \ soulteary/sso-server:1.1.5
完成启动后我们可以访问http://localhost:3000/login
ID是CLIENT_ID
,密码是USER_PASS
字段所设置的
第五步 拉取一下outline 1 docker pull outlinewiki/outline:0.63.0
第六步 编辑一个 .env 的本地文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 SECRET_KEY=6697a4fc3c47d879f42d73e4ed00cda076c79e845257acfab8661b2241532ea7 UTILS_SECRET=9fb6973a0e562ca592999436c2f5ed4326a81e2fdff8c996b27cb58b5abff79a DATABASE_URL=postgres://outline:123456@postgres_12:5432/outline DATABASE_URL_TEST=postgres://outline:123456@postgres_12:5432/outline_test DATABASE_CONNECTION_POOL_MIN= DATABASE_CONNECTION_POOL_MAX= PGSSLMODE=disable REDIS_URL=redis://redis_6:6379 URL=http://192.168.100.155:13090 PORT=3000 COLLABORATION_URL= AWS_ACCESS_KEY_ID=6m2lx2ffmbr9ikod AWS_SECRET_ACCESS_KEY=2k78fpraq7rs5xlrti5p6cvb767a691h3jqi47ihbu75cx23twkzpok86sf1aw1e AWS_REGION=cn-homelab-1 AWS_S3_ACCELERATE_URL= AWS_S3_UPLOAD_BUCKET_URL=http://192.168.100.155:9000 AWS_S3_UPLOAD_BUCKET_NAME=outline AWS_S3_UPLOAD_MAX_SIZE=26214400 AWS_S3_FORCE_PATH_STYLE=true AWS_S3_ACL=private SLACK_KEY= SLACK_SECRET= GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= AZURE_CLIENT_ID= AZURE_CLIENT_SECRET= AZURE_RESOURCE_APP_ID= OIDC_CLIENT_ID=b8c40013-cc03-4bc5-b3a5-6a31046fa415 OIDC_CLIENT_SECRET=26272010-37d9-4bea-a58e-6b0a382d7626 OIDC_AUTH_URI=http://192.168.100.155:3000/dialog/authorize OIDC_TOKEN_URI=http://192.168.100.155:3000/oauth/token OIDC_USERINFO_URI=http://192.168.100.155:3000/api/outline/oidc OIDC_USERNAME_CLAIM=preferred_username OIDC_DISPLAY_NAME=SZC_SSO OIDC_SCOPES=openid profile email SSL_KEY= SSL_CERT= CDN_URL= FORCE_HTTPS=false ENABLE_UPDATES=false WEB_CONCURRENCY=1 MAXIMUM_IMPORT_SIZE=5120000 DEBUG=http ALLOWED_DOMAINS= SLACK_VERIFICATION_TOKEN=your_token SLACK_APP_ID=A0XXXXXXX SLACK_MESSAGE_ACTIONS=true GOOGLE_ANALYTICS_ID= SENTRY_DSN= SMTP_HOST= SMTP_PORT= SMTP_USERNAME= SMTP_PASSWORD= SMTP_FROM_EMAIL= SMTP_REPLY_EMAIL= SMTP_TLS_CIPHERS= SMTP_SECURE=true DEFAULT_LANGUAGE=zh_CN
第七步 运行前需要先迁移数据库 1 2 3 4 5 6 docker run --rm \ --env-file=.env \ --link postgres_12 \ --link redis_6 \ outlinewiki/outline:0.63.0 \ yarn db:migrate --env production-ssl-disabled
第八步 运行outline 1 2 3 4 5 6 7 8 docker run -d \ --restart=always \ --name=outline \ --env-file=.env \ --link postgres_12 \ --link redis_6 \ -p 13090:3000 \ outlinewiki/outline:0.63.0
到这里我们就可以通过http://localhost:13090
来访问我们的outline了
服务名称 服务端口 postgres 12 -p 5432:5432 Redis -p 6379:6379 minio -p 9000:9000 -p 9001:9001 OIDC -p 3000:80 outline -p 13090:3000
参考文章