个人电脑Ubuntu通过Docker安装SeaTable共享表格(docker拉取失败解决)

简介

SeaTable是一个私有的在线共享表格程序,有开发板和企业版(付费),本次部署的就是开发版。支持账号分配,权限管理。

settable官方部署教程
https://cloud.seafile.com/wiki/publish/seatable-manual/8X7h/

1、创建文件夹并进入

创建文件夹

/opt/seatable

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,和密码的设置

image.png

** JWT_PRIVATE_KEY 随机串生成命令**

openssl rand -base64 32 | tr -d '\n'

image.png

将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

关闭服务

sudo docker-compose down

docker 镜像源配置

编辑/etc/docker/daemon.json文件,内容如下:

{
"registry-mirrors": [
"https://docker.xuanyuan.me"
]
}

image.png



如果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

image.png

在阿里云服务器上也建一个临时文件夹(随意),然后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

查看导入的镜像
11

镜像导入完成后,再次sudo docker compose up 就可以了



访问seatable

浏览器直接http://ip ,输入.env配置的 账号和密码登录就可以了。

登录页
login

登录后主页
image.png

表格
image.png

系统设置
image.png

微信打赏

意外收获认可,内心充满感激;打赏之举,更添无限动力。