Settings

Theme

YouTransfer: Self-hosted file transfer and sharing solution

github.com

172 points by janjones 2 years ago · 110 comments

Reader

hacb 2 years ago

I'm using LocalSend for local network sharing needs (typically stuff between my laptop and my phone). It works like a charm, and is really easy to use

https://github.com/localsend/localsend

  • tamimio 2 years ago

    I did try a bunch of these peer-peer file sharing, the best ones the worked well are localsend and LANdrop, as I have a screen (basically a custom android tablet) in my car and I needed to send files without the car accessing any wifi, those two worked well. The others I tried that didn’t work well were: Arc, Sharedrop, pairdrop, and snapdrop.

    • mekster 2 years ago

      SnapDrop was so buggy that the transfer speed was very slow, sometimes hitting the send button did nothing, and need to open browser on the target machine first and recently somehow it stopped working completely, I figured installing NextCloud client on my Android phone solved it easily to have the file arrive instantly without complications.

    • davidcollantes 2 years ago

      Having to download an app for each platform to use it is a huge drawback for me. LANdrop seems to require this (unless I am not understanding it well).

      • tamimio 2 years ago

        Maybe a drawback for your case, but it’s the feature I was looking for, one of the devices (my car screen) has no internet access at all, so I loaded the APK file there, and used it to transfer the files from my iPhone to it without internet, it wouldn’t be possible with the likes of snapdrop, and it didn’t even work properly in other two devices that had internet access.

  • luckman212 2 years ago

    Been running a selfhosted PairDrop instance for about a year now and it's amazingly useful. No apps to install, just web based "AirDrop" that works across macOS, Windows, iOS, Linux...

    https://github.com/schlagmichdoch/PairDrop

    • LambdaJon 2 years ago

      Out of interest, What’s the advantage of self hosting vs using the web version on the main page? Are there security or convenience benefits?

      • luckman212 2 years ago

        The main ones for me are not being dependent on someone else's server, and being able to use my own domain name.

moontear 2 years ago

Last checkin four years ago and README says „looking for a new maintainer“. Is this abandonware?

  • causi 2 years ago

    I've seen probably four or five different brilliant file transfer solutions that totally solved the person to person file transfer problem posted to HN and every dang one of them was shut down or abandoned.

    • kjkjadksj 2 years ago

      Because the problem doesn’t exist. Non tech folk use stuff like imessage to send things and rarely deal with large files at all beyond images or video. That works fine for them. Tech people use proven existing tooling like rsync or ftp. The only market that exist for this I’d guess is resumeware which explains why these projects are all built then abandoned.

      • IshKebab 2 years ago

        Tech people don't use rsync or FTP because those are terrible solutions. FTP is insecure and requires setting up a server. Rsync requires an account on both machines.

        In my experience companies usually end up paying for a service that solves this problem for their employees. Yes really.

        Anyway I would suggest using

        https://magic-wormhole.readthedocs.io/en/latest/

        or RustDesk. RustDesk has a nice GUI and file transfer has a really nice two pane file explorer view but that is obviously not great for transferring files to people you don't fully trust.

      • Aachen 2 years ago

        > Non tech folk use stuff like [messengers] to send things

        Yes, and tech folks too, but what about if you're not already connected friends? You don't want to invite your entire audience at a conference to send them slides.

        You either need to already have a website and say "click on News and find the entry for today", have them type over some long URL with perfect accuracy, or use a link shortener to the same effect. It always requires having hosting, unless there exists file sharing services. That's the problem these things solve.

        Also mind that there are size limits in most messengers on the order of a few hundred megabytes. You don't run into them that often, but whatcha gonna do when you do? A dedicated file sharing service that supports in the gigabytes range solves that situation as well.

    • ckcheng 2 years ago
    • skottenborg 2 years ago

      I can recommend PicoShare which I've been self-hosting for a while. It's a couple of years old now and still maintained. Also, it's very simple and allows for guests too.

      https://github.com/mtlynch/picoshare

    • scrlk 2 years ago

      For a Linux user, you can already build such a system yourself quite trivially by getting an FTP account, mounting it locally with curlftpfs, and then using SVN or CVS on the mounted filesystem. From Windows or Mac, this FTP account could be accessed through built-in software.

      • prophesi 2 years ago

        For context, this is a parody of the infamous https://news.ycombinator.com/item?id=9224

        • mrehler 2 years ago

          I was unaware there was copypasta on HN. I know this might be generally the sort of post that the site wants to avoid, but the phenomenon of copypasta within a given community still makes my heart smile a little bit.

      • quesera 2 years ago

        > "getting an FTP account"

        There are myriad options if you get a server of some kind. A webserver is even easier to get, and to share, than an FTP server.

        That's not the challenge these projects attempt to meet.

      • lnxg33k1 2 years ago

        For that you can also use sparkleshare, abandoned but its just a git frontend

      • notso411 2 years ago

        That sounds like a whole lot of effort. Just buy iCloud.

        • kjkjadksj 2 years ago

          On a mac iirc the ftp setup is a checkbox in system settings. Less friction than logging into icloud even.

        • usrusr 2 years ago

          Is it for sale or do you have to take the entire $2.9B monstrosity?

    • theblazehen 2 years ago

      It's unfortunately not FOSS, but I quite like https://wormhole.app/ - It's client side encrypted and P2P when possible

      • feross 2 years ago

        One of the two creators of https://wormhole.app here :)

        Now that we’ve shifted our company’s focus to https://socket.dev, I’d love to open source Wormhole. I’m quite proud of the code - I’ve worked on P2P and file transfer systems for so so long that I think this might be some of the best code I’ve worked on.

        It’s just a matter of finding the time, but I expect this will be open source eventually.

      • kilroy123 2 years ago

        Agreed. That's my favorite as well.

    • ajsnigrutin 2 years ago

      Apache is still maintaned, so is nginx... just throw the file into a folder accessible by the webserver (within documentroot), and you're done :)

      • nurettin 2 years ago

        This is what I do. But these projects give you uploading, hash url generation and thumbnail previews as well, if you care about such things.

        • imiric 2 years ago

          I use `python -m http.server` on the sender side, and https://github.com/Densaugeo/uploadserver on the receiver side if Python or the network is problematic to setup on the sender. This is simple and works well for my use cases, since I don't have a need for those features you mention. The only feature I miss is encryption, which could be done via an SSH tunnel with a bit more work, but I usually don't bother if I'm on my home LAN.

    • rbut 2 years ago

      We use PsiTransfer [1] in docker. Recently updated, so not abandonware. Serves our needs really well.

      [1] https://github.com/psi-4ward/psitransfer

      • 1over137 2 years ago

        Has recent commits, but last release 2022-11-14.

        • Andrex 2 years ago

          I'm starting to think stable software just needs to issue an update every few months that changes a few strings, just so this mentality dies out.

    • IndySun 2 years ago

      For a moment there I thought you were saying 'dang' (much vaunted hacker user) had shut them down.

    • savrajsingh 2 years ago

      Sharedrop.io ?

  • h4l0 2 years ago

    Demo page also returns an error from Heroku.

martinbaun 2 years ago

