Need help setting up centralised home folders on my network

As per title. I am not wanting to set up a full blown domain controller for this little home network. However, it would be nice to have all users of my various Linux devices, around my home, be able to log into centralised/remote home folders located on my main rig in my study/office instead of the local versions of that home folder. Thus, my (or other user’s) home folder would be available wherever I (or they) logged on in the house.

I am guessing it is going to involve ssh. I could probably bumble my way towards a solution. But, if anyone has any direct experience and/or advice on how to do this, it might save me a lot of wasted time getting there.

All advice gratefully received. It would help a lot if you try and make it idiot proof. Networking hurts my brain at the best of times!

SSH is the way to go in my opinion. I use it to enable just the access you appear to want.

See -

https://help.ubuntu.com/community/SSH/OpenSSH/Keys

Here’s how I generated an rsa key on “newton”, my ssh server.
At each question, just press enter.

michael@newton:~$ ssh-keygen - rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/michael/.ssh/id_rsa): press enter
Enter passphrase (empty for no passphrase): press enter
Enter same passphrase again: press enter
Your identification has been saved in /home/michael/.ssh/id_rsa.
Your public key has been saved in /home/michael/.ssh/id_rsa.pub.
The correct files were generated in ~/.ssh on my server machine.

Then I generated a public/private rsa key pair on “lappy” (and on other client machines). Same as above.

After generating rsa keys on both the server and the clients, I then issued the following command on each of the clients:

ssh-copy-id [email protected] (the IP of “newton”, the server). I was then asked for my password to ssh into newton. Of course, use your own IP numbers. You must have “fixed” IPs on your machines for this to work.

I got the “now try logging into the machine, with ssh [email protected], and check in .ssh/authorized_keys to make sure we haven’t added extra keys that you weren’t expecting.” message. The terminal showed me as still logged into lappy and I then ssh logged into newton with no password. Success!

I can now use Caja to ssh into newton with no password. To set this up, just use Places, Connect to Server, Type = SSH, Server = 192.168.1.150, Folder is something like /home/michael, user name and password and check bookmark and give the bookmark a good name. After doing this the first time, I can subsequently “see” newton from lappy (and the other client machines) using a Caja bookmark without having to type a password each time. Slick!

Let me know if this works for you. Good luck Steve.

1 Like

For getting a fixed IP address, this page is still good:

Regards-

1 Like

Setting up Samba (or NFS if you’re exclusively using Linux or Unix boxes) isn’t too difficult, here’s the official guide to samba. You can then use a command like sudo mount -t cifs -o username=james,password=[password] //10.106.199.200/hardDrive /mnt/snopes/ to mount the share, or else make an fstab entry. (This should work for samba even though the article says windows shares).

Setting up samba isn’t too difficult, and I’ve had a share running for years with minimal maintenance. Just be aware that you might not want to mount the whole home folder, but rather a folder somewhere else, as a lot of hidden configuration files live in your home folder that could wreak havoc if another machine tries to read them.

Another option would be to use something like syncthing to sync files across machines, which would work even if you weren’t on the same network.

1 Like

I might not have explained my needs well enough, I am suspecting. I know how, in general terms, to share folders using ssh or samba. Indeed, I can use the “homes” feature in samba config. What I am wanting to do, though, is to facilitate the user, when logging in, to default to the remote home folder instead of their local one. That is to say, I do not want the local one to be visible. Thus, all of the various configurations that are in the remote home folder, should activate on the client machine, as if it is the local home folder.

Hi @stevecook172001
Can you confirm a couple things?

  • All the machines in question won’t ever leave your home
  • You’re able to assign a static IP address to your main rig

What you want to do is possible (I think), but loading remote home on your machines means:

  • You’ll need a big storage space on the main rig
  • There will be increased I/O latency when using the satellite machines (you want to have a Gigabit connectivity network)
  • There will be a lot of unused space on all the satellite machines
  • Your whole home setup will have a central point of failure (you want a good backup system)

Couple links:


https://help.ubuntu.com/community/SSHFS

1 Like

Thanks for that Ouroumov.

I am beginning to think a simple bt-sync solution to home folders in my little home network might be a better solution, whilst also having password protected samba home-folder for each user on the network for when they want to save bigger files that would be inefficient to have as synced files on the home folder.

It’s important to me that all my machines are the same/have the same data. I tried setting up a “roaming profile” solution a long time ago, and that didn’t really work out too well for me (admittedly that was way before I gained as much experience with Linux as I have now).

Here’s how I solved the problem, hopefully this helps. If not, hopefully this helps someone else.

1.) First, I sync files from each machine. However, I use Syncthing with a “Star Topology” set up. Meaning, each machine doesn’t sync to one another, they all sync to a central file server. I think this is better than btsync, because btsync is not open, and it has more of a mesh topology. Syncthing works better because you can set each machine to sync to one central machine. So for example, Machine A syncs to Server. Once Machine A is finished syncing with Server, Server syncs those files to Machine B.

2.) To keep configuration the same, I use Ansible. Each machine does a pull from my Ansible git repository, and downloads the config locally. Then they run the Ansible config against themselves. This way, my laptops don’t depend on being on my home network to pull down my latest config, they grab the Ansible config from my Github account. When I want to change something on each machine, it’s just a matter of making one push to a git repo.

It took me a bit of work, but the end result is that I don’t have to worry about what file or what config is on which machine. All of my machines are completely identical in every way.

1 Like

Actually, it is syncthing I am using already (for other folders), not bt-sync…:slight_smile: