一直想搭建自己的Wiki,因为觉得在自己手里的数据才是最好的,用商业组件服务器在别人这,一个是不安全,另一个是不保险,再者,有自己的专属服务也是一件酷酷的事情,不是吗?
曾经的尝试
之前尝试过安装过挺多的方案,基本上的方案我都部署并稍微试用了一下,包括但不限于以下几种,我附上了地址和对应的软件界面
Wiki.js
官网地址:https://js.wiki/
使用界面:
![Wiki.js使用界面](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
MediaWiki
官网地址:https://www.mediawiki.org/wiki/MediaWiki
使用界面:
![MediaWiki使用界面](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
为知笔记
官网地址:https://www.wiz.cn/
使用界面:
![MediaWiki使用界面](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
Shawdoc
官网地址:https://www.showdoc.com.cn/
使用界面:
![Shawdoc使用界面](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
Docsify
官网地址:https://docsify.js.org/
使用界面:
![Docsify使用界面](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
Google Outline
官网地址:https://www.getoutline.com/
使用界面:
![Google Outline的使用界面](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
除此之外,其实还部署过尝试过很多其他的,有些可能记不上名字来了。
最终的选择
试过了很多同类型的产品,最终还是选择了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
启动服务就可以让里面的配置生效
对于访问端口和地址的这一类配置,可能要同时修改多个服务的设置才能保证正常运行。建议谨慎修改,否则很可能导致服务停止后无法使用或无法启动。
使用进阶教程
如何多人协作
点击左上角,并点击弹出的设置按钮,便可以进入设置界面
![outline如何进入设置界面](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
左侧找到功能菜单,右侧会出现无缝编辑功能,打开后,就可以大家一起编辑同一篇文章了。
![outline如何打开多人协作开关](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
打开多人协作后,文档的编辑就不需要点击对应文档右上角的编辑按钮了,直接修改正文内容即可,如果是自己一个人用,还是关闭这个功能感觉好一点
注意多人协作是基于websocket协议的,现在基本上的系统和浏览器都支持websocket,但是部分公司电脑上的系统或浏览器可能由于安全原因而禁用websocket,就无法进行多人协作。这种情况下就无法编辑文档,只能查看,此时可以暂时关闭该功能,就可以进行正常编辑了。
导入和导出功能
同样点击左上角的设置,进来设置界面,左侧可以看到导出菜单,里面就有导出按钮,直接点击即可,点击后会提交任务,需要等待一段时间。
![Outline导出功能界面](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
如果我们配置了通知邮箱,导出任务完成后会发送邮件通知,如果没有设置我们也可以定时回来这个界面看一下。在导出按钮下方会出现导出文件的下载按钮,点击下载即可获取到一个ZIP格式的压缩文件,里面就是我们导出的数据。
如果文章中有图片和附件,也会在压缩包里面,并且在文档中以相对目录的形式引用。当我们重新导入后,这些图片和附件会被上传到里面的Minio里面,并替换引用的链接。十分人性化。
在导出菜单的上方,是导入功能,导入支持多种形式导入,我们可以导入之前在Outline中导出的存储Markdown的压缩包,也可以从Notion中导入文档,如果是企业服务,甚至可以从Confluence中导入(需要企业服务才可以,应该是要付费使用)。选择我们需要的方式,点击导入并上传压缩包即可。
![Outline导入功能界面](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
如果导入的时候报错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设置没有设置
![配置邮件通知前的通知界面](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
要配置邮件通知功能,我们要在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
重启服务后,通知功能界面就变成这样了
![配置邮件通知后的通知界面](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
如何分享文档或文档集给他人
Outline有严格的权限控制,可以对每个文档集设置不同的权限。如果想要查看某个文档集的权限,可以点击对应文档集右侧的省略号,找到权限按钮
![如何查看Outline文档集的权限](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
然后里面可以看到这个文档集的权限:
额外访问权限:可以对某个群组或者某个人员设置特定的访问权限,比如这个人
默认访问权限:一个用户如果没有设置额外访问权限,这个文档集的权限对于他来说就是取决于默认访问权限
公开共享设置:这个文档集里面的文档是否可以被用户公开到互联网中,如果公开到互联网中,任何人都可以查看
![如何修改Outline文档集的权限](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
当我们打开了公开共享文档后,就可以在对应的文档右上角点击分享按钮(如果不能的话,刷新一下网页),勾选发布到互联网,然后复制链接即可,如果要共享这个页面下包含的文档,可以勾选下方的共享子文档
![在对应的Outline文档界面分享文档到互联网](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
如何备份数据
备份数据可以有以下几种方式:
- 直接备份整个
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信息,可以在其中进行搜索你的需求或者错误信息,注意用英文搜索。
![Outline官方仓库Issues地址](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
第二个是Discussions,一般会在这里进行讨论,里面有一个分类是Self Hosting,聚集了一堆我们这种自己搭建服务的一群人,大部分问题都可以在里面找到解决。
![Outline官方仓库Discussions搜索](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
注意删除一些非必要的筛选条件,防止我们需要的结果被过滤掉了。
![Outline官方仓库Issues搜索删除过滤条件](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/lazy.png)
如果这两个地方都不能满足你的需求,去百度或者谷歌基本上也是搜索不到的,那么你可以点击这两个地方的任何一个地方(最好是第二个地方)的界面右上角的绿色按钮进行提交你的问题,然后耐心等待,热心群众会帮你解决的。
部署脚本的问题
如果是部署脚本的问题,同样可以去部署脚本所在Github仓库的Issues界面查找自己需要的内容,如果查不到,也可以提交自己的Issues,然后耐心等待解答或自己继续钻研。
参考链接
原创文章,创作不易,版权所有,抄袭必究
作者:幽叶草。如若转载,需要先经过作者同意,并附上原文链接 https://blog.uusite.com/cloud/deploy/331.html
评论列表(62条)
quas facere sit iure aspernatur dignissimos ut. et quos deleniti est et eligendi debitis. fugiat voluptate omnis qui magni sit et illum delectus vitae voluptatem labore soluta sunt quia qui sapiente n
nostrum qui suscipit tempore consequatur odio qui eveniet consequuntur et temporibus dicta odio ipsum sunt soluta doloremque. beatae vitae autem labore voluptatem qui est quis qui amet rerum optio ius
omnis quia velit soluta quaerat. veritatis perferendis quaerat pariatur unde voluptas enim velit nisi et quidem architecto iusto ut inventore aspernatur dolore et reprehenderit. maxime voluptatem magn
当前博客就是基于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:我也是一样的问题,你解决了吗?搞了大半天了直接处理不了![笑哭](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/smilies/xiaoku.svg)
@Pluto:看起来你是用local的存储方式?nginx没开启来可能是default配置文件里面minio的部分还在,导致nginx一直起不来。删掉即可。详见我下面11月3日评论
@Pluto:Linux服务器权限问题,应该使用的ubuntuserver版,生成的docker里边文件无权限特别是nginx的配置文件,我也不知道为毛这样,因为我从docker镜像往外复制文件时提示权限不足,所以想到这里。重装了服务器好了。。。![汗](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/smilies/han.svg)
![笑哭](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/smilies/xiaoku.svg)
老哥我想问一下,按照您的步骤进行搭建此服务,有出现过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中加了一行后能够成功上传了
但新的问题又出现了![大哭](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/smilies/daku.svg)
,我在另外两台机子上进行安装发现打不开网页。我感觉是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![笑哭](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/smilies/xiaoku.svg)
谢谢老哥!!!我看你的教程一遍过,看别人的教程楞是搭了好几天没好![色](https://blog.uusite.com/wp-content/themes/justnews/themer/assets/images/smilies/se.svg)
。十分感谢!!!
@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:不用客气,互相学习,感谢你的认可