基于https协议访问SeaTable

在这里插入图片描述

老苏之前写过

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

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

安装

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

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

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

version: '2.0'

services:
  db:
    image: mariadb:10.6
    container_name: seatable-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=aW53Tza
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - ./mysql:/var/lib/mysql

  memcached:
    image: memcached:1.5.6
    container_name: seatable-memcached
    entrypoint: memcached -m 256

  redis:
    image: redis:6.2
    container_name: seatable-redis
          
  seatable:
    image: seatable/seatable:latest
    container_name: seatable
    ports:
      - "16080:80"
      - "16443:443"
    volumes:
      - ./:/shared
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=aW53Tza
      - SEATABLE_SERVER_LETSENCRYPT=False
      - SEATABLE_SERVER_HOSTNAME=192.168.0.197
      - TIME_ZONE=Asia/Shanghai
    depends_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.mlhttp://192.168.0.197:16443SeaTable 的访问地址
  • 有公网地址,做域名解析即可;
  • 没有公网地址,如果是 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 letsencrypt
    location /.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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨浦老苏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值