Automatically Mount your ownCloud folder with webDAV
The instructions in this post were devised on a RaspberryPi running Raspbian GNU/Linux 7 (wheezy), but they should be applicable to other setups where you want command line access to an ownCloud folder.
Both of my RaspberryPi’s run without any input devices attached to them, so I don’t run GUI desktop environments on them. However, I do still want to be able to sync my ownCloud folder with them. Unfortunately the official ownCloud client is severely lacking when it comes to command line support. So here is how I get around it, by mounting my cloud folders via webDAV.
In order to access a webDAV share as a filesystem, you’ll need to install the davfs2 package. It’s in the repositories by default, so this step is easy:
sudo apt-get install davfs2
davfs2 has a quirk if you are using Debian (or a Debian based variant), in which it doesn’t have the correct permissions to run as a non-root user. You may see the error:
/sbin/mount.davfs: program is not setuid root This can be fixed using one of the following commands:
sudo dpkg-reconfigure davfs2 # or a more manual approach sudo chmod u+s /usr/sbin/mount.davfs
Now add a line to your
/etc/fstab file to make mounting easier. Note we are specifying
noauto here, we will perform the automatic mounting step later.
/etc/fstab is often run before network initialisation, and therefore an automatic mount here will fail.
https://cloud.example.com/webDAV/URL /media/cloud davfs noauto,user 0 0
Add your user to the correct group:
usermod -a -G davfs2 <username>
Now you should be able to mount your share and work with your files. You will be prompted for your username and password, and if you have set up ownCloud with a self-signed certificate, then you will be asked to confirm that you trust it.
mount /media/cloud umount /media/cloud
It’s pretty inconvenient to have to type in your username / password and accept your self-signed certificate every time you want to mount your drive. It’s also a hurdle which needs to be overcome if you want to be able to automatically have your webDAV share mounted. So let’s break it down and take care of the username / password first.
davfs2 makes use of the
/home/user/.davfs2/secrets file for storing such credentials. You simply need to create this with the correct permissions and then provide the host, username and password details.
touch /home/user/.dav2fs/secrets chmod 0600 /home/user/.dav2fs/secrets echo "https://cloud.example.com/webDAV/URL <username> <password>" > /home/user/.dav2fs/secrets
After that step, you will be able to mount your share without providing a username and password, but you will still be asked if you trust your self-signed certificate (if you are using one). If that’s the case, let’s take care of it now.
Accepting a Self Signed Certificate
If you created a self-signed certificate for ownCloud, then you should have the
server.key on your server. We need to convert the
server.crt into a
.pem certificate that will work with davfs2:
openssl x509 -in server.crt -out server.pem -outform PEM
You’ll need to store the new
server.pem that we just created in
/home/user/.davfs2/certs/server.pem (you may have to create the certs folder). Then you need to make davfs2 aware of it’s existence, which is done in the config file
# find the line which starts: # servercert # and change it to: servercert server.pem
Once you have done that, you should be able to mount your webDAV share without any user input being required. Give it a test:
mount /media/cloud umount /media/cloud
Automatic Share Mounting
Remember when we edited the
/etc/fstab file we used the
noauto option? Well, what if you do want your share mounted automatically?
Because we can’t mount a webDAV share until after the network connection has been established, we can’t use the
auto option in our
/etc/fstab file. Instead, we will take advantage of everything which we have set up so far to use one simple command to take care of this.
/etc/rc.local file is executed after boot, and so is an excellent place to provide the functionality we are looking for, so simply add:
mount -a # make sure this command is above the exit 0 command
Assuming you have a network connection when you boot, you should now have your ownCloud webDAV share mounted automatically. Wasn’t that hard, was it?