搭建私人的云笔记_使用webdav服务

搭建私人的云笔记_使用webdav服务

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

手机上有不少云笔记app,大多支持云存储。但是把笔记放在别人的服务器上,总以为不太安全。因此想把云笔记存在本身家。html

有不少开源的云笔记,好比蚂蚁笔记(Leanote),nextcloud-note,
但是创建起来都比较麻烦,固然功能也是很强的。
leanote是golang写的,要mango数据库支持。nextcloud-note须要安装nextcloud云盘系统,须要php+mysql支持。mysql

网上搜了一下,nginx

  • Android,有几款笔记支持webdav同步,好比"一本日记"(要付费),"可乐记"(免费),"易码"(免费)。
  • 苹果,只找到一款免费的。收费的就不少了。"Notebooks for iPhone"(免费), "Notebooks Write and Organize"(收费)

因此尝试本身建个webdav服务器。golang

尝试nextcloud

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

  • nextcloud-note,挺好的,支持markdown。支持多层目录。但只支持配置一个服务器地址。或者说,app只支持一个帐号。不能多帐号共存。
  • nextcloud,云盘,也不错,支持文件,图片,通信录同步。支持多帐号共存。
  • 易码,支持markdown,支持多帐号共存。(这个云笔记,我很推荐)

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

看了看leanote

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


尝试只建个webdav服务

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

CentOS7 上

  • 从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。
  • 从epel源装lighttpd,是1.4.54版,(yum install)
    • 配置好后出错 Sorry, no sqlite3 and libxml2 support include,发现编译时缺乏 --with-webdav-props 参数。致使PROPFIND指令没有按要求返回XML内容,而是返回了0字节。

Armbian

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

  • 装nginx,1.14.2,(apt install)
    • 有http_dav_module 和 http_dav_ext 。
    • 不过有bug,nginx要求MKCOL指令跟的目录名,必须以'/' 除号结尾。而易码app在建立目录时,目录名末尾不带除号。
    • 因此,易码能用,只是要事先手动把目录建立好。易码保存和更新笔记,没问题。
  • 装lighttpd,1.4.53,(apt install)
    • webdav支持挺好,没发现什么问题。

openwrt18.06

  • lighttpd, lighttpd-mod-auth, lighttpd-mod-webdav, (opkg install)
    • 支持ssl,webdav,props。应该对webdav支持完整。不过我没试过。

nginx 的 webdav 配置

yum install nginx 或者 apt install nginx 。
在vhost的 server { ... } 中,加上如下一段。则在 http(s)://youdomain.doman/dav/ 中打开wendav。

location ^~ /dav/ {
   dav_methods PUT DELETE MKCOL COPY MOVE;
   dav_ext_methods PROPFIND OPTIONS;
   # 上传文件的最大容量限制,0为不限制
   client_max_body_size    20M;
   create_full_put_path on;
   dav_access user:rw group:rw all:r;
   auth_basic "Authorized Users Only";
   auth_basic_user_file   $document_root/dav/.htaccess.pw.basic ;
   satisfy any;
}

由于页面认证用的是basic,因此不建议用http,不安全。建议用https (ssl)。 ssl 的配置自行上网搜索。

lighttpd 的 webdav 配置

centos : yum install lighttpd (配置后有问题,放弃)

armbian : apt install lighttpd lighttpd-mod-webdav
lighttpd-enable-mod auth webdav

修改 /etc/lighttpd/lighttpd.conf

server.document-root  = "/var/www/lighttpd"  # 设置web的根目录
server.port  = 88  # http 的端口,缺省为 80 
# lighttpd 的运行身份,通常不修改,就用缺省设置 
server.username    = "www-data" 
server.groupname  = "www-data"

#添加如下段落
$HTTP["url"] =~ "^/note($|/)" {
  webdav.activate = "enable"
  webdav.is-readonly = "disable"
  auth.backend = "plain"
  auth.backend.plain.userfile = "/etc/lighttpd/webdavuser"
  auth.require = ( "" => (
     "method"  => "basic",
     "realm"   => "Access DAV",
     "require" => "valid-user"
    ), )
}

建立目录 mkdir -p /var/www/lighttpd/note
修改目录的owner chown www-data.www.data note,(www-data为lighttpd的运行身份)
建立帐号文件 touch /etc/lighttpd/webdavuser
设置帐号文件的权限 chown root.www-data webdavuser; chmod 640 webdavuser
webdavuser文件为纯文本文件,一行一个帐号。用户名和密码之间用冒号隔开。

test:123456
user:password

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

让 webdav 运行在 ssl 上

由于页面认证用的是basic,因此不建议用http,不安全。建议用https (ssl)。

  • 方法一,配置 lighttpd 的 ssl 。自行上网搜索。
  • 方法二,nginx 配置好 ssl 的支持,而后用 nginx 作反向代理。
    在nginx的配置文件中的 server { ... } 中加入,
location ^~ /note/ {
   allow all;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_http_version 1.1;
   proxy_pass http://127.0.0.1:88/note/;
}

注意,loction后的路径(note)要和proxy_pass中的路径相同。

  • 方法三,apache2 配置好 ssl 支持,apache2 也支持反向代理。请自行上网搜索。

最后,把ssl的web,443口在路由器上作个映射(需公网ipv4)。
或者在路由器上容许转发(ipv6)。路由器支持ipv6就行。宽带运营商都已经提供ipv6了。国内三大手机运营商的4G网都有ipv6支持。
再配置个动态域名。
就能够设置"易码"app,添加webdav服务器。开心的写你的云笔记。


转载注明来源: 本文连接 来自osnosn的博客.

相关文章
相关标签/搜索