Seafile12社区版,不使用 caddy 和 seadoc 的部署记录,增加 Notification Server 部署记录

Seafile12社区版,不使用 caddy 和 seadoc 的部署记录

使用 docker 部署 seafile12社区版的时候,发现增加了 caddy 和 seadoc,自己用不到这些组件,所以在官方手册的基础上,进行了一些精简,下面记录一下部署记录。

  1. 根据手册,下载必要文件
mkdir /opt/seafile
cd /opt/seafile

# Seafile CE 12.0
wget -O .env https://manual.seafile.com/12.0/repo/docker/ce/env
wget https://manual.seafile.com/12.0/repo/docker/ce/seafile-server.yml
  1. 根据手册,修改 .env 文件,前面有 # 号的注释可以删除掉
# COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml'
# 删掉 caddy.yml,seadoc.yml
COMPOSE_FILE='seafile-server.yml'
COMPOSE_PATH_SEPARATOR=','

SEAFILE_IMAGE=seafileltd/seafile-mc:12.0-latest
SEAFILE_DB_IMAGE=mariadb:10.11
SEAFILE_MEMCACHED_IMAGE=memcached:1.6.29
# SEAFILE_CADDY_IMAGE=lucaslorentz/caddy-docker-proxy:2.9-alpine

SEAFILE_VOLUME=/opt/seafile-data
SEAFILE_MYSQL_VOLUME=/opt/seafile-mysql/db
# SEAFILE_CADDY_VOLUME=/opt/seafile-caddy

SEAFILE_MYSQL_DB_HOST=db
INIT_SEAFILE_MYSQL_ROOT_PASSWORD=ROOT_PASSWORD
SEAFILE_MYSQL_DB_USER=seafile
SEAFILE_MYSQL_DB_PASSWORD=PASSWORD

TIME_ZONE=Etc/UTC

# 使用 AI 随机生成一个:生成一个长度不小于 32 个字符的随机字符串,别用深度思考,深度思考太慢
JWT_PRIVATE_KEY=k9#FqL2@xP5mZ$8v!7YbW3*eR6sN4%gT

# 注意:seahub_settings_py 自 12.0 版本起不再使用 SERVICE_URL。
# 这个就是以前管理员网页设置网址的项,比如自己的域名是:cloud.myname.com:8000
# 因为有 nginx 反代,上传的那个网址自动就是:cloud.myname.com:8000/seafhttp
SEAFILE_SERVER_HOSTNAME=cloud.myname.com:8000
SEAFILE_SERVER_PROTOCOL=http

INIT_SEAFILE_ADMIN_EMAIL=me@example.com
INIT_SEAFILE_ADMIN_PASSWORD=asecret

# seadoc 相关的主要了
# SEADOC_IMAGE=seafileltd/sdoc-server:1.0-latest
# SEADOC_VOLUME=/opt/seadoc-data

# seadoc 不要了
ENABLE_SEADOC=false

# NOTIFICATION_SERVER_IMAGE=seafileltd/notification-server:12.0-latest
# NOTIFICATION_SERVER_VOLUME=/opt/notification-data
  1. nginx 已经在 seafile 的 image 中了,修改 seafile-server.yml 文件,打开 nginx 的端口,注释掉 caddy 相关的内容