I recently started using SyncThing, it seems just perfect to share between two people. Maybe I'll put it on a server as well so we can sync without being online.

  • noirbot 2 years ago

    It's definitely pretty nice, but the ergonomics of it for someone that's not that good with computers can be a little hard. I've gotten synced folders into bad states before that took a long time to fix. It's also kinda awkward having to send over a nominally private and very long ID string to set up the share in the first place.

    • Cyphase 2 years ago

      That's not how Syncthing keys/IDs work.

      That device ID you have to send to someone is not nominally private; it is in fact explicitly the public key of a key pair. If you use the public discovery servers (which is the default), that key is sent there so people who'd want to connect to you can look up your IP address with it.

      https://docs.syncthing.net/users/security.html#global-discov...

      https://docs.syncthing.net/users/faq.html#should-i-keep-my-d...

      > Should I keep my device IDs secret?

      > No. The IDs are not sensitive. Given a device ID it’s possible to find the IP address for that device, if global discovery is enabled on it. Knowing the device ID doesn’t help you actually establish a connection to that device or get a list of files, etc.

      > For a connection to be established, both devices need to know about the other’s device ID. It’s not possible (in practice) to forge a device ID. (To forge a device ID you need to create a TLS certificate with that specific SHA-256 hash. If you can do that, you can spoof any TLS certificate. The world is your oyster!)

      • noirbot 2 years ago

        Ah, thanks for the clarification. I guess I just saw a key larger than an IPv6 address and assumed it was something I couldn't share openly. It does seem weird that it's that big then. 50+ characters that can be A-Z0-9 feels like an insane amount of entropy for something that's essentially a proxy for a 12 digit number. It's longer than Windows product keys or the SSH public key I use for Github!

        Additionally, I don't necessarily want a key sitting out there that will let any random person who finds it a dynamic way to look up my current IP address. It's not the worst thing in the world, but it's definitely not something I'd publish publicly.

        • Cyphase 2 years ago

          > 50+ characters that can be A-Z0-9 feels like an insane amount of entropy for something that's essentially a proxy for a 12 digit number.

          That's not all it is. It's your cryptographic public key.

          > Additionally, I don't necessarily want a key sitting out there that will let any random person who finds it a dynamic way to look up my current IP address.

          Sure, that makes sense. How else would you propose that it work?

          Just to mention, you can use a private, self-hosted discovery server.

    • brnt 2 years ago

      Having the whitelist all peers on all peers is a chore.

      I stick with Resilio for this reason. For over a decade now it had been a 100% reliable fire and forget tool.

      • Cyphase 2 years ago

        > Having the whitelist all peers on all peers is a chore.

        You don't have to do that with Syncthing. See https://docs.syncthing.net/users/introducer.html

        > The introducer feature lets a device automatically add new devices. When two devices connect they exchange a list of mutually shared folders and the devices connected to those shares. In the following example:

        > Local device L sets remote device R as an introducer. They share the folder “Pictures.” Device R is also sharing the folder with A and B, but L only shares with R.

        > Once L and R connect, L will add A and B automatically, as if R “introduced” A and B to L.

        > Remote device R also shares “Videos” with device C, but not with our local L. Device C will not be added to L as it is not connected to any folders that L and R share.

        • brnt 2 years ago

          Thats not the same. It means to designate one device as 'primus inter pares', and what I like about Resilio and p2p that there isn't a 'server'. I don't have one!

          So then I could make all my devices introducers, which is really the same amount of work, plus adviced against because then no device can ever leave your network (remove it from one then all others will re-introduce).

          Dealing with devices is really not what I want. I understand that Resilio is a bit too basic on security, because the share key is the deencryption key (in most cases), but Syncthing isnt quite it either. I think it's suited for few devices and a knowledgeable person, but not my use cases.

          • noirbot 2 years ago

            This is mostly where I am. Syncthing is a great replacement for something like Dropbox for me to share things between my own computers and not have to care about file size or the like. It's not really a reasonable P2P file sharing option unless the other person already uses Syncthing for their own use case, or you can just get it set up for them and then hope it never breaks. Even then, it's only really reasonable if it's someone you plan to regularly need to send larger files to. For smaller files or one-time sends, there's better options.

      • martinbaun 2 years ago

        Resillio is working in the same way? what's the pros/cons?

        • brnt 2 years ago

          Resilio was there first actually, created by the Bittorrent company of old. The main con is it is closed source and less secure, depending on your threat model. Pro is it works really well, and is compatible with less skilled users.

        • jasperry 2 years ago

          I also came here to put in a word for Resilio. It's the fastest and most hassle-free thing I've found that doesn't require a server. SyncThing was always very slow to reconnect and update for me.

    • martinbaun 2 years ago

      hey Noirbot, I haven't used it for long. Can you tell me thei ssues you had a little in depth?

      • noirbot 2 years ago

        Let's say I want to share a file with a friend internationally. First off, while there are some reasonable UXes for Syncthing, a lot of them are pretty basic, or rely on running a daemon and then connecting a web browser to Localhost to see what's up. Once they get it set up, then I have to actually set up the share with them. To get them hooked up to my share, I have to send them a 50+ character ID string somehow, which they then have to input into a UI that's far from easy to use. The key is much too long for me to want to read over the phone, and putting it in a chat somewhere means that if that chat ever leaks, my private key for my shared folder is out there. They offer a way to send a QR code, but that has the same leak risk, and scanning a QR code on the computer you're already on is awkward.

        In short, it's a great tool, it works well in general, but the initial setup is pretty cumbersome if all I want to do is send a couple files to someone.

        Additionally, I've had a couple time where even just syncing between my own devices broke. I think it was something where files were changed on both sides and the reconciliation algorithm got confused, but it was hard enough to debug for me, with direct access to both devices, and decades of experience running and programming computers, that I'd never want to try to debug that over the phone with a friend.

  • g_p 2 years ago

    One convenient feature if you run a third instance on a server is that you can "distrust" the server by encrypting the files you sync (this is done at share level), then only entering the decryption password on the trusted end devices. That way plaintext file content doesn't sit on the server.

    It's worth checking exactly what is encrypted as I don't think folder and file structure and names were encrypted.

  • bayindirh 2 years ago

    I use syncthing between three different systems and it’s great for keeping multiple systems in sync. One of them takes daily backups of the shares, so I have time-machine like backups too.

