业界动态
搭建cardDAV calDAV 的方法
2024-11-20 23:29

转载注明来源: 本文链接 来自osnosn的博客,写于 2019-10-10.

搭建cardDAV calDAV 的方法



手机上有很多云笔记app,大多支持云存储。可是把笔记放在别人的服务器上,总觉得不太安全。所以想把云笔记存在自己家。

有很多开源的云笔记,比如蚂蚁笔记(Leanote),nextcloud-note, 可是建立起来都比较麻烦,当然功能也是很强的。 leanote是golang写的,要mango数据库支持。nextcloud-note需要安装nextcloud云盘系统,需要php+mysql支持。

网上搜了一下,

  • Android,有几款笔记支持webdav同步,比如"一本日记"(要付费),"可乐记"(免费),"易码"(免费)。
  • 苹果,只找到一款免费的。收费的就很多了。"Notebooks for iPhone"(免费), "Notebooks Write and Organize"(收费) 搭建cardDAV calDAV 的方法 搭建cardDAV calDAV 的方法  软件自行搜索。 【easymark-2.2.0beta3.apk.zip】
  • 最近发现一个支持多平台,免费的markdown云笔记:【Obsidian 官网】。试用了一下,觉得不错。 搭建cardDAV calDAV 的方法 obsidian 在"Community Plugins"中,安装"Remotely Save"社区插件, 就支持 webdav 同步。 webdav 支持 http, https 连接,支持 basic, digest 认证。 本文的下面有些简单的指引。

nextcloud 支持webdav协议。 买了台迷你pc(x86架构),装CentOS7,安装nginx,php-fpm,mariadb,然后装nextcloud,然后在nextcloud中装notepad插件。 手机端app:

  • nextcloud-note,挺好的,支持markdown。支持多层目录。但只支持配置一个服务器地址。或者说,app只支持一个账号。不能多账号共存。
  • nextcloud,云盘,也不错,支持文件,图片,通讯录同步。支持多账号共存。
  • nextcloud 的 webdav 对易码的支持也很好
  • nextcloud 云盘的安卓版 APP 本身就可以备份手机通讯录(打包为一个文件,上传到云盘目录)
  • 易码,支持markdown,支持多账号共存。(这个云笔记,我很推荐)
  • nextcloud 对 DAVdroid(DAVx5)2.6.3 支持很好。配置好账号后,通讯录,日历,个人提醒 就都可以同步了。

用了一段时间,发现云盘我基本上没什么需求,为了用个云笔记,建了这么个大东西,感觉挺浪费。

也挺复杂的,还要装mango数据库。放弃。


apache2,nginx,lighttpd 都支持webdav。 apache2 比较臃肿,放弃。 所以只尝试 nginx 和 lighttpd 。 如果从源码安装,无论什么系统,无论 nginx 或 lighttpd 都能装好webdav服务。 以下是尝试使用系统的预编译包安装和配置。

  • 从epel源安装nginx,为1.12.2版。(yum install)
    • 发现有http_dav_module,但缺失http_dav_ext. 导致PROPFIND指令不支持。
  • 从nginx-stable源安装nginx,1.16.1版,(yum install)
    • 也是有http_dav_module,没有http_dav_ext。
  • CentOS7 , CentOS8 的预编译 nginx 都有 http_dav_module, 都缺失了 http_dav_ext。
  • 从epel源装lighttpd,是1.4.54版,(yum install, centos7)
    • 配置好后出错 ,发现编译时缺少 参数。导致PROPFIND指令没有按要求返回XML内容,而是返回了0字节。