services:
  db:
    image: ${SEAFILE_DB_IMAGE:-mariadb:10.11}
    container_name: seafile-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD:-}
      - MYSQL_LOG_CONSOLE=true
      - MARIADB_AUTO_UPGRADE=1
    volumes:
      - "${SEAFILE_MYSQL_VOLUME:-/opt/seafile-mysql/db}:/var/lib/mysql"
    networks:
      - seafile-net
    healthcheck:
      test:
        [
          "CMD",
          "/usr/local/bin/healthcheck.sh",
          "--connect",
          "--mariadbupgrade",
          "--innodb_initialized",
        ]
      interval: 20s
      start_period: 30s
      timeout: 5s
      retries: 10

  memcached:
    image: ${SEAFILE_MEMCACHED_IMAGE:-memcached:1.6.29}
    container_name: seafile-memcached
    entrypoint: memcached -m 256
    networks:
      - seafile-net

  seafile:
    image: ${SEAFILE_IMAGE:-seafileltd/seafile-mc:12.0-latest}
    container_name: seafile
    # ports 注释要打开,如果80默认http,443可以使用https,自行配置证书
    ports:
      - "80:80"
    volumes:
      - ${SEAFILE_VOLUME:-/opt/seafile-data}:/shared
    environment:
      - DB_HOST=${SEAFILE_MYSQL_DB_HOST:-db}
      - DB_PORT=${SEAFILE_MYSQL_DB_PORT:-3306}
      - DB_USER=${SEAFILE_MYSQL_DB_USER:-seafile}
      - DB_ROOT_PASSWD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD:-}
      - DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD:?Variable is not set or empty}
      - SEAFILE_MYSQL_DB_CCNET_DB_NAME=${SEAFILE_MYSQL_DB_CCNET_DB_NAME:-ccnet_db}
      - SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=${SEAFILE_MYSQL_DB_SEAFILE_DB_NAME:-seafile_db}
      - SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=${SEAFILE_MYSQL_DB_SEAHUB_DB_NAME:-seahub_db}
      - TIME_ZONE=${TIME_ZONE:-Etc/UTC}
      - INIT_SEAFILE_ADMIN_EMAIL=${INIT_SEAFILE_ADMIN_EMAIL:-me@example.com}
      - INIT_SEAFILE_ADMIN_PASSWORD=${INIT_SEAFILE_ADMIN_PASSWORD:-asecret}
      - SEAFILE_SERVER_HOSTNAME=${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
      - SEAFILE_SERVER_PROTOCOL=${SEAFILE_SERVER_PROTOCOL:-http}
      - SITE_ROOT=${SITE_ROOT:-/}
      - NON_ROOT=${NON_ROOT:-false}
      - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY:?Variable is not set or empty}
      - SEAFILE_LOG_TO_STDOUT=${SEAFILE_LOG_TO_STDOUT:-false}
      - ENABLE_SEADOC=${ENABLE_SEADOC:-true}
      # - SEADOC_SERVER_URL=${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}/sdoc-server
    #labels:
      # caddy: ${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
      # caddy.reverse_proxy: "{{upstreams 80}}"
    depends_on:
      db:
        condition: service_healthy
      memcached:
        condition: service_started
    networks:
      - seafile-net

networks:
  seafile-net:
    name: seafile-net

执行以下命令启动 Seafile 服务,最简化版 seafile12 启动了,现在像以前一样,可以使用 ip 和 域名+端口 访问了,当然也可以在 docker 中将 8000 和 8082 映射出来,使用已有的 nginx、caddy或其他反代。

docker compose up -d

检查一下目录结构,nginx 已经再 seafile 的包里了

root@nas1:/opt/seafile# tree -L 2
.
├── seafile-data
│   ├── logs
│   ├── nginx
│   └── seafile
├── seafile-mysql
│   └── db
└── seafile-server.yml

seafile-data 目录,配置文件都在这里

root@nas1:/opt/seafile/seafile-data# tree -L 3
.
├── logs
│   └── var-log
├── nginx
│   └── conf
│       └── seafile.nginx.conf
└── seafile
    ├── ccnet
    ├── conf
    │   ├── gunicorn.conf.py
    │   ├── __pycache__
    │   ├── seafdav.conf
    │   ├── seafevents.conf
    │   ├── seafile.conf
    │   └── seahub_settings.py
    ├── logs
    ├── pro-data
    ├── seafile-data
    │   ├── current_version
    │   ├── httptemp
    │   ├── library-template
    │   ├── storage
    │   └── tmpfiles
    └── seahub-data
        ├── avatars
        ├── custom
        └── thumbnail

官方的手册一直写的非常好,非常清楚,点赞!

感谢分享,没有seadoc的话知识库就不能用了,但在主界面还删不掉,看着不舒服

设置里面,把下面的 css 写到定制的 CSS项目里,"知识库"这个栏目在主界面就隐藏了,这个css有没有其他的额外影响,请自行测试哈。

a.nav-link.ellipsis[title="知识库"][href="/published/"] {
  display: none;
}
1 个赞

超级有用的记录,已经按照帖子的内容公布的方法部署成功,非常之精简,而且很省资源,回复反馈感谢一下!!

实测方法有效,但是在收起侧边栏之后,左边那一排小图标中的知识库还是会显示的

这个没注意,要隐藏这个小图标,再增加一条css:

.side-panel-folded a.nav-link[href="/published/"]:has( > #main-side-nav-folded-wikis ) {
  display: none;
}

这下完美解决了,非常感谢

下午看手册,Notification Server 也非常有用,在上面的基础上,增加 Notification Server 部署记录:

  1. 下载 notification-server.yml 到 seafile-server.yml 同目录
wget https://manual.seafile.com/12.0/repo/docker/notification-server.yml
  1. seafile.conf文件中添加以下配置
[notification]
enabled = true
# the ip of notification server. (default is `notification-server` in Docker)
host = notification-server
# the port of notification server
port = 8083
  1. 手动修改 notification-server.yml(为啥没用 .env 文件,因为懒)