INTPenis 2 years ago

I've been self hosting a fork of Firefox Send[1] for years now, probably since Mozilla cancelled their Send project.

Lately I've also started self hosting Pairdrop.[2]

1. https://timvisee.com/projects/send/ 2. https://pairdrop.net/

teddyh 2 years ago

Every time someone invents an actually effective method of person-to-person file transfer, it gets used for piracy and blocked and shunned.

  • syeare 2 years ago

    The age of piracy has dawned upon us yet again! WHO wants to be paying $100+ every month to Disney+ Netflix Hulu etc. just to watch 1 or 2 shows on each service?? Who the hell wants to pay for a game that works worse and hurts the customers more than a deDRM'd, cracked version?

    POWER TO THE PIRATES

    • paulryanrogers 2 years ago

      People who don't want to faff about with VPNs, BitTorrent, malware scanning, and the anxiety of never knowing if your gaming machine has been compromised or not.

      • crtasm 2 years ago

        You need to be careful with executables, that's true, but

        Signed GOG installer? That'll be fine.

        File checksum matches known scene release? That'll be fine.

        I've heard of more people getting infected via Steam than by torrent downloads recently (see: Slay the Spire on Christmas day).

    • EduardoBautista 2 years ago

      I usually only have one active subscription at a time.

  • crtasm 2 years ago

    What do you wish to use that is blocked?

sebazzz 2 years ago

I built something similar in ASP.NET: https://github.com/Sebazzz/IFS

Chrupiter 2 years ago

When I need to transfer a file from PC to smartphone, I do a

python -m http.server 8080

then from my phone I just use a browser.

1vuio0pswjnm7 2 years ago

Another alternative. This uses only HTTP and requires no special software, except the server. Elegant, IMHO. Extremely robust in fact.

https://github.com/nwtgck/go-piping-server

After starting the server, a few options.

Method 1: Visit https://127.0.0.1:8080 in a Javascript-enabled browser and fill out HTML form

Method 2: Visit https://127.0.0.1:8080/noscript in any browser and fill out HTML form

Method 3: Use any TCP or HTTP client. For example here is a quick and dirty shell script

       #!/bin/sh 
       test $1||exec echo usage: $0 something file
       test $2||exec echo usage: $0 something file
       x=$(stat -c %s $2)
       {
       printf 'POST /'$1' HTTP/1.1\r\n'
       printf 'Host: 127.0.0.1\r\n'
       printf 'Content-Type: multipart/form-data; boundary=\"yxxxxzxxxzxxxzzxyxzx\"\r\n'
       printf 'Content-Length: '$x'\r\n'
       printf 'Connection: close\r\n'
       printf '\r\n'
       cat $2
       echo ---yxxxxzxxxzxxxzzxyxzx
       } \
       |nc -vvn 127.1 8080
     
       laptop> 1.sh whatever 1.pdf
       phone> curl http://127.0.0.1:8080/whatever > 1.pdf 
       laptop> 1.sh 1.pdf 1.pdf
       On phone, type into browser: https://127.0.0.1:8080/1.pdf
       This file is saved as 1.pdf
       YMMV
