スマートフォンからサーバー・NAS・Raspberry Pi にファイルを送る
最終確認
ブラウザ型のファイル共有ツールの多くは、受信側でもブラウザのタブを開いておく必要があります。ところが自宅サーバー、NAS、Raspberry Pi、クラウド上の VM には画面もブラウザもありません。tosstome のコマンドライン受信箱は、まさにそうしたマシンのために作られています。
受信箱をセットアップする
サーバーで次のコマンドを実行します(Node.js 22 以降が必要です)。
tosstome listen --dir /srv/inbox
ターミナルにリンクと QR コードが表示されます。
- QR コードをスマートフォンで読み取るか、リンクをスマートフォンにコピーします。
- そのページをスマートフォンのホーム画面に追加します。
- ページを開いてファイルを選び、送信を押します。ファイルは
/srv/inboxに書き込まれます。
スマートフォンがサーバーと同じネットワークにいるときは、ファイルはそのネットワーク内だけで直接届き、外には出ません。それ以外の場所からは、2 つのネットワークの条件が合えば直接、合わなければ何も保存しない中継サーバーを経由して届きます。
受信箱のリンクは再起動しても変わらないので、ホーム画面のアイコンはそのまま使えます。あとからもう一度リンクを表示するには tosstome url を実行します。古いリンクを捨てて新しく作り直すには tosstome listen --new を実行します。
受信箱の保護のしくみ
- リンクの
#の後ろに、秘密の送信キーが入っています。ブラウザはリンクのこの部分をページのリクエストとしてサーバーに送らず、キーは後から WebSocket 接続の中で渡されます。 - サーバーが保存するのは、キーの SHA-256 ハッシュだけです。
- サーバー側では、別のエージェントキーを使います。このキーは
~/.config/tosstome/inbox.jsonの外には出ません。 - 送信キーを間違えると送信者がロックアウトされますが、サーバー自身の接続には影響しません。
- 送信者が指定したファイル名は、保存先フォルダー内の単純な名前に整えられます。ファイルは
.partとして書き込まれ、完了した時点で名前が変更されるので、フォルダーを監視するスクリプトが書きかけのファイルを見ることはありません。
ローカルネットワークにも表示する
tosstome listen --nearby
--nearby を付けると、同じネットワークにいるブラウザの「同じネットワーク」の一覧にもサーバーが表示され、リンクなしで家の誰からでも送れるようになります。そのネットワークにいれば誰でも送れてしまうため、こうして届いたファイルは別の nearby/ サブフォルダーに入ります。
サービスとして常時稼働させる
常にファイルを受け付けたいマシンでは、ほかのサービスを動かしているのと同じ仕組み、たとえば systemd のユニット、Docker コンテナ、tmux などの上でこのコマンドを動かします。--json を付けると、ログやスクリプト向けに、1 行につき 1 つの 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"
リンクには、シェルがコメントとして扱う # が含まれるので、引用符で囲んでください。
よくある質問
サーバーにグローバル IP やポート開放は必要ですか?
いいえ。受信箱は toss2.me へ外向きの WebSocket 接続を張って待機するので、家庭用ルーターや NAT、外向きの HTTPS を許可しているファイアウォールの内側でも動きます。
自宅では、ファイルはインターネットを経由しますか?
いいえ。toss2.me を通るのは、短い接続のやり取りだけです。スマートフォンとサーバーが同じネットワークにいるときは、ファイルは WebRTC で両者の間を直接流れるので、速度は Wi-Fi や Ethernet で決まります。直接か中継かは、ページに表示されます。
送信したときにサーバーがオフラインだったらどうなりますか?
何も送信されず、何も保存されません。スマートフォン側のページに、受信箱がオフラインだと表示されます。
ほかの人が自分の受信箱に送ることはできますか?
リンクを知っている人だけです。リンクが漏れたら tosstome listen --new を実行して作り直してください。古いリンクは使えなくなります。
ファイルサイズの上限はありますか?
tosstome 側では上限を設けていません。受信側のブラウザは、保存するまでファイルをメモリに保持します。そのため数 GB のファイルでは、データをそのままディスクに書き込むコマンドラインの受信箱のほうが受信に向いています。