手动在CentOS 8下安装Seafile,搭建私有云
使用 Seafile 已经好几年,日常中使用它来同步照片、同步 Enpass 的密码库、存储历史文档,6.X 版本持续运行几年也未发生问题,因为备案政策越来越繁杂等原因,不得不重新购置一台海外服务器来重新部署一下 Seafile,由于 Seafile7 以上版本对 Python 版本要求提高到 3.X,图省事系统镜像就直接选用了 CentOS 8,由于服务器中已安装其他服务,未避免出现不可预知的问题,这里选择手动安装,觉得麻烦的可以使用 Seafile 官方提供的一键安装脚本。
安装 Seafile 我选择将 Seafile 安装到 /usr/local/seafile 目录,可根据实际需求进行修改,本次安装版本为 8.0.7(2021-08-29),可前往 Seafile 官网下载页面获取最新版本下载链接。
1 2 3 4 5 6 mkdir /usr/local/seafilecd /usr/local/seafilewget https://seafile-downloads.oss-cn-shanghai.aliyuncs.com/seafile-server_8.0.8_x86-64.tar.gz tar -xzf seafile-server_* mkdir installedmv seafile-server_* installed
安装相关依赖 如使用 Sqlite 安装,依赖组件中的 mysql 部分可不进行安装。
1 yum install python3 python3-setuptools python3-pip python3-ldap python3-devel gcc gcc-c++ -y pip3 install --timeout =3600 django==2.2.* future Pillow pylibmc captcha jinja2 sqlalchemy==1.4.3 psd-tools django-pylibmc django-simple-captcha
用户配置 为避免安全隐患,建议使用非 Root 账户运行 Seafile,这里创建名为“seafile”的账户执行后续安装。因为仅个人使用的原因,这里选择轻量级的 Sqlite 数据库进行安装。
1 2 3 4 5 useradd --system --comment "" seafile"" seafile --home-dir /usr/local/seafile chown seafile:seafile -R /usr/local/seafilesu seafile cd /usr/local/seafile/seafile-server-*./setup-seafile.sh
初始化 Seafile 完成以上安装步骤后,可以尝试初次启动 Seafile,确保 Seafile 能够正常运行的同时对 Seafile 进行创建管理员账号等初始化操作。
1 2 ./seafile.sh start ./seahub.sh start
如无问题,Seafile 及 Seahub 服务应该能正常启动,如果遇到启动失败,可尝试执行 ./seahub.shstart-fastcgi 查看无法正常启动的原因。新版 Seafile 的 8000 端口默认监听在 127.0.0.1 地址上,无法通过 IP+ 端口的方式进行访问,需要配置 Nginx 反向代理,或者修改 Seafile 安装目录下 conf 中的 gunicorn.conf.py 文件,将监听地址由 127.0.0.1:8080 改为 0.0.0.0:8080。 完成安装后,记得执行 su root 切换回 Root 账户,为避免权限问题造成的麻烦,后续配置将在 Root 账户下进行。
配置 Nginx 这里提供一份 Nginx 配置示例文件,可以根据实际情况修改 server_name、ssl_certificate、ssl_certificate_key、access_log、error_log 以及 media 路径,如果不需要 Webdav 服务,可删除配置文件中的 seafdav 部分。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 server { listen 80 ; server_name cloud.careful.fyi; return 301 https://$host $request_uri ; } server { listen 443 ssl http2; server_name cloud.carefu.link; ssl_certificate /usr/local/nginx/conf/ssl/carefu.link.cer; ssl_certificate_key /usr/local/nginx/conf/ssl/carefu.link.key; ssl_trusted_certificate /usr/local/nginx/conf/ssl/certificate.cer; add_header X-XSS-Protection "" 1 ; mode=block"" always; add_header X-Content-Type-Options "" nosniff"" always; add_header Referrer-Policy "" no -referrer-when-downgrade"" always; add_header Content-Security-Policy "" default-src 'self' http: https: data: blob: 'unsafe-inline' ; frame-ancestors 'self' ;"" always; add_header Permissions-Policy "" interest-cohort=()"" always; add_header Strict-Transport-Security "" max-age=31536000 ; includeSubDomains; preload"" always; location / { proxy_pass http://127.0.0.1:8000; 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 https; access_log /data/wwwlogs/seahub.access.log; error_log /data/wwwlogs/seahub.error .log; proxy_read_timeout 1200s ; client_max_body_size 0 ; } location /seafhttp { rewrite ^/seafhttp(.*)$ $1 break ; proxy_pass http://127.0.0.1:8082; client_max_body_size 0 ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_connect_timeout 36000s ; proxy_read_timeout 36000s ; proxy_send_timeout 36000s ; send_timeout 36000s ; } location /seafdav { proxy_pass http://127.0.0.1:8080/seafdav; 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 /data/wwwlogs/seafdav.access.log; error_log /data/wwwlogs/seafdav.error .log; } location /media { root /usr/local/seafile/seafile-server-latest/seahub; } }
修改完 Nginx 配置文件后使用 nginx -t 验证配置文件,如无报错,执行 systemctl restart nginx 重启 Nginx。现在,你可以使用域名访问 Seafile,使用初始化时设置的账号密码登录后点击右上角进入系统管理,这里需要对设置中的 SERVICE_URL 和 FILE_SERVER_ROOT 进行修改,参考如下:
1 2 https://careful.fyi https://careful.fyi/seafhttp
配置开机启动 这里需要在 /etc/systemd/system/ 目录下创建名为 seafile.service 和 seahub.service 的 systemd 服务管理文件。
seafile.service 1 2 3 4 5 6 7 8 9 10 11 12 [Unit] Description=Seafile After=network.target [Service] Type=oneshot ExecStart=/usr/local/seafile/seafile-server-latest/seafile.sh start ExecStop=/usr/local/seafile/seafile-server-latest/seafile.sh stop RemainAfterExit=yes User=seafile Group=seafile [Install] WantedBy=multi-user.target
seahub.service 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [Unit] Description=Seafile hub After=network.target seafile.service [Service] ExecStart=/usr/local/seafile/seafile-server-latest/seahub.sh start ExecStop=/usr/local/seafile/seafile-server-latest/seahub.sh stop User=seafile Group=seafile Type=oneshot RemainAfterExit=yes [Install] WantedBy=multi-user.target
设置开机启动服务 1 2 systemctl enable seafile.service systemctl enable seahub.service
配置 Webdav 修改 Seafile 安装目录下 conf 中的 seafdav.conf 文件,参考如下,其中 share_name 部分可根据实际需求进行修改,注意同时需要修改 Nginx 配置文件中的相应部分。
1 2 3 4 [WEBDAV] enabled = true port = 8080 share_name = /seafdav
配置完成后,需执行 ./seafile.shrestart 重启 Seafile 服务。
配置 Memcached 事实上,仅个人使用是无需配置 Memcached 缓存的,但这台服务器本身已有 Memcached 服务为博客提供缓存,便顺手为 Seafile 进行配置。需要修改 Seafile 安装目录下 conf 中的 seahub_settings.py 文件,将以下内容加入其中。
1 2 3 4 5 6 7 8 9 10 CACHES = { 'default' : { 'BACKEND' : 'django_pylibmc.memcached.PyLibMCCache' , 'LOCATION' : '127.0.0.1:11211' , }, 'locmem' : { 'BACKEND' : 'django.core.cache.backends.locmem.LocMemCache' , }, } COMPRESS_CACHE_BACKEND = 'locmem'
保存文件后,记得执行 ./seahub.shrestart 重启 seahub 服务。现在,你可以安心的享受 Seafile 为生活、工作带来的便利了。 Seafile 作为私有云盘而言,无疑是很优秀的,完善的客户端、丰富的支持文档,让安装、使用变得更简单,同时相对于 ownCloud 等而言,则拥有更好的性能。免费社区版对于个人而言,是完全够用的。