用 Dufs 搭建简易网盘

需要在老破小 VPS 上部署一个简单的网盘服务。由于服务器配置很低,程序越小巧越好。具体需求如下:

找到两个符合要求的开源项目,分别是 Go 语言编写的 webdav,以及 Rust 语言编写的 dufs。后者除了支持 WebDAV 以外,还提供了一个网页管理界面。因此最后决定选择 dufs

使用以下命令下载安装:

shellwget https://github.com/sigoden/dufs/releases/download/v0.43.0/dufs-v0.43.0-x86_64-unknown-linux-musl.tar.gz
tar -xzvf dufs-v0.43.0-x86_64-unknown-linux-musl.tar.gz
mv dufs /usr/local/bin/dufs

创建用户 dufs 用于运行 dufs 服务:

shelluseradd -m dufs

假设网盘的账户用户名为 admin,密码为 123456。创建服务配置文件 /etc/systemd/system/dufs.service,内容如下:

ini[Unit]
Description=Dufs Service
After=network.target
Wants=network.target

[Service]
Environment="DUFS_AUTH=admin:123456@/:rw"
Environment="DUFS_BIND=127.0.0.1"
Environment="DUFS_PORT=6789"
User=dufs
Group=dufs
Type=simple
PIDFile=/run/dufs.pid
ExecStart=/usr/local/bin/dufs -A /home/dufs
Restart=on-failure

[Install]
WantedBy=multi-user.target

此处的配置里,dufs 绑定本机地址,这是因为最后会使用 Nginx 作为前置 HTTP 服务器。如果想要让外部直接访问,可以将地址改为 0.0.0.0

另外,dufs 支持使用 SHA-512 密码散列。使用以下命令生成密码散列:

shellopenssl passwd -6 123456

使用生成的散列值直接替换原来的密码文明。

最后启动服务:

shellsystemctl enable dufs
systemctl start dufs