恰好最近有相关需求,我就研究了一下。
测试环境: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服务器 。
文章评论