静看光阴荏苒
不管不顾不问不说也不念

5分钟部署一个可供Netcatty同步的WebDAV服务

Netcatty是一款现代化的跨平台SSH客户端和终端管理器,最近尝试切换到这个SSH客户端使用,用了也有一段时间了,确实挺好用的,开源免费还支持多端同步,为了使用它的同步功能,我自建了一个WebDAV服务,本文记录下WebDAV服务部署和Netcatty同步配置。

安装Docker:

apt update
apt install curl nginx python3-certbot-nginx
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

创建目录和compose文件:

mkdir -p /opt/webdav/data/netcatty && cd /opt/webdav && nano docker-compose.yml

写入如下内容:

name: webdav

services:
  webdav:
    container_name: webdav
    image: ghcr.io/hacdias/webdav:latest
    ports:
     - 127.0.0.1:6065:6065
    restart: always
    volumes:
      - ./data:/data
      - ./config.yml:/config.yml:ro

新建一个配置文件:

nano config.yml

写入如下内容,注意将password改为一个高强度的密码:

address: 0.0.0.0
port: 6065
tls: false
prefix: /
debug: false
noSniff: false
behindProxy: true
directory: /data
permissions: CRUD

log:
  format: console
  colors: true
  outputs:
    - stderr
users:
  - username: netcatty
    password: hidden
    directory: /data/netcatty

启动:

docker compose up -d

请务必配置TLS反向代理,以保护basic auth的账号密码防止被中间人获取。

nano /etc/nginx/sites-available/webdav

写入如下内容:

server {
    listen 80;
    listen [::]:80;
    server_name webdav.example.com;
    client_max_body_size 0;

    location / {
        proxy_pass http://127.0.0.1:6065;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;

        set $dest $http_destination;
        if ($http_destination ~ "^https://webdav.example.com/(?(.+))") {
            set $dest /$path;
        }
        proxy_set_header Destination $dest;
    }
}

启用站点:

ln -s /etc/nginx/sites-available/webdav /etc/nginx/sites-enabled/webdav

签发证书:

certbot --nginx

下面简单说一下Netcatty的同步配置,我主要用Windows10和openSUSE风滚草,两边设置同一个主密码,然后配置刚部署的WebDAV服务连接信息正常情况下就能用了。Windows这边没啥问题开箱即用,主要是openSUSE这边,我用的是KDE桌面,配置好了后同步报错:

这里说的钥匙串指的就是系统的安全存储,然后用这个命令看了一下当前系统用的是哪种安全存储:

busctl --user list | grep -Ei 'kwallet|secrets'

不知道为啥明明是KDE桌面却使用的是gnome-keyring:

正常情况下应该使用KDE钱包才对,然后我找到系统设置-KDE密码库:

1.在这里点击“启用KDE密码库子系统”

2.勾选使用KWallet密码库作为密码服务接口。

3.如果没有默认密码库,就点击“新建”创建一个密码库。

配置好了后光注销不行必须重启系统。再执行之前的命令验证一遍:

busctl --user list | grep -Ei 'kwallet|secrets'

正常的话应该显示:

回到Netcatty检查一下就正常了,也可以同步了:

有点抽象的是,遇到这个问题的时候openSUSE这边的Netcatty不知道怎么回事把我云端(WebDAV服务器)的数据给覆盖了。。正常情况下我Windows这边假设同步到云端有3个主机,那么openSUSE这边也应该同步获取这3个主机才对,但是openSUSE直接把云端的3个主机给删了,这导致Windows这边再去同步云端的数据把我Windows这边的3个主机也搞没了。不过还好当时我主要是测试还没正式使用,在解决KDE的问题后,双端已经能够正常同步了,只是我觉得Netcatty在处理这种意外情况的时候表现有点不佳。

赞(0)
未经允许不得转载:荒岛 » 5分钟部署一个可供Netcatty同步的WebDAV服务
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

分享创造快乐

广告合作资源投稿