services:

  notification-server:
    # 手动修改参数吧
    # image: ${NOTIFICATION_SERVER_IMAGE:-seafileltd/notification-server:12.0-latest}
    image: seafileltd/notification-server:12.0-latest
    container_name: notification-server
    restart: always
    volumes:
      # - ${NOTIFICATION_SERVER_VOLUME:-/opt/notification-data}:/shared
      # - ${NOTIFICATION_SERVER_VOLUME:-/opt/notification-data}/logs:/shared/logs
      - ./notification-data:/shared
      - ./notification-data/logs:/shared/logs
    # 打开 ports 
    ports:
      - "8083:8083"
    environment:
      - SEAFILE_MYSQL_DB_HOST=seafile-mysql
      # 除了 SEAFILE_MYSQL_DB_HOST 把 .env 的信息 copy 过来
      - SEAFILE_MYSQL_DB_PORT=3306
      - SEAFILE_MYSQL_DB_USER=seafile
      - SEAFILE_MYSQL_DB_PASSWORD=
      - SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
      - SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
      - JWT_PRIVATE_KEY=k9#FqL2@xP5mZ$8v!7YbW3*eR6sN4%gT
      - SEAFILE_LOG_TO_STDOUT=false
      - NOTIFICATION_SERVER_LOG_LEVEL=info
    # caddy 内容删除
    # labels:
    #  caddy: ${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
    #  caddy.@ws.0_header: "Connection *Upgrade*"
    #  caddy.@ws.1_header: "Upgrade websocket"
    #  caddy.0_reverse_proxy: "@ws {{upstreams 8083}}"
    #  caddy.1_handle_path: "/notification*"
    #  caddy.1_handle_path.0_rewrite: "* {uri}"
    #  caddy.1_handle_path.1_reverse_proxy: "{{upstreams 8083}}"
    #depends_on:
    #  db:
    #    condition: service_healthy
    networks:
      - seafile-net

networks:
  seafile-net:
    # 加入已有 seafile-net 网络
    #name: seafile-net
    external: true
  1. 启动
docker compose -f notification-server.yml up -d
  1. 检查通知服务器运行情况,在 docker 宿主机运行
docker exec -it seafile curl http://notification-server:8083/ping
{"ret": "pong"}
  1. 用 nginx 反代,修改 seafile.nginx.conf 的 notification 配置
    location /notification/ping {
        # proxy_pass http://127.0.0.1:8083/ping;
        proxy_pass http://notification-server:8083/ping;
        access_log      /var/log/nginx/notification.access.log seafileformat;
        error_log       /var/log/nginx/notification.error.log;
    }

    location /notification {
    	# proxy_pass http://127.0.0.1:8083
        proxy_pass http://notification-server:8083/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        access_log      /var/log/nginx/notification.access.log seafileformat;
        error_log       /var/log/nginx/notification.error.log;
    }
  1. 重启 nginx,在docker 宿主机运行:
docker exec -it seafile nginx -s reload
  1. 检查 nginx 是否成功,在你的电脑上 cmd 运行:
C:\Users\xxx>curl http://cloud.myname.com:8000/notification/ping
{"ret": "pong"}
  1. 客户端与通知服务器协同工作,在电脑上运行seafile客户端,检查 seafile.log (C:\Users\xxx\ccnet\logs\seafile.log),有如下日志,启动成功。
[05/28/25 18:03:59] Notification server is enabled on the remote server  http://cloud.myname.com:8000.

老大你好,Notification Server,这个是干什么用的呀。我在手册里都没有找到对应的描述,能给介绍一下不,你说他非常有用,我非常的感兴趣,谢谢。

Notification Server
目前,客户端和网页上文件和库的状态更新是基于服务器的轮询。这有两个缺点
由于轮询延迟,最新状态无法实时反映到客户端。客户端需要定期刷新资料库修改、文件锁定、子目录权限等信息,这会给服务器带来额外的性能开销。
当在网页上打开一个目录时,文件的锁定状态无法实时更新,需要刷新页面。
通知服务器使用 WebSocket 协议,并与客户端或 Web 界面保持双向通信连接。当上述变化发生时,seaf-server 会将变化通知给通知服务器。然后,通知服务器可以实时通知客户端或 Web 界面,这样不仅提高了实时性能,还降低了服务器的性能开销。

简单来说,就是可以实时同步,比原来被动刷新要快一些。

新建sdoc 打开加载文档内容错误手是什么原因

seadoc服务精简掉了,自然就不能新建和编辑sdoc文件了,有需要的话再加回去

