吾爱破解软件站

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
开启左侧

开源Markdown笔记软件Joplin,可自己搭建云笔记

[复制链接]
laobenlang 发表于 2022-5-19 20:37:00 | 显示全部楼层 |阅读模式
本帖最后由 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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

qwxa 发表于 2022-5-19 22:37:00 | 显示全部楼层
只是joplin的话,可以直接用onedrive的,不用找公网IP自建webdev
回复

使用道具 举报

osmake 发表于 2022-5-23 10:40:00 | 显示全部楼层
joplin仍然有一个问题无法解决,你上传的图片无法从云端删除,按照这个软件的逻辑,是把你上传的图片按照他的格式保存一份(webdav或者自定义盘),然后再按照另外一个格式保存一份在系统盘,你删除的笔记在他两个保存的地方都不会同步删除,只能通过joplin客户端,导出所有笔记,然后把两个位置的文件全删除,再导入,再同步。
因此,正常使用下不会出现什么问题。但如果有大量图片存入,内存只会越用越多,只能通过手动删除。
详情内容github有,时间18,20年的提问
回复

使用道具 举报

smallmouse228 发表于 2022-5-19 20:52:00 | 显示全部楼层
感谢分享!!!
回复

使用道具 举报

旺仔大馒头 发表于 2022-5-19 20:52:00 | 显示全部楼层
第一次沙发,支持一下
回复

使用道具 举报

oyes001 发表于 2022-5-19 20:57:00 | 显示全部楼层
先支持一下,感谢楼主的分享,学习学习
回复

使用道具 举报

tian5i 发表于 2022-5-19 21:18:00 | 显示全部楼层
用Resilio Sync岂不是更方便?
回复

使用道具 举报

柳岸红尘客 发表于 2022-5-19 21:26:00 | 显示全部楼层
感谢分享
回复

使用道具 举报

RileyW 发表于 2022-5-19 21:31:00 | 显示全部楼层
感谢分享!!!
回复

使用道具 举报

夏夜吉他 发表于 2022-5-19 21:39:00 | 显示全部楼层
先支持后欣赏!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|吾爱破解软件站

GMT+8, 2022-7-3 22:27 , Processed in 0.029310 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表