LITTLEFOX

一个科研搬砖狗的WordPress尝试

搭建一个属于自己的Seafile网盘

恰好最近有相关需求,我就研究了一下。

测试环境:Ubuntu 18.04

配置要求:官方没说,实测在512M和1G内存的小鸡上都成功跑起来了,再低没试,其他方面应该没要求

下载Seafile程序

这里以安装到/data/seafile为例,当前最新稳定版是6.2.5。

$ mkdir -p /data/seafile && cd /data/seafile
$ wget http://seafile-downloads.oss-cn-shanghai.aliyuncs.com/seafile-server_6.2.5_x86-64.tar.gz
$ tar -xzf seafile-server_6.2.5_x86-64.tar.gz
$ mkdir installed && mv seafile-server_6.2.5_x86-64.tar.gz installed

安装Seafile

安装依赖,我这里用户规模不大,就用自带的SQLite了,用户较多的需要用MySQL,请参阅官方文档。

$ sudo apt install python
$ sudo apt install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip sqlite3    #官方文档写的是python-imaging,在18.04中已经被分支python-pil取代
$ pip install pillow moviepy

安装Seafile

$ cd /data/seafile/seafile-server-6.2.5 ./setup-seafile.sh

根据提示,输入服务器名、IP或域名(后面套反代的话,IP即可)、数据目录(默认为../seafile-data)、监听端口(默认8082),之后确认设置,目录会变成类似这样的结构:

.
├── ccnet
│   ├── ccnet.sock
│   ├── GroupMgr
│   ├── misc
│   ├── mykey.peer
│   ├── OrgMgr
│   ├── PeerMgr
│   └── seafile.ini
├── conf
│   ├── ccnet.conf
│   ├── seafdav.conf
│   ├── seafile.conf
│   ├── seahub_settings.py
│   └── seahub_settings.pyc
├── installed
│   └── seafile-server_6.2.5_x86-64.tar.gz
├── logs
│   ├── ccnet.log
│   ├── controller.log
│   ├── seafile.log
│   ├── seahub_django_request.log
│   └── seahub.log
├── pids
│   ├── ccnet.pid
│   └── seaf-server.pid
├── seafile-data
│   ├── commits
│   ├── fs
│   ├── httptemp
│   ├── library-template
│   ├── seafile.db
│   ├── storage
│   └── tmpfiles
├── seafile-server-6.2.5
│   ├── check_init_admin.py
│   ├── reset-admin.sh
│   ├── runtime
│   ├── seaf-fsck.sh
│   ├── seaf-fuse.sh
│   ├── seaf-gc.sh
│   ├── seafile
│   ├── seafile.sh
│   ├── seahub
│   ├── seahub.sh
│   ├── setup-seafile-mysql.py
│   ├── setup-seafile-mysql.sh
│   ├── setup-seafile.sh
│   └── upgrade
├── seafile-server-latest -> seafile-server-6.2.5
├── seahub-data
│   └── avatars

启动Seafile-server和Seahub,第一次启动会提示建立管理员账号

$ ./seafile.sh start
$ ./seahub.sh start

此时通过浏览器访问IP:8000,应该可以登陆到管理员账号。如果出现网页乱码,可以删除/tmp/seahub_cache再重启seahub,即可恢复正常。

常用命令

关闭

$ ./seahub.sh stop # 停止 Seahub
$ ./seafile.sh stop # 停止 Seafile 进程

重启

$ ./seafile.sh restart # 停止当前的 Seafile 进程,然后重启 Seafile
$ ./seahub.sh restart  # 停止当前的 Seahub 进程,并在 8000 端口重新启动 Seahub使用 pgrep 命令检查 seafile/seahub 进程是否还在运行中
$ pgrep -f seafile-controller # 查看 Seafile 进程
$ pgrep -f "seahub" # 查看 Seahub 进程

使用 pkill 命令杀掉相关进程

$ pkill -f seafile-controller # 结束 Seafile 进程
$ pkill -f "seahub" # 结束 Seafile 进程

设置systemd服务

$ vi /etc/systemd/system/seafile.service

内容(目录根据实际调整):

[Unit]
Description=Seafile
# add mysql.service or postgresql.service depending on your database to the line below
After=network.target
[Service]
Type=oneshot
ExecStart=/data/seafile/seafile-server-latest/seafile.sh start
ExecStop=/data/seafile/seafile-server-latest/seafile.sh stop
RemainAfterExit=yes
User=root
Group=root
[Install]
WantedBy=multi-user.target
vi /etc/systemd/system/seahub.service
内容:
[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
# change start to start-fastcgi if you want to run fastcgi
ExecStart=/data/seafile/seafile-server-latest/seahub.sh start
ExecStop=/data/seafile/seafile-server-latest/seahub.sh stop
User=root
Group=root
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

用systemd加载

$ sudo systemctl daemon-reload
$ sudo systemctl enable seafile
$ sudo systemctl enable seahub

Caddy反向代理

因为seahub不支持https,需要套一层反代,网上的教程基本都是基于Nginx的,我这个人吧看到Nginx的配置文件就头大,也不要求什么并发性能,就直接上Caddy了。

Caddyfile内容(域名根据实际修改):

https://[domain] {
    proxy / localhost:8000 {
        transparent
    }
    gzip
    tls [email]
}
https://[domain]/seafhttp {
    proxy / localhost:8082 {
        without /seafhttp
        transparent
    }
    gzip
    tls [email]
}
https://[domain]/media {
    root /data/seafile/seafile-server-latest/seahub/media
    gzip
    tls [email]
}

保存,重启caddy,之后通过浏览器访问https站点,登陆,点击头像-系统管理-设置,将SERVICE_URL改为https://[domain],FILE_SERVER_ROOT改为https://[domain]/seafhttp,分别点击对号保存,上传应该就正常了。

集成OnlyOffice

Seafile社区版最近加入了OnlyOffice支持(以前只有商业版享有),可以在线编辑文档了。至于OnlyOffice服务器怎么搭的,我改天再水一篇文章=。=水完了,看这里

$ vi /data/seafile/conf/seahub_settings.py

加入:

# Enable Only Office
ENABLE_ONLYOFFICE = True
VERIFY_ONLYOFFICE_CERTIFICATE = False
ONLYOFFICE_APIJS_URL = ‘http{s}://{your OnlyOffice server’s domain or IP}/web-apps/apps/api/documents/api.js’
ONLYOFFICE_FILE_EXTENSION = (‘doc’, ‘docx’, ‘ppt’, ‘pptx’, ‘xls’, ‘xlsx’, ‘odt’, ‘fodt’, ‘odp’, ‘fodp’, ‘ods’, ‘fods’)
ONLYOFFICE_EDIT_FILE_EXTENSION = (‘docx’, ‘pptx’, ‘xlsx’)

之后重启seafile和seahub,打开任意一个office文档,应该可以在线编辑(自带的manual除外,此文档只能浏览) 。

然后为了阻止http通讯,可以用防火墙拦截8000/tcp端口。

配置邮件服务

譬如自助注册、密码重置之类的功能,需要邮件服务。

$ vi /data/seafile/conf/seahub_settings.py

加入([]部分根据实际调整) :

# Email config
EMAIL_USE_SSL = True
EMAIL_HOST = ‘[smtp_server]‘
EMAIL_HOST_USER = ‘[email]‘
EMAIL_HOST_PASSWORD = ‘[password]‘
EMAIL_PORT = ‘465’
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER

其中账户必须是已经存在的邮件账户。另外如果用TLS,则第一行SSL改为TLS,port改为587。重启Seafile生效。 在设置中开启邮件相关的设置项,测试邮件是否正常发送,如果没有,则检查logs/seahub.log。

其他设置

设置单个用户默认空间上限

$ vi /data/seafile/conf/seafile.conf

加入:

[quota]
default=1    #单位是GB,只能是整数,0代表不限制

之后重启seafile服务器 。

参考资料

点赞

发表评论(评论内容可能需要审核,无需重复发表)