I am experimenting with an OpenLDAP-Server and I'm not sure how to add
/home directories for users. Also where are the files stored?
When you connect a Linux client (or server for that matter) directly to an OpenLDAP-server the default behavior is to use the 'homeDirectory'-attribute for each user read from your OpenLDAP-server.
However, this home directory one specificies inside the LDAP database would be a local path on your (Linux) client's computer.
One can of course mount this local path to a remote directory residing on your server using whatever protocol works best.
Small detail or hint: I do not know if Firefox works with Samba/CIFS-shares though. It did not work for me but using the NFS-protocol for mounting home directories did however work for me.
Of course one would not want to configure each client after install to be connected to your OpenLDAP-server manually. One could automate this using perhaps an 'unattended answer' file (actually when using Debian they are called 'preseeds').
For Windows though, you would use Samba for your roaming profiles.
If a user creates a file on a Windows machine in the domain, where
will it be stored? I suppose on the server but in which directory.
If you want a Windows machine to join a domain you will first have to set up a domain. Just installing and configuring an OpenLDAP-server will not get you a domain.
However, if you want your OpenLDAP-server to contain users for your domain, you could setup a Samba-server which you would then configure to get its users from your OpenLDAP-server. You would specifiy an LDAP-URI as the 'passdb backend' inside your Samba configuration file.
Samba 3.6 has been End-of-Life for a certain amount of time but you can just use a Samba 4.x. Although the latter Samba-versions have an Active Directory-mode one can still use just your own OpenLDAP-server, if you want to.
How do I create folders for users so that they can access them from
any machine in the domain?
For Windows one can use a login script to map the proper shares to the proper drive letters. One can base this on group membership for example.
One can use phpLDAPadmin to manage LDAP-users and all other things inside LDAP. It is quite configurable.
Personally though, if it is just about managing users and groups inside LDAP I have a preference for LDAP-account-manager (which is also a web-based LDAP-managing tool) because my opinion is it is quite user-friendly (at least for basic management of users and groups).
It is free for some basic management of users and groups inside LDAP. If you want more features though you will have to pay.