手上还有台斐讯N1盒子,刷了armbian。debian10(buster)版。

  • 装nginx,1.14.2,(apt install nginx-full)
    • 有http_dav_module 和 http_dav_ext 。
    • PUT,DELETE,MOVE,PROPFIND 支持OK。
    • 不知道 COPY,OPTION 支持如何,因为没用到。
    • 不过有bug,nginx要求MKCOL指令跟的目录名,必须以'/' 除号结尾。而易码app在创建目录时,目录名末尾不带除号。
      • MKCOL 的问题,可以通过配置 rewrite 解决。
    • 所以,易码能用,只是要事先手动把目录创建好。易码保存和更新笔记,没问题。
      • 手动 每个目录中要有目录,易码用来存放附件
    • 最终可以完美支持易码
  • x86/64 debian-10 的预编译 nginx-full,完全和 armbian 的 debian10 一样。支持很好。
  • x86/64 debian-11 的预编译 nginx-full,完全和 armbian 的 debian11 一样。支持很好。
  • 装lighttpd,1.4.53,(apt install)
    • 有lighttpd-mod-webdav模块。
    • PUT,DELETE,MKCOL,PROPFIND 支持OK。
    • 不知道 COPY,OPTION 支持如何,因为没用到。
    • 有bug。但MOVE指令总是返回400 Bad request. (lighttpd独立运行在80或88,或通过nginx的proxy_pass到88口,MOVE指令都返回400) 好像是 1.4.53 的 bug, 1.4.54 就修复了。
    • 所以,易码能同步获取更新,能创建新笔记。但不能修改旧笔记(会出错)。
  • lighttpd-1.4.54
    • 配置: document-root指向别的目录。其他配置参考本文后面的内容。
    • "易码"访问,能创建目录,创建新笔记,修改笔记,删除笔记。但不能同步获取笔记的更新,返回 "Not a valid DAV response"
      • 原因是 PROPFIND "目录"(不带/结尾) 重定向 到 "目录/" 的返回码是200 而非 301,易码不能识别。
      • 配置中加入 rewrite 可以解决。 ,然后配置中加入
    • 最终可以完美支持易码
  • nginx-1.17.7 (基础包,没有webdav支持)
    • 配置: root指向别的目录。其他配置参考本文后面的内容。
    • "易码"能用,只是要事先手动把目录创建好。MKCOL指令要求以'/'结尾,表现和 debian10 中的预编译 nginx 一样。
      • MKCOL 的问题,可以通过配置 rewrite 解决。
    • 最终可以完美支持易码

centos7/8 : (缺少"http_dav_ext",导致PROPFIND不支持,放弃) debian-10/armbian : nginx-full (支持很好) openwrt-19 : nginx-all-module (支持很好)

yum install nginx 或者 apt install nginx 。 在vhost的 server { ... } 中,加上以下一段。则在 中打开webdav。


.htaccess.pw.basic 用 htpasswd 命令创建。(yum install apache2-utils/apt install apache2-utils) 如果使用"易码",则手动建立存放笔记的目录,同时在这个目录中创建"assets"目录。 如果用其他支持webdav的云笔记,则自己去确定,云笔记需要创建什么目录。 因为页面认证用的是basic,所以不建议用http,不安全。建议用https (ssl)。 ssl 的配置自行上网搜索。 nginx 运行在非标准端口(比如http/8001,https/8443),webdav的功能不影响,也能工作。

  • 关于MKCOL需要以'/'结尾的问题 参考: Nginx WebDAV模块配置简述 , 修复Nginx的WebDAV功能 , 修复Nginx的WebDAV功能

配置文档: documentation Overview

centos7/8 : yum install lighttpd (缺少"--with-webdav-props",导致PROPFIND有问题,放弃) debian-10/armbian : apt install lighttpd lighttpd-mod-webdav (MOVE指令有问题, 等升级到1.4.54再说, 暂时放弃) openwrt-19 : lighttpd (支持很好)

启用两个module: 修改 /etc/lighttpd/lighttpd.conf


创建目录 修改目录的owner ,(www-data为lighttpd的运行身份) 创建账号文件 设置账号文件的权限 webdavuser文件为纯文本文件,一行一个账号。用户名和密码之间用冒号隔开。


设置完成,http://xxx.xxx.xxx:88/note/ 目录就开启了webdav。

因为页面认证用的是basic,所以不建议用http,不安全。建议用https (ssl)。

  • 方法一,用 lighttpd 就配置 lighttpd 的 ssl。用 nginx 就配 nginx 的 ssl。自行上网搜索。
  • 方法二,nginx 配置好 ssl 的支持,然后用 nginx 做反向代理。 在nginx的配置文件中的 server { ... } 中加入,
    
    注意,loction后的路径(note)要和proxy_pass中的路径相同。
  • 方法三,lighttpd 配置好 ssl 支持,加上 mod_proxy 支持反向代理。请自行上网搜索。
  • 方法四,apache2 配置好 ssl 支持,apache2 也支持反向代理。请自行上网搜索。