感谢回复!
这个得搞起来用用,看上去很诱人的样子。

关于具体操作,咨询个问题:
seafile.conf
这个文件在哪里?

SEAFILE_VOLUME=/opt/seafile-data 这是安装目录
安装目录下的/seafile-data/seafile/conf/seafile.conf

好的,看到了。
按照大佬的方法一步一步走了下来,昨天未拉取“Notification Server”时应用运行正常,也可以通过客户端连接。

但今天增加了一步:Notification Server这个功能后
就一直停在“502 Bad Gateway”,卡了一个小时

查看seafile运行日志,提示:“waiting for mysql server to be ready: mysql is not ready”

但看SQL服务是正常的,求助一下,我应该如何解决,谢谢!

大体思路是,先保证 seafile 正常运行,再添加 notification-server.

建议从 seafile-server.yml 和 .env 开始,逐步测试。

一、保证 seafile 正常运行

  1. seafile-server.yml ,db 打开 3306 端口映射

    修改:seafile-server.yml ,db 添加:
    ports:
          - "3306:3306"
    
    修改后,重新 docker compose up -d,使用本地的工具连接,直到能看到数据表,确保 mysql 是运行正常的。:
      db:
        image: ${SEAFILE_DB_IMAGE:-mariadb:10.11}
        container_name: seafile-mysql
        environment:
          - MYSQL_ROOT_PASSWORD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD:-}
          - MYSQL_LOG_CONSOLE=true
          - MARIADB_AUTO_UPGRADE=1
        volumes:
          - "${SEAFILE_MYSQL_VOLUME:-/opt/seafile-mysql/db}:/var/lib/mysql"
        networks:
          - seafile-net
        ports:
          - "3306:3306"
        healthcheck:
          test:
            [
              "CMD",
              "/usr/local/bin/healthcheck.sh",
              "--connect",
              "--mariadbupgrade",
              "--innodb_initialized",
            ]
          interval: 20s
          start_period: 30s
          timeout: 5s
          retries: 10
    
  2. 检查 mysql 运行状态,确保运行正常

方法1:
root@nas1:~# docker stats seafile-mysql

CONTAINER ID   NAME            CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O       PIDS
c7ac92f3dead   seafile-mysql   0.01%     38.71MiB / 7.424GiB   0.51%     11.3MB / 16.1MB   181MB / 122MB   41

方法2:
root@nas1:~# docker ps|grep seafile-mysql
c7ac92f3dead   mariadb:10.11                                                                                "docker-entrypoint.s…"   24 hours ago   Up 24 hours (healthy)   3306/tcp                                                                 seafile-mysql

方法3 看日志:
root@nas1:~# docker logs seafile-mysql
  1. 确保 seafile 和 seafile-mysql 是在同一网络
root@nas1:~# docker inspect seafile-mysql |grep seafile-net
            "NetworkMode": "seafile-net",
                "seafile-net": {
root@nas1:~#
root@nas1:~# docker inspect seafile |grep seafile-net
            "NetworkMode": "seafile-net",
                "seafile-net": {


IP 也在同一网段:

root@nas1:~# docker inspect seafile-mysql |grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "192.168.80.2",
root@nas1:~#
root@nas1:~# docker inspect seafile |grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "192.168.80.5",

root@nas1:~# docker network inspect seafile-net
[
    {
        "Name": "seafile-net",
        "Id": "30571c6c3ffadfd175b2c65429a131fa464b1a34c4e018429674334a84a69d97",
        "Created": "2025-05-28T16:47:01.236283931+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "192.168.80.0/20",
                    "Gateway": "192.168.80.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "61b50f31a9c0fb8634320539d928af0b0590a5ed7e6745cd543a5c5c320564e7": {
                "Name": "notification-server",
                "EndpointID": "4f80a101f27ece7265e6b6402f9a5b613e48967c60307ea1a39b9e9e90915010",
                "MacAddress": "02:42:c0:a8:50:04",
                "IPv4Address": "192.168.80.4/20",
                "IPv6Address": ""
            },
            "6a3873f6910782bdd5ad125028b83e4be50b852c511d45e82c4e41abc1c347a8": {
                "Name": "seafile",
                "EndpointID": "9fb2a85c8d1a2727f78898e1288420b4666bb5c27347d296a2cde0047dc5e6a5",
                "MacAddress": "02:42:c0:a8:50:05",
                "IPv4Address": "192.168.80.5/20",
                "IPv6Address": ""
            },
            "94a52a9b04be795868792fc8f35f9312da7ca878dc4721ade464e35898d770e7": {
                "Name": "seafile-memcached",
                "EndpointID": "5b3f0910d4d5cb38de17a108263de7b416475a34e95a5bd98403be1ebd79357f",
                "MacAddress": "02:42:c0:a8:50:03",
                "IPv4Address": "192.168.80.3/20",
                "IPv6Address": ""
            },
            "c7ac92f3dead2407ea703313ef87961743f8ef4825d730b98843b7d352beb608": {
                "Name": "seafile-mysql",
                "EndpointID": "abd69cf682d5d180010452c270e88128227734201e9a3180da07a6ce1347391c",
                "MacAddress": "02:42:c0:a8:50:02",
                "IPv4Address": "192.168.80.2/20",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {
            "com.docker.compose.network": "seafile-net",
            "com.docker.compose.project": "seafile12",
            "com.docker.compose.version": "2.29.7"
        }
    }
]

最终目的是,打开网页和客户端,seafile正常运行。

二、添加 notification-server.

查看 seafile-mysql 容器的网络相关信息:

root@nas1:~# docker inspect seafile-mysql
...
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "fbfcc27346ab0b3cac030d75cfcde860d4a0a62e5f4524bed60435fab4059c56",
            "SandboxKey": "/var/run/docker/netns/fbfcc27346ab",
            "Ports": {
                "3306/tcp": null
            },
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "seafile-net1": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "seafile-mysql",
                        "db"
                    ],
                    "MacAddress": "02:42:c0:a8:50:02",
                    "DriverOpts": null,
                    "NetworkID": "30571c6c3ffadfd175b2c65429a131fa464b1a34c4e018429674334a84a69d97",
                    "EndpointID": "abd69cf682d5d180010452c270e88128227734201e9a3180da07a6ce1347391c",
                    "Gateway": "192.168.80.1",
                    "IPAddress": "192.168.80.2",
                    "IPPrefixLen": 20,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DNSNames": [
                        "seafile-mysql",
                        "db",
                        "c7ac92f3dead"
                    ]
                }
            }
        }
    }
]
...

可以看到 dns-name 有:“seafile-mysql”, “db”, 我测试下来,使用 db ,docker 取到的 ip 地址不对,所以notification-server.yml 的 environment: 字段,要改为 seafile-mysql

- SEAFILE_MYSQL_DB_HOST=seafile-mysql

其他的environment:信息,要从你的 .env 文件中 copy 过来。

    environment:
      - SEAFILE_MYSQL_DB_HOST=seafile-mysql
      # 除了 SEAFILE_MYSQL_DB_HOST 把 .env 的信息 copy 过来
      - SEAFILE_MYSQL_DB_PORT=3306
      - SEAFILE_MYSQL_DB_USER=seafile
      - SEAFILE_MYSQL_DB_PASSWORD=你的数据库密码
      - SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
      - SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
      - JWT_PRIVATE_KEY=k9#FqL2@xP5mZ$8v!7YbW3*eR6sN4%gT
      - SEAFILE_LOG_TO_STDOUT=false
      - NOTIFICATION_SERVER_LOG_LEVEL=info

已经有网络是seafile-net ,所以加入已有网络:

networks:
  seafile-net:
    # 加入已有 seafile-net 网络
    #name: seafile-net
    external: true

完整的 notification-server.yml 如下:

services:

  notification-server:
    image: seafileltd/notification-server:12.0-latest
    container_name: notification-server
    restart: always
    volumes:
      - ./notification-data:/shared
      - ./notification-data/logs:/shared/logs
    ports:
      - "8083:8083"
    environment:
      - SEAFILE_MYSQL_DB_HOST=seafile-mysql
      # 除了 SEAFILE_MYSQL_DB_HOST 把 .env 的信息 copy 过来
      - SEAFILE_MYSQL_DB_PORT=3306
      - SEAFILE_MYSQL_DB_USER=seafile
      - SEAFILE_MYSQL_DB_PASSWORD=添加你的密码
      - SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
      - SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
      - JWT_PRIVATE_KEY=k9#FqL2@xP5mZ$8v!7YbW3*eR6sN4%gT
      - SEAFILE_LOG_TO_STDOUT=false
      - NOTIFICATION_SERVER_LOG_LEVEL=info
    networks:
      - seafile-net

networks:
  seafile-net:
    external: true

使用 docker compose 启动 notification-server 即可。

docker compose -f notification-server.yml up -d

我都删除caddy所有的项了,为什么运行docker compose up -d 出现stat /opt/seafile/caddy.yml: no such file or directory

env文件

# COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml'
# 删掉 caddy.yml,seadoc.yml
COMPOSE_FILE='seafile-server.yml'

是的 我刚刚发现了 谢谢