使用 Docker 部署 SeaTable

注意: 企业版是付费产品,安装使用前请联系我们销售

服务器配置要求

最低要求

推荐配置

快速开始

安装 Docker-compose

SeaTable 镜像是使用 docker-compose 下载安装,您应该首先安装 docker-compose 命令

# for CentOS
yum install docker-compose -y

# for Ubuntu
apt-get install docker-compose -y

下载 SeaTable 镜像

拉取 SeaTable 镜像

docker pull docker.seafile.top/seafileltd/seatable-enterprise:latest

您可以在官方 docker仓库 中找到 SeaTable 的所有版本 。

下载和修改 docker-compose.yml

我们建议您在/opt/seatable中安装 SeaTable ,先创建目录

mkdir /opt/seatable

docker-compose.yml 示例文件下载到 /opt/seatable, 然后根据您的环境修改文件, 需要修改以下字段

初始化数据库

使用以下命令初始化数据库

docker-compose up

注意:您应该在带有 docker-compose.yml的目录中运行上述命令。

稍等片刻,当您在输出日志中看到 This is a idle script (infinite loop) to keep container running 时,数据库已初始化成功。

然后按键盘的 Ctrl + C来结束初始化命令。

添加许可证文件(seatable-license.txt)

把 seatable-license.txt 许可证文件,只需将其放在 SeaTable 数据卷的目录中即可。 如果数据卷的目录为 /opt/seatable/seatable-data,则在您的服务器中:

## 在宿主机上操作
cp seafile-license.txt /opt/seatable/seatable-data/seatable/

注意: 没有 license 文件,SeaTable 程序是不能运行的

启动 Docker 容器

使用以下命令启动 SeaTable 容器

docker-compose up -d

注意:您应该在带有 docker-compose.yml的目录中运行上述命令。

启动 SeaTable 服务器

现在,您可以启动 SeaTable 服务并创建管理员账号

# 启动 SeaTable 服务
docker exec -d seatable /shared/seatable/scripts/seatable.sh start
# 创建一个管理员帐户
docker exec -it seatable /shared/seatable/scripts/seatable.sh superuser  

注意,第一个命令使用 -d 参数表示要在后台运行的服务, 第二个命令使用 -it 参数表示它是一个交互式命令。

接下来,您可以通过网站访问 SeaTable。

注意!!!如果表格加载的显示 Network error

用 Chrome 的 debug 模式看看哪个网络请求出错。一般是配置文件 (dtable_web_settings.py) 中的 URL 相关的配置项没有写对。这是因为 SeaTable 服务器是由多个组件构成的。必须通过配置文件来告诉不同的组件它服务的外部 URL 是什么。配置文件中的配置只在首次启动的时候从 docker-compose 中读取和写入。如果你之后修改了地址,需要手工修改配置文件。

主要是下面四个地址:

DTABLE_SERVER_URL = 'https://seatable.yourdomain.com/dtable-server/'
DTABLE_SOCKET_URL = 'https://seatable.yourdomain.com/'

# 供用户访问SeaTable服务器的 dtable web的URL
DTABLE_WEB_SERVICE_URL = 'https://seatable.yourdomain.com/'

# 文件服务器URL
FILE_SERVER_ROOT = 'https://seatable.yourdomain.com/seafhttp/'

修改后别忘了重启服务

docker exec -d seatable /shared/seatable/scripts/seatable.sh stop
docker exec -d seatable /shared/seatable/scripts/seatable.sh start

更多配置选项

部署 https

使用 LetsEncrypt SSL 证书

如果您在 “ docker-compose.yml” 中将 SEATABLE_SERVER_LETSENCRYP 设置为 True,则容器将自动为您请求一个 Letsencrypt 签名的 SSL 证书。

例如

  seatable:
    ...
    ports:
      - "80:80"
      - "443:443"
      ...
    environment:
      ...
      - SEATABLE_SERVER_LETSENCRYPT=True   # 默认值为 False。 是否使用加密证书
      - SEATABLE_SERVER_HOSTNAME=example.seatable.com  # 指定启用 https 时的主机名

注意:由于 Nginx 配置文件仅在首次运行容器时自动生成,因此最好在首次执行 docker-compose up -d 命令之前将 SEATABLE_SERVER_LETSENCRYPT 设置为 True。

如果要使用自己的 SSL 证书,可以参考以下步骤

添加您自己的 SSL 证书

  1. 将 SSL 证书文件上传到 SeaTable 数据卷目录:/您的 SeaTable 数据卷目录/ssl/
  2. 将 ccnet.conf,dtable_web_settings.py 和 dtable_server_config.json 中每个 SERVER_URL 的 “ http” 更改为 “ https”。
  3. 重新启动 SeaTable 服务:docker exec -it seatable /shared/seatable/scripts/seatable.sh restart
  4. 重启 Memcached 服务:docker restart seatable-memcached
  5. 修改 Nginx 配置文件:/您的 SeaTable 数据卷目录 /seatable/conf/nginx.conf
  6. 重新加载 ginx 配置文件:docker exec -it seatable /usr/sbin/nginx -s reload

例如

server {
    if ($host = example.seatable.com) {
        return 301 https://$host$request_uri;
    }
    listen 80;
    server_name example.seatable.com;
    return 404;
}

server {
    server_name example.seatable.com;

    listen 443 ssl;
    ssl_certificate /shared/ssl/<your-ssl.cer>;
    ssl_certificate_key /shared/ssl/<your-ssl.key>;

    proxy_set_header X-Forwarded-For $remote_addr;
    ......

高级配置

所有配置文件都在 /您的 SeaTable 数据卷目录/seatable/conf/ 下。

修改后,您需要重新启动 SeaTable 服务器

docker exec -d seatable /shared/seatable/scripts/seatable.sh restart

SeaTable 目录结构

与宿主机共享的 Volume

容器中的 /shared 目录是和宿主机共享的卷,这里存放需要持久化的数据

日志

SeaTable 日志位于 docker 中的 /shared/seatable/logs下,或者位于运行 docker 的服务器中的/您的 SeaTable 数据卷目录 /seatable/logs下。

Nginx 日志位于运行 docker 的服务器中的 /shared/nginx-logs/您的 SeaTable 数据卷目录 /nginx-logs下。

常见问题

如果由于某种原因安装失败,如何从干净状态重新开始?

只需删除目录 /opt/seatable,然后重新开始即可。

LetsEncrypt SSL 证书将要过期

如果证书没有自动更新,需要执行命令 /templates/renew_cert.sh 以手动更新证书。

SEATABLE_SERVER_LETSENCRYPT=false 改为 true

在使用 http 一段时间后,想改为 https,需要移走并备份 nginx.conf

mv /opt/seatable/shared/seatable/conf/nginx.conf /opt/seatable/shared/seatable/conf/nginx.conf.bak

执行以下命令申请证书

docker exec seatable /templates/seatable.sh init

您还需要手动将其他陪配置文件中的 http 改为 https,并重启 SeaTable。

docker-compose down
docker-compose up -d
docker exec -d seatable /shared/seatable/scripts/seatable.sh start

如果曾经改动过旧的 nginx.conf,现在可以按照您想要的内容修改新的 nginx.conf,然后执行以下命令使 nginx 配置生效。

docker exec seatable nginx -s reload

Last modified by seatable, 2022-06-22

服务器配置要求
快速开始
安装 Docker-compose
下载 SeaTable 镜像
下载和修改 docker-compose.yml
初始化数据库
添加许可证文件(seatable-license.txt)
启动 Docker 容器
启动 SeaTable 服务器
注意!!!如果表格加载的显示 Network error
更多配置选项
部署 https
高级配置
SeaTable 目录结构
与宿主机共享的 Volume
日志
常见问题