最后,把ssl的web,443口在路由器上做个映射(需公网ipv4)。 如果80和443标准端口不能用,也可以把https映射到8443这种非标准端口。 或者在路由器上允许转发(ipv6)。路由器支持ipv6就行。宽带运营商都已经提供ipv6了。国内三大手机运营商的4G网都有ipv6支持。 参考【设置openwrt路由器的防火墙_允许从外网访问_ipv6服务_ipv4端口映射】。 再配置个动态域名。见【202108_支持ipv6的_DDN】。 就可以设置"易码"app,添加webdav服务器。开心的写你的云笔记。



  • GO: parkomat

    • 很多 golang 依赖包难以下载。
    • 终于 build 成功。amd64的执行文件约9.7MB. 集成了DNS解析服务+web服务+webdav服务。
    • dns 解析配置简单,功能不错,可以用来负责解析一个域名(记录不多的话)。这样就不用装bind。
    • web,做个静态网站似乎也不错。
    • webdav,易码访问显示"400 Bad Request", parkomat 显示 "prop must not be empty"
  • C语言: WebDAV-Daemon 1.1

    • 配置比较麻烦
    • 在项目目录中之后, 把build目录中的rap和webdavd两个文件,复制到 /root/webdavd目录中。
    • 把package-with/share复制到/root/webdavd目录中。
    • 把package-with/pam.conf复制为/etc/pam.d/webdavd
    • 写config.conf文件
      
      
    • 执行
    • 问题:
      • MKCOL 命令能成功创建目录,但返回内容似乎不标准,不被"易码"接受。
      • MOVE 命令执行失败。
      • 账号认证,缺省使用系统用户。如果要文件认证,则需要改pam文件,需要学习pam模块。
      • chroot-path只能指定为或,不支持类似的格式。
  • GO: Simple Go WebDAV server 3.0.0

    • 有binary包下载,直接就能用。有arm的包。
    • 不会配置。总是返回"400 Bad Request"
  • go-webdav 0.2.0

    • 然后copy出来测试。
    • 没有认证机制,"易码" 返回 "Not valid DAV response"
  • webdavserver 1.0.3

    • go build 失败,好多依赖包下载不了。
    • 终于 build 成功。amd64的执行文件约 8MB.
    • 易码访问,显示"400 Bad Request"。
  • GO: The simple webdav server 0.3.0

    • 有amd64的binary包,没有arm64的。
    • 易码访问出错 "prop must not be empty"
  • phpEasyVCS

    • 用"易码"访问 测试页面 http://phpeasyvcs.sourceforge.net/demo/webdav.php ,失败。返回403错误。放弃。
  • phpdav (对webdav支持好)

    • github上最后更新时间为 2019-5-13
    • 代码中无用户认证机制。如要用户认证,则需依赖nginx或apache的认证。所以也不支持多用户。
    • PUT,DELETE,MKCOL,MOVE,PROPFIND 支持OK。对"易码"支持很好。
    • 不知道 COPY,OPTION 支持如何,因为没用到。
    • 只需要sqlite3支持,不需要其他数据库。
    • 有一点小bug,不过不太影响。
      • PUT 指令时,
      • 作者只试过装在网站的 root。不过我费了好大劲才装到二级目录。
      • 项目的php文件放置的路径,不能包含下划线( _ )
      • 浏览器访问,当访问的路径末尾不带/时,页面左上角的"上级目录"会跳两层,链接不正确。
    • 安装配置:
      • 从github中把所有文件copy到本地目录。比如 /mydir/phpdav/ (这个路径中不能包含下划线)

      • 保留 conf/ handlers/ library/ logs/ models/ interface/, 其他的没有用,可删。

        • mkdir -p logs/phpdav/debug; #这个目录中会生成log文件,不知道有什么用。
        • chown apache.apache logs/phpdav/debug;
        • chown apache.apache library/db/sqlite;
        • mv interface/ mydav/; #下文以及配置文件中,所有的"mydav"必须一样
      • 安装nginx,php72-fpm,配置方法自己搜索。

        • php72 需要 php72-pdo, php72-sqlite3, php72-mbstring, php72-xml, 几个包。
      • 修改 conf/config.ini.php 中

        • mkdir -p /mydir/dav-data/mydav; chmod apache.apache /mydir/dav-data/mydav;
      • nginx的两个配置文件 phpdav.conf, php72-fpm.conf 如下。

      • 把 写入 nginx.conf 中的 server {..} 内,location / {..} 之前,即可。

      • 这样就把 webdav 配置在 mydav 目录。通过访问 即可。

        
        
        
        
  • 可道云 kodbox,v1.20 build:0528

    • 我是使用esir的 openwrt-R21.6.1 中的可道云环境,(nginx-1.19,php-7.4,sqlite3) 按网上搜到的安装教程,去可道云官网,下载了个人免费版,进行安装。(2021-06-05装)
    • 安装后,发现有bug,无法激活webdav插件。发现是 esir中的 luci-app-kodexplorer-13-1 包有问题。没有打开 php 的 PATHINFO 支持。 修改 /etc/init.d/kodexplorer 文件,找到 改为 即可。 然后去web配置页面,网络存储 -> 可道云,重新启用一次(即重启)。就可以正常启用可道云的webdav插件了。
    • "易码"访问,能创建目录,创建新笔记,改名笔记,删除笔记,同步笔记更新。 修改笔记内容,返回 "Attempt to invoke virtual method 'long java.util.Date.getTime()' on a null object erference" 偶尔,同步刷新笔记时,也会出现上述错误。 支持不太好
    • 另,可道云的手机app,分 kodbox,和 kodexplorer 两款。为防止装错版本,导致无法登录。 建议登录自建的可道云后,点击个人头像,找到的链接,安装下载。就没问题了。

  • GO: 教你搭建超简单的WebDAV服务, parkomat
  • caddy: 超简单方法为H大PADAVAN增加WEBDAV功能
  • docker: 搭建个人 webdav 服务器
  • PHP: 可能是最简单的PHP搭建WebDAV(无需数据库); phpEasyVCS
  • PHP: 我个人用php开发了一个webdav协议的通信软件,望支持; 挂载说明; phpdav
  • PY2: Tiny Python WebDav Server

  • 请看 【搭建私人通讯录/日历同步服务_使用cardDAV/calDAV服务】

  • 请看 【搭建私人CardDAV/CalDAV服务_通讯录/日历同步服务_debian11_radicale3_nginx_DAVx5】

  • 目前最新是 1.4.1 版。
  • obsidian 免费用于个人和教育用途,商用需付费。不是开源项目。
  • obsidian 在"Community Plugins"中,安装"Remotely Save"社区插件, 就支持 webdav 同步。
  • webdav 支持 http, https 连接,支持 basic, digest 认证,支持80或443以外的非标准端口。
  • 安卓版 免费。有谷歌框架的,直接在市场安装。没有谷歌框架的,可以去 apk-dl.com , apkpure.com/cn 找安装包。
  • 苹果版,免费。直接在AppStore安装。
  • 还有 windows版,mac版,Linux桌面版。
  • 安装之后,需要先创建一个仓库(Vault),否则不能配置,不能装plug in。
  • obsidian 的笔记都是 markdown 格式。对 markdown 支持很好。
  • obsidian 的所有笔记,实际上是保存在本地设备的。只是通过"Remotely Save"插件和服务器同步 md 文件。
  • 社区插件,实际上都是在 GitHub 上。所以,安装有点困难。 菜单->设置->Communit plugins->Turn on community plugins 打开社区插件的支持。 具体安装方法,自行网上搜索。
  • 安装插件,更改网络后,需要杀掉 obsidian,重新打开,才能搜索到插件。
  • 目前"Remotely Save"最新是 0.3.25 版。
  • 配置"Remotely Save",不会自动创建Vault目录,Vault目录需要自己在服务器上创建。 假设你的Vault名为"abc",webdav配置 , 实际会访问 , abc这个目录需要存在。
  • "Remotely Save"同步时,没有冲突检测,只是以修改时间判断,同步时保留最新的。 所以,多设备同时修改,会有问题。 建议同一时间只在一个设备修改,同步完,再开其他设备。每个设备打开时,先同步一下,拉取最新文件。 只同步 md后缀的文件,txt文件不会出现在app中。 虽然有这些限制,但已经很好用了。
  • obsidian 的所有笔记(md文件),都是按目录存放。同步到webdav后,存放格式相同,没有加密。 哪天 obsidian app没了,你的webdav上的文件,都还在,能正常打开。
  • obsidian 可以创建多个仓库(Vault),可以在Vault之间切换。不过,插件是跟着Vault的。 即,每个Vault都要单独安装"Remotely Save"插件,单独配置webdav。
  • 支持在一个Vault内,全文搜索,笔记支持中文。界面也支持中文,可以切换到中文界面。
  • 目录或文件,不支持密码保护。打开obsidian就能看到所有笔记,不支持进入某个目前时,询问密码。 进入 obsidian 也不支持密码保护,直接就打开了。
  • 统信uos (基于Debian),直接在应用商店就能装Desktop版,还是最新的1.0.3。
  • 安卓版,Desktop版(uos,linux,win一样),装"Remotely Save",在Vault名称的目录中,进入目录, 手工创建,(全部小写,目录权限 mode=0755), 在里头放入三个文件(mode=0644) main.js manifest.json styles.css,重启obsidian就OK了。 三个文件,去github release下载。
  • 所有客户端,建议设置,
    • 设置->Files & links-> Default location for new attachments, 缺省是放根目录,建议指定一个目录,如"attach"。
    • "Remotely Save" -> Run once On Sart Up Automatically, 比如启动后1秒执行。保证每次打开都拉取最新文件。
  • 安卓客户端,设置->Mobile->Configure mobile Quick Action,可以设置一个快捷功能(下拉屏幕), 默认是。列表中找不到。输入关键词查找,就能找到。
  • "Remotely Save"的 https,不支持任何 不被信任的证书 (自签名证书,过期证书)。 可以考虑添加信任的CA(未测试)。 内网纯ip访问的场景,只能选择 http + digest,会稍微安全一点点。 另外,还支持设置一个密码,把所有笔记文件加密。同步到服务器的文件也会被加密。
  • 安卓版有个小问题,系统截屏不支持obsidian的滚屏,不能长截屏。"Copy as html',"EXPORT IMAGE PLUGIN","OBSIDIAN ENHANCING EXPORT" 这三个插件好像在安卓版上,都不行。

    以上就是本篇文章【搭建cardDAV calDAV 的方法】的全部内容了,欢迎阅览 ! 文章地址:http://fabua.ksxb.net/news/899.html 
     文章      相关文章      动态      同类文章      热门文章      栏目首页      网站地图      返回首页 海之东岸资讯移动站 http://fabua.ksxb.net/mobile/ , 查看更多   
