捣腾WebDav同步Joplin笔记数据
Joplin是个好东西,记笔记很方便,采用Markdown语法。
我选择笔记工具的前提是数据必须自己掌控,要可以支持加密🔐,免费开源的最好。选了很多工具目前发现就是Joplin符合自己的要求。当然,前提是国内产品一定不选!别问为什么…懂得都懂。
昨天下班回去花了两三个小时解决数据同步问题,首选要保证数据安全,可以选择本地的文件同步备份,在同步设置中选择FileSystem,然后设置本地的存储的绝对路径。如果需要解决异地同步,以及跨设备问题,还需要考虑云同步。官方提供了Joplin Cloud,以及其他的Onenote等云存储方式,不过我最终选择自己的博客服务器搭建WebDav来实现。
首先说个关键,在顺利搭建完WebDav的时候,浏览器以及Finder都是可以正常用户名密码访问的,这意味着WebDav是没有问题了,但发现在设置Joplin时无论如何都无法通过用户认证,域名用户密码都设置没问题,重试好几次还是不行,于是只能Google。
需要认证看的是Github上的问题解答,关于Joplin无法通过WebDav服务认证,始终报401错误的问题。原因是同步服务不支持WebDav 的Digest 认证方式,应该改用Basic 的认证方式。
1、关于如何在Unbutu Apache下配置Webdav 服务,可以参考这边文章 How To Configure WebDAV Access with Apache on Ubuntu 20.04
2、关于Joplin 无法通过 的问题说明可以参阅 Github的讨论 401 Unauthorized - WebDav - IOS
3、关于如何配置Basic 认证方式的问题,可以基于第一篇文章的方法,或直接看这篇文章 Creating a WebDAV server on Ubuntu and connecting it to ONLYOFFICE
操作步骤
第一步:通过Apache a2enmod 模块启用 dav
sudo a2enmod dav
sudo a2enmod dav_fs
启用后重启一下Apache 服务 sudo systemctl restart apache2.service
第二步:配置Apache
这个跟站点虚拟主机配置步骤一致。
创建目录 sudo mkdir /var/www/webdav
指定目录权限 sudo chown www-data:www-data /var/www/webdav
创建一个目录用于存储数据文件 sudo mkdir -p /usr/local/apache/var/
为目录指定权限 sudo chown www-data:www-data /usr/local/apache/var
这步关键,如果有站点了,则在原有配置文件编辑内容即可。打开站点SSL配置文件
sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf
在这个文件第一行加入: DavLockDB /usr/local/apache/var/DavLock
在文件的<VirtualHost>
标签内增加 Alias 路径 Alias /webdav /var/www/webdav
,以及目录:
<Directory /var/www/webdav>
DAV On
</Directory>
配置说明:
- Alias 是实现域名如:https://your-domain.com/webdav/ 访问时的指向路径 /var/www/webdav
- Directory 是告诉Apache 为目录 /var/www/webdav 启用WebDav
最终文件内容类似如下:
DavLockDB /usr/local/apache/var/DavLock
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@your_domain
ServerName your_domain
ServerAlias your_domain
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/your_domain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your_domain/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
</Directory>
</VirtualHost>
</IfModule>
完成以上配置,最好检查一下配置是否正确,采用如下命令:
sudo apachectl configtest
然后再重启服务 sudo systemctl restart apache2.service
第三步:为WebDav 添加认证
1、创建密码文件:
sudo touch /usr/local/apache/var/users.password
同时为文件指定权限:
sudo chown www-data:www-data /usr/local/apache/var/users.password
2、设置用户名密码,如下示例 sammy 为访问WebDav域名时需要提供的用户名
sudo htdigest /usr/local/apache/var/users.password webdav sammy
命令执行后会提示输入两次密码,回车确认。
以上是Digest认证方式设置的用户名+密码,如果是Basic认证方式,如下命令
sudo htpasswd -c /etc/apache2/users.passwords alex
alex 是你的用户名,执行命令后会提示为该用户设置密码。
3、重新打开配置site-enabled站点SSL文件 /etc/apache2/sites-enabled/your_domain-le-ssl.conf
,注意修改 Directory 部分的内容如下:
<Directory /var/www/webdav>
DAV On
AuthType Digest
AuthName "webdav"
AuthUserFile /usr/local/apache/var/users.password
Require valid-user
</Directory>
4、启用认证方式
- Digest方式启用:
sudo a2enmod auth_digest
- Basic 方式启用:
sudo a2enmod auth_basic
5、重启Apache服务 sudo systemctl restart apache2.service
至此,Apache Webdav配置完成,通过浏览器访问 https://your-domain.com/webdav , 输入用户名密码即可进入远程目录。
-- End.
依然是少年@TITSTUDIO 2022年8月3日