| 本帖最后由 laobenlang 于 2022-5-19 20:42 编辑 
 本人已经在论坛排重,近期无人分享本文中涉及的软件Joplin和webdav。
 
 
 写在前面:
 1.本文为什么发在精品软件区?
 --主要以分享软件为主,所有软件皆为开源免费,不是本人编写。遇到问题可以直接在github上提单。
 2.本文初衷?
 -- 本人不爱学习,到现在为止,python,java,JavaScript,C++的各种语法已经记混了,为了不用记忆,常年依赖笔记软件。在单位和家中笔记不同步,这个很让我恼火,先后用过印象,坚果,有道云,百度云等软件,但是收费不开心!限流不开心!密码会被上传不开心!
 为什么不能自己搞个服务器,自己同步笔记呢。
 然后对比各种各样的私有云、支持同步笔记等软件。
 终于我的笔记软件一路升级,从【eDiary】->【EssentialPIMPro(收费,可终身买断)】->【Joplin】。
 
 3.自己搭建云笔记优势?
 -- 安全、不限速、不限空间。啥都自己说了算。
 
 
 4.主要用到的软件?
 -- 笔记主体 Joplin
 服务器自家电脑(打电话给电信宽带要的公网IP)
 网盘软件 webdav
 
 
 ![]() ![]() ![]() 
 
 下面正题:
 a.自己搭建云笔记,你得有个服务器。
 真正想要数据自由,你得有个自己的服务器,这个服务器最好是有公网IP的局域网主机。
 路由器中直接吧dmz指向自己电脑即可。
 PS:家中有宽带,可以尝试打客服,直接选宽带业务,说我家装了个监控,需要个外网IP,不需要固定地址,动态公网IP就行了。
 另外这个动态IP,每次拨号,地址会变。你如果不想动不动同步不了,最好自己申请个域名,然后写个脚本自动更新解析,我用的阿里云域名,python写个程序,开机自启动,每隔一小时检测下外网IP和域名解析IP是否一致。
 
 自动解析IP
 
 [Python] 纯文本查看 复制代码 import requests
class myIP:
    @staticmethod
    def getMyIp():
        data = requests.get('https://ip.tool.lu/')
        text = data.text
        return text.split('\n')[0].strip().split(':')[1].strip()
 
 [Python] 纯文本查看 复制代码 import time, datetime, os
import logging
from lib.aliyunDNSTools import Sample
from lib.DNSRecord import *
from lib.myip import *
loglevelflag = logging.INFO
logformatflag = "%(asctime)s %(name)s:%(levelname)s:%(message)s"
logging.basicConfig(filename="run.log", filemode="w", format=logformatflag, level=loglevelflag)
console = logging.StreamHandler()
console.setLevel(loglevelflag)
formatter = logging.Formatter(logformatflag)
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
class mainRunner :
    oldip = ''
    myip = ''
    needCheckDNS = False
    def __init__(self):
        try:
            self.oldip = myIP.getMyIp()
            self.needCheckDNS = True
        except:
            print(">>>" +datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') + "初始化获取IP失败!")
            logging.info("初始化获取IP失败!")
            pass
    def checkIPChange(self):
        try:
            self.myip = myIP.getMyIp()
            print(">>>" +datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') +' oldip:' + self.oldip + ',newip:' + self.myip)
            logging.info(' oldip:' + self.oldip + ',newip:' + self.myip)
            if len(self.myip) < 1:
                return False
            return self.myip != self.oldip
        except :
            print(">>>" + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') +"检测IP变化时,获取IP失败!")
            logging.info("检测IP变化时,获取IP失败!")
            return False
    def checkDNS(self):
        try:
            retdata = Sample.getDNSRecord()
            dns = DNSRecord()
            dns.loadFromJson(retdata['body']['DomainRecords']['Record'][0])
            # print(dns)
            if dns.Value != self.myip:
                dns.Value = self.myip
                Sample.updateDNSRecord(dns)
            self.needCheckDNS = False
        except :
            print(">>>" +datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') +'检测更新DNS时报错!')
            logging.info("检测更新DNS时报错!")
    def run(self):
        while True:
            tempFlage = self.checkIPChange()
            self.needCheckDNS = tempFlage or self.needCheckDNS
            if self.needCheckDNS:
                self.checkDNS()
            print(">>>" + datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') +"检测完成,开始休眠^_^")
            logging.info("检测完成,开始休眠^_^")
            time.sleep(60*60*1)
            # time.sleep(1)
 b.有了服务器,你得启动webdav服务。
 提供webdav服务的软件有很多,不少私有云盘都带着,我通过docker装过可道云,装过seafile,装过nextcloud。功能比较傻瓜,性能是真的差,同步慢的要死,慢慢慢慢慢慢慢慢慢慢慢死了。
 我找了个Github开源的一个,单纯提供webdav服务的程序,地址在这里(https://github.com/hacdias/webdav)
 下载完就一个exe文件,然后自己写个yaml就可以启动了,看看readme,半分钟搞定。
 
 
 yaml配置:
 
 [XML] 纯文本查看 复制代码 
# 监听任意网卡,多网卡可指定对应ip
address: 0.0.0.0
port: 8888
# 如果无需验证填 false
auth: true
# 如果不需要 https 则填 false
tls: false
# https证书和密钥,如果 tls 为 false,cert 和 key 不需要
cert: D:/XXXX.pem
key: D:/XXXX..key
# 访问前缀,建议默认
prefix: /
 
# 如果 auth 为 false 生效,文件共享的路径
scope: E:/workspace/webdav
# 是否允许修改
modify: true
rules: []
 
# 跨域设置
cors:
  enabled: true
  credentials: true
  allowed_headers:
    - Depth
  allowed_hosts:
    - http://localhost:888
  allowed_methods:
    - GET
  exposed_headers:
    - Content-Length
    - Content-Range
 
# 用户信息,如果 auth 为 true 生效
users:
  - username: user
    password: 123
    scope: E:/XXXX/Joplin
 c.安装使用Joplin,笔记软件。
 打开 工具---选项---同步,选择webdav,URL填写你的服务器地址或者域名地址。
 
 [HTML] 纯文本查看 复制代码 http://www.xxxx.com:8888/webdav用户名密码在yaml里面配置的。
 保存,走你~~~
 
 下载地址:
 打不开的可以打开下steam++加速器。
 joplin:
 https://github.com/laurent22/joplin
 webdav软件:
 https://github.com/hacdias/webdav
 |