最新文章
《实战十一人》12月20日内测开启
t2627_2_2627_1:4.0t1-t0:45.0t2-t1:4.0t3-t2:0.0t4-t3:2.0t5-t4:32.0t6-t5:14.0t7-t6:3.0t8-t7:0.0t9-t8:15.0t10-t9:0.0t11-t10
“报关骗局”阿里云客服《APP》软件无法提现是骗局吗,不正规能追回吗?
〖→被骗请点击进入帮助平台提现追款〗〖→被骗请点击进入帮助平台提现追款〗希望阅读此文的读者能够及时采取措施以减少损失;请
微信公众号点击菜单拉取消息事件推送如何操作?
2、注册成功后,通过用户名和密码登录微号帮平台,立即登录6、粉丝点菜单定时推送:推送信息设置7、推送信息设置:自定义弹出信
p站加速器哪个好?手把手教你怎么进P站?
老司机说的P站是什么?网上很多人都在说P站,而还有不少小白们不懂P站是什么意思,在网上也搜不到答案。其实,P站是有两层意思的
"码海拾贝-趣探1688:免费源码的狂欢"
一瞥眼,成品网站源码1688免费推荐,嘿,这话题不就跟那菜市场里挑挑拣拣的大妈一样,热热闹闹,沸反盈天?今儿个,科技圈里这档
哪些平台最适合进行广告推广?
在当今数字化时代,推广广告已成为企业营销战略的重要组成部分,选择合适的平台进行广告投放对于提高品牌知名度、吸引潜在客户以
东莞外贸建站推广,东莞外贸网站推广,东莞谷歌SEO优化
  在当今全球化的市场环境下,外贸企业越来越依赖于互联网来拓展业务和提高度。为了在激烈的竞争中脱颖而出,提高外贸网站在搜
maya快捷键大全
MAYA快捷键大全免费领取q群:289728818“独学而无友,则孤陋而寡闻!欢迎广大站友进群交流学习Enter 完成当前操作  ~ 终止当前操
外贸网站建设广告/百度下载电脑版
我开始使用 sklearn.naive_bayes.GaussianNB 进行文本分类,并且获得了很好的初始结果 . 我想使用分类器返回的概率作为置
优化博客seo的建议(优化博客seo的建议有哪些)
大家好,今天小编关注到一个比较有意思的话题,就是关于优化博客seo的建议的问题,于是小编就整理了7个相关介绍优化博客seo的建