简介
SeaTable是一个私有的在线共享表格程序,有开发板和企业版(付费),本次部署的就是开发版。支持账号分配,权限管理。
settable官方部署教程
https://cloud.seafile.com/wiki/publish/seatable-manual/8X7h/
1、创建文件夹并进入
创建文件夹
cd进入文件夹/opt/seatable
2、去官网下载docker-compose.yml和 .env文件
下载的docker-compose.yml,基本上不用改动
docker-compose.yml
services: seatable-server: image: ${SEATABLE_IMAGE:-seatable/seatable-developer:latest} restart: unless-stopped container_name: seatable ports: - 80:80 - ${SEATABLE_SSL_PORT:-}:443 volumes: - "${SEATABLE_VOLUMES:-/opt/seatable/seatable-data}:/shared" environment: - SEATABLE_MYSQL_DB_HOST=${SEATABLE_MYSQL_DB_HOST:-db} - SEATABLE_MYSQL_DB_PORT=${SEATABLE_MYSQL_DB_PORT:-3306} - INIT_SEATABLE_MYSQL_ROOT_PASSWORD=${INIT_SEATABLE_MYSQL_ROOT_PASSWORD:-} - SEATABLE_MYSQL_DB_USER=${SEATABLE_MYSQL_DB_USER:-seatable} - SEATABLE_MYSQL_DB_PASSWORD=${SEATABLE_MYSQL_DB_PASSWORD:?Variable is not set or empty} - SEATABLE_MYSQL_DB_DTABLE_DB_NAME=${SEATABLE_MYSQL_DB_DTABLE_DB_NAME:-dtable_db} - SEATABLE_MYSQL_DB_CCNET_DB_NAME=${SEATABLE_MYSQL_DB_CCNET_DB_NAME:-ccnet_db} - SEATABLE_MYSQL_DB_SEAFILE_DB_NAME=${SEATABLE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db} - SEATABLE_SERVER_HOSTNAME=${SEATABLE_SERVER_HOSTNAME:?Variable is not set or empty} - SEATABLE_SERVER_PROTOCOL=${SEATABLE_SERVER_PROTOCOL:-http} - SEATABLE_SERVER_LETSENCRYPT=${SEATABLE_SERVER_LETSENCRYPT:-False} - SEATABLE_ADMIN_EMAIL=${INIT_SEATABLE_ADMIN_EMAIL:-} - SEATABLE_ADMIN_PASSWORD=${INIT_SEATABLE_ADMIN_PASSWORD:-} - TIME_ZONE=${TIME_ZONE} - REDIS_HOST=${REDIS_HOST:-redis} - REDIS_PORT=${REDIS_PORT:-6379} - REDIS_PASSWORD=${REDIS_PASSWORD:-} - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty} - ENABLE_PYTHON_SCRIPT=${ENABLE_PYTHON_SCRIPT:-false} - PYTHON_SCHEDULER_URL=${PYTHON_SCHEDULER_URL:-http://python-scheduler} - PYTHON_SCHEDULER_AUTH_TOKEN=${PYTHON_SCHEDULER_AUTH_TOKEN:-} - REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt - ENABLE_SEADOC=${ENABLE_SEADOC:-false} - SEADOC_SERVER_URL=${SEATABLE_SERVER_PROTOCOL:-}://${SEATABLE_SERVER_HOSTNAME:-}/sdoc-server depends_on: db: condition: service_healthy redis: condition: service_started networks: - frontend-net - backend-seatable-net
db: image: ${SEATABLE_DB_IMAGE:-mariadb:10.11} restart: unless-stopped container_name: seatable-mysql environment: - MYSQL_ROOT_PASSWORD=${INIT_SEATABLE_MYSQL_ROOT_PASSWORD:-} - MYSQL_LOG_CONSOLE=true - MARIADB_MYSQL_LOCALHOST_USER=1 - MARIADB_MYSQL_LOCALHOST_GRANTS=USAGE - MARIADB_AUTO_UPGRADE=1 volumes: - "${SEATABLE_MYSQL_VOLUMES:-/opt/seatable/mysql-data}:/var/lib/mysql" networks: - backend-seatable-net healthcheck: test: [ "CMD", "/usr/local/bin/healthcheck.sh", "--connect", "--mariadbupgrade", "--innodb_initialized", ] interval: 20s start_period: 30s timeout: 5s retries: 10
redis: image: ${SEATABLE_REDIS_IMAGE:-redis:5.0.7} restart: unless-stopped container_name: seatable-redis command: - /bin/sh - -c - redis-server --requirepass "$$REDIS_PASSWORD" environment: - REDIS_PASSWORD=${REDIS_PASSWORD:-} networks: - backend-seatable-net healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 20s retries: 3 timeout: 5s
networks: frontend-net: name: frontend-net backend-seatable-net: name: backend-seatable-net
|
下载的 .env文件(需要做调整)
COMPOSE_FILE='docker-compose.yml' COMPOSE_PATH_SEPARATOR=','
SEATABLE_IMAGE=seatable/seatable-developer:latest
SEATABLE_VOLUMES=/opt/seatable/seatable-data SEATABLE_MYSQL_VOLUMES=/opt/seatable/mysql-data
INIT_SEATABLE_MYSQL_ROOT_PASSWORD=root_password SEATABLE_MYSQL_DB_HOST=db SEATABLE_MYSQL_DB_PORT=3306 SEATABLE_MYSQL_DB_USER=seatable SEATABLE_MYSQL_DB_PASSWORD=seatable_password
REDIS_HOST=redis REDIS_PORT=6379 REDIS_PASSWORD=
TIME_ZONE='Asia/Shanghai'
JWT_PRIVATE_KEY=
SEATABLE_SERVER_HOSTNAME=demo.seatable.com SEATABLE_SERVER_PROTOCOL=http SEATABLE_SERVER_LETSENCRYPT=False SEATABLE_SSL_PORT=
INIT_SEATABLE_ADMIN_EMAIL=admin_email@seatable.com INIT_SEATABLE_ADMIN_PASSWORD=admin_passowrd
|
调整后的 .env,主要是ip和JWT_PRIVATE_KEY,和密码的设置

** JWT_PRIVATE_KEY 随机串生成命令**
openssl rand -base64 32 | tr -d '\n'
|

将docker-compose.yml和 .env 文件放在/opt/seatable/目录下
当前的docker和compose的版本
vip@vip:/opt/seatable$ docker compose version Docker Compose version v5.2.0 vip@vip:/opt/seatable$ docker -v Docker version 29.6.1, build 8900f1d vip@vip:/opt/seatable$
|
docker安装SeaTable命令
安装并启动
sudo docker-compose up -d
|
关闭服务
docker 镜像源配置
编辑/etc/docker/daemon.json文件,内容如下:
{ "registry-mirrors": [ "https://docker.xuanyuan.me" ] }
|

如果docker拉取seatable镜像失败,可以考虑离线导入,具体如下
从阿里云服务器用docker pull主动拉取镜像(因为阿里云有自己的docker国内加速源)
下载 SeaTable 全套镜像(3 个必须镜像)
SeaTable 依赖 seatable主程序、mariadb数据库、redis缓存,一次性拉取:(依次执行命令)
# 拉取最新开发者版 docker pull seatable/seatable-developer:latest # 数据库镜像 docker pull mariadb:10.11 # 缓存镜像 docker pull redis:5.0.7 # 查看本地已下载镜像 docker images
|

在阿里云服务器上也建一个临时文件夹(随意),然后cd进去,然后执行打包命令
# 打包所有镜像到 seatable_all.tar docker save -o seatable_all.tar seatable/seatable-developer:latest mariadb:10.11 redis:5.0.7
|
将阿里云打包的seatable_all.tar 离线镜像拷贝到目标机器上
执行加载命令
docker load -I seatable_all.tar
|
查看导入的镜像

镜像导入完成后,再次sudo docker compose up 就可以了
访问seatable
浏览器直接http://ip ,输入.env配置的 账号和密码登录就可以了。
登录页

登录后主页

表格

系统设置
