Docker搭建Outline及其进阶使用教程

一直想搭建自己的Wiki,因为觉得在自己手里的数据才是最好的,用商业组件服务器在别人这,一个是不安全,另一个是不保险,再者,有自己的专属服务也是一件酷酷的事情,不是吗?

曾经的尝试

之前尝试过安装过挺多的方案,基本上的方案我都部署并稍微试用了一下,包括但不限于以下几种,我附上了地址和对应的软件界面

Wiki.js

官网地址:https://js.wiki/
使用界面:

Wiki.js使用界面
Wiki.js使用界面

MediaWiki

官网地址:https://www.mediawiki.org/wiki/MediaWiki
使用界面:

MediaWiki使用界面
MediaWiki使用界面

为知笔记

官网地址:https://www.wiz.cn/
使用界面:

MediaWiki使用界面
为知笔记使用界面

Shawdoc

官网地址:https://www.showdoc.com.cn/
使用界面:

Shawdoc使用界面

Docsify

官网地址:https://docsify.js.org/
使用界面:

Docsify使用界面
Docsify使用界面

Google Outline

官网地址:https://www.getoutline.com/
使用界面:

Google Outline的使用界面
Google Outline的使用界面

除此之外,其实还部署过尝试过很多其他的,有些可能记不上名字来了。

最终的选择

试过了很多同类型的产品,最终还是选择了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跳转HTTPS
  • HTTP_IP:直接设置成0.0.0.0。注释中的127.0.0.1我之前试过,改成自己服务器的公网IP的话,又会导致脚本创建的Nginx无法启动,因此还是得设置0.0.0.0
  • HTTP_PORT_IP:想绑定的服务器(宿主机)的端口,默认是8888,如果是用IP访问,记得和IP的端口保持一致
  • NETWORKS:网络名称,这个脚本搭建的服务都是有自己的一个网络,只把内部的一个Nginx暴露出来了,依赖的其他组件相当于都是内网通信,极大的增加了安全性,这个参数的值就是一个名字,不需要修改。

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_USERNAMESMTP_FROM_EMAILSMTP_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对应版本的远程镜像,然后创建容器,创建完成后,会要求创建一个用户,需要我们输入用户名密码等信息,根据流程走即可。

之后在浏览器中访问你刚刚配置的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如何进入设置界面
outline如何进入设置界面

左侧找到功能菜单,右侧会出现无缝编辑功能,打开后,就可以大家一起编辑同一篇文章了。

outline如何打开多人协作开关
outline如何打开多人协作开关

打开多人协作后,文档的编辑就不需要点击对应文档右上角的编辑按钮了,直接修改正文内容即可,如果是自己一个人用,还是关闭这个功能感觉好一点

导入和导出功能

同样点击左上角的设置,进来设置界面,左侧可以看到导出菜单,里面就有导出按钮,直接点击即可,点击后会提交任务,需要等待一段时间。

Outline导出功能界面
Outline导出功能界面

如果我们配置了通知邮箱,导出任务完成后会发送邮件通知,如果没有设置我们也可以定时回来这个界面看一下。在导出按钮下方会出现导出文件的下载按钮,点击下载即可获取到一个ZIP格式的压缩文件,里面就是我们导出的数据。

在导出菜单的上方,是导入功能,导入支持多种形式导入,我们可以导入之前在Outline中导出的存储Markdown的压缩包,也可以从Notion中导入文档,如果是企业服务,甚至可以从Confluence中导入(需要企业服务才可以,应该是要付费使用)。选择我们需要的方式,点击导入并上传压缩包即可。

Outline导入功能界面
Outline导入功能界面

如果导入的时候报错unable to verify the first certificate,这个一般是配置了SSL之后可能会出现,问题原因是我们的SSL证书存在问题,没有设置好,需要去检查你的Nginx证书设置。除了这个方式,我们也可以在outline-docker-compose目录中找到env.outline文件,在里面添加一行参数:

NODE_TLS_REJECT_UNAUTHORIZED=0

之后在outline-docker-compose目录依次使用make stopmake 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 stopmake 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_USERNAMESMTP_FROM_EMAILSMTP_REPLY_EMAIL这三个配置项可以设置成一样的,其他的根据自己的邮件客户端的文档设置即可。

# Emails configuration (optional)
SMTP_HOST=
SMTP_PORT=
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_FROM_EMAIL=
SMTP_REPLY_EMAIL=

当配置好SMTP信息后,使用依次使用make stopmake start重启服务后,通知功能界面就变成这样了

配置邮件通知后的通知界面
配置邮件通知后的通知界面

如何分享文档或文档集给他人

Outline有严格的权限控制,可以对每个文档集设置不同的权限。如果想要查看某个文档集的权限,可以点击对应文档集右侧的省略号,找到权限按钮

如何查看Outline文档集的权限
如何查看Outline文档集的权限

然后里面可以看到这个文档集的权限:

额外访问权限:可以对某个群组或者某个人员设置特定的访问权限,比如这个人

默认访问权限:一个用户如果没有设置额外访问权限,这个文档集的权限对于他来说就是取决于默认访问权限

公开共享设置:这个文档集里面的文档是否可以被用户公开到互联网中,如果公开到互联网中,任何人都可以查看

如何修改Outline文档集的权限
如何修改Outline文档集的权限

当我们打开了公开共享文档后,就可以在对应的文档右上角点击分享按钮(如果不能的话,刷新一下网页),勾选发布到互联网,然后复制链接即可,如果要共享这个页面下包含的文档,可以勾选下方的共享子文档

在对应的Outline文档界面分享文档到互联网
在对应的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信息,可以在其中进行搜索你的需求或者错误信息,注意用英文搜索。

Outline官方仓库Issues地址
Outline官方仓库Issues地址

第二个是Discussions,一般会在这里进行讨论,里面有一个分类是Self Hosting,聚集了一堆我们这种自己搭建服务的一群人,大部分问题都可以在里面找到解决。

Outline官方仓库Discussions搜索
Outline官方仓库Discussions搜索

注意删除一些非必要的筛选条件,防止我们需要的结果被过滤掉了。

Outline官方仓库Issues搜索删除过滤条件
Outline官方仓库Issues搜索删除过滤条件

如果这两个地方都不能满足你的需求,去百度或者谷歌基本上也是搜索不到的,那么你可以点击这两个地方的任何一个地方(最好是第二个地方)的界面右上角的绿色按钮进行提交你的问题,然后耐心等待,热心群众会帮你解决的。

部署脚本的问题

如果是部署脚本的问题,同样可以去部署脚本所在Github仓库的Issues界面查找自己需要的内容,如果查不到,也可以提交自己的Issues,然后耐心等待解答或自己继续钻研。

参考链接

原创文章,创作不易,版权所有,抄袭必究

作者:幽叶草。如若转载,需要先经过作者同意,并附上原文链接 https://blog.uusite.com/cloud/deploy/331.html

(10)
幽叶草的头像幽叶草
上一篇 2023年3月12日 下午5:14
下一篇 2023年3月19日 上午9:24

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

