老苏之前写过

  • 在线协同表格SeaTable(安装篇)
  • 在线协同表格SeaTable(设置篇)

但是还有一个遗留问题,按之前的设置,在使用 https 协议时,登录成功后会出现跨域问题,因为老苏有个朋友还在使用,所以最终还是花了点时间把它给解决掉了。

本文已通过朋友的验证,他有公网 IP ,采用了群晖自带的反向代理服务。

安装

如果你在局域网已经可以正常使用,可以跳到下一个章节

将下面的内容保存为 docker-compose.yml 文件

示例中 SEATABLE_SERVER_HOSTNAME 还是用了局域网 IP,新安装的话可以直接用域名,有端口的话也要带上

version: '2.0'services:db:image: mariadb:10.6container_name: seatable-mysqlenvironment:- MYSQL_ROOT_PASSWORD=aW53Tza- MYSQL_LOG_CONSOLE=truevolumes:- ./mysql:/var/lib/mysqlmemcached:image: memcached:1.5.6container_name: seatable-memcachedentrypoint: memcached -m 256redis:image: redis:6.2container_name: seatable-redisseatable:image: seatable/seatable:latestcontainer_name: seatableports:- "16080:80"- "16443:443"volumes:- ./:/sharedenvironment:- DB_HOST=db- DB_ROOT_PASSWD=aW53Tza- SEATABLE_SERVER_LETSENCRYPT=False- SEATABLE_SERVER_HOSTNAME=192.168.0.197- TIME_ZONE=Asia/Shanghaidepends_on:- db- memcached- redis

然后执行下面的命令安装

# 新建文件夹 seatable 和 子目录
mkdir -p /volume2/docker/seatable/mysql# 进入 seatable 目录
cd /volume2/docker/seatable# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d# 启动 SeaTable 服务
docker exec -d seatable /shared/seatable/scripts/seatable.sh start# 创建一个管理员帐户
docker exec -it seatable /shared/seatable/scripts/seatable.sh superuser

域名

准备一个域名

老苏的域名没有备案,所以不能使用 80443 端口,实际访问时是 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
  • 1608016443 是分配给 SeaTable 的本机端口,前者为 http 协议端口,后者为 https 协议端口

因为准备采用 https 协议,所以反代了 16443 端口

SSL 全部勾选了

修改

  1. 下载域名对应的 nginx 证书,下图示例是 dnspod

并将证书上传到 ssl 目录

  1. 修改 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']

  1. 修改 ccnet.conf

    • http://192.168.0.197/ 改为 https://seatable.laosu.ml:444/,如果已经是域名,这里只要将 http 协议改为 https 协议;

  1. 修改 nginx.conf

