首先将docker-compose.yml 放进Container Station 然后点机创建
services:
db:
image: mariadb:10.11
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=db_dev # 必须,设置MySQL数据库的root密码
- MYSQL_LOG_CONSOLE=true # 将日志输出到控制台,便于查看
- MARIADB_AUTO_UPGRADE=1 # 自动升级MariaDB数据库
volumes:
- /opt/seafile-mysql/db:/var/lib/mysql # 必须,持久化MySQL数据的路径
networks:
- seafile-net
memcached:
image: memcached:1.6.18
container_name: seafile-memcached
entrypoint: memcached -m 256 # 启动memcached并分配256MB内存
networks:
- seafile-net
seafile:
image: seafileltd/seafile-mc:11.0-latest
container_name: seafile
ports:
- "80:80" # 映射HTTP端口
- "443:443" # 如果启用https,取消注释
volumes:
- /opt/seafile-data:/shared # 必须,持久化Seafile数据的路径
- /opt/ssl:/ssl # 必须,将ssl证书放在这
environment:
- DB_HOST=db # 数据库服务主机名
- DB_ROOT_PASSWD=db_dev # 必须,MySQL数据库root密码
- TIME_ZONE=Asia/Shanghai # 可选,设置时区为上海时间
- SEAFILE_ADMIN_EMAIL=me@example.com # 设置Seafile管理员邮箱
- SEAFILE_ADMIN_PASSWORD=asecret # 设置Seafile管理员密码
- SEAFILE_SERVER_LETSENCRYPT=false # 是否启用HTTPS
- SEAFILE_SERVER_HOSTNAME=docs.seafile.com # 启用HTTPS时的域名
depends_on:
- db
- memcached
networks:
- seafile-net
networks:
seafile-net:然后将你的ssl证书放进ssl文件夹中(我本地的所有流量都是经过一台宝塔的服务器做反代waf 所以自己是自签了一个100年的证书)
然后进到/你安装seafile的目录/seafile-data/nginx/conf 修改seafile.nginx.conf文件
# -*- mode: nginx -*-
# Auto generated at 03/17/2026 08:55:07
server {
listen 443 ssl;
http2 on;
server_name pan.htaat.com dlpan.htaat.com;# 这里我是做了web和上传下载域名分离所以两个域名都要填 如果没做分离的话填一个就行了
ssl_certificate /ssl/你的证书名称.crt;
ssl_certificate_key /ssl/你的密钥名称.key;
client_max_body_size 10m;
location / {
proxy_pass http://127.0.0.1:8000/;
proxy_read_timeout 310s;
proxy_set_header Host $http_host;
proxy_set_header Forwarded "for=$remote_addr;proto=$scheme";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Connection "";
proxy_http_version 1.1;
client_max_body_size 0;
access_log /var/log/nginx/seahub.access.log seafileformat;
error_log /var/log/nginx/seahub.error.log;
}
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 0;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
# --- 【核心修改:干掉内置 Nginx 的下载写盘】 ---
proxy_request_buffering off; # 这是原带的(管上传)
proxy_buffering off; # 【新增】:彻底关闭下载缓冲!
proxy_max_temp_file_size 0; # 【新增】:禁止容器内写任何临时文件!
# 顺手把 HTTP/1.1 的防线也给它补上
proxy_http_version 1.1;
proxy_set_header Connection "";
# ----------------------------------------------
access_log /var/log/nginx/seafhttp.access.log seafileformat;
error_log /var/log/nginx/seafhttp.error.log;
}
location /notification/ping {
proxy_pass http://127.0.0.1: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_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;
}
location /seafdav {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 1200s;
client_max_body_size 0;
access_log /var/log/nginx/seafdav.access.log seafileformat;
error_log /var/log/nginx/seafdav.error.log;
}
location /media {
root /opt/seafile/seafile-server-latest/seahub;
}
}
然后保存重启seafile容器就行了
如果上传下载没速度 可以把nginx的这段给删了,因为上传下载nginx一直在读缓存 所以我把nginx的缓存给ban了不那么伤硬盘。
# --- 【核心修改:干掉内置 Nginx 的下载写盘】 ---
proxy_request_buffering off; # 这是原带的(管上传)
proxy_buffering off; # 【新增】:彻底关闭下载缓冲!
proxy_max_temp_file_size 0; # 【新增】:禁止容器内写任何临时文件!
# 顺手把 HTTP/1.1 的防线也给它补上
proxy_http_version 1.1;
proxy_set_header Connection "";
# ----------------------------------------------