从手机发送文件到服务器、NAS 或树莓派

最近核对

大多数浏览器文件分享工具,都要求接收端开着一个浏览器标签页。而家用服务器、NAS、树莓派或云主机没有屏幕,也没有浏览器。tosstome 的命令行收件箱正是为这样的机器设计的。

设置收件箱

在服务器上运行(需要 Node.js 22 或更高版本):

tosstome listen --dir /srv/inbox

它会在终端里输出一个链接和一个二维码:

手机和服务器在同一网络时,文件通过该网络直接传给服务器,不会离开这个网络。在其他任何地方,网络条件允许时直接传输,否则经过一个不保留任何内容的中继。

收件箱链接在重启后保持不变,所以主屏幕上的图标一直有效。之后想再次显示链接,运行 tosstome url。想丢弃旧链接并生成新的,运行 tosstome listen --new。

收件箱如何受到保护

在本地网络中也可见

tosstome listen --nearby

加上 --nearby 后,这台服务器也会出现在同一网络中浏览器的“附近”列表里,所以家里的任何人不需要链接就能发给它。这些文件会放进单独的 nearby/ 子文件夹,因为该网络中的任何人都可以发送。

作为服务运行

对于需要一直接收文件的机器,可以让它在你用来守护其他服务的工具下运行,比如 systemd 单元、Docker 容器或 tmux。加上 --json,每行会输出一个 JSON 事件(ready、offer、file、error),便于记录日志或供脚本使用。

[Unit]
Description=tosstome inbox
After=network-online.target

[Service]
ExecStart=/usr/bin/env tosstome listen --dir /srv/inbox --json
Restart=always
User=media

[Install]
WantedBy=multi-user.target

从另一台电脑的终端发送

tosstome send report.pdf photos.zip --to "INBOX_LINK"

请给链接加上引号,因为其中的 # 在 shell 中会被当作注释。

常见问题

服务器需要公网 IP 或开放端口吗?

不需要。收件箱会主动向 toss2.me 发起一个出站 WebSocket 连接并在那里等待,所以在家用路由器、NAT 以及允许出站 HTTPS 的防火墙后面都能使用。

在家里,文件会经过互联网吗?

不会。只有简短的连接建立过程会经过 toss2.me。手机和服务器在同一网络时,文件通过 WebRTC 在两者之间直接传输,所以速度受限于你的 Wi-Fi 或以太网。页面会显示这次传输是直连还是经过了中继。

我发送时服务器不在线会怎样?

不会发送任何内容,也不会存储任何内容。手机页面会提示收件箱已离线。

别人能往我的收件箱发文件吗?

只有拿到链接的人可以。如果链接泄露了,运行 tosstome listen --new 来替换它,旧链接就会失效。

文件大小有限制吗?

tosstome 没有设置大小限制。接收端的浏览器会把文件放在内存中,直到你保存,所以对于几个 GB 的文件,命令行收件箱是更好的接收方式,因为它会直接写入磁盘。

相关内容

马上试试

在两台设备上打开 toss2.me。无需应用,无需账号,不保存任何内容。

立即发送文件