基于https协议访问SeaTable
老苏之前写过
但是还有一个遗留问题,按之前的设置,在使用 https
协议时,登录成功后会出现跨域问题,因为老苏有个朋友还在使用,所以最终还是花了点时间把它给解决掉了。
本文已通过朋友的验证,他有公网
IP
,采用了群晖自带的反向代理服务。
安装
如果你在局域网已经可以正常使用,可以跳到下一个章节
将下面的内容保存为 docker-compose.yml
文件
示例中
SEATABLE_SERVER_HOSTNAME
还是用了局域网IP
,新安装的话可以直接用域名,有端口的话也要带上
1 | version: '2.0' |
然后执行下面的命令安装
1 | # 新建文件夹 seatable 和 子目录 |
域名
准备一个域名
老苏的域名没有备案,所以不能使用
80
和443
端口,实际访问时是https://seatable.laosu.ml:444
域名 | 局域网地址 | 备注 |
---|---|---|
https://seatable.laosu.ml |
http://192.168.0.197:16443 |
SeaTable 的访问地址 |
- 有公网地址,做域名解析即可;
- 没有公网地址,如果是
DDNS
应该只要做端口映射; - 没有公网地址,使用的
frp
实现的内网穿透;
老苏是第三种,用 Nginx Proxy Manager
做了反代处理
群晖自带的反代也可以,这一点已得到验证
其中:
192.168.0.197
为群晖主机的IP
16080
和16443
是分配给SeaTable
的本机端口,前者为http
协议端口,后者为https
协议端口
因为准备采用 https
协议,所以反代了 16443
端口
SSL
全部勾选了
修改
- 下载域名对应的
nginx
证书,下图示例是dnspod
并将证书上传到 ssl
目录
修改
dtable_web_settings.py
- 将
http://192.168.0.197/
改为https://seatable.laosu.ml:444/
,除了FILE_SERVER_ROOT
之外; - 如果
docker-compose.yml
中已经用了域名,这里只要将http
协议改为https
协议,但是FILE_SERVER_ROOT
要使用局域网IP
,否则可能导致xlsx
文件导入出错;
以上参考了 https://bbs.seatable.cn/t/topic/1063,但老苏并未验证;
- 新增
CSRF_TRUSTED_ORIGINS = ['seatable.laosu.ml:444']
;
- 将
修改
ccnet.conf
- 将
http://192.168.0.197/
改为https://seatable.laosu.ml:444/
,如果已经是域名,这里只要将http
协议改为https
协议;
- 将
- 修改
nginx.conf
将
1 | server { |
修改为下面这样
1 | server { |
需要注意:
server_name
替换为你的域名,但不要带端口。因为docker-compose.yml
中如果你用了域名 + 端口的话,这里会带端口;- 注意证书的名称,不同机构签发的证书名称和后缀可能不同,注意修改;
老苏用的是
npm
自动申请的Let's Encrypt
证书
下图是
dnspod
网站下载的证书,其中:
ssl_certificate
对应的是seatable.laosu.ml_bundle.crt
ssl_certificate_key
对应的是seatable.laosu.ml.key
- 执行下面的命令
1 | # 一键重启 |
不出意外的,现在可以在浏览器中通过 https://seatable.laosu.ml:444
访问了,而且登录成功后不再出现 CSRF verification failed
错误。
说明
经过上面的设置后,局域网中不要再使用 IP
访问
- 通过
http://192.168.0.197:16080
访问,会强制跳转到https
协议
- 通过
http://192.168.0.197:16443
访问,可以使用,但是会显示不安全
如果显示
502
错误时,可以用于查看服务是否已正常启动
参考文档
Enterprise Edition - SeaTable Admin Manual
地址:https://manual.seatable.io/docker/Enterprise-Edition/Deploy%20SeaTable-EE%20with%20Docker/CSRF verification failed when using Seatable 2.1.0 without LetsEncrypt - User Talk - SeaTable Forum
地址:https://forum.seatable.io/t/csrf-verification-failed-when-using-seatable-2-1-0-without-letsencrypt/600开发者版本无法导入xlsx - 服务器内部错误 - 产品反馈 - SeaTable 论坛
地址:https://bbs.seatable.cn/t/topic/1063
预览:
又有网友反馈excel导入出现服务器内部错误,抽空安装了
latest
,对应版本是3.4.0
和上文中对比,
FILE_SERVER_ROOT
必须也要用域名,否则就会报错,暂时未发现其他的;你好,我的seafile用的群晖docker布署的,excel导入就出现服务器内部错误,按照教程file_seat_root改用用内网lp,其余用域名,但还是导入错误,能否请教一下,应该会是什么错误?怎么处理?
@leeyong: 你说了之后我特意测试了一下,
,估计可能是官方修改了?
file_seat_root
也用域名是没问题的@杨浦老苏: 老苏同学你好,我昨天在邮箱给您发消息了,不知您收到没?我那还是不行,我将配置的截图发您了,麻烦你查看一下。
@leeyong: 我查了 wbsu2003@gmail.com 和 wbsu2003@hotmail.com 都没有
@杨浦老苏: 您在这个邮箱wbsu2003@qq.com看有吗?我也发了您另一个邮箱
@leeyong:
3.1
开发版中,dtable_web_settings.py
文件中多了一行DTABLE_STORAGE_SERVER_URL = 'http://127.0.0.1:6666/'
,除了这行没改(老苏不确定是干嘛用的,所以没改,等遇到问题再来确定是不是要改),其他的网址都需要改为域名+端口,包括FILE_SERVER_ROOT
其他设置是一样的
还有售后 👍
@FGHWETT: 当初就是因为他需要,老苏才去研究
SeaTable
的安装使用的,让他用了一年多的IP
访问,已经很不好意思了 😂