评论列表(57条)

  • 手动更新outline知识库 - 有序集合 2024年1月11日 下午7:12

    […] 参考链接:幽夜草博客 […]

  • hai
    hai 2023年12月18日 上午11:17

    hi,make install 后报错呢

  • pipu
    pipu 2023年12月12日 下午1:44

    Hi,我部署成功了感谢你的教程。有个问题想请教下,我登录以后看到了openid登录,请问这个如何操作?

    • 幽叶草的头像
      幽叶草 2023年12月12日 下午6:44

      @pipu你在执行make install的时候会让你创建一个用户名和密码,使用这个用户名和密码登录即可。

  • steady
    steady 2023年11月12日 上午11:11

    博主你好,请问文档集里面的图标要怎么修改呢? 如果用docker compose方式部署是不是没办法修改呢?

    • 幽叶草的头像
      幽叶草 2023年11月12日 上午11:42

      @steady不是的,都可以修改的,修改图标的话,你选中左侧对应的文档集,有编辑按钮,在编辑界面可以进行重命名和修改图标

    • steady
      steady 2023年11月12日 上午11:57

      @幽叶草是的 这个我清楚,我的图标选框中只有默认的几个图标,我看你博客里面图标都是自定义的。请问你是怎么添加图表的呢?
      另外outline有windows的客户端,如果是私有化部署的,登录使用gitlab。是不是没办法使用windows客户端呢?因为没有找到gitlab登录的选项。

    • steady
      steady 2023年11月12日 下午3:26

      @幽叶草好的 我知道了,图标是一样的,只不过你的配色不一样,猛的一看以为你是自定义的图标,抱歉。你一定是UE出身的,哈哈哈哈。

    • 幽叶草的头像
      幽叶草 2023年11月12日 下午3:59

      @steady哈哈哈哈,我就是瞎整,都弄成不一样的

  • inno
    inno 2023年11月9日 下午8:50

    博主,我有个新的问题,outline wiki似乎无法导出进行备份。
    我查找了这个docker项目中的issue发现也有人提出了[这个问题](https://github.com/vicalloy/outline-docker-compose/issues/69)
    看了一下好像就是博主您教程中的提到的`AWS_S3_UPLOAD_MAX_SIZE`以及`MAXIMUM_IMPORT_SIZE`这两项,我检查后仍然无法进行导出
    issue也已经提交了

    • 幽叶草的头像
      幽叶草 2023年11月12日 下午4:01

      @inno这两个参数跟导出关系不大,主要是导入的。你这边用的是什么文件系统?这个问题有没有在各个容器的日志里面发现什么异常?

    • inno
      inno 2023年11月13日 下午10:00

      @幽叶草现在默认是local

    • Rick
      Rick 2023年11月13日 上午3:36

      @inno升级outline至0.72.2后可以导出

    • 幽叶草的头像
      幽叶草 2023年11月13日 下午10:01

      @Rick嗯嗯,可以的,这也是Issues的解决方案

    • inno
      inno 2023年11月13日 下午10:06

      @Rick好的 谢谢!

  • 李逍遥
    李逍遥 2023年11月4日 下午4:22

    楼主,为什么部署完之后只能在服务器上用127.0.0.1:8888访问,在服务器或者其他电脑上用IP就不行呢。。。。

    • 幽叶草的头像
      幽叶草 2023年11月4日 下午4:29

      @李逍遥你看一下其他电脑上telnet看看能连通你这个端口吗?
      如果连不通的话,那你要看看是不是防火墙需要开放端口

    • 李逍遥
      李逍遥 2023年11月4日 下午5:50

      @李逍遥服务器端口全放开了 也不行,上传附件也失败,好难啊。。。

    • 幽叶草的头像
      幽叶草 2023年11月4日 下午7:20

      @李逍遥先telnet看看端口能不能通吧,能的话看看nginx的日志,然后你可以看看各个容器异常的日志,从里面找出问题

  • 一般路过的路人
    一般路过的路人 2023年11月3日 下午7:26

    今天试了一下图片本地存储,效果有点不及预期。
    文件结构还是和minio一样,uploads里面套两层才到图片,本来以为可以统一在一个路径下方便管理。优点是图片名字和上传的图片名保持一致了,至少可以用find比较好找(之前前台上传图片名字都变成image)。
    修改很简单:config.sh和env.outline添加local、nginx的default.conf和docker-compose.yml删去minio相关内容,添加本地存储路径即可。存储文件夹权限我配成777才行,官方的改法还是提示无权限。

    • 幽叶草的头像
      幽叶草 2023年11月3日 下午7:28
    • 一般路过的路人
      一般路过的路人 2023年11月4日 上午10:32

      @幽叶草补充一下,如果选择直接切换,minio的文件会因为路径不同在前台变成空白图片。
      这个时候要先把这些空白图片都处理掉再使用导出功能。否则会导出失败并在前台持续出现正在导出的提示。这个导出会记录在数据库中,所以通过版本更新没法去除,只能进数据库删。详见issue
      https://github.com/outline/outline/issues/6109

  • Pluto
    Pluto 2023年10月31日 下午12:18

    ✔ 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

    • 幽叶草的头像
      幽叶草 2023年10月31日 下午1:07

      @Pluto看起来是执行cd ./scripts && bash ./main.sh reload_nginx的时候报错了导致的
      你先看下创建的这些容器各自的日志,看看有没有报错,然后再看下outline-docker-compose-wk-nginx-1这个容器里面生成的default.conf和nginx.conf有没有问题

    • 李逍遥
      李逍遥 2023年11月3日 下午4:48

      @Pluto我也是一样的问题,你解决了吗?搞了大半天了直接处理不了笑哭

    • 一般路过的路人
      一般路过的路人 2023年11月4日 上午10:23

      @Pluto看起来你是用local的存储方式?nginx没开启来可能是default配置文件里面minio的部分还在,导致nginx一直起不来。删掉即可。详见我下面11月3日评论

    • 李逍遥
      李逍遥 2023年11月4日 下午4:15

      @PlutoLinux服务器权限问题,应该使用的ubuntuserver版,生成的docker里边文件无权限特别是nginx的配置文件,我也不知道为毛这样,因为我从docker镜像往外复制文件时提示权限不足,所以想到这里。重装了服务器好了。。。汗笑哭

  • inno
    inno 2023年10月29日 下午5:42

    老哥我想问一下,按照您的步骤进行搭建此服务,有出现过outline无法上传图片的情形吗

    • 幽叶草的头像
      幽叶草 2023年10月29日 下午5:49

      @inno从来没有的,你的报错是啥呢,我可以帮你简单看看

    • inno
      inno 2023年10月29日 下午6:03

      @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
      }
      “`

    • 幽叶草的头像
      幽叶草 2023年10月29日 下午6:21

      @inno你是用本地存储还是minio容器呢,这是哪里的报错,接口还是minio容器呢,如果是minio,可能要检查下配置文件的key之类的。

    • inno
      inno 2023年10月29日 下午6:45

      @inno@幽叶草 谢谢老哥,我发现docker中没有minio这一项存在 我现在再重试一边看看

    • inno
      inno 2023年10月29日 下午6:49

      @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

    • 幽叶草的头像
      幽叶草 2023年10月29日 下午6:55

      @inno看起来应该是他的脚本改了,我看他已经现在用S3作为数据存储了,你可以看一下他git log前几个版本,我现在还在外面,回去我帮你看下,或者明天。

    • 幽叶草的头像
      幽叶草 2023年10月29日 下午7:06

      @inno我看了下脚本作者的Issues,里面有反馈这个问题,也给出了解决方案,你可以试下:https://github.com/vicalloy/outline-docker-compose/issues/64

    • inno
      inno 2023年10月29日 下午7:09

      @inno@幽叶草 谢谢大佬,感激不尽

    • inno
      inno 2023年10月29日 下午9:33

      @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

      大哭大哭不知道怎么解决这种问题

    • 幽叶草的头像
      幽叶草 2023年10月29日 下午9:40

      @inno主要的报错信息看起来是:can not modify /etc/nginx/conf.d/default.conf (read-only file system?)

      你的nginx的配置文件是不是没有权限修改。

      还有就是你为什么要在多台机器上都安装outline呢,是想搭建集群吗?

    • inno
      inno 2023年10月29日 下午10:17

      @inno@幽叶草 第一台机子是测试机,因为我不太会装软件,所以专门买了一台(一个月),这台快到期了。所以想先试一试,再在自己的主力机上安装。没想到还是没能复现。
      nginx的文件我没有动过

    • inno
      inno 2023年10月29日 下午10:56

      @inno@幽叶草 谢谢老哥 修复了!

    • 幽叶草的头像
      幽叶草 2023年10月29日 下午11:17

      @inno嗯嗯,后面发现是啥原因导致的呢

    • inno
      inno 2023年10月30日 上午10:23

      @inno@幽叶草 发现是我ip还是127.0.0.1 ,没有改成0.0.0.0笑哭

  • inno
    inno 2023年10月29日 下午5:34

    谢谢老哥!!!我看你的教程一遍过,看别人的教程楞是搭了好几天没好色花。十分感谢!!!

  • ubuntu
    ubuntu 2023年10月23日 下午1:51

    outline的分享功能疑问:点击分享后,获得分享链接,好像只有在登陆后,才能查看。未登录人员,只有一个回到主页的页面?

    • 幽叶草的头像
      幽叶草 2023年10月23日 下午10:46

      @ubuntu如果要不登陆也可以查看的话,分享的地方记得勾选一下”发布到互联网”

  • 雨夜带刀
    雨夜带刀 2023年8月15日 上午11:27

    如果 Nginx 安装在宿主机中的话,再使用 docker 部署一个 Nginx 给 Outline 使用是不是有点多余,毕竟又多了一层转发,是否考虑将 Nginx 作为可选项。

    • 幽叶草的头像
      幽叶草 2023年8月24日 上午1:04

      @雨夜带刀嗯嗯,你可以考虑将宿主机的Nginx直接用来做转发。只是个人觉得这样部署方便,不需要修改脚本,不用了直接删除就好了,而且不是开放给所有人,主要是自己用或者小范围用,数据量也不大,多一个少一个也区别不是很大。

  • 一般路过的路人
    一般路过的路人 2023年8月4日 下午8:53

    感谢!在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

    • 幽叶草的头像
      幽叶草 2023年8月4日 下午8:56

      @一般路过的路人感谢你的认可和补充~

    • 一般路过的路人
      一般路过的路人 2023年8月23日 上午10:51

      @幽叶草你好,请问博主知道要怎么修改文字的行间距、字体大小、字体颜色吗?我加标签好像不成功。如果博主知道的话能否分别给个例子呢?谢谢!

    • 幽叶草的头像
      幽叶草 2023年8月24日 上午1:10

      @一般路过的路人Outline对直接嵌入并渲染html这一块还是不是特别支持,没有本地的Typora支持的好。因为Outline可能主要是偏向于文档(类似于Confluence)而不是一个严格的Markdown编辑器,你说的这些可能主要还是需要靠大小标题,高亮之类的来实现。

    • 一般路过的路人
      一般路过的路人 2023年8月25日 下午3:45

      @幽叶草谢谢,那请问博主知道快捷键里面的”空上箭头”要怎么打吗?比如快捷键->格式化->段落的“Ctrl + ⇧ + 0”

    • 幽叶草的头像
      幽叶草 2023年8月29日 下午11:50

      @一般路过的路人快捷键->格式化->段落的“Ctrl + ⇧ + 0”其实就是按住Ctrl+Shift+0哈
      你说的 ⇧ 其实就是Shift,有的键盘Shift上面就会刻着 ⇧

    • 一般路过的路人
      一般路过的路人 2023年9月16日 下午10:54

      @幽叶草感谢回复,请问博主知道要怎么访问minio吗?

  • eddie
    eddie 2023年7月31日 下午3:53

    根据教程成功部署了,谢谢~