To quote Wikipedia,
A roaming user profile is a concept in the Windows NT family of operating systems that allows users with a computer joined to a Windows Server domain to log on to any computer on the same network and access their documents and have a consistent desktop experience, such as applications remembering toolbar positions and preferences, or the desktop appearance staying the same.
Our office environment consists of a mix of Windows and Linux systems, and the task was to setup a system on which user data could be stored such that the users would not be bound to a single system and be able to work on any system.
- [server side] Samba can be used to setup a Domain controller to authenticate users (for Linux only environments, solutions like Free IPA also exist).
- [client side] Can be setup by combining different services (as given here and here), or an integrated system can be used (like given here).
After considering the above, we went with the following solution:
Server side setup
Went with Zentyal server for user authentication, data storage, and file sharing (other options like ClearOS also exist).
Client side setup
Used pbis open for authenticating to the AD server, and put together a system for implementing roaming profiles.
Roaming profile setup
When searching for roaming profile on linux, csync was found which seemed like the ideal solution; however in practice an issue was encountered trying to sync between a local home folder and a samba mount of the remote folder.
Eventually discovered osync which synced the folders (local and remote) correctly.
Wrote some scripts tie it all together (available here).