server {server_name 192.168.0.197;listen 80;# for letsencryptlocation /.well-known/acme-challenge/ {alias /var/www/challenges/;try_files $uri =404;}

修改为下面这样

server {server_name    seatable.laosu.ml;listen 80;listen 443 ssl;if ($scheme = http) {return 302 https://$server_name$request_uri;}ssl_certificate      /shared/ssl/fullchain.pem;ssl_certificate_key  /shared/ssl/privkey.pem;

需要注意:

  1. server_name 替换为你的域名,但不要带端口。因为 docker-compose.yml 中如果你用了域名 + 端口的话,这里会带端口;
  2. 注意证书的名称,不同机构签发的证书名称和后缀可能不同,注意修改;

老苏用的是 npm 自动申请的 Let's Encrypt 证书

下图是 dnspod 网站下载的证书,其中:

  • ssl_certificate 对应的是 seatable.laosu.ml_bundle.crt
  • ssl_certificate_key 对应的是 seatable.laosu.ml.key

  1. 执行下面的命令
# 一键重启
docker-compose restart# 启动 SeaTable 服务
docker exec -d seatable /shared/seatable/scripts/seatable.sh start

不出意外的,现在可以在浏览器中通过 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

基于https协议访问SeaTable相关推荐

  1. 二、基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式

    一.基于HTTPS协议的12306抢票软件设计与实现--实现效果 二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现-- ...

  2. OpenShift 4 之使用https协议访问Route

    <OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.6环境中验证 使用OpenShift的oc命令可以将Service内部访问转为(oc的expose子 ...

  3. 四、基于HTTPS协议的12306抢票软件设计与实现--水平DNS并发查询分享

    一.基于HTTPS协议的12306抢票软件设计与实现--实现效果  二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现- ...

  4. 一、基于HTTPS协议的12306抢票软件设计与实现--实现效果

    一.基于HTTPS协议的12306抢票软件设计与实现--实现效果 二.基于HTTPS协议的12306抢票软件设计与实现--相关接口以及数据格式 三.基于HTTPS协议的12306抢票软件设计与实现-- ...

  5. gitlab 配https_GitLab-ce配置HTTPS协议访问

    本地生成https证书 我的gitlab安装环境为Ubuntu 18.04,安装好之后默认使用的是HTTP协议访问:没有HTTPS协议安全于是自己搞了搞,各种查资料啊,虽然中间也有不懂得地方,但是总算 ...

  6. springboot配置SSL证书设置https协议访问的端口

    配置SSL证书需要证书文件 和 密钥 1. 将证书文件移动到resources目录下 2. 在yml配置文件中配置如下: server:port: 443 #服务端口ssl:key-store: cl ...

  7. centos php ssl,CentOS下在Nginx中添加SSL证书以支持HTTPS协议访问

    1,上传证书文件至服务器,如 /usr/local/nginx/ssl 目录下 2,修改nginx的配置文件,若是虚拟站点,刚需要修改对应的配置文件,修改内容如下: #基本的SSL配置 server ...

  8. php判断是不是iphone访问,php基于http协议访问,判断访问来源iphone,android,微信浏览器,pc电脑...

    当我们采用php作为服务数据端口,为移动端,pc端提供数据接口的时候,可能会要求记录接口访问的来源是来之哪里. 例如:生成订单,可能就需要记录,以便做一些数据分析,为运营和推广提供一些数据支持. 代码 ...

  9. 基于Https协议返回Jason字符串

    一:代码结构 二:框架结果: spring+springMvc+springJdbc 三:源代码 1:Ctrl 层 package com.todaytech.yth.gdsd.base.DataIn ...

最新文章

  1. mysql免压缩安装教程_MySql免解压版安装教程
  2. PHP文件头部(header)解释
  3. 5.js模式-职责链模式
  4. php去掉多字节字符,PHP 面试题 - 如果没有 mb 系列函数,如何切割多字节字符串...
  5. 深圳市龙岗职业技术学校录取分数线计算机,深圳市龙岗区第二职业技术学校2021年招生录取分数线...
  6. 设计模式之 --- 工厂模式(下)
  7. Rust: HDF5文件的处理探索(to be continued.......)
  8. Java之JDBC安装、使用详解(2021最新!)
  9. 前端Demo - 日历控件纯原生实现
  10. 富士通Fujitsu DPK1180K 打印机驱动
  11. python从键盘输入一个数、计算出大于n的最小素数_python 从键盘任意输入一个正整数n,并找出大于n的最小素数,这个程序怎么写...
  12. 红楼梦诗词全集---留一份吧,太珍贵了!!
  13. script什么意思中文翻译成,script的中文意思是什么
  14. 孩子们的世界很大,很大...(评刘海强日记)
  15. navicat 关于orcale新建表空间,用户和权限分配
  16. vip地址能ping不通_Nginx+keepalive局域网其它主机ping vip不通
  17. 【AWS云从业者基础知识笔记】——模块11:AWS认证的云从业者基础
  18. php redis pipeline管道技术
  19. java 支付宝退款批次号生成
  20. [十月往昔]——Linux内核中的list.h浅谈

热门文章

  1. JavaScript-----tab栏的切换
  2. 安全系列之:跨域资源共享CORS
  3. 微信小程序判断进入小程序的入口(场景值)
  4. C 启用或禁用网卡 2种方法
  5. android使用微信与支付宝支付在小米miui系统上ui线程被异常kill的bug修复
  6. mate10pro升级鸿蒙吗,Mate40 Pro用户升级鸿蒙OS, 客观谈论了个人一天使用感受
  7. 台式计算机无法连接网络,终于理解台式电脑怎么连接网络
  8. 九九乘法表(结果为三角形式)
  9. 如何使用jQuery删除“disabled”属性?
  10. 银行功能实现:转账及余额查询--(含源码,java实现)