捣腾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日

评论已关闭。Comments are turned off for this article.