seafile-mc:12.0-latest由http升级https导致文件列表数据没有加载

请按照以下模版详细描述您遇到的问题:

当前服务器版本

ubuntu 24.04

部署/操作过程(请说明二进制部署/docker部署;出现错误的操作步骤)

version: '3.7'
services:
 db:
   image: mariadb:10.11
   container_name: mysql
   restart: unless-stopped
   environment:
     - MYSQL_ROOT_PASSWORD=Passw0rd
     - MYSQL_LOG_CONSOLE=true
   volumes:
     - /opt/seafile/mysql/db:/var/lib/mysql
   healthcheck:
     test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"]
     interval: 10s
     timeout: 5s
     retries: 5
   networks:
     - seafile-net
 memcached:
   image: memcached:1.6
   container_name: memcached
   restart: unless-stopped
   entrypoint: memcached -m 256
   networks:
     - seafile-net
 seafile:
   image: seafileltd/seafile-mc:12.0-latest
   container_name: seafile
   restart: unless-stopped
   volumes:
     - /opt/seafile/data:/shared
   environment:
     - DB_HOST=db
     - DB_ROOT_PASSWD=Passw0rd
     - SEAFILE_ADMIN_EMAIL=me@example.com
     - SEAFILE_ADMIN_PASSWORD=asecret
     - JWT_PRIVATE_KEY=XI1Hso95wl7F0ImA5VakpfpjoHs7t0wa
   depends_on:
     db:
       condition: service_healthy
     memcached:
       condition: service_started
   ports:
     - "80:80"
     - "443:443"
   networks:
     - seafile-net
networks:
 seafile-net:

初次部署成功,并上传了10多个GB的数据。

cat ~/.env
# 启用 HTTPS 协议
SEAFILE_SERVER_PROTOCOL=https
# 你的域名,注意不要加协议前缀
SEAFILE_SERVER_HOSTNAME=seafile.example.cn
# 用于 Caddy 存储证书的卷路径(可选,有默认值)
SEAFILE_CADDY_VOLUME=/opt/seafile-caddy
cat ~/docker-compose.yml 
version: '3.7'
services:
 db:
   image: mariadb:10.11
   container_name: mysql
   restart: unless-stopped
   environment:
     - MYSQL_ROOT_PASSWORD=Passw0rd
     - MYSQL_LOG_CONSOLE=true
   volumes:
     - /opt/seafile/mysql/db:/var/lib/mysql
   healthcheck:
     test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"]
     interval: 10s
     timeout: 5s
     retries: 5
   networks:
     - seafile-net
 memcached:
   image: memcached:1.6
   container_name: memcached
   restart: unless-stopped
   entrypoint: memcached -m 256
   networks:
     - seafile-net
 seafile:
   image: seafileltd/seafile-mc:12.0-latest
   container_name: seafile
   restart: unless-stopped
   volumes:
     - /opt/seafile/data:/shared
   env_file:
     - .env
   environment:
     - DB_HOST=db
     - DB_ROOT_PASSWD=Passw0rd
     - SEAFILE_ADMIN_EMAIL=me@example.com
     - SEAFILE_ADMIN_PASSWORD=asecret
     - JWT_PRIVATE_KEY=XI1Hso95wl7F0ImA5VakpfpjoHs7t0wa
   depends_on:
     db:
       condition: service_healthy
     memcached:
       condition: service_started
#   ports:
#     - "80:80"
#     - "443:443"
   networks:
     - seafile-net
 caddy:
   image: lucaslorentz/caddy-docker-proxy:2.9-alpine
   container_name: seafile-caddy
   ports:
     - "80:80"
     - "443:443"
   volumes:
     - /var/run/docker.sock:/var/run/docker.sock
     - ${SEAFILE_CADDY_VOLUME:-/opt/seafile-caddy}:/data/caddy
   restart: unless-stopped
   networks:
     - seafile-net
networks:
 seafile-net:
root@seafile:~# tree /opt/seafile-caddy/
/opt/seafile-caddy/
└── certs
    ├── example.cn.key
    └── example.cn.pem

执行 docker-compose down && docker-compose up -d 之后http或https都访问不了

再次调整

cat ~/docker-compose.yml
version: '3.7'
services:
  db:
    image: mariadb:10.11
    container_name: mysql
    restart: unless-stopped
    environment:
      - MYSQL_ROOT_PASSWORD=Passw0rd
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - /opt/seafile/mysql/db:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - seafile-net

  memcached:
    image: memcached:1.6
    container_name: memcached
    restart: unless-stopped
    entrypoint: memcached -m 256
    networks:
      - seafile-net

  seafile:
    image: seafileltd/seafile-mc:12.0-latest
    container_name: seafile
    restart: unless-stopped
    volumes:
      - /opt/seafile/data:/shared
    env_file:
      - .env
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=Passw0rd
      - SEAFILE_ADMIN_EMAIL=me@example.com
      - SEAFILE_ADMIN_PASSWORD=asecret
      - JWT_PRIVATE_KEY=XI1Hso95wl7F0ImA5VakpfpjoHs7t0wa
    depends_on:
      db:
        condition: service_healthy
      memcached:
        condition: service_started
    networks:
      - seafile-net
    # 不再直接暴露端口给宿主机,由 nginx 通过内部网络访问

  nginx:
    image: nginx:1.25.3-alpine
    container_name: nginx
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      # 挂载自定义的 nginx 配置文件
      - /opt/seafile/nginx/seafile.conf:/etc/nginx/conf.d/default.conf:ro
      # 挂载 SSL 证书(请根据实际情况调整路径)
      - /opt/seafile-caddy/certs:/etc/nginx/certs:ro
      # 挂载日志目录(可选)
      - /opt/seafile/nginx/logs:/var/log/nginx
    depends_on:
      - seafile
    networks:
      - seafile-net

networks:
  seafile-net:

执行 docker-compose down && docker-compose up -d 之后通过https能够访问并登录,登录后以前上传的数据都看不到。

root@seafile:~# du /opt -h -d 1
20K     /opt/seafile-caddy
12K     /opt/containerd
10G     /opt/seafile
10G     /opt

错误截图

错误日志

浏览器控制台错误信息(如果相关,请提供截图信息)

您好,根据您的描述,当前问题是从 HTTP 切换到 HTTPS 后,配置文件seahub_settings.py 中仍保留了原来的 http:// 地址。

编辑配置文件文件:

/opt/seafile/seafile-data/seafile/conf/seahub_settings.py

将其中类似:

http://seafile.example.cn

全部改成:

https://seafile.example.cn

保存后重启 Seafile:

docker compose restart seafile

然后重新登录网页查看文件列表,查看是否恢复。

这个文件还是默认我没做过修改。调整后也看过没有任何改动。我以前是通过http:ip访问的。