没有AirDrop也能优雅的传文件——SnapDrop全方面使用指南

博主自建的SnapDrop服务

SnapDrop是一个基于WebRTC接口来实现提供局域网内跨平台传输文件和信息服务的开源项目,基于GNU 3.0协议在GitHub开放源代码。本文可能是最全面的SnapDrop使用及部署攻略。

1.使用SnapDrop

由于自建有一定的门槛,对于一般用户可以可直接使用官方提供的网站https://snapdrop.net/(或者博主自建的汉化版服务https://qwq.pw/),因为文件不经过服务器进行传输,所以对于安全性无需过多的担心。

使用SnapDrop非常简单,在需要传输文件的设备间同时打开https://snapdrop.net/网站,每台设备会被分配一个随机的名字。单击(电脑端)/轻点(移动端)需要传输文件的设备图标即可进行传输,也可以右键(电脑端)/长按(移动端)相应的设备图标来传送文字信息。

如果你采用的是Chrome浏览器,还可以在地址栏找到相应图标,将该网站添加为Chrome应用,就可以像原生应用一样快速访问,以备下次使用。

使用Chrome浏览器安装应用

在iOS设备上,你也可以将网页添加到主屏幕,以便下次使用。

此外,也有开发者尝试使用Electron为SnapDrop开发本地版本(https://github.com/alextwothousand/snapdrop-desktop),即可在仅有局域网连接的情况下进行文件传输,但目前该项目还在重写中。

2.采用Docker部署自己的SnapDrop服务

官方文档推荐采用docker-compose来进行快速部署:

git clone https://github.com/RobinLinus/snapdrop.git
cd snapdrop
docker-compose up -d

默认的http端口为8080,https端口为443,访问http://localhost:8080即可打开你部署的SnapDrop服务了。利用docker-compose restart/stop及docker logs snapdrop_node_1命令即可快速重启、停止和查看日志。

通过修改docker-compose.yml中的ports部分,即可修改默认端口。

如果你需要PWA支持,可以参考官方文档的相关说明。简单来说,就是需要部署有效的https证书,如果你不会配置nginx,只要查阅配置https的相关教程修改默认的nginx配置即可。

3.手动部署SnapDrop

官方文档并没有提供不采用Docker的部署方式,但手动部署也同样十分方便。如果你的服务器还部署了其他项目,可以参考本部分来进行手动部署。

将SnapDrop项目下载到本地后,我们可以发现项目由server和client两部分组成,只要分别部署服务器端和客户端即可。

sever端采用的是nodejs,部署非常简单。

#下载项目到本地,并进入server目录
git clone [email protected]:RobinLinus/snapdrop.git
cd snapdrop/server 
#运行index.js
npm install
node index.js

如果需要持久化运行,可以使用npm的forever模块

npm install forever -g
forever start index.js

还可以通过添加-o和-e参数,来设置访问日志和错误日志。

foerver的常用命令如下:

start               Start SCRIPT as a daemon
stop                Stop the daemon SCRIPT by Id|Uid|Pid|Index|Script
stopall             Stop all running forever scripts
restart             Restart the daemon SCRIPT
restartall          Restart all running forever scripts
list                List all running forever scripts

client端是静态的,使用nginx部署即可,但需要注意参考官方docker提供的default.conf修改nginx配置。

server {
    listen       80;
    #server_name  your.domain;
    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;
    expires epoch;
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
#最关键的部分,配置后端服务器,注意修改proxy_pass
    location /server {
        proxy_connect_timeout 300;
        proxy_pass http://node:3000;
        proxy_set_header Connection "upgrade";
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header X-Forwarded-for $remote_addr;
    }
    location /ca.crt {
        alias /etc/ssl/certs/snapdropCA.crt;
    }
    #error_page  404              /404.html;
    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

配置好之后,访问你nginx设置的域名,即可打开SnapDrop了,如果没有出现Connection lost. Retry in 5 seconds…的提示,就说明配置成功,否则可能是nginx配置有误,需要检查配置。和docker部署的情况相同,只要正确设置了https,也可以同样启用PWA。


虽然SnapDrop相比AirDrop,无论是在功能还是便捷程度上,还有一定的差距。但是SnapDrop仍不失为跨平台传输文件的极佳选择,可以较为方便的自部署也保证了信息的安全性,值得一试。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据