There is also a Rust version.
  • 1vuio0pswjnm7 2 years ago

    Correction:

    Replace 127.0.0.1 with an appropriate address for computers on the LAN, e.g., RFC 1918 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12.

blacklight 2 years ago

Before trying it in my lab, could the author elaborate on what's its killer feature?

The README mentions that it's an alternative to both Dropbox and WeTransfer. My current alternative to Dropbox is Nextcloud, and my current alternative to WeTransfer is (formerly Mozilla) Send. What's the added value of YouTransfer compared to this solution?

I'm also put off by the fact that the README has a big "looking for a new maintainer" disclaimer on top, and the demo page doesn't even work. Sure, I could put enough effort into maintaining a project if I see its added value, but in this case it seems to be a product trying to sneak into a market where there are already viable and well-maintained open alternatives.

  • sureglymop 2 years ago

    How do you like Send and is it still maintained?

    I also use Nextcloud but use the Floccus browser extension to sync bookmarks to Nextcloud. Works well when it works.

    • stavros 2 years ago

      I really like Send, I'm not sure it's still maintained, but it works well, so I don't know what there is to maintain. It comes with a cli utility as well.

      https://github.com/timvisee/send

      • 1over137 2 years ago

        There's almost always security issues to maintain. Software is never "done".

        • kjkjadksj 2 years ago

          If only OS vendors like apple thought the same and actually updated the cli tooling

          • 1over137 2 years ago

            CLI tooling is macOS only, not iOS, visionOS, tvOS, etc. Somof course they don’t care. Just be happy they even keep it. ;)

  • adamm255 2 years ago

    Used this in the past, imagine WeTransfer, but you run it yourself. That’s it.

mr337 2 years ago

For one off for technical folks on both ends I like the magic-wormhole cli tool. https://github.com/magic-wormhole/magic-wormhole

Dotnaught 2 years ago

Partially open source (the crypto) and easy to use. Free though not self-hosted: https://wormhole.app/

say_it_as_it_is 2 years ago

There seems to be a trend of people on HN sharing abandoned projects seeking a maintainer

  • stavros 2 years ago

    I even made a community for that! https://www.codeshelter.co/

    It's abandoned, though.

  • squarefoot 2 years ago

    Because there are many unknown, probably worth of being picked by some volunteers. I think it'd be worth creating some place (HN subsection?) where a list of dead or unmaintained, still worth of attention, projects could be kept so that potential maintainers could be made aware of their existence. Just a simple list, all text, one line per project with a bunch of fields: YYYYMMDD formatted date of last update | Name (resolving to link to the project page) | Short description | clickable short list of say max 5 tags so that users can find similar ones just by refining the search to the desired tag(s).

    • kjkjadksj 2 years ago

      It takes so much time and effort though. It would really be a labor of love to take up someones abandoned piece of work thats probably got deep structural issues if the author decided to pack up and leave already.

  • jarym 2 years ago

    Sounds like a perfect thing to fine tune an instruction following GPT on?

beeeeeeee 2 years ago

https://github.com/proofrock/sfup a possible alternative, if you need upload/download via commandline (curl).

rldjbpin 2 years ago

taildrop (https://tailscale.com/kb/1106/taildrop) is also nice to have if you already have a tailscale network set up for your devices. helps with the networking bit also.

guluarte 2 years ago

last commit 4 years ago... sounds like a security nightmare

brudgers 2 years ago

Is this easier than self hosting FTP?

NoZebra120vClip 2 years ago

Obligatory xkcd, of course: https://xkcd.com/949/

  • hirako2000 2 years ago

    Sad reality.

    For non sensitive data, ufile.io is the most decent drop app I could find. Been around for a while and am surprised they haven't yet spoiled it with dark patterns, removal of free tier, sold out.

    For sensitive data, Google drive. Share.

    For very sensitive data, encrypt, ufile.io, or Google drive. decrypt on the other end. Quite a pipeline but note that it paradoxally doesn't require a self hosted drop app.

    Ipfs? Still not nearly as simple as via google drive, needs native app app running. Drains phone batteries, requires manual encryption for anything sensitive as file access can't be gated.

    Blockchain? Except for tiny blobs, impossible.

    a p2p app that use some open KPI for encryption would be great.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection