摘要訊息 : 對 Seafile 進行進階的配置.
0. 前言
本文目錄中的標題過長, 可能影響內容的排版和閱讀體驗, 因此本文的目錄需要閣下手動展開.
本文于 2022 年 3 月 18 日进行一次更新和修正. 修正之后本文已经归档, 不再享受更新.
1. 开机启动
每一次重新启动之后, 都要进入 Seafile 的目录, 启动 Seafile 是一件很麻烦的事情. 我们需要在 /etc/systemd/system
创建 seafile.service
: vim /etc/systemd/system/seafile.service
, 添加
[Unit]
Description=Seafile
After=network.target
[Service]
Type=oneshot
ExecStart=/www/cloud/seafile-server-latest/seafile.sh start
ExecStop=/www/cloud/seafile-server-latest/seafile.sh stop
RemainAfterExit=yes
User=root
[Install]
WantedBy=multi-user.target
vim /etc/systemd/system/seahub.service
在 /etc/systemd/system
创建 seahub.service
: vim /etc/systemd/system/
, 添加seahub
.service
[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
ExecStart=/www/cloud/seafile-server-latest/seahub.sh start-fastcgi
ExecStop=/www/cloud/seafile-server-latest/seahub.sh stop
User=root
Type=oneshot
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
完成之后我们重新加载 systemd 的守护进程 : systemctl daemon-reload
. 之后就可以使用 systemctl
命令启动 Seafile : systemctl start seafile
, systemctl start seahub
.
设定开机启动 : systemctl enable seafile
, systemctl enable seahub
; 取消开机启动 : systemctl disable seafile
, systemctl disable seahub
.
2. Logrotate
Logrotate 的作用是剪切日志文件的时候可以不需要关闭服务器, Logrotate 默认存储在 /etc/logrotate.d
. 我们创建 Seafile 相关的文件 : vim /etc/logrotate.d/seafile
, 添加
/www/cloud/logs/seaf-server.log
{
daily
missingok
rotate 52
compress
delaycompress
notifempty
sharedscripts
postrotate
[ ! -f /www/cloud/pids/seaf-server.pid ] || kill -USR1 `cat /www/cloud/pids/seaf-server.pid`
endscript
}
/www/cloud/logs/ccnet.log
{
daily
missingok
rotate 52
compress
delaycompress
notifempty
sharedscripts
postrotate
[ ! -f /www/cloud/pids/ccnet.pid ] || kill -USR1 `cat /www/cloud/pids/ccnet.pid`
endscript
}
3. Memcached
安装使用 Memcached
可以大幅度提高性能. 首先需要安装相关依赖 : yum install -y gcc libffi-devel python-devel openssl-devel libmemcached libmemcached-devel memcached
, pip install pylibmc
.django-pylibmc
之后在 seahub_settings.py
中添加如下配置
CACHES = {
'default': {
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
'LOCATION': '127.0.0.1:11211',
}
}
4. 断点续传
这个功能对于我们来说非常有用, 有时候因为电脑或者网络的原因, 在上传文件的时候, 会意外断开. 如果没有这个功能, 我们只能重新上传, 那么有了断点续传, 我们就可以在上次停止的地方继续上传. 我们只需要在 seafile_settings.py
中添加 ENABLE_RESUMABLE_FILEUPLOAD = True
即可.
5. 用户角色与权限
5.1 访客邀请功能
需要赋予用户 can_invite_guest
权限之外, 还需要在 seahub_settings.py
中添加 ENABLE_GUEST_INVITATION = True
.
5.2 更改用户权限与新增用户
代码中的 guest
和 default
属于默认配置, 你可以更改其中的选项, 也可以复制下面的选项新增一个用户 :
ENABLED_ROLE_PERMISSIONS = {
'default': {
'can_add_repo': True,
'can_add_group': True,
'can_view_org': True,
'can_use_global_address_book': True,
'can_generate_share_link': True,
'can_generate_upload_link': True,
'can_invite_guest': True,
'can_connect_with_android_clients': True,
'can_connect_with_ios_clients': True,
'can_connect_with_desktop_clients': True,
'role_quota': '',
},
'guest': {
'can_add_repo': False,
'can_add_group': False,
'can_view_org': True,
'can_use_global_address_book': False,
'can_generate_share_link': False,
'can_generate_upload_link': False,
'can_invite_guest': False,
'can_connect_with_android_clients': False,
'can_connect_with_ios_clients': False,
'can_connect_with_desktop_clients': False,
'role_quota': '',
}
}
6. 在线 Office
待补充...
7. Office Online Server 集成
待补充...
8. 病毒扫描
待补充...
9. 多机构支持
多机构支持可以让 Seafile 像一个企业一样添加多个下属机构, 每一个机构中都可以有管理员 (类似于一个简化的组织). 我们需要在 seahub_settings.py
中添加如下配置 :
MULTI_INSTITUTION = True
EXTRA_MIDDLEWARE_CLASSES = (
'seahub.institutions.middleware.InstitutionMiddleware',
)
之后可以在管理者界面看到 "机构" 的配置选项.
10. 双重认证
开启双重认证基本上杜绝了盗号的可能, 就算知道密码也无法登陆. 我们需要在 seahub_settings.py
中添加 ENABLE_TOW_FACTOR_AUTH = True
.
通过 Twilio
服务, 可以支持短信验证. 首先需要安装依赖 : pip install twilio
, 之后在 seahub_settings.py 中添加
TWO_FACTOR_SMS_GATEWAY = 'seahub_extra.two_factor.gateways.twilio.gateway.Twilio'
TWILIO_ACCOUNT_SID = '你的帐户 SID'
TWILIO_AUTH_TOKEN = '你的帐户验证 TOKEN'
TWILIO_CALLER_ID = '你的 CALLER ID'
EXTRA_MIDDLEWARE_CLASSES = (
'seahub_extra.two_factor.gateways.twilio.middleware.ThreadLocals',
)
如果之前定义过 EXTRA_MIDDLEWARE_CLASSES = (...)
, 那么需要替换成 EXTRA_MIDDLEWARE_CLASSES += (...)
.
11. seafile.conf
的相关配置
11.1 默认空间存储量设置
[quota]
default = 2 # 单位为 G
11.2 默认历史记录设置
[history]
keep_days = 30 # 单位为 天
11.3 文件服务器设置
[file server]
max_upload_size = 2048 # 最大上传文件大小, 单位为 M
max_download_dir_size = 2048 # 最大下载文件夹大小, 单位为 M
max_indexing_threads = 10 # 并发线程数
fixed_block_size = 2 # 文件切割块大小, 单位为 M
web_token_expire_time = 3600 # 令牌过期时间
11.4 ZIP 编码问题
下载的文件夹可以打包为 .zip
格式, 默认编码为 UTF-8. 但是 Windows 上默认不支持 UTF-8, 那么需要添加如下的配置 :
[zip]
windows_encoding = iso-8859-1
11.5 MySQL 连接池大小
[database]
max_connections = 200
11.6 文件锁定自动过期时间
[file_lock]
default_expire_hours = 12 # 单位为 小时
12. seahub_settings.py
相关配置
ENABLE_SETTINGS_VIA_WEB = False # 禁用 Web 界面
SESSION_SAVE_EVERY_REQUEST = True # 存储每次请求的会话数据
ENABLE_WIKI = True # 开启个人 wiki 和群主 wiki
ENABLE_VIDEO_THUMBNAIL = True # 开启视频缩略图
SITE_NAME = '私有云' # 网站标题
SITE_TITLE = '私有云' # Tab 标题
ENABLE_SYS_ADMIN_VIEW_REPO = True # 开启管理员浏览资料库
ENABLE_SHARE_LINK_AUDIT = True # 未登录用户下载前提供 E-mail
ENABLE_UPLOAD_LINK_VIRUS_CHECK = True # 开启文件上传后病毒扫描
ENABLE_TERMS_AND_CONDITIONS = True # 开启用户使用前需要同意网站协议
VIRUS_SCAN_NOTIFY_LIST = ['user_a@example.com', 'user_b@example.com'] # 病毒扫描通知 E-mail
13. seafevents.conf
相关配置
13.1 审计日志
[AUDIT]
enable = true
13.2 邮件通知
[SEAHUB EMAIL]
enable = true
interval = 30m # 发送邮件间隔时间 : s (秒), m (分), h (小时), d (天)
14. 邮件发送
邮件提醒功能能够提供更好的用户体验, 我们需要在 seahub_settings.py
中添加 :
EMAIL_USE_TLS = 开启 TLS 这里改为 True, 否则改为 False
EMAIL_USE_SSL = 开启 SSL 这里改为 True, 否则改为 False
EMAIL_HOST = '伺服器地址' # SMTP 服务器
EMAIL_HOST_USER = '帐户名称' # 用户名和域名
EMAIL_HOST_PASSWORD = '帐户密码' # 密码
EMAIL_PORT = '连接埠' # 端口
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = EMAIL_HOST_USER
15. 自定义 Web
待补充...
16. 日常维护
16.1 数据库清理
进入 Seafile 档案夹 cd /www/cloud/seafile-pro-server-
*, 执行指令 ./seahub.sh clearsession
. 然后登录到 MySQL, 执行指令 use seahub_db
和 DELETE FROM Event WHERE to_days(now()) - to_days(timestamp) > 90;
.
16.2 备份与恢复
待补充...
16.3 Seafile FSCK
简单来说, Seafile FSCK
能够帮助你恢复某些损坏了的对象. 它首先会检查资料库的完整性, 并且删掉已经毁坏的资料库, 然后将所有受损的资料恢复到最后一次正常的状态, 最后导出数据库. 你只需要按顺序执行下面的指令集即可 :
cd /www/cloud/seafile-pro-server-*
./seaf-fsck.sh
./seaf-fsck.sh --repair
当你想检查或者修复指定的资料库, 可以在后面添加参数 : [library-id1] [library-id2]
, [--repair|-r] [repo_id_1 [repo_id_2 ...]]
.
如果你想对资料库进行导出, 可以使用如下的命令 ./seaf-fsck.sh --export 改为汇出路径
.
如果你想导出指定的资料库, 可以在指令后面添加参数 : [library-id1] [library-id2]
.
16.4 Seafile GC
简单来说, Seafile GC
是一个用于垃圾回收的操作. 进入 Seafile 档案夹 cd /www/cloud/seafile-pro-server-
*. 如果你想仅仅查看 Seafile 在运行的过程中产生了多少垃圾, 你可以输入如下的命令 : ./seaf-gc.sh --dry-run
.
如果你想对指定的资料库进行查看, 你可以在后面添加参数 [repo-id1] [repo-id2]
.
直接运行 ./seaf-gc.sh
将会对垃圾进行回收, 对指定的资料库的垃圾进行回收, 同样需要在后面添加参数 [repo-id1] [repo-id2]
.
如果你仅仅想删除第一类无用数据块 (属于删除的资料库), 而不想删除没有被删除的资料库产生的垃圾, 可以执行 ./seaf-gc.sh -r
.
介绍一下其他关于 ./seaf-gc.sh
的命令 :
./seaf-gc.sh run
: 运行垃圾回收程式;./seaf-gc.sh verify
: 检查是否误删了还在使用的数据块;./seaf-gc.sh force
: 强制删除已经损坏的资料库.
17. WebDAV 扩展
待补充...
18. FUSE 扩展
待补充...
自創文章, 原著 : Jonny. 如若閣下需要轉發, 在已經授權的情況下請註明本文出處 :