在Ubuntu上搭建WebDAV服务器用于Venera同步
概述
Venera是一款优秀的漫画阅读器,支持通过WebDAV协议同步阅读进度和漫画数据。本教程将详细介绍如何在Ubuntu系统上搭建WebDAV服务器,实现Venera的多设备数据同步。
环境要求
- Ubuntu 18.04 或更高版本
- Apache2 HTTP服务器
- 具有sudo权限的用户账户
安装步骤
1. 安装Apache和必要模块
1 2
| sudo apt update sudo apt install apache2 apache2-utils
|
2.启用WebDAV相关模块
1 2 3
| sudo a2enmod dav sudo a2enmod dav_fs sudo a2enmod auth_digest
|
3.创建目录结构
1 2 3 4 5
| sudo mkdir -p /var/www/webdav
sudo mkdir -p /var/lib/dav
|
设置目录权限
1 2 3
| sudo chown -R www-data:www-data /var/www/webdav sudo chown -R www-data:www-data /var/lib/dav sudo chmod -R 755 /var/www/webdav
|
4.创建WebDAV配置文件
创建配置文件 /etc/apache2/sites-available/webdav.conf:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| DavLockDB "/var/lib/dav/DavLock" Alias /webdav "/var/www/webdav"
<Directory "/var/www/webdav"> DAV On Options Indexes AuthType Basic AuthName "WebDAV" AuthUserFile "/etc/apache2/webdav.passwd" Require valid-user DavDepthInfinity on <LimitExcept GET POST OPTIONS PROPFIND> Require valid-user </LimitExcept> LimitRequestBody 1073741824 </Directory>
|
一行一段
5.创建用户认证
创建WebDAV用户
1
| sudo htpasswd -c /etc/apache2/webdav.passwd 用户名
|
设置密码文件权限
1 2
| sudo chown www-data:www-data /etc/apache2/webdav.passwd sudo chmod 640 /etc/apache2/webdav.passwd
|
6.启动配置并重启服务
1 2 3 4 5
| sudo a2ensite webdav.conf
sudo systemctl restart apache2
|
7.配置防火墙
如果使用UFW防火墙,开放相应端口
1 2 3 4 5
| sudo ufw allow 80/tcp
sudo ufw allow 8080/tcp
|
端口配置(可选)
如果需要使用非标准端口,编辑端口配置文件
1
| sudo nano /etc/apache2/ports.conf
|
修改监听端口
云服务器额外配置
###如果使用云服务器(阿里云、腾讯云等),需要在控制台配置安全组规则:
###1. 登录云服务商控制台
###2. 找到服务器实例的安全组配置
###3. 添加入站规则:
· 协议类型:TCP
· 端口范围:使用的端口号(80或8080)
· 授权对象:0.0.0.0/0
###测试配置,测试连接
1
| curl -X PROPFIND http://服务器IP:端口/webdav/ -u '用户名:密码'
|
###成功应返回XML格式的目录列表。
###检查服务状态
1 2 3 4 5
| sudo systemctl status apache2
sudo netstat -tlnp | grep apache2
|
搞定了,接下来就是维护了
用户管理
1 2 3 4 5
| sudo htpasswd /etc/apache2/webdav.passwd 新用户名
sudo htpasswd -D /etc/apache2/webdav.passwd 用户名
|
###服务管理
1 2 3 4 5 6 7 8
| sudo systemctl restart apache2
sudo systemctl status apache2
sudo tail -f /var/log/apache2/access.log
|