0%

前言

在不使用官方的Obsidian Sync的情况下,在移动设备如Android、IOS上进行笔记同步是比较麻烦的事情,看过不少文章使用各种方式进行同步,比如以下:

综上,本人使用Nextcloud和Syncthing在PC端和移动设备进行笔记的同步,使用inotifywait监控两边目录改动,运行nextcloudcmd命令进行同步。

准备

  • 自建NextCloud服务端
  • 自建Syncthing服务
  • 安装nextcloudcmd、inotifywait

步骤

运行以下脚本即可,说明:

  • 填入参数即可
  • 启动命令: bash nextcloud-sync.sh start
  • 停止命令: bash nextcloud-sync.sh stop
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/bash  
# author: kkzzhizhou
# desc: nextcloud inotify sync script.
# This script is a wrapper around nextcloudcmd, designed to keep a local directory synchronised with a Nextcloud repository.
#
# Usage: nextcloud-sync.sh configfile
#
# The config file must contain "username", "password", "local" directory and "remote" URL to a Nextcloud service.

PROG=$(basename "$0")
PROGDIR=$(cd "$(dirname "$0")" && pwd)

set -e
set -u
set -o pipefail

USERNAME='xxx'
PASSWORD='xxx'
LOCAL_DIR="xxx" # 本地Syncthing文件夹路径
REMOTE_URI="https://xxx" # 填写Nextcloud服务地址
DAVPATH="Notes"
NEXTCLOUD_DATA_DIR='xxx' # 填写Nextcloud用户数据路径
NEXTCLOUD_DIR="$NEXTCLOUD_DATA_DIR/$USERNAME/files/$DAVPATH"

case $1 in
start)
echo 0 > "$PROGDIR/sync.lock"
echo "start monitoring: ${LOCAL_DIR}"
echo "start monitoring: ${NEXTCLOUD_DIR}"
/usr/bin/inotifywait -mrq --exclude '/\..*' --timefmt '%d/%m/%y %H:%M:%S' --format '%T %w %f %e' -e modify,delete,create "$LOCAL_DIR" -o $PROGDIR/inotify.log -d
/usr/bin/inotifywait -mrq --exclude '/\..*' --timefmt '%d/%m/%y %H:%M:%S' --format '%T %w %f %e' -e modify,delete,create ${NEXTCLOUD_DIR} -o $PROGDIR/inotify.log -d
nohup /usr/bin/inotifywait -mq --timefmt '%d/%m/%y %H:%M:%S' --format '%T %w %f %e' -e modify $PROGDIR/inotify.log | while read file
do
last_sync_timestamp=$(cat $PROGDIR/sync.lock)
current_timestamp=$(date +%s)
timestamp_check=$[$last_sync_timestamp + 10]
if [ $timestamp_check -lt $current_timestamp ];then
echo $current_timestamp > "$PROGDIR/sync.lock"
echo "$current_timestamp: sync was started"
nextcloudcmd -s --non-interactive --user "$USERNAME" --password "$PASSWORD" --path "$DAVPATH" "$LOCAL_DIR" "$REMOTE_URI"
#else
#echo "$current_timestamp: sync ignored"
fi
done > "$PROGDIR/sync.log" & 2>&1
;;
stop)
echo "stop all monitoring"
pkill inotifywait
;;
esac

介绍

最近改造Obsidian附件管理,使用自建的Nextcloud作为附件存储,所以有了一个需求,右键文件上传至Nextcloud并获取内部链接(为什么不使用外部链接呢?因为笔记属于重要资料性质,采用内部链接更能保证附件的保密性),因此自己使用Python开发的Windows下右键菜单上传至NextCloud并获取内部链接复制到剪贴板的工具。代码已经开源在Github上,欢迎大家使用。

链接

安装

1
2
scoop bucket add zapps https://github.com/kkzzhizhou/scoop-zapps
scoop install nextcloud-uploader

配置

修改config.json文件, 放在程序的/data目录下,格式如下:

1
2
3
4
5
6
{
"nextcloud_url": "",
"username": "",
"password": "",
"upload_path": ""
}
阅读全文 »

需求

实现公司通过SMB访问租房NAS,并且拨通OpenVPN之后,只有OpenVPN客户端之间的流量经过OpenVPN,其他流量按原来的方式。

工具

  • OpenVPN Server(Ubuntu)
  • OpenVPN Client(Windows、CentOS)

步骤

  • 在Ubuntu机器上安装OpenVPN, curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh && bash openvpn-install.sh
  • 修改OpenVPN Server的配置文件, vim /etc/openvpn/server.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
;服务端配置
port 1194
proto tcp
dev tun
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
topology subnet
client-to-client # 允许客户端之间的连接
server 192.168.10.0 255.255.255.0
ifconfig-pool-persist ipp.txt
dh none
persist-key
persist-tun
ecdh-curve prime256v1
tls-crypt tls-crypt.key
crl-verify crl.pem
ca ca.crt
cert server_JFIAtsavKPr9oaij.crt
key server_JFIAtsavKPr9oaij.key
auth SHA256
cipher AES-128-GCM
ncp-ciphers AES-128-GCM
tls-server
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
client-config-dir /etc/openvpn/ccd
status /var/log/openvpn/status.log
log /var/log/openvpn.log
duplicate-cn # 允许多个客户端使用同一个配置文件
verb 3
  • OpenVPN生成的客户端配置在设置的用户名home目录下,有个.ovpn, 修改这个配置文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
client
proto tcp
remote <公网IP> <端口>
dev tun
resolv-retry infinite
nobind
dhcp-option DNS 192.168.5.1 # 配置为你的默认的DNS服务器地址
persist-key
persist-tun
remote-cert-tls server
verify-x509-name server_JFIAtsavKPr9oaij name
auth SHA256
auth-nocache
cipher AES-128-GCM
tls-client
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256
ignore-unknown-option block-outside-dns
;setenv opt block-outside-dns # Prevent Windows 10 DNS leak
verb 3
<ca>
-----BEGIN CERTIFICATE-----
...... # 省略
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
...... # 省略
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN ENCRYPTED PRIVATE KEY-----
...... # 省略
-----END ENCRYPTED PRIVATE KEY-----
</key>
<tls-crypt>
#
# 2048 bit OpenVPN static key
#
-----BEGIN OpenVPN Static key V1-----
...... # 省略
-----END OpenVPN Static key V1-----
</tls-crypt>
  • Windows安装openvpn客户端, scoop install openvpn
  • CentOS安装openvpn客户端, yum -y install openvpn,CentOS openvpn client启动命令为:openvpn –config /data/openvpn/com-lan.ovpn –daemon

方法一

由网友”软件小妹”制作的网盘助手脚本,原理是通过显示百度网盘下载直链,

使用方法:

  • 浏览器安装Tampermonkey或者VolientMonkey
  • 打开链接百度网盘简易下载助手(直链下载复活版),安装脚本
  • 登录你的百度网盘帐号。
  • 选择要下载的文件,点击页面里的 “简易下载助手” 。
  • 点击获取直链下载链接,然后使用 IDM 或者 Aria2 这类多线程下载软件来加速下载。

注意事项:

  • 不支持「文件夹」和「多文件压缩包」下载
  • 只适合少量下载

方法二

网盘助手(测试效果不行,也有可能我配置有误)

使用方法:

阅读全文 »

需求

使用自动化程序模拟用户下单,对SaaS建站前端Web界面进行压力测试

工具

  • [[AWS]]在EC2提供的Auto Scaling
  • 自动化程序运行环境:Windows Server 2019

步骤

  • 制作线上仿真环境:从rds快照中新建实例用于仿真数据库,同时redis也是同样的操作
  • 制作Windows Server 2019程序镜像,将程序打包在系统镜像中(IAM),并配置开机自启动
阅读全文 »