this post was submitted on 04 Aug 2024
22 points (95.8% liked)

Ask Experienced Devs

1064 readers
1 users here now

Icon base by Delapouite under CC BY 3.0 with modifications to add a gradient

founded 2 years ago
MODERATORS
 

I'm looking to set up a server of some kind that I can use to store more or less arbitrary files on demand.

While I have quite a bit of programming experience, I have little-to-no experience in the server-space, so I don't really know where I should be getting started/what kind of pitfalls I should be looking out for/what kind of design choices I should be making early on.

In short: I want some system that allows me to take more or less arbitrary files, send them from either my laptop or phone, and have them stored on a drive that I can have lying around somewhere hooked up to some setup. I don't need any automatic backing up, sending files manually is sufficient. The individual files I'll be sending probably won't be exceeding the MB range of sizes. Remotely downloading files from the storage is not an immediate requirement, if I need to retrieve them I can plug directly into the disk. What I want to protect myself against is the "freak accident" type of thing where all the devices I currently have copies of a file on are lost in a fire, while travelling, or something like that.

Does anyone here have any tips for where I should be looking to get started?

top 12 comments
sorted by: hot top controversial new old
[–] slazer2au 6 points 4 months ago (1 children)

Would Syncthing work?

You tell it a folder and it will sync the contents of the folder between machines.

[–] [email protected] 2 points 4 months ago

this is the way

[–] rImITywR 5 points 4 months ago

Nextcloud is pretty easy to setup. You can use it just like Dropbox/OneDrive. Just drag files you want to sync into either the web interface or a mounted directory.

[–] ArbiterXero 2 points 4 months ago

Truenas or Nextcloud or syncthing.

[–] [email protected] 2 points 4 months ago

You probably wanna take a look at "Nextcloud".

[–] [email protected] 2 points 4 months ago* (last edited 4 months ago) (1 children)

With your minimal requirements, a Raspberry rumning stock Rasbian or Armbian, and SSH/SCP commands (and an Android/iPhone SSH/SCP client) could do the trick.

The disadvantages to this approach is you'll have to learn the commands you need for every use case. The advantage to this approach is you'll have to learn the commands you need for every use case, and we would learn a lot of useful stuff.

Source: I used a Pi for this need, before I bought a fancy Network Attached Storage (NAS) device.

Edit: Further pro/con:

  • It'll work with almost everything. SSH and SCP are very old and stable and there's tons of apps.
  • Too many options. I had to pick my clients a bit at random, and research and switch to find what I wanted. Even my first random choices did work fine though.
  • None of the SCP apps for phones have particularly nice interfaces, in my opinion. This is a minimalist solution, and it feels like one.
  • Nothing proprietary - no one is going to Google-kill this solution due to lack of profits.
  • All the software you need for this is free.
  • This solution can be extended in tons of nice little ways later. I.e. something like AWS CLI for trivial off-site back-up to a secured S3 bucket.
  • A well chosen NAS gives all of this functionality, and much more, but for a lot more money.
[–] thebestaquaman 2 points 4 months ago

Honestly, while being the most complicated approach suggested so far, it seems like what's closest to what I'm looking for! The fact that it's not reliant on any corporation staying alive, and keeps everything simple (or "bare-bones") is attractive. Do you have any pointers for setting up an iPhone SSH client so that I could transfer files to it from an iPhone?

[–] [email protected] 1 points 4 months ago

Encrypt the data and upload it to 0x0.st :)

[–] [email protected] 1 points 4 months ago (1 children)

Sibling comments haven't addressed the bit about how you want to protect against fire. A NAS or Pi in your home won't protect against natural catastrophe. You need something remote.

A device that runs in someone else's home (like a family member) with a remote connection could work, but it's likely more hassle to setup than what you'd want. You'd have to punch through firewalls and such. Tailscale offers services that apparently make this easy, however. I haven't used them and couldn't say.

Since you seem to be working with small files, I think you should look into a Virtual Private Server (VPS). You can get an instance for $5-10 / month with someone like Digital Ocean or Linode or others. You would then need to enable FTP and get an FTP client. Depending on your preferred platform, this might be pretty easy or not so easy. On Mac, I'd recommend Transmit, by Panic Software. It's awesome. You can also transfer files via SSH and SCP if you're comfortable on the command line and not use an FTP client.

[–] thebestaquaman 1 points 4 months ago (1 children)

I actually have office locations in two different cities, and my home in a third, so my initial idea was to set up two drives (at one of the office locations and at home) because of course, a backup server in my home wouldn't protect against a house fire (admittedly, that's probably my most far-fetched concern).

My issue with a VPS is that I would very much prefer to have physical access the the drive myself, otherwise I would just pay for iCloud storage. A part of the point is that I want a system where I'm in control of as much as possible, so that I don't have to rely on some corporation playing ball to keep my stuff safe.

I'm perfectly comfortable working through a CLI, and my initial idea was actually to build a system for this myself, but it seems from the comments like there are some good alternatives out there that I may be able to use.

[–] [email protected] 1 points 4 months ago (1 children)

In that case, Tailscale and Syncthing. Again, I haven't used Tailscale (but I've heard positive comments from a tech podcast host who likes it). Syncthing is something I have used and it's awesome. Good luck!

[–] [email protected] 1 points 4 months ago

No need for tailscale...