一直想搭建自己的Wiki,因为觉得在自己手里的数据才是最好的,用商业组件服务器在别人这,一个是不安全,另一个是不保险,再者,有自己的专属服务也是一件酷酷的事情,不是吗?
曾经的尝试
之前尝试过安装过挺多的方案,基本上的方案我都部署并稍微试用了一下,包括但不限于以下几种,我附上了地址和对应的软件界面
Wiki.js
官网地址:https://js.wiki/
使用界面:
MediaWiki
官网地址:https://www.mediawiki.org/wiki/MediaWiki
使用界面:
为知笔记
官网地址:https://www.wiz.cn/
使用界面:
Shawdoc
官网地址:https://www.showdoc.com.cn/
使用界面:
Docsify
官网地址:https://docsify.js.org/
使用界面:
Google Outline
官网地址:https://www.getoutline.com/
使用界面:
除此之外,其实还部署过尝试过很多其他的,有些可能记不上名字来了。
最终的选择
试过了很多同类型的产品,最终还是选择了Google的Outline,不得不说,实在是太强大了,我列举几个特点吧:
- 对Markdown格式兼容特别好UI美观
- 支持权限控制和团队协作,虽然就我一个人写。。。。
- 支持导入导出
- 免费,可以自己搭建
- 支持邮件通知
- 支持外链分享
- 支持自定义页面模板,新建页面可以基于模板创建页面
- 支持历史版本,可以查看文档创建到现在所有的历史版本
- 支持文档中包含公式,代码块,图表,文件附件
- 原生支持很多服务以链接的形式嵌入。可以直接渲染出来,比如draw.io的图表,Youtube视频,Google Docs等等
这个是我差不多翻遍了互联网才翻到这个玩意儿,介绍的教程特别少,因为他依赖于很多外部服务,如果需要自己搭建的话,需要搭建好Oss对象存储、Redis、Nginx、以及OIDC认证服务。一般人看到这么多玩意儿就放弃了,网上一些硬刚的博客也是巨复杂和繁琐。最终在我的不懈努力之下,终于在Github找到了一个基于Docker Compose的快速部署脚本。
安装与部署
这个项目的Github地址为:https://github.com/vicalloy/outline-docker-compose.git
这个项目是使用docker-compose的方式来部署,里面包含了所需要的Redis,Minio,PostgreSQL,OIDC Server服务,只需要下载下来,进行一些必要的配置,就可以运行了。
脚本的部署
获取部署脚本
先使用Git将远程仓库下载下来,下载完成后本地会有outline-docker-compose这个文件夹,并进入该目录
git clone https://github.com/vicalloy/outline-docker-compose.git
cd outline-docker-compose
个性化配置
config.sh
文件配置介绍
因为安装的时候配置是从scripts/config.sh读取的,最开始我们没有这个文件,只有scripts/config.sh.sample这个配置样例,所以我们需要先拷贝配置样例,然后在配置样例上进行修改
cp scripts/config.sh.sample scripts/config.sh
vim scripts/config.sh
默认的配置是这样的:
# The url used to vist this web site.
URL=http://127.0.0.1:8888
# The default interface language. See translate.getoutline.com for a list of
# available language codes and their rough percentage translated.
DEFAULT_LANGUAGE=en_US
# https://docs.djangoproject.com/en/2.2/ref/settings/#language-code
LANGUAGE_CODE=en-us
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TIME_ZONE=UTC
FORCE_HTTPS=false
# The domain in you email.
# Comma separated list of domains to be allowed (optional).
# If not set, the first user's domain is allowed by default.
ALLOWED_DOMAINS=
# Docker image version
OUTLINE_VERSION=0.67.2
POSTGRES_VERSION=15.2-alpine3.17
MINIO_VERSION=RELEASE.2022-11-17T23-20-09Z
MINIO_MC_VERSION=RELEASE.2022-11-17T21-20-39Z
# Nginx
# The nginx bind ip and port.
# If you use ip address to access outline, this ip and port should be same as the URL.
# If this server behind a proxy(nginx), you can bind to `127.0.0.1`.
HTTP_IP=127.0.0.1
HTTP_PORT_IP=8888
# Docker
# If you server behind a proxy(nginx), and the proxy created by docker. You can use the proxy's network. Set the `NETWORKS` to proxy's network name, and set `NETWORKS_EXTERNAL` to `true` .
# The sample config for host nginx can be find in `config/sample/nginx_outline.conf`.
NETWORKS=outlinewiki
NETWORKS_EXTERNAL=false
## Secret keys, update by script.
# You shouldn't edit it.
MINIO_ACCESS_KEY=
MINIO_SECRET_KEY=
OIDC_CLIENT_SECRET=
OUTLINE_SECRET_KEY=
OUTLINE_UTILS_SECRET=
DJANGO_SECRET_KEY=
其中有几个需要了解的配置,这些配置可以根据需要修改,其他的配置请尽量不要修改:
URL
:我们最终网页访问的自己Outline的地址,例如:http://111.111.111.111:8888
或者http://youdomain.com
DEFAULT_LANGUAGE
:页面显示的语言,默认是英文,想修改成中文就设置为zh_CN
即可FORCE_HTTPS
:是否强制开启HTTPS,默认为false,一般不动这个值,要用的话也是自己额外搭建一个Nginx实现HTTP跳转HTTPSHTTP_IP
:直接设置成0.0.0.0
。注释中的127.0.0.1
我之前试过,改成自己服务器的公网IP的话,又会导致脚本创建的Nginx无法启动,因此还是得设置0.0.0.0
。HTTP_PORT_IP
:想绑定的服务器(宿主机)的端口,默认是8888,如果是用IP访问,记得和IP的端口保持一致NETWORKS
:网络名称,这个脚本搭建的服务都是有自己的一个网络,只把内部的一个Nginx暴露出来了,依赖的其他组件相当于都是内网通信,极大的增加了安全性,这个参数的值就是一个名字,不需要修改。
注意一般我们自己同一个服务器上会部署很多服务,比如Wordpress,Outline,Calibre-Web等,他们启动后会监听不同的端口。同时我们会在服务器上搭建一个Nginx作为这些服务的总入口,然后根据用户请求的不同域名,转发到不同的服务端口,最终转发到对应的服务上。
这个快速部署脚本启动后,会创建一个Nginx作为Outline的入口,我们自己额外搭建的Nginx会将用户访问Outline的请求转发到这个脚本创建的Nginx中,进而转发到Outline的内部网络进行处理。
config.sh
部分配置参考
这里针对上面的配置提供几套可以参考的取值:
注意这里并没有列举出文件中所有的配置项,没有列举出来的属性保持默认值或根据自己的需要修改即可。
假设我们的服务器公网IP是111.111.111.111
- 通过IP端口访问
如果自己没有额外搭建Nginx,只是想直接通过IP+端口的形式来访问,可以这样设置:
URL=http://111.111.111.111:8888
FORCE_HTTPS=false
HTTP_IP=0.0.0.0
HTTP_PORT_IP=8888
- 通过域名访问
这里假设你的域名是aaa.domain.com
,并且Outline打算使用8888端口
如果通过域名访问,说明你额外搭建了一个Nginx作为网络流量的入口,你需要让先在域名提供商中配置好域名DNS解析到自己的服务器IP,并让自己搭建的Nginx监听你的域名并将请求转发到你自己的IP的8888端口。这样的话,你可以使用如下的配置。
URL=http://aaa.domain.com
FORCE_HTTPS=false
HTTP_IP=0.0.0.0
HTTP_PORT_IP=8888
- 通过域名访问并配置SSL
如果你要通过HTTPS来访问你的Outline,你需要拥有SSL证书,将其添加到你自己额外搭建的Nginx中,然后对HTTP请求做301跳转到HTTPS,然后再对HTTPS的请求转发到你的Outline对应端口。这样的话,你可以采用如下配置:
URL=https://aaa.domain.com
FORCE_HTTPS=false
HTTP_IP=0.0.0.0
HTTP_PORT_IP=8888
注意Nginx做了HTTP重定向HTTPS后,不要将FORCE_HTTPS
置为true,否则你的Outline会无法正常打开,浏览器会显示当前页面被重定向次数过多。因为你自己额外搭建的Nginx做了重定向,Outline的Nginx又做了重定向。
env.*
配置介绍
还有一个可以配置的地方是scripts/templates
目录中的以env.
开头的文件
-rw-r--r-- 1 root root 2.5K Nov 30 08:54 env.outline
-rw-r--r-- 1 root root 76 Nov 30 08:54 env.oidc-server
-rw-r--r-- 1 root root 640 Nov 30 08:54 env.oidc
-rw-r--r-- 1 root root 54 Nov 30 08:54 env.minio
这些文件是outline及其依赖的服务的配置模板,部署的时候会在这个模板的基础上进行填充配置,因此如果我们可以在部署前就配置好一些日后需要做的修改,就可以一劳永逸。
env.*
配置修改
这里主要是需要修改一下env.outline的部分配置,例如上传大小限制,邮件发送配置,这样不需要以后更新的时候频繁修改,具体需要修改一下几个配置项
- 上传和导入的文件大小限制
修改上传大小限制为100MB,注意单位为Byte
AWS_S3_UPLOAD_MAX_SIZE=104857600
新增导入功能文件大小限制为100MB,默认是5MB,这里单位也是Byte
MAXIMUM_IMPORT_SIZE=102400000
- 邮件发送配置(可选)
找到Emails configuration
,填入对应的邮件客户端SMTP设置,SMTP_USERNAME
和SMTP_FROM_EMAIL
和SMTP_REPLY_EMAIL
这三个配置项可以设置成一样的,其他的根据自己的邮件客户端的文档设置即可。
# Emails configuration (optional)
SMTP_HOST=
SMTP_PORT=
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_FROM_EMAIL=
SMTP_REPLY_EMAIL=
正式安装
当配置就绪了之后,就可以开始安装了,只需要在outline-docker-compose
目录下执行如下命令即可
make install
安装过程会先去pull对应版本的远程镜像,然后创建容器,创建完成后,会要求创建一个用户,需要我们输入用户名密码等信息,根据流程走即可。
如果输入信息的时候输入错了,会发现删除不了错误字符,这个情况下可以直接使用Ctrl+C结束流程,然后重新执行make install
命令即可
之后在浏览器中访问你刚刚配置的URL,就可以看到Outline的登录界面了。
如果发现502,别着急,大概率不是你的问题。尝试重启一下这个脚本安装的Nginx容器即可,这个是部署脚本的Bug,后续我有时间看看能不能提一个PR修复一下。
安装后的再配置
如果你足够细心,你会发现,当你执行完make install后,除了创建了很多容器,outline-docker-compose
目录下也多出了很多文件
-rw-r--r-- 1 root root 1.7K Nov 30 08:54 README.md
-rw-r--r-- 1 root root 1.5K Nov 30 08:54 LICENSE
drwxr-xr-x 5 root root 4.0K Nov 30 08:54 config
drwxr-xr-x 6 root root 4.0K Feb 27 00:25 data
-rw-r--r-- 1 root root 2.4K Feb 27 00:26 docker-compose.yml
-rw-r--r-- 1 root root 134 Feb 27 00:26 env.minio
-rw-r--r-- 1 root root 747 Feb 27 00:26 env.oidc
-rw-r--r-- 1 root root 140 Feb 27 00:26 env.oidc-server
-rw-r--r-- 1 root root 2.5K Feb 27 00:36 env.outline
-rw-r--r-- 1 root root 1022 Feb 27 00:37 Makefile
drwxr-xr-x 3 root root 4.0K Mar 16 00:53 scripts
里面那一堆以env.
开头的文件,这些就是对应容器的配置文件,config文件夹则存储了Nginx的配置,当修改这些文件后,使用make stop
停止服务后再使用make start
启动服务就可以让里面的配置生效
对于访问端口和地址的这一类配置,可能要同时修改多个服务的设置才能保证正常运行。建议谨慎修改,否则很可能导致服务停止后无法使用或无法启动。
使用进阶教程
如何多人协作
点击左上角,并点击弹出的设置按钮,便可以进入设置界面
左侧找到功能菜单,右侧会出现无缝编辑功能,打开后,就可以大家一起编辑同一篇文章了。
打开多人协作后,文档的编辑就不需要点击对应文档右上角的编辑按钮了,直接修改正文内容即可,如果是自己一个人用,还是关闭这个功能感觉好一点
注意多人协作是基于websocket协议的,现在基本上的系统和浏览器都支持websocket,但是部分公司电脑上的系统或浏览器可能由于安全原因而禁用websocket,就无法进行多人协作。这种情况下就无法编辑文档,只能查看,此时可以暂时关闭该功能,就可以进行正常编辑了。
导入和导出功能
同样点击左上角的设置,进来设置界面,左侧可以看到导出菜单,里面就有导出按钮,直接点击即可,点击后会提交任务,需要等待一段时间。
如果我们配置了通知邮箱,导出任务完成后会发送邮件通知,如果没有设置我们也可以定时回来这个界面看一下。在导出按钮下方会出现导出文件的下载按钮,点击下载即可获取到一个ZIP格式的压缩文件,里面就是我们导出的数据。
如果文章中有图片和附件,也会在压缩包里面,并且在文档中以相对目录的形式引用。当我们重新导入后,这些图片和附件会被上传到里面的Minio里面,并替换引用的链接。十分人性化。
在导出菜单的上方,是导入功能,导入支持多种形式导入,我们可以导入之前在Outline中导出的存储Markdown的压缩包,也可以从Notion中导入文档,如果是企业服务,甚至可以从Confluence中导入(需要企业服务才可以,应该是要付费使用)。选择我们需要的方式,点击导入并上传压缩包即可。
如果导入的时候报错unable to verify the first certificate
,这个一般是配置了SSL之后可能会出现,问题原因是我们的SSL证书存在问题,没有设置好,需要去检查你的Nginx证书设置。除了这个方式,我们也可以在outline-docker-compose
目录中找到env.outline
文件,在里面添加一行参数:
NODE_TLS_REJECT_UNAUTHORIZED=0
之后在outline-docker-compose
目录依次使用make stop
和make start
重启服务,即使不修改Nginx证书也可以正常导入了,不过最好还是尽快将证书正确设置,否则可能会影响网站的SEO。
如果导入的时候报错Sorry, this file is too large – the maximum size is 5.12 MB
,是因为Outline有默认的上传大小限制,需要修改参数以下参数来放开Outline以及存储服务对上传文件的限制:
修改env.outline
文件中的参数值,单位为Byte:
AWS_S3_UPLOAD_MAX_SIZE=102400000
并添加下面的参数,单位同样为Byte:
MAXIMUM_IMPORT_SIZE=102400000
如果你额外自己还搭建了一个Nginx,你还需要注意修改Nginx的client_max_body_size参数来提高Nginx对上传文件的大小限制,比如在Server中设置:
client_max_body_size 100m;
然后使用make stop
和make start
重启服务即可
访问页面502了怎么办
这个是部署脚本的bug,你显示着重启一下这个脚本安装的Nginx容器,如果还不行,看看脚本部署的这几个容器的日志是不是正常,看看是不是配置文件出错了。
大部分502会发生在容器重启之后(包含执行make start
等运维操作的重启),502的原因应该是Nginx路由没有及时刷新导致的,在容器日志里面可以看到no route to host
这样的报错,可以使用下面两个命令中的任何一个进行解决。
# 让outline的Nginx重新加载配置,xxxxx注意修改成你自己的容器id
docker exec xxxxx nginx -s reload
# 重启outline的Nginx,xxxxx注意修改成你自己的容器id
docker restart xxxxx
一般执行完之后,就可以正常加载了。
如何配置邮件通知
如果你通知功能的这个界面是这样的,那说明env.outline
文件里面的邮件SMTP设置没有设置
要配置邮件通知功能,我们要在outline-docker-compose
目录中找到env.outline
文件。找到Emails configuration
,填入对应的邮件客户端SMTP设置,SMTP_USERNAME
和SMTP_FROM_EMAIL
和SMTP_REPLY_EMAIL
这三个配置项可以设置成一样的,其他的根据自己的邮件客户端的文档设置即可。
# Emails configuration (optional)
SMTP_HOST=
SMTP_PORT=
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_FROM_EMAIL=
SMTP_REPLY_EMAIL=
当配置好SMTP信息后,使用依次使用make stop
和make start
重启服务后,通知功能界面就变成这样了
如何分享文档或文档集给他人
Outline有严格的权限控制,可以对每个文档集设置不同的权限。如果想要查看某个文档集的权限,可以点击对应文档集右侧的省略号,找到权限按钮
然后里面可以看到这个文档集的权限:
额外访问权限:可以对某个群组或者某个人员设置特定的访问权限,比如这个人
默认访问权限:一个用户如果没有设置额外访问权限,这个文档集的权限对于他来说就是取决于默认访问权限
公开共享设置:这个文档集里面的文档是否可以被用户公开到互联网中,如果公开到互联网中,任何人都可以查看
当我们打开了公开共享文档后,就可以在对应的文档右上角点击分享按钮(如果不能的话,刷新一下网页),勾选发布到互联网,然后复制链接即可,如果要共享这个页面下包含的文档,可以勾选下方的共享子文档
如何备份数据
备份数据可以有以下几种方式:
- 直接备份整个
outline-docker-compose
目录,可以备份所有配置和个人数据,是最彻底的备份 - 备份
outline-docker-compose/data
目录,可以备份个人数据 - 使用Outline的导出功能,也可以实现个人数据的备份,里面是markdown文档,相对来说可移植性会更强
如何升级
由于在这个脚本里面容器都是无状态的,因此删除容器理论上并不会丢失任何数据,但是为了保险起见,建议提前对数据进行备份。毕竟数据无价!
一般来说,只要Outline没有大版本更新是可以直接升级的。只需要先把容器停止,然后编辑scripts/config.sh
里面的OUTLINE_VERSION
为想要升级到的Outline版本,如果要修改PostgreSQL版本,也可以修改POSTGRES_VERSION
,然后重新make install
即可,由于容器无状态,可以直接使用之前的数据。
make stop
vi scripts/config.sh
make install
由于使用了make install后,会执行初始化流程,创建好容器后会执行创建用户的脚本,由于我们已经有了管理员账户,因此要求我们输入用户名和密码的时候,我们直接使用Ctrl+C结束即可,过程可以参考下图。
[test@localhost outline-docker-compose]# make install
cd ./scripts && bash ./main.sh init_cfg
docker compose up -d
[+] Running 13/13
⠿ wk-outline Pulled 139.8s
⠿ df9b9388f04a Already exists 0.0s
⠿ 622e2b598d8a Already exists 0.0s
⠿ f7c8a32a53f2 Already exists 0.0s
⠿ 7da04ed7d1ef Already exists 0.0s
⠿ 99d20de9b067 Pull complete 2.4s
⠿ d9f9a5a50eb9 Pull complete 8.5s
⠿ fc49631fd2f7 Pull complete 8.6s
⠿ 693134add7ff Pull complete 8.7s
⠿ 19e3f90bf091 Pull complete 8.8s
⠿ 27e5d3cf711f Pull complete 90.4s
⠿ 7a066faad3fd Pull complete 90.5s
⠿ d5750fb517f5 Pull complete 90.9s
[+] Running 8/8
⠿ Network outline-docker-compose_outlinewiki Created 0.2s
⠿ Container outline-docker-compose-wk-postgres-1 Started 2.8s
⠿ Container outline-docker-compose-wk-minio-1 Started 2.3s
⠿ Container outline-docker-compose-wk-oidc-server-1 Started 2.9s
⠿ Container outline-docker-compose-wk-redis-1 Started 2.8s
⠿ Container outline-docker-compose-wk-createbuckets-1 Started 2.2s
⠿ Container outline-docker-compose-wk-outline-1 Started 2.2s
⠿ Container outline-docker-compose-wk-nginx-1 Started 3.2s
cd ./scripts && bash ./main.sh reload_nginx
2023/03/16 17:29:41 [notice] 25#25: signal process started
docker compose exec wk-oidc-server bash -c "make init"
python manage.py creatersakey
RSA key successfully created with kid: 555d657d19378da4a175bbc0e63cf324
python manage.py createsuperuser
Username: ^C
Operation cancelled.
make: *** [Makefile:11: init] Error 1
make: *** [install] Error 130
如何寻求更多帮助
如果还有一些疑问不知道如何解决,可以自己思考一下看看这个是部署脚本的问题还是Outline本身的问题
Outline服务本身的问题
如果是Outline本身的问题,可以去Outline官方的Github仓库地址进行搜索,可以找到更权威的帮助,主要的地方有两个。
第一个是Issues,一般会在这里提交Bug信息,可以在其中进行搜索你的需求或者错误信息,注意用英文搜索。
第二个是Discussions,一般会在这里进行讨论,里面有一个分类是Self Hosting,聚集了一堆我们这种自己搭建服务的一群人,大部分问题都可以在里面找到解决。
注意删除一些非必要的筛选条件,防止我们需要的结果被过滤掉了。
如果这两个地方都不能满足你的需求,去百度或者谷歌基本上也是搜索不到的,那么你可以点击这两个地方的任何一个地方(最好是第二个地方)的界面右上角的绿色按钮进行提交你的问题,然后耐心等待,热心群众会帮你解决的。
部署脚本的问题
如果是部署脚本的问题,同样可以去部署脚本所在Github仓库的Issues界面查找自己需要的内容,如果查不到,也可以提交自己的Issues,然后耐心等待解答或自己继续钻研。
参考链接
原创文章,创作不易,版权所有,抄袭必究
作者:幽叶草。如若转载,需要先经过作者同意,并附上原文链接 https://blog.uusite.com/cloud/deploy/331.html
评论列表(65条)
能否分享整个文件集的呢?有没有文章搜索功能?
你好,麻烦帮我看下,我的安装一直出现这个故障不知道哪里的问题。
[root@hcss-ecs-9a38 outline-docker-compose]# make install
cd ./scripts && bash ./main.sh init_cfg
/usr/bin/docker-compose up -d
WARN[0000] /root/outline-docker-compose/docker-compose.yml: `version` is obsolete
[+] Running 5/5
✘ wk-postgres Error context canceled 15.5s
✘ wk-outline Error Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 15.5s
✘ wk-oidc-server Error context canceled 15.5s
✘ wk-nginx Error context canceled 15.5s
✘ wk-redis Error context canceled 15.5s
Error response from daemon: Get “https://registry-1.docker.io/v2/”: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
make: *** [start] Error 18
[root@hcss-ecs-9a38 outline-docker-compose]#
@nanqingxu:看起来是网络超时了,看看能换一下docker的源试试
大佬帮忙看看是什么问题
按照上面的步骤部署后,无法登陆,一直在登录页无限循环,outline日志显示如下错误
ERR Error during authentication | error=An email field was not returned in the profile parameter, but is required. stack=UnauthorizedError: An email field was not returned in the profile parameter, but is required.
at AuthenticationError (/opt/outline/build/server/errors.js:39:34)
at OAuth2Strategy._verify (/opt/outline/build/plugins/oidc/server/auth/oidc.js:64:47)
at /opt/outline/node_modules/passport-oauth2/lib/strategy.js:196:24
at _passportOauth.Strategy.userProfile (/opt/outline/build/plugins/oidc/server/auth/oidc.js:24:12)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
@学多了会头疼:是使用邮箱登录的吗?如果是,看看能不能用密码先登录。
除此之外,可能得检查下配置文件scripts/config.sh,比如ALLOWED_DOMAINS这一项是不是有值但是你的用户对应的邮箱不是这个邮箱后缀?
@幽叶草:应该是因为第一次安装的时候没有输入邮箱,登录失败。重装后再次登录,没有清空浏览器缓存。把浏览器缓存清空后就能正常登录了,多谢大佬~~~
当前博客就是基于getoutline?
@xxxx@hotmail.com:不是的哈,我这边outline主要倾向于当成笔记或者个人文档类的,主要是自己记录,博客主要是发表归纳好的东西,要对wiki的内容进行加工和整理。
[…] 参考链接:幽夜草博客 […]
hi,make install 后报错呢
Hi,我部署成功了感谢你的教程。有个问题想请教下,我登录以后看到了openid登录,请问这个如何操作?
@pipu:你在执行make install的时候会让你创建一个用户名和密码,使用这个用户名和密码登录即可。
博主你好,请问文档集里面的图标要怎么修改呢? 如果用docker compose方式部署是不是没办法修改呢?
@steady:不是的,都可以修改的,修改图标的话,你选中左侧对应的文档集,有编辑按钮,在编辑界面可以进行重命名和修改图标
@幽叶草:是的 这个我清楚,我的图标选框中只有默认的几个图标,我看你博客里面图标都是自定义的。请问你是怎么添加图表的呢?
另外outline有windows的客户端,如果是私有化部署的,登录使用gitlab。是不是没办法使用windows客户端呢?因为没有找到gitlab登录的选项。
@幽叶草:好的 我知道了,图标是一样的,只不过你的配色不一样,猛的一看以为你是自定义的图标,抱歉。你一定是UE出身的,哈哈哈哈。
@steady:哈哈哈哈,我就是瞎整,都弄成不一样的
博主,我有个新的问题,outline wiki似乎无法导出进行备份。
我查找了这个docker项目中的issue发现也有人提出了[这个问题](https://github.com/vicalloy/outline-docker-compose/issues/69)
看了一下好像就是博主您教程中的提到的`AWS_S3_UPLOAD_MAX_SIZE`以及`MAXIMUM_IMPORT_SIZE`这两项,我检查后仍然无法进行导出
issue也已经提交了
@inno:这两个参数跟导出关系不大,主要是导入的。你这边用的是什么文件系统?这个问题有没有在各个容器的日志里面发现什么异常?
@幽叶草:现在默认是local
@inno:升级outline至0.72.2后可以导出
@Rick:嗯嗯,可以的,这也是Issues的解决方案
@Rick:好的 谢谢!
楼主,为什么部署完之后只能在服务器上用127.0.0.1:8888访问,在服务器或者其他电脑上用IP就不行呢。。。。
@李逍遥:你看一下其他电脑上telnet看看能连通你这个端口吗?
如果连不通的话,那你要看看是不是防火墙需要开放端口
@李逍遥:服务器端口全放开了 也不行,上传附件也失败,好难啊。。。
@李逍遥:先telnet看看端口能不能通吧,能的话看看nginx的日志,然后你可以看看各个容器异常的日志,从里面找出问题
今天试了一下图片本地存储,效果有点不及预期。
文件结构还是和minio一样,uploads里面套两层才到图片,本来以为可以统一在一个路径下方便管理。优点是图片名字和上传的图片名保持一致了,至少可以用find比较好找(之前前台上传图片名字都变成image)。
修改很简单:config.sh和env.outline添加local、nginx的default.conf和docker-compose.yml删去minio相关内容,添加本地存储路径即可。存储文件夹权限我配成777才行,官方的改法还是提示无权限。
@一般路过的路人:Good!
@幽叶草:补充一下,如果选择直接切换,minio的文件会因为路径不同在前台变成空白图片。
这个时候要先把这些空白图片都处理掉再使用导出功能。否则会导出失败并在前台持续出现正在导出的提示。这个导出会记录在数据库中,所以通过版本更新没法去除,只能进数据库删。详见issue
https://github.com/outline/outline/issues/6109
✔ Network outline-docker-compose_outlinewiki Created 0.2s
✔ Container outline-docker-compose-wk-postgres-1 Started 1.6s
✔ Container outline-docker-compose-wk-oidc-server-1 Started 1.6s
✔ Container outline-docker-compose-wk-redis-1 Started 1.4s
✔ Container outline-docker-compose-wk-outline-1 Started 2.3s
✔ Container outline-docker-compose-wk-nginx-1 Started 3.2s
cd ./scripts && bash ./main.sh reload_nginx
http: invalid Host header
waiting nginx
http: invalid Host header
waiting nginx
http: invalid Host header
waiting nginx
http: invalid Host header
waiting nginx
http: invalid Host header
waiting nginx
http: invalid Host header
waiting nginx
http: invalid Host header
waiting nginx
http: invalid Host header
waiting nginx
^Z
[4]+ Stopped make install
一直报这个错,是在解决不了。
config.sh 是这样的,改成IP也不行
FILE_STORAGE=local
# The url used to vist this web site.
URL=http://nsg.ac.cn
# The default interface language. See translate.getoutline.com for a list of
# available language codes and their rough percentage translated.
DEFAULT_LANGUAGE=zh_CN
# https://docs.djangoproject.com/en/2.2/ref/settings/#language-code
LANGUAGE_CODE=en-us
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TIME_ZONE=UTC
FORCE_HTTPS=false
# The domain in you email.
# Comma separated list of domains to be allowed (optional).
# If not set, the first user’s domain is allowed by default.
ALLOWED_DOMAINS=
# Docker image version
OUTLINE_VERSION=0.72.2
POSTGRES_VERSION=15.2-alpine3.17
MINIO_VERSION=RELEASE.2022-11-17T23-20-09Z
MINIO_MC_VERSION=RELEASE.2022-11-17T21-20-39Z
# Nginx
# The nginx bind ip and port.
# If you use ip address to access outline, this ip and port should be same as the URL.
# If this server behind a proxy(nginx), you can bind to `127.0.0.1`.
HTTP_IP=0.0.0.0
HTTP_PORT_IP=8888
# Docker
# If you server behind a proxy(nginx), and the proxy created by docker. You can use the proxy’s network. Set the `NETWORKS` to proxy’s network name, and set `NETWORK>
# The sample config for host nginx can be find in `config/sample/nginx_outline.conf`.
NETWORKS=outlinewiki
NETWORKS_EXTERNAL=false
@Pluto:看起来是执行cd ./scripts && bash ./main.sh reload_nginx的时候报错了导致的
你先看下创建的这些容器各自的日志,看看有没有报错,然后再看下outline-docker-compose-wk-nginx-1这个容器里面生成的default.conf和nginx.conf有没有问题
@Pluto:我也是一样的问题,你解决了吗?搞了大半天了直接处理不了
@Pluto:看起来你是用local的存储方式?nginx没开启来可能是default配置文件里面minio的部分还在,导致nginx一直起不来。删掉即可。详见我下面11月3日评论
@Pluto:Linux服务器权限问题,应该使用的ubuntuserver版,生成的docker里边文件无权限特别是nginx的配置文件,我也不知道为毛这样,因为我从docker镜像往外复制文件时提示权限不足,所以想到这里。重装了服务器好了。。。
老哥我想问一下,按照您的步骤进行搭建此服务,有出现过outline无法上传图片的情形吗
@inno:从来没有的,你的报错是啥呢,我可以帮你简单看看
@inno:应该是这一串
“`
{“event”:{“actorId”:”1fcbec38-58cb-4e76-aa3b-1ffbdc5e53af”,”collectionId”:null,”createdAt”:”2023-10-29T09:59:39.262Z”,”data”:{“name”:”11.jpg”},”documentId”:null,”id”:”2a928627-ecfb-477d-9226-00d8c6371a6d”,”ip”:”212.107.30.155″,”modelId”:”b5442c91-d904-4f42-b9b9-2bb989a80d81″,”name”:”attachments.create”,”teamId”:”72c3acf0-b3f6-4350-9498-501e1c7e7f33″,”userId”:null},”label”:”worker”,”level”:”info”,”message”:”WebhookProcessor running attachments.create”}
[Error: EACCES: permission denied, mkdir ‘/var/lib/outline/data/uploads’] {
errno: -13,
code: ‘EACCES’,
syscall: ‘mkdir’,
path: ‘/var/lib/outline/data/uploads’,
status: 500
}
“`
@inno:你是用本地存储还是minio容器呢,这是哪里的报错,接口还是minio容器呢,如果是minio,可能要检查下配置文件的key之类的。
@inno:@幽叶草 谢谢老哥,我发现docker中没有minio这一项存在 我现在再重试一边看看
@inno:@幽叶草 运行docker的时候没有minio docker这一项
root@debian:~/outline-docker-compose# make install
cd ./scripts && bash ./main.sh init_cfg
/usr/local/bin/docker-compose up -d
[+] Building 0.0s (0/0) docker:default
[+] Running 6/6
✔ Network outline-docker-compose_outlinewiki Created 0.0s
✔ Container outline-docker-compose-wk-oidc-server-1 Started 0.1s
✔ Container outline-docker-compose-wk-postgres-1 Started 0.1s
✔ Container outline-docker-compose-wk-redis-1 Started 0.1s
✔ Container outline-docker-compose-wk-outline-1 Started 0.1s
✔ Container outline-docker-compose-wk-nginx-1 Started 0.1s
cd ./scripts && bash ./main.sh reload_nginx
2023/10/29 10:48:36 [notice] 22#22: signal process started
@inno:看起来应该是他的脚本改了,我看他已经现在用S3作为数据存储了,你可以看一下他git log前几个版本,我现在还在外面,回去我帮你看下,或者明天。
@inno:我看了下脚本作者的Issues,里面有反馈这个问题,也给出了解决方案,你可以试下:https://github.com/vicalloy/outline-docker-compose/issues/64
@inno:@幽叶草 谢谢大佬,感激不尽
@inno:@幽叶草 谢谢大佬的指路,按照issue中的做法 docker-compose中加了一行后能够成功上传了
但新的问题又出现了,我在另外两台机子上进行安装发现打不开网页。我感觉是nginx出了问题 但不知道怎么修
这个是正常的日志
103.116.72.132 – – [29/Oct/2023:13:13:56 +0000] “POST /api/documents.deleted HTTP/1.1” 200 140 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:13:56 +0000] “POST /api/collections.documents HTTP/1.1” 200 531 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:13:59 +0000] “POST /api/documents.list HTTP/1.1” 200 12309 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:13:59 +0000] “POST /api/pins.list HTTP/1.1” 200 156 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:13:59 +0000] “POST /api/documents.viewed HTTP/1.1” 200 139 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:13:59 +0000] “POST /api/pins.list HTTP/1.1” 200 156 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:01 +0000] “POST /api/documents.list HTTP/1.1” 200 12309 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:01 +0000] “POST /api/pins.list HTTP/1.1” 200 156 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:04 +0000] “POST /api/documents.list HTTP/1.1” 200 12309 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:04 +0000] “POST /api/documents.list HTTP/1.1” 200 12309 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:10 +0000] “GET /realtime/?EIO=4&transport=websocket HTTP/1.1” 101 8092 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:23 +0000] “POST /api/collections.delete HTTP/1.1” 200 39 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:23 +0000] “POST /api/documents.list HTTP/1.1” 200 12309 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:23 +0000] “POST /api/documents.viewed HTTP/1.1” 200 139 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:31 +0000] “POST /api/collections.create HTTP/1.1” 200 656 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:31 +0000] “GET /collaboration/document.9da2b0ef-bd4b-4999-a569-c61af0fbd3a8 HTTP/1.1” 101 12416 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:31 +0000] “POST /api/collections.documents HTTP/1.1” 200 34 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:31 +0000] “POST /api/pins.list HTTP/1.1” 200 156 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:31 +0000] “POST /api/documents.list HTTP/1.1” 200 137 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:33 +0000] “POST /api/documents.create HTTP/1.1” 200 1818 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:33 +0000] “POST /api/documents.list HTTP/1.1” 200 137 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:33 +0000] “POST /api/comments.list HTTP/1.1” 200 139 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:33 +0000] “POST /api/views.list HTTP/1.1” 200 34 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:33 +0000] “POST /api/subscriptions.list HTTP/1.1” 200 127 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:33 +0000] “POST /api/shares.info HTTP/1.1” 204 0 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:33 +0000] “POST /api/collections.documents HTTP/1.1” 200 34 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:14:36 +0000] “POST /api/views.create HTTP/1.1” 200 616 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
103.116.72.132 – – [29/Oct/2023:13:17:40 +0000] “GET /collaboration/document.44f5cfbf-6e03-4c18-a182-fa478d846ea2 HTTP/1.1” 101 1339 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/119.0” “-”
这个是不正常的日志
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: can not modify /etc/nginx/conf.d/default.conf (read-only file system?)
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2023/10/29 12:45:37 [notice] 1#1: using the “epoll” event method
2023/10/29 12:45:37 [notice] 1#1: nginx/1.25.3
2023/10/29 12:45:37 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14)
2023/10/29 12:45:37 [notice] 1#1: OS: Linux 5.4.0-165-generic
2023/10/29 12:45:37 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2023/10/29 12:45:37 [notice] 1#1: start worker processes
2023/10/29 12:45:37 [notice] 1#1: start worker process 21
2023/10/29 12:45:37 [notice] 1#1: start worker process 22
2023/10/29 12:45:37 [notice] 1#1: start worker process 23
2023/10/29 12:45:37 [notice] 1#1: start worker process 24
2023/10/29 12:45:37 [notice] 1#1: signal 1 (SIGHUP) received from 25, reconfiguring
2023/10/29 12:45:37 [notice] 1#1: reconfiguring
2023/10/29 12:45:37 [notice] 1#1: using the “epoll” event method
2023/10/29 12:45:37 [notice] 1#1: start worker processes
2023/10/29 12:45:37 [notice] 1#1: start worker process 32
2023/10/29 12:45:37 [notice] 1#1: start worker process 33
2023/10/29 12:45:37 [notice] 1#1: start worker process 34
2023/10/29 12:45:37 [notice] 1#1: start worker process 35
2023/10/29 12:45:37 [notice] 23#23: gracefully shutting down
2023/10/29 12:45:37 [notice] 22#22: gracefully shutting down
2023/10/29 12:45:37 [notice] 23#23: exiting
2023/10/29 12:45:37 [notice] 23#23: exit
2023/10/29 12:45:37 [notice] 22#22: exiting
2023/10/29 12:45:37 [notice] 21#21: gracefully shutting down
2023/10/29 12:45:37 [notice] 21#21: exiting
2023/10/29 12:45:37 [notice] 22#22: exit
2023/10/29 12:45:37 [notice] 21#21: exit
2023/10/29 12:45:37 [notice] 24#24: gracefully shutting down
2023/10/29 12:45:37 [notice] 24#24: exiting
2023/10/29 12:45:37 [notice] 24#24: exit
2023/10/29 12:45:38 [notice] 1#1: signal 17 (SIGCHLD) received from 24
2023/10/29 12:45:38 [notice] 1#1: worker process 23 exited with code 0
2023/10/29 12:45:38 [notice] 1#1: worker process 24 exited with code 0
2023/10/29 12:45:38 [notice] 1#1: signal 29 (SIGIO) received
2023/10/29 12:45:38 [notice] 1#1: signal 17 (SIGCHLD) received from 21
2023/10/29 12:45:38 [notice] 1#1: worker process 21 exited with code 0
2023/10/29 12:45:38 [notice] 1#1: signal 29 (SIGIO) received
2023/10/29 12:45:38 [notice] 1#1: signal 17 (SIGCHLD) received from 22
2023/10/29 12:45:38 [notice] 1#1: worker process 22 exited with code 0
2023/10/29 12:45:38 [notice] 1#1: signal 29 (SIGIO) received
2023/10/29 12:46:12 [notice] 1#1: signal 1 (SIGHUP) received from 36, reconfiguring
2023/10/29 12:46:12 [notice] 1#1: reconfiguring
2023/10/29 12:46:12 [notice] 1#1: using the “epoll” event method
2023/10/29 12:46:12 [notice] 1#1: start worker processes
2023/10/29 12:46:12 [notice] 1#1: start worker process 42
2023/10/29 12:46:12 [notice] 1#1: start worker process 43
2023/10/29 12:46:12 [notice] 1#1: start worker process 44
2023/10/29 12:46:12 [notice] 1#1: start worker process 45
2023/10/29 12:46:12 [notice] 35#35: gracefully shutting down
2023/10/29 12:46:12 [notice] 34#34: gracefully shutting down
2023/10/29 12:46:12 [notice] 34#34: exiting
2023/10/29 12:46:12 [notice] 34#34: exit
2023/10/29 12:46:12 [notice] 35#35: exiting
2023/10/29 12:46:12 [notice] 35#35: exit
2023/10/29 12:46:12 [notice] 33#33: gracefully shutting down
2023/10/29 12:46:12 [notice] 33#33: exiting
2023/10/29 12:46:12 [notice] 33#33: exit
2023/10/29 12:46:12 [notice] 32#32: gracefully shutting down
2023/10/29 12:46:12 [notice] 32#32: exiting
2023/10/29 12:46:12 [notice] 32#32: exit
2023/10/29 12:46:12 [notice] 1#1: signal 17 (SIGCHLD) received from 34
2023/10/29 12:46:12 [notice] 1#1: worker process 34 exited with code 0
2023/10/29 12:46:12 [notice] 1#1: signal 29 (SIGIO) received
2023/10/29 12:46:12 [notice] 1#1: signal 17 (SIGCHLD) received from 35
2023/10/29 12:46:12 [notice] 1#1: worker process 35 exited with code 0
2023/10/29 12:46:12 [notice] 1#1: signal 29 (SIGIO) received
2023/10/29 12:46:12 [notice] 1#1: signal 17 (SIGCHLD) received from 32
2023/10/29 12:46:12 [notice] 1#1: worker process 32 exited with code 0
2023/10/29 12:46:12 [notice] 1#1: signal 29 (SIGIO) received
2023/10/29 12:46:12 [notice] 1#1: signal 17 (SIGCHLD) received from 33
2023/10/29 12:46:12 [notice] 1#1: worker process 33 exited with code 0
2023/10/29 12:46:12 [notice] 1#1: signal 29 (SIGIO) received
不知道怎么解决这种问题
@inno:主要的报错信息看起来是:can not modify /etc/nginx/conf.d/default.conf (read-only file system?)
你的nginx的配置文件是不是没有权限修改。
还有就是你为什么要在多台机器上都安装outline呢,是想搭建集群吗?
@inno:@幽叶草 第一台机子是测试机,因为我不太会装软件,所以专门买了一台(一个月),这台快到期了。所以想先试一试,再在自己的主力机上安装。没想到还是没能复现。
nginx的文件我没有动过
@inno:@幽叶草 谢谢老哥 修复了!
@inno:嗯嗯,后面发现是啥原因导致的呢
@inno:@幽叶草 发现是我ip还是127.0.0.1 ,没有改成0.0.0.0
谢谢老哥!!!我看你的教程一遍过,看别人的教程楞是搭了好几天没好。十分感谢!!!
@inno:不客气,能帮到你就行!
outline的分享功能疑问:点击分享后,获得分享链接,好像只有在登陆后,才能查看。未登录人员,只有一个回到主页的页面?
@ubuntu:如果要不登陆也可以查看的话,分享的地方记得勾选一下”发布到互联网”
如果 Nginx 安装在宿主机中的话,再使用 docker 部署一个 Nginx 给 Outline 使用是不是有点多余,毕竟又多了一层转发,是否考虑将 Nginx 作为可选项。
@雨夜带刀:嗯嗯,你可以考虑将宿主机的Nginx直接用来做转发。只是个人觉得这样部署方便,不需要修改脚本,不用了直接删除就好了,而且不是开放给所有人,主要是自己用或者小范围用,数据量也不大,多一个少一个也区别不是很大。
感谢!在v2ex上看到项目作者自推,但是对docker了解很少还是不会摆弄。最后搜到作者这篇博客成功部署了,非常感谢
说一下我遇到的其他小坑(水平低哈哈哈):
1、make install的时候提示”key cannot contain a space”
根据https://stackoverflow.com/questions/69512549/key-cannot-contain-a-space-error-while-running-docker-compose的方法把env.oidc有空格的参数(最后一个)用双引号引起来再安装就可以了。
2、注册的时候邮箱是必填的,否则即使是root账号也会输入账密后无法登录的情况(而且不会有任何提示)
参考项目作者https://github.com/vicalloy/outline-docker-compose的FAQ
@一般路过的路人:感谢你的认可和补充~
@幽叶草:你好,请问博主知道要怎么修改文字的行间距、字体大小、字体颜色吗?我加标签好像不成功。如果博主知道的话能否分别给个例子呢?谢谢!
@一般路过的路人:Outline对直接嵌入并渲染html这一块还是不是特别支持,没有本地的Typora支持的好。因为Outline可能主要是偏向于文档(类似于Confluence)而不是一个严格的Markdown编辑器,你说的这些可能主要还是需要靠大小标题,高亮之类的来实现。
@幽叶草:谢谢,那请问博主知道快捷键里面的”空上箭头”要怎么打吗?比如快捷键->格式化->段落的“Ctrl + ⇧ + 0”
@一般路过的路人:快捷键->格式化->段落的“Ctrl + ⇧ + 0”其实就是按住Ctrl+Shift+0哈
你说的 ⇧ 其实就是Shift,有的键盘Shift上面就会刻着 ⇧
@幽叶草:感谢回复,请问博主知道要怎么访问minio吗?
根据教程成功部署了,谢谢~
@eddie:不用客气,互相学习,感谢你的认可