휴대폰에서 서버, NAS, 라즈베리 파이로 파일 보내기
마지막 확인
브라우저 파일 공유 도구는 대부분 받는 쪽에서도 브라우저 탭을 열어 둬야 해요. 하지만 홈 서버, NAS, 라즈베리 파이, 클라우드 VM에는 화면도 브라우저도 없어요. tosstome의 명령줄 수신함은 바로 이런 기기를 위해 만들었어요.
수신함 설정하기
서버에서(Node.js 22 이상):
tosstome listen --dir /srv/inbox
터미널에 링크와 QR 코드가 출력돼요.
- 휴대폰으로 QR 코드를 스캔하거나, 링크를 복사해서 폰으로 보내세요.
- 그 페이지를 휴대폰 홈 화면에 추가하세요.
- 페이지를 열고 파일을 골라 보내기를 누르면 파일이
/srv/inbox에 써져요.
휴대폰이 서버와 같은 네트워크에 있으면 파일은 그 네트워크 안에서 서버로 바로 가고 밖으로 나가지 않아요. 다른 곳에서는 두 네트워크가 허용할 때 직접 연결되고, 그렇지 않으면 아무것도 보관하지 않는 릴레이를 거쳐요.
수신함 링크는 재시작해도 그대로라서 홈 화면 아이콘을 계속 쓸 수 있어요. 나중에 링크를 다시 출력하려면 tosstome url을 실행하세요. 예전 링크를 버리고 새로 만들려면 tosstome listen --new를 실행하세요.
수신함은 어떻게 보호되나요
- 링크의
#뒤에는 비밀 전송 키가 들어 있어요. 브라우저는 페이지를 요청할 때 링크의 그 부분을 서버로 보내지 않고, 키는 나중에 WebSocket 연결 안에서 전달돼요. - 서버는 키의 SHA-256 해시만 저장해요.
- 서버 쪽은
~/.config/tosstome/inbox.json밖으로 나가지 않는 별도의 에이전트 키를 써요. - 잘못된 전송 키는 보내는 쪽만 차단하고, 서버 자신의 연결은 막지 않아요.
- 보내는 쪽이 정한 파일 이름은 대상 폴더 안의 단순한 이름으로 정리돼요. 파일은
.part로 쓰다가 완료되면 이름을 바꿔서, 폴더를 지켜보는 스크립트가 중간까지만 쓰인 파일을 보는 일이 없어요.
로컬 네트워크에도 보이게 하기
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"
링크에는 셸이 주석으로 처리하는 #이 들어 있으니 따옴표로 감싸세요.
자주 묻는 질문
서버에 공인 IP나 열린 포트가 필요한가요?
아니요. 수신함은 toss2.me로 나가는 WebSocket 연결을 만들고 거기서 기다려요. 그래서 집 공유기, NAT, 나가는 HTTPS를 허용하는 방화벽 뒤에서도 동작해요.
집에서도 파일이 인터넷을 거치나요?
아니요. toss2.me를 거치는 건 짧은 연결 설정뿐이에요. 휴대폰과 서버가 같은 네트워크에 있으면 파일은 WebRTC로 둘 사이를 바로 오가서, 속도는 Wi-Fi나 이더넷이 결정해요. 전송이 직접 이루어졌는지 릴레이를 거쳤는지는 페이지에 표시돼요.
보낼 때 서버가 오프라인이면 어떻게 되나요?
아무것도 전송되지 않고 아무것도 저장되지 않아요. 휴대폰 페이지에 수신함이 오프라인이라고 표시돼요.
다른 사람도 내 수신함으로 보낼 수 있나요?
링크를 가진 사람만 보낼 수 있어요. 링크가 유출되면 tosstome listen --new를 실행해 교체하세요. 예전 링크는 더 이상 동작하지 않아요.
파일 크기 제한이 있나요?
tosstome은 제한을 두지 않아요. 받는 브라우저는 저장하기 전까지 파일을 메모리에 들고 있어서, 수 GB 파일은 디스크에 바로 쓰는 명령줄 수신함으로 받는 게 더 좋아요.