SeaTable 开发版 5.3 及 6.0 的若干问题

新部署的开发版 5.3 和 6.0 (docker)都遇到了几个问题:
1、默认管理员用户头像不显示,上传后可显示。

2、品牌定制自定义Logo尺寸及格式都正确,但上传后不显示,重启后也是,访问图片链接( https://xxx.xxx.xxx/media/custom/xxx.png )显示404,但是数据目录(/seatable/seahub-data/custom)是有logo图片的。

3、点击系统管理中的病毒扫描,弹窗显示“没有权限。请尝试重新登录。”

4、删除表中添加的python脚本时,同样弹窗显示“没有权限。请尝试重新登录。”

5、在开发版安装文档中,有ccnet.conf、dtable_server_config.json、dtable_web_settings.py、dtable-db.conf、dtable-events.conf、dtable-storage-server.conf、gunicorn.py、seafile.conf等配置,多个配置中都有数据库配置信息,但新装的 5.3 和 6.0 版本默认生成的配置文件中不少配置都没有,所以请问新版本是把部分配置放在docker环境变量中,精简配置了吗?哪些配置无需再设置?

问题1: 安装后,默认头像是这样的


问题2 :本地测试没有问题,您可以尝试在重新上传一下试试, 404 报错是路径错误
问题3 : 这个我本地测试也有这个现象,我反馈一下,这后面版本解决
问题4 : 我本地测试没有问题,您可以用Chrome无痕模式登录一下,然后在删除试试,假如还有问题,提供一下日志和浏览器debug 请求报错信息

问题5: 对的,是从5.3 版本开始,部分配置是读取的环境变量,您可以查看升级文档的额外步骤:seatable-manual

感谢回复!

1. 默认头像图片加载不出来的问题:


清除本地数据,重新部署多次,使用反向代理访问以及内网IP端口访问,结果一样,加载默认头像网络报错如下:

2. 自定义logo加载不出来的问题:



上传前seahub-data目录的文件:

上传后seahub-data目录的文件:

加载logo报错

logo信息:

  1. 删除表中添加的python脚本时,同样弹窗显示“没有权限。请尝试重新登录。
    该问题已解决。
    原因是旧版的说明文档没有更新,旧版没有启动脚本的参数以及相关配置。旧版的文档和文件:文档+++文件

  2. 关于配置文件精简的问题也已解决。同样是由于旧版的说明文档没有更新导致的疑问,新版文档已经说明的很清晰。

5. 新的问题1:

新建脚本,脚本类型为python,内容为print("Hello World!"),点击运行后python-starter新建了一个python-runner容器,各个python容器的日志和文件看起来都正常,但是脚本却是一直在运行中,没有停止,也没有结果,此时若要停止该compose stack,必须手动停止新建的python-runner容器。compose文件附在文末,现象截图如下:





6. 新的问题2:

新建了onlyoffice容器,文档里说明的是onlyoffice容器在seatable compose的内外部署均可,只需要在dtable_web_settings.py中增加以下四行配置:

ENABLE_ONLYOFFICE = True
ONLYOFFICE_APIJS_URL = "https://onlyoffice/web-apps/apps/api/documents/api.js"
ONLYOFFICE_FILE_EXTENSION = ('doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'odt', 'fodt', 'odp', 'fodp', 'ods', 'fods', 'csv', 'ppsx', 'pps')
ONLYOFFICE_JWT_SECRET = '8Zp2X7c3V6b5N1m6K4j8H2g0F2d7S5a9'

如果是和seatable一起部署,且通过域名反向代理在公网访问seatable,那请问ONLYOFFICE_APIJS_URL中填写的https://onlyofficehttp://onlyoffice compose 服务名加端口吗?还是说也需要把onlyoffice服务通过域名反向代理到公网,在公网能访问到,在这里填写完整公网url才行?

我尝试了在这里填写公网反向代理域名加端口(形如https://ofc.stb.com:5689/xxx),打开seatable表格中的office文件时,和之前没有区别,没有预览只有下载。

此外,如果是和seatable一起部署,onlyoffice的网络需要使用哪几个frontend-netbackend-seatable-net都需要吗?

7. 新的问题3:

新建了seatable-ai容器,按照配置新增了环境变量,seatable自动化任务界面有了运行AI的选项,但是在触发任务后,任务日志显示运行成功,表格却并没有变化。查看日志发现是数据库没有权限,猜想是seatable-ai容器和seatable-scheduler容器一样需要手动创建数据库并手动授权,但是这个文档里并没有说明。

模版文件在:AI模版,文档里说明与seatable一起部署时是共用seatable数据库,但是该模版里采用的变量名比如SEATABLE_MYSQL_DB_PASSWDSEATABLE_MYSQL_DB_NAME与seatable模版里的并不相同,且SEATABLE_MYSQL_DB_NAME默认值是dtable_db,也是共用seatable的dtable_db库吗?

此外,如果是和seatable一起部署,seatable-ai的网络需要使用哪几个frontend-netbackend-seatable-net都需要吧?

期待回复······

附:compose文件

services:
  seatable-server:
    image: ${SEATABLE_IMAGE:-seatable/seatable-developer:latest}
    restart: unless-stopped
    container_name: seatable
    ports:
      - ${SEATABLE_PORT:-5038}:80
      - ${SEATABLE_SSL_PORT:-5039}: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}
      - SEATABLE_MYSQL_DB_USER=${SEATABLE_MYSQL_DB_USER:-seatable}
      - SEATABLE_MYSQL_DB_PASSWORD=${SEATABLE_MYSQL_DB_PASSWORD:?Var not set}
      - INIT_SEATABLE_MYSQL_ROOT_PASSWORD=${INIT_SEATABLE_MYSQL_ROOT_PASSWORD:-}
      - 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_PROTOCOL=${SEATABLE_SERVER_PROTOCOL:-https}
      - SEATABLE_SERVER_HOSTNAME=${SEATABLE_SERVER_HOSTNAME:?Var not set}
      - 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}
      - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Var not set}
      - REDIS_HOST=${REDIS_HOST:-redis}
      - REDIS_PORT=${REDIS_PORT:-6379}
      - REDIS_PASSWORD=${REDIS_PASSWORD:-}
      - ENABLE_PYTHON_SCRIPT=${ENABLE_PYTHON_SCRIPT:-true}
      - PYTHON_SCHEDULER_AUTH_TOKEN=${PYTHON_SCHEDULER_AUTH_TOKEN}
      - PYTHON_SCHEDULER_URL=${PYTHON_SCHEDULER_URL:-http://python-scheduler}
      - ENABLE_SEATABLE_AI=${ENABLE_SEATABLE_AI:-true}
      - SEATABLE_AI_SERVER_URL=${SEATABLE_AI_SERVER_URL:-http://seatable-ai:8888}
      #- 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
    networks:
      - backend-seatable-net

  python-scheduler:
    image: ${SEATABLE_SCHEDULER_IMAGE:-seatable/seatable-python-scheduler:latest}
    restart: unless-stopped
    container_name: python-scheduler
    environment:
      - TIME_ZONE=${TIME_ZONE}
      - DB_HOST=${SEATABLE_MYSQL_DB_HOST:-db}
      - DB_PORT=${SEATABLE_MYSQL_DB_PORT:-3306}
      - DB_USER=${SEATABLE_MYSQL_DB_USER:-seatable}
      - DB_PASSWD=${SEATABLE_MYSQL_DB_PASSWORD:?Var not set}
      - DATABASE_NAME=${SEATABLE_MYSQL_DB_SCHEDULER_NAME:-scheduler}
      - PYTHON_SCHEDULER_AUTH_TOKEN=${PYTHON_SCHEDULER_AUTH_TOKEN:?Var not set}
      - SEATABLE_SERVER_URL=${SEATABLE_SERVER_PROTOCOL}://${SEATABLE_SERVER_HOSTNAME}
      - PYTHON_STARTER_URL=${PYTHON_STARTER_URL:-http://python-starter:8080}
      - PYTHON_SCHEDULER_LOG_LEVEL=${PYTHON_SCHEDULER_LOG_LEVEL:-WARNING}
      - DELETE_LOG_DAYS=${DELETE_LOG_DAYS:-30}
      - PYTHON_PROCESS_TIMEOUT=${PYTHON_PROCESS_TIMEOUT:-900}
      - PYTHON_SCHEDULER_SCRIPT_WORKERS=${PYTHON_SCHEDULER_SCRIPT_WORKERS:-5}
      - LOG_TO_STDOUT=${SEATABLE_PYTHON_PIPELINE_LOG_TO_STDOUT:-false}
    volumes:
      - ${PYTHON_SCHEDULER_LOGS_DIR:-/tmp}:/opt/scheduler/logs
    extra_hosts:
      - host.docker.internal:host-gateway
    networks:
      - frontend-net
      - backend-scheduler-net
      - backend-seatable-net
    depends_on:
      db:
        condition: service_healthy
    healthcheck:
      test:
        - CMD-SHELL
        - pgrep -f 'python3 scheduler.py' && pgrep -f 'python3 flask_server.py'
      interval: 20s
      retries: 3
      start_period: 20s
      timeout: 10s

  python-starter:
    image: ${SEATABLE_STARTER_IMAGE:-seatable/seatable-python-starter:latest}
    restart: unless-stopped
    container_name: python-starter
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ${PYTHON_TRANSFER_DIRECTORY_DIR:-/tmp}:${PYTHON_TRANSFER_DIRECTORY_PATH:-/tmp}
      - ${PYTHON_STARTER_LOGS_DIR:-/tmp}:/opt/seatable-python-starter/logs
    environment:
      - TIME_ZONE=${TIME_ZONE}
      - PYTHON_SCHEDULER_URL=${PYTHON_SCHEDULER_URL:-http://python-scheduler}
      - PYTHON_TRANSFER_DIRECTORY=${PYTHON_TRANSFER_DIRECTORY_PATH:-/tmp}
      - PYTHON_RUNNER_IMAGE=${SEATABLE_RUNNER_IMAGE:-seatable/seatable-python-runner:latest}
      - PYTHON_STARTER_LOG_LEVEL=${PYTHON_STARTER_LOG_LEVEL:-WARNING}
      - PYTHON_PROCESS_TIMEOUT=${PYTHON_PROCESS_TIMEOUT:-900}
      - PYTHON_STARTER_THREAD_COUNT=${PYTHON_STARTER_THREAD_COUNT:-10}
      - PYTHON_STARTER_USE_ALTERNATIVE_FILE_SERVER_ROOT=${PYTHON_STARTER_USE_ALTERNATIVE_FILE_SERVER_ROOT:-}
      - PYTHON_STARTER_ALTERNATIVE_FILE_SERVER_ROOT=${PYTHON_STARTER_ALTERNATIVE_FILE_SERVER_ROOT:-}
      - PYTHON_RUNNER_OUTPUT_LIMIT=${PYTHON_RUNNER_OUTPUT_LIMIT:-1000000}
      - PYTHON_RUNNER_CONTAINER_MEMORY=${PYTHON_RUNNER_CONTAINER_MEMORY:-2g}
      - PYTHON_RUNNER_CONTAINER_CPUS=${PYTHON_RUNNER_CONTAINER_CPUS:-}
      - PYTHON_RUNNER_OTHER_OPTIONS=${PYTHON_RUNNER_OTHER_OPTIONS:-}
      - LOG_TO_STDOUT=${SEATABLE_PYTHON_PIPELINE_LOG_TO_STDOUT:-false}
    networks:
      - frontend-net
      - backend-scheduler-net

  python-runner:
    image: ${SEATABLE_RUNNER_IMAGE:-seatable/seatable-python-runner:latest}
    #restart: unless-stopped
    container_name: python-runner
    networks:
      - runner-net
      - backend-scheduler-net
      - backend-seatable-net

  seatable-office:
    image: ${SEATABLE_OFFICE_IMAGE:-onlyoffice/documentserver:latest}
    container_name: seatable-office
    restart: unless-stopped
    ports:
      - ${SEATABLE_OFFICE_PORT:-8686}:80
    environment:
      - TZ=${TIME_ZONE}
      - JWT_ENABLED=true
      - ALLOW_PRIVATE_IP_ADDRESS=true
      - JWT_SECRET=${SEATABLE_OFFICE_JWT}
    networks:
      - frontend-net
      - backend-seatable-net

  seatable-ai:
    image: ${SEATABLE_AI_IMAGE:-seatable/seatable-ai:6.0.8}
    container_name: seatable-ai
    restart: unless-stopped
    environment:
      - DB_HOST=${SEATABLE_MYSQL_DB_HOST:-db}
      - DB_PORT=${SEATABLE_MYSQL_DB_PORT:-3306}
      - DB_USER=${SEATABLE_MYSQL_DB_USER:-root}
      - DB_PASSWD=${SEATABLE_MYSQL_DB_PASSWORD:-}
      - DB_NAME=${SEATABLE_MYSQL_DB_DTABLE_DB_NAME:-dtable_db}
      - REDIS_HOST=${REDIS_HOST:-redis}
      - REDIS_PORT=${REDIS_PORT:-6379}
      - REDIS_PASSWORD=${REDIS_PASSWORD:-}
      - SEATABLE_AI_LLM_TYPE=deepseek
      - SEATABLE_AI_LLM_KEY=2xxcxxxxxxxxxxxxxxxxxxxx7
      - SEATABLE_AI_LLM_MODEL=deepseek-chat
    volumes:
      - ${SEATABLE_AI_VOLUMES}:/shared
    ports:
      - ${SEATABLE_AI_PORT:-8888}:8888
    networks:
      - frontend-net
      - backend-seatable-net

networks:
  frontend-net:
    name: frontend-net
  backend-seatable-net:
    name: backend-seatable-net
  backend-scheduler-net:
    name: backend-scheduler-net
  runner-net:
    name: runner-net
1 个赞