Show HN: A file server for Android, end-to-end encryption, web access
I wanted to replace:
- AirDroid - sending files to my own PC or laptop.
- ShareIt - sending big files over the local network to my family devices.
- Dropbox - sharing select files with other people over the Internet.
Requirements I had in mind:
- end-to-end encryption, no sign ups, no accounts, no passwords
- local connection if devices are on the same network
- asynchronous access, server should work seamlessly in the background
This week I finally managed to stitch the pieces together and get something usable and useful. I now have full access to my phone on my laptop browser, I can share files with a link without uploading to the cloud, and the local network is used whenever possible.
The file server app is on the PlayStore[1], web-client is here[2], and you can check out the roadmap[3].
Shoutouts to these great tools that made it possible:
- libsodium[4], and it's JS version, are used for the end-to-end encryption
- StreamSaver.js[5], to save large files from a non-HTTP transport without buffering it in RAM. Had to patch it to add back pressure when the download is paused.
Current limitations:
- p2p only works on local networks, wait until WebRTC transport is implemented in the server
- when downloading several files, a Zip is generated, with a 4Gb size limit, wait until I figure out the way to fix this. With a single file, it's downloaded in plain and without limits.
Please roast this thing!
--
[1] PlayStore: https://play.google.com/store/apps/details?id=im.recall.android
[2] Web client: http://web.recall.im
[3] Roadmap: https://recall.im
[4] LibSodium: https://github.com/jedisct1/libsodium
[5] StreamSaver.js: https://github.com/jimmywarting/StreamSaver.js
[*] A demo of some files I shared, served by my phone: http://web.recall.im/#peer=c7e0f38a7f60752b4fa3017807fc731f2c8cb87b3d7d35c8131196c74daa847c;share_id=476c946195b047d3898c51291cd37dfb