Ubuntu使用docker安装seafile:修订间差异
无编辑摘要 |
无编辑摘要 |
||
| (未显示同一用户的18个中间版本) | |||
| 第32行: | 第32行: | ||
== (一)docker安装seafile == | == (一)docker安装seafile == | ||
<source lang="bash"> | <source lang="bash"> | ||
docker pull seafileltd/seafile-pro-mc:13.0-latest | docker pull seafileltd/seafile-pro-mc:13.0-latest | ||
</source> | </source> | ||
不手动下载也行,后面compose up时会自动下载 | |||
== (二)下载配置文件 == | == (二)下载配置文件 == | ||
Seafile uses .env, seafile-server.yml and caddy.yml files for configuration. | Seafile uses .env, seafile-server.yml and caddy.yml files for configuration. | ||
<source lang="bash"> | <source lang="bash"> | ||
mkdir ~/seafile | mkdir ~/seafile | ||
cd ~/seafile | cd ~/seafile | ||
| 第51行: | 第47行: | ||
wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml | wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml | ||
wget https://manual.seafile.com/13.0/repo/docker/caddy.yml | wget https://manual.seafile.com/13.0/repo/docker/caddy.yml | ||
</source> | |||
*注意这里下载的是专业版(限制3个免费用户),如果安装后想切成社区版,可以直接更改.env: | |||
<source lang="xml"> | |||
##COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml,elasticsearch.yml' | |||
COMPOSE_FILE='seafile-server.yml,seadoc.yml' | |||
... | |||
#SEAFILE_IMAGE=seafileltd/seafile-pro-mc:13.0-latest | |||
SEAFILE_IMAGE=seafileltd/seafile-mc:13.0-latest | |||
</source> | </source> | ||
| 第82行: | 第85行: | ||
INIT_SEAFILE_ADMIN_PASSWORD=#管理员密码 | INIT_SEAFILE_ADMIN_PASSWORD=#管理员密码 | ||
</pre> | </pre> | ||
*[https://manual.seafile.com/13.0/setup/setup_with_an_existing_mysql_server/ INIT_SEAFILE_MYSQL_ROOT_PASSWORD 仅在安装阶段使用,安装完成将使用seafile用户连接数据库,所以安装完成可以删除] | |||
*For the configurations using to do the initializations (e.g, INIT_SEAFILE_ADMIN_EMAIL, INIT_SEAFILE_MYSQL_ROOT_PASSWORD), you can remove it from .env as well | |||
== | == (四)启动seafile服务 == | ||
在 ~/sealife目录启动docker: | 在 ~/sealife目录启动docker: | ||
<source lang="bash"> | <source lang="bash"> | ||
| 第101行: | 第106行: | ||
✔ Container seafile Started | ✔ Container seafile Started | ||
</source> | </source> | ||
检查运行状态: | |||
<source lang="bash"> | |||
docker compose ps | |||
docker logs seafile -f # 实时查看日志 | |||
</source> | |||
== (五)异常处理 == | |||
==== 异常1. 结果上面步骤完成后服务器卡死,只能重启 ==== | |||
然后用 docker logs seafile -f 打印log: | |||
<pre> | |||
---------------------------------------- | |||
Now creating seahub database tables ... | |||
---------------------------------------- | |||
Error: Failed to init seahub database: Table 'abuse_reports_abusereport' already exists | |||
waiting for mysql server to be ready: mysql is not ready | |||
Traceback (most recent call last): | |||
File "/scripts/start.py", line 91, in <module> | |||
main() | |||
File "/scripts/start.py", line 56, in main | |||
init_seafile_server() | |||
File "/scripts/bootstrap.py", line 86, in init_seafile_server | |||
call('{} auto -n seafile'.format(setup_script), env=env) | |||
File "/scripts/utils.py", line 71, in call | |||
return subprocess.check_call(*a, **kw) | |||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |||
File "/usr/lib/python3.12/subprocess.py", line 413, in check_call | |||
raise CalledProcessError(retcode, cmd) | |||
subprocess.CalledProcessError: Command '/opt/seafile/seafile-pro-server-13.0.22/setup-seafile-mysql.sh auto -n seafile' returned non-zero exit status 1. | |||
</pre> | |||
这个错误表明数据库初始化时出现了问题,清理数据库并重新初始化: | |||
<source lang="bash"> | |||
cd ~/seafile | |||
sudo docker compose down | |||
# 删除 MySQL 数据目录 | |||
sudo rm -rf seafile-mysql | |||
# 重新启动服务 | |||
docker compose up -d | |||
</source> | |||
成功了: | |||
<pre> | |||
Starting seafile server, please wait ... | |||
Seafile server started | |||
Done. | |||
Starting seahub at port 8000 ... | |||
---------------------------------------- | |||
Successfully created seafile admin | |||
---------------------------------------- | |||
Seahub is started | |||
Done. | |||
</pre> | |||
虽然上面使用的是8000/8082端口,但试了一下还无法访问。 | |||
<source lang="bash"> | |||
$ docker compose ps | |||
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS | |||
seadoc seafileltd/sdoc-server:2.0-latest "/sbin/my_init -- /s…" seadoc 9 minutes ago Up 9 minutes 80/tcp | |||
seafile seafileltd/seafile-pro-mc:13.0-latest "/sbin/my_init -- /s…" seafile 9 minutes ago Up 9 minutes (healthy) 80/tcp | |||
seafile-caddy lucaslorentz/caddy-docker-proxy:2.12-alpine "/bin/caddy docker-p…" caddy 9 minutes ago Up 9 minutes (healthy) 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp, 2019/tcp | |||
seafile-elasticsearch elasticsearch:8.15.0 "/bin/tini -- /usr/l…" elasticsearch 9 minutes ago Up 10 seconds 9200/tcp, 9300/tcp | |||
seafile-mysql mariadb:10.11 "docker-entrypoint.s…" db 9 minutes ago Up 9 minutes (healthy) 3306/tcp | |||
seafile-redis redis "docker-entrypoint.s…" redis 9 minutes ago Up 9 minutes 6379/tcp | |||
</source> | |||
以上信息可以看到,当前是caddy监听了系统的80/443端口:'''0.0.0.0:80->80/tcp''' '''0.0.0.0:443->443/tcp''',然后再内部转发到 seafile。 | |||
接下来,把云服务器安全组中的80/443端口打开(服务器本地防火墙一般都没开),使用 https://youdomain.com就可以访问了。 | |||
*还有一点要注意:受制于HSTS (HTTP Strict Transport Security) 策略,如果最开始你在.env中打开的是https并用浏览器访问过的话,即使.env改回http也无法访问,这里要换个浏览器或者开启浏览器匿名访问 | |||
==== 异常2:过了好几天发现服务器cpu占用偏高、一直80%+,才发现是 seafile-elasticsearch一直不断重启。 ==== | |||
failed to obtain node locks, tried [/usr/share/elasticsearch/data]; maybe these locations are not writable or multiple nodes were started on the same data path? | |||
看云服务监测6/8安装正常,6/15 16:00开始,也是那天开始在调整安装配置,比如更换监听端口,由另外一个服务反向代理,为什么会影响到这里还是不太清楚。 | |||
直接原因是权限问题: | |||
<source lang="bash"> | |||
drwxr-xr-x 3 root root 4096 Jun 8 01:27 seafile-elasticsearch | |||
</source> | |||
——但 seafile-elasticsearch的启动用户是 1000 | |||
所以按照[https://forum.seafile.com/t/unable-to-run-elasticsearch/25158 官方建议],添加权限即可: | |||
<source lang="bash"> | |||
sudo chown -R 1000:1000 /home/ubuntu/seafile/seafile-elasticsearch/data | |||
docker restart seafile-elasticsearch | |||
</source> | |||
=三、改成http访问= | |||
有时因为是内部局域网使用,安全风险可控,而https需要维护域名、ssl证书,所以希望直接使用http。 | |||
但现在新版本启用caddy反向代理后,由https切换http其实还不太容易。 | |||
===配置.env=== | |||
将以下启动参数修改为: | |||
<pre> | |||
# 禁用反向代理caddy | |||
##COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml,elasticsearch.yml' | |||
COMPOSE_FILE='seafile-server.yml,seadoc.yml,elasticsearch.yml' | |||
#协议修改为http | |||
#SEAFILE_SERVER_PROTOCOL=http | |||
SEAFILE_SERVER_PROTOCOL=https #需保留为https,详见下方解释 | |||
</pre> | |||
*注意,这里 SEAFILE_SERVER_PROTOCOL务必保留https,因为这里仅用于生成文件上传链接,即返回浏览器/客户端的上传链接是http还是https,我们这里的案例是使用的nginx来处理https,所以还是要返回https;不然浏览器使用http上传post、经由ngnix反代为301会降级为get、导致上传失败! | |||
*另外如果使用elasticsearch,则务必要配置好对应的内存,不然可能当前默认配置会消耗2G内存(离谱!),而elasticsearch只负责 '''Web 界面的全文搜索'''(搜文件名、文件内容,支持 office/pdf 高亮),所以我们直接选择去除了。 | |||
<pre> | |||
ES_JAVA_OPTS=-Xms2g -Xmx2g(2GB 堆) | |||
mem_limit: 4g(比主机总内存 3.6G 还大) | |||
实际索引数据仅 896KB(4个索引,几十条记录) | |||
用 2GB 堆去服务不到 1MB 的数据,占整机 67.85% 内存 | |||
</pre> | |||
详见:[[Seafile 服务器故障排查与优化总结]] | |||
===配置seafile-server.yml=== | |||
将caddy相关labels移除: | |||
<pre> | |||
## labels: | |||
## caddy: ${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty} | |||
## caddy.reverse_proxy: "{{upstreams 80}}" | |||
</pre> | |||
使能seafile服务的80端口监听: | |||
<pre> | |||
seafile: | |||
image: ${SEAFILE_IMAGE:-seafileltd/seafile-pro-mc:13.0-latest} | |||
container_name: seafile | |||
restart: unless-stopped | |||
# ports: | |||
# - "80:80" | |||
ports: | |||
- "80:80" | |||
</pre> | |||
===配置CSRF_TRUSTED_ORIGINS=== | |||
不然会弹出以下错误: | |||
'''Forbidden (403) | |||
CSRF verification failed. Request aborted.''' | |||
编辑 seafile-data/seafile/conf/seahub_settings.py,追加以下内容: | |||
<pre> | |||
CSRF_TRUSTED_ORIGINS = [ | |||
'https://yourdomainOrip', | |||
'http://yourdomainOrip', | |||
] | |||
</pre> | |||
=四、安装SeaDrive挂载盘= | |||
== (一)下载&安装 == | |||
<source lang="bash"> | |||
wget https://sos-ch-dk-2.exo.io/seafile-downloads/SeaDrive-cli-x86_64-3.0.22.AppImage | |||
chmod +x SeaDrive-cli-x86_64-3.0.22.AppImage | |||
mv SeaDrive-cli-x86_64-3.0.22.AppImage seadrive | |||
sudo cp seadrive /usr/local/bin | |||
</source> | |||
== (二)获取授权token == | |||
<source lang="bash"> | |||
curl -d "username=username@example.com" -d "password=123456" https://seafile.example.com/api2/auth-token/ | |||
</source> | |||
== (三)配置~/.seadrive/seadrive.conf == | |||
<pre> | |||
[account] | |||
server = #https://seafile.example.com | |||
username = #username@example.com | |||
token = #yourtoken | |||
is_pro = #false | |||
[general] | |||
client_name = #yourname-ubuntu | |||
[cache] | |||
size_limit = 5GB #挂载盘大小 | |||
clean_cache_interval = 10 | |||
</pre> | |||
== (四)启动seadrive == | |||
<source lang="bash"> | |||
# 创建挂载目录 | |||
mkdir -p ~/SeaDrive | |||
seadrive -c ~/.seadrive/seadrive.conf -f -d ~/.seadrive/data ~/SeaDrive | |||
</source> | |||
如果提示出错:dlopen(): error loading libfuse.so.2 | |||
需要安装fuse | |||
<source lang="bash"> | |||
sudo add-apt-repository universe | |||
sudo apt install libfuse2t64 | |||
</source> | |||
== (四)设置开机自启动 == | |||
=== 1.创建 Systemd 服务文件 === | |||
在终端执行以下命令,创建一个新的服务文件: | |||
<source lang="bash"> | |||
sudo nano /etc/systemd/system/seadrive.service | |||
</source> | |||
=== 2.写入服务配置 === | |||
将下面的配置粘贴进去。请注意修改 User 和 Group 后面的 ubuntu 为你的实际用户名。 | |||
<source lang="bash"> | |||
[Unit] | |||
Description=SeaDrive Client | |||
After=network.target | |||
# 如果你的 Seafile 服务器也在本机上,可以取消下面一行的注释,确保服务器先启动 | |||
# After=network.target seafile.service | |||
[Service] | |||
Type=forking | |||
Environment="HOME=/home/ubuntu" | |||
ExecStart=/usr/bin/seadrive -c /home/ubuntu/seadrive.conf -d /home/ubuntu/.seadrive/data -l /home/ubuntu/.seadrive/log /home/ubuntu/SeaDrive | |||
ExecStop=/usr/bin/pkill seadrive | |||
User=ubuntu | |||
Group=ubuntu | |||
Restart=on-failure | |||
RestartSec=10 | |||
[Install] | |||
WantedBy=multi-user.target | |||
</source> | |||
=== 3.使服务生效 === | |||
<source lang="bash"> | |||
$ sudo systemctl daemon-reload | |||
$ sudo systemctl enable seadrive.service | |||
Created symlink /etc/systemd/system/multi-user.target.wants/seadrive.service → /etc/systemd/system/seadrive.service. | |||
$ sudo systemctl start seadrive.service | |||
</source> | |||
=== !!!实际这些做完,文件同步一直有问题(不及时、甚至大部分时间不同步),怀疑是与系统(Ubuntu24.04)不匹配,最终换回seafile-daemon+seafile-cli方案: === | |||
=== [[Seafile同步问题分析与解决]] === | |||
参考文档: | |||
https://manual.seafile.com/latest/setup/setup_pro_by_docker/#downloading-and-modifying-env | |||
https://help.seafile.com/drive_client/drive_client_for_linux/ | |||
2026年6月26日 (五) 15:04的最新版本
一、安装 Docker 和 Docker Compose
(一)安装依赖
sudo apt update && sudo apt install -y curl wget(二)安装 Docker
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker(三)验证安装
docker --version
docker compose version二、安装&配置seafile
/opt/seafile 是用于存储 Seafile docker 文件的 Seafile 目录,如果您决定将 Seafile 放入不同的目录中,请相应地调整所有路径:我们这里统一改成 ~/seafile
Seafile使用两个目录用于存放数据库和数据,分别是 seafile-mysql 和 seafile-data,不建议更改这些路径。
Seafile 和 Webserver Nginx 的所有配置和日志文件都存储在 Seafile 容器的目录中。
(一)docker安装seafile
docker pull seafileltd/seafile-pro-mc:13.0-latest不手动下载也行,后面compose up时会自动下载
(二)下载配置文件
Seafile uses .env, seafile-server.yml and caddy.yml files for configuration.
mkdir ~/seafile
cd ~/seafile
wget -O .env https://manual.seafile.com/13.0/repo/docker/pro/env
wget https://manual.seafile.com/13.0/repo/docker/pro/seafile-server.yml
wget https://manual.seafile.com/13.0/repo/docker/pro/elasticsearch.yml
wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml
wget https://manual.seafile.com/13.0/repo/docker/caddy.yml- 注意这里下载的是专业版(限制3个免费用户),如果安装后想切成社区版,可以直接更改.env:
##COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml,elasticsearch.yml'
COMPOSE_FILE='seafile-server.yml,seadoc.yml'
...
#SEAFILE_IMAGE=seafileltd/seafile-pro-mc:13.0-latest
SEAFILE_IMAGE=seafileltd/seafile-mc:13.0-latest(三)配置
修改 .env配置文件:
生成 JWT 密钥(用于服务间认证):
$ openssl rand -hex 20保存输出的密钥,后面会用到。
BASIC_STORAGE_PATH=/home/ubuntu/seafile ... ################################# # Startup parameters # ################################# SEAFILE_SERVER_HOSTNAME=seafile.example.com SEAFILE_SERVER_PROTOCOL=https TIME_ZONE=Asia/Shanghai JWT_PRIVATE_KEY= #填入你上面openssl生成的hex ... ## Database SEAFILE_MYSQL_DB_PASSWORD=#数据库密码 ... ## Database root password, Used to create Seafile users INIT_SEAFILE_MYSQL_ROOT_PASSWORD=#数据库管理员密码 ## Seafile admin user INIT_SEAFILE_ADMIN_EMAIL=#管理员邮箱 INIT_SEAFILE_ADMIN_PASSWORD=#管理员密码
- INIT_SEAFILE_MYSQL_ROOT_PASSWORD 仅在安装阶段使用,安装完成将使用seafile用户连接数据库,所以安装完成可以删除
- For the configurations using to do the initializations (e.g, INIT_SEAFILE_ADMIN_EMAIL, INIT_SEAFILE_MYSQL_ROOT_PASSWORD), you can remove it from .env as well
(四)启动seafile服务
在 ~/sealife目录启动docker:
$ docker compose up -d
[+] up 63/63
✔ Image seafileltd/sdoc-server:2.0-latest Pulled 121.9s
✔ Image elasticsearch:8.15.0 Pulled 113.1s
✔ Image mariadb:10.11 Pulled 33.1s
✔ Image redis Pulled 8.8s
✔ Image lucaslorentz/caddy-docker-proxy:2.12-alpine Pulled 6.6s
✔ Network seafile-net Created 0.1s
✔ Container seafile-elasticsearch Started 1.3s
✔ Container seafile-mysql Healthy 12.4s
✔ Container seafile-redis Started 1.3s
✔ Container seafile-caddy Started 1.5s
✔ Container seadoc Started 12.7s
✔ Container seafile Started检查运行状态:
docker compose ps
docker logs seafile -f # 实时查看日志(五)异常处理
异常1. 结果上面步骤完成后服务器卡死,只能重启
然后用 docker logs seafile -f 打印log:
----------------------------------------
Now creating seahub database tables ...
----------------------------------------
Error: Failed to init seahub database: Table 'abuse_reports_abusereport' already exists
waiting for mysql server to be ready: mysql is not ready
Traceback (most recent call last):
File "/scripts/start.py", line 91, in <module>
main()
File "/scripts/start.py", line 56, in main
init_seafile_server()
File "/scripts/bootstrap.py", line 86, in init_seafile_server
call('{} auto -n seafile'.format(setup_script), env=env)
File "/scripts/utils.py", line 71, in call
return subprocess.check_call(*a, **kw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/subprocess.py", line 413, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '/opt/seafile/seafile-pro-server-13.0.22/setup-seafile-mysql.sh auto -n seafile' returned non-zero exit status 1.
这个错误表明数据库初始化时出现了问题,清理数据库并重新初始化:
cd ~/seafile
sudo docker compose down
# 删除 MySQL 数据目录
sudo rm -rf seafile-mysql
# 重新启动服务
docker compose up -d成功了:
Starting seafile server, please wait ... Seafile server started Done. Starting seahub at port 8000 ... ---------------------------------------- Successfully created seafile admin ---------------------------------------- Seahub is started Done.
虽然上面使用的是8000/8082端口,但试了一下还无法访问。
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
seadoc seafileltd/sdoc-server:2.0-latest "/sbin/my_init -- /s…" seadoc 9 minutes ago Up 9 minutes 80/tcp
seafile seafileltd/seafile-pro-mc:13.0-latest "/sbin/my_init -- /s…" seafile 9 minutes ago Up 9 minutes (healthy) 80/tcp
seafile-caddy lucaslorentz/caddy-docker-proxy:2.12-alpine "/bin/caddy docker-p…" caddy 9 minutes ago Up 9 minutes (healthy) 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp, 2019/tcp
seafile-elasticsearch elasticsearch:8.15.0 "/bin/tini -- /usr/l…" elasticsearch 9 minutes ago Up 10 seconds 9200/tcp, 9300/tcp
seafile-mysql mariadb:10.11 "docker-entrypoint.s…" db 9 minutes ago Up 9 minutes (healthy) 3306/tcp
seafile-redis redis "docker-entrypoint.s…" redis 9 minutes ago Up 9 minutes 6379/tcp以上信息可以看到,当前是caddy监听了系统的80/443端口:0.0.0.0:80->80/tcp 0.0.0.0:443->443/tcp,然后再内部转发到 seafile。
接下来,把云服务器安全组中的80/443端口打开(服务器本地防火墙一般都没开),使用 https://youdomain.com就可以访问了。
- 还有一点要注意:受制于HSTS (HTTP Strict Transport Security) 策略,如果最开始你在.env中打开的是https并用浏览器访问过的话,即使.env改回http也无法访问,这里要换个浏览器或者开启浏览器匿名访问
异常2:过了好几天发现服务器cpu占用偏高、一直80%+,才发现是 seafile-elasticsearch一直不断重启。
failed to obtain node locks, tried [/usr/share/elasticsearch/data]; maybe these locations are not writable or multiple nodes were started on the same data path?
看云服务监测6/8安装正常,6/15 16:00开始,也是那天开始在调整安装配置,比如更换监听端口,由另外一个服务反向代理,为什么会影响到这里还是不太清楚。
直接原因是权限问题:
drwxr-xr-x 3 root root 4096 Jun 8 01:27 seafile-elasticsearch——但 seafile-elasticsearch的启动用户是 1000
所以按照官方建议,添加权限即可:
sudo chown -R 1000:1000 /home/ubuntu/seafile/seafile-elasticsearch/data
docker restart seafile-elasticsearch三、改成http访问
有时因为是内部局域网使用,安全风险可控,而https需要维护域名、ssl证书,所以希望直接使用http。
但现在新版本启用caddy反向代理后,由https切换http其实还不太容易。
配置.env
将以下启动参数修改为:
# 禁用反向代理caddy ##COMPOSE_FILE='seafile-server.yml,caddy.yml,seadoc.yml,elasticsearch.yml' COMPOSE_FILE='seafile-server.yml,seadoc.yml,elasticsearch.yml' #协议修改为http #SEAFILE_SERVER_PROTOCOL=http SEAFILE_SERVER_PROTOCOL=https #需保留为https,详见下方解释
- 注意,这里 SEAFILE_SERVER_PROTOCOL务必保留https,因为这里仅用于生成文件上传链接,即返回浏览器/客户端的上传链接是http还是https,我们这里的案例是使用的nginx来处理https,所以还是要返回https;不然浏览器使用http上传post、经由ngnix反代为301会降级为get、导致上传失败!
- 另外如果使用elasticsearch,则务必要配置好对应的内存,不然可能当前默认配置会消耗2G内存(离谱!),而elasticsearch只负责 Web 界面的全文搜索(搜文件名、文件内容,支持 office/pdf 高亮),所以我们直接选择去除了。
ES_JAVA_OPTS=-Xms2g -Xmx2g(2GB 堆) mem_limit: 4g(比主机总内存 3.6G 还大) 实际索引数据仅 896KB(4个索引,几十条记录) 用 2GB 堆去服务不到 1MB 的数据,占整机 67.85% 内存
配置seafile-server.yml
将caddy相关labels移除:
## labels:
## caddy: ${SEAFILE_SERVER_PROTOCOL:-http}://${SEAFILE_SERVER_HOSTNAME:?Variable is not set or empty}
## caddy.reverse_proxy: "{{upstreams 80}}"
使能seafile服务的80端口监听:
seafile:
image: ${SEAFILE_IMAGE:-seafileltd/seafile-pro-mc:13.0-latest}
container_name: seafile
restart: unless-stopped
# ports:
# - "80:80"
ports:
- "80:80"
配置CSRF_TRUSTED_ORIGINS
不然会弹出以下错误:
Forbidden (403)
CSRF verification failed. Request aborted.
编辑 seafile-data/seafile/conf/seahub_settings.py,追加以下内容:
CSRF_TRUSTED_ORIGINS = [
'https://yourdomainOrip',
'http://yourdomainOrip',
]
四、安装SeaDrive挂载盘
(一)下载&安装
wget https://sos-ch-dk-2.exo.io/seafile-downloads/SeaDrive-cli-x86_64-3.0.22.AppImage
chmod +x SeaDrive-cli-x86_64-3.0.22.AppImage
mv SeaDrive-cli-x86_64-3.0.22.AppImage seadrive
sudo cp seadrive /usr/local/bin(二)获取授权token
curl -d "username=username@example.com" -d "password=123456" https://seafile.example.com/api2/auth-token/(三)配置~/.seadrive/seadrive.conf
[account] server = #https://seafile.example.com username = #username@example.com token = #yourtoken is_pro = #false [general] client_name = #yourname-ubuntu [cache] size_limit = 5GB #挂载盘大小 clean_cache_interval = 10
(四)启动seadrive
# 创建挂载目录
mkdir -p ~/SeaDrive
seadrive -c ~/.seadrive/seadrive.conf -f -d ~/.seadrive/data ~/SeaDrive如果提示出错:dlopen(): error loading libfuse.so.2
需要安装fuse
sudo add-apt-repository universe
sudo apt install libfuse2t64(四)设置开机自启动
1.创建 Systemd 服务文件
在终端执行以下命令,创建一个新的服务文件:
sudo nano /etc/systemd/system/seadrive.service2.写入服务配置
将下面的配置粘贴进去。请注意修改 User 和 Group 后面的 ubuntu 为你的实际用户名。
[Unit]
Description=SeaDrive Client
After=network.target
# 如果你的 Seafile 服务器也在本机上,可以取消下面一行的注释,确保服务器先启动
# After=network.target seafile.service
[Service]
Type=forking
Environment="HOME=/home/ubuntu"
ExecStart=/usr/bin/seadrive -c /home/ubuntu/seadrive.conf -d /home/ubuntu/.seadrive/data -l /home/ubuntu/.seadrive/log /home/ubuntu/SeaDrive
ExecStop=/usr/bin/pkill seadrive
User=ubuntu
Group=ubuntu
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target3.使服务生效
$ sudo systemctl daemon-reload
$ sudo systemctl enable seadrive.service
Created symlink /etc/systemd/system/multi-user.target.wants/seadrive.service → /etc/systemd/system/seadrive.service.
$ sudo systemctl start seadrive.service
!!!实际这些做完,文件同步一直有问题(不及时、甚至大部分时间不同步),怀疑是与系统(Ubuntu24.04)不匹配,最终换回seafile-daemon+seafile-cli方案:
参考文档:
https://manual.seafile.com/latest/setup/setup_pro_by_docker/#downloading-and-modifying-env
https://help.seafile.com/drive_client/drive_client_for_linux/