How to Setup Apache WebDAV Server Access on Ubuntu 20.04. In this guide we will introduce WebDAV, how its works then move onto the installation phase on Ubuntu 20.04.
Suppose you visit a webpage through some hyperlink. You can edit that page if it is in the form of a shared document or on a wiki knowledgebase website. However, if it is in the read only format, it is not possible to edit them. This is where WebDav comes into the picture.
Let’s find out more about WebDAV, it’s features and how to Setup Apache WebDAV Server Access on Ubuntu 20.04.
WebDAV or Web Distributing, Authoring, and Versioning is an extension to HTTP that enables you to edit remote content on the web. It allows web servers to act as file servers so that authors can collaborate on web content.
In essence, it provides basic functionality like sharing, copying, moving and editing files through a web server. It also supports collaborative applications by providing file locking and revision tracking features.
It improves the standard set of HTTP headers and methods so that you can move, create and edit files and folders. Being an extension to HTTP, it generally uses port 80 for plain unencrypted access and port 443 while using SSL/TLS protocol.
Moreover, while you may be aware of file access and manipulation, you do not know about tracking revisioning. With WebDAV it constitutes a versioning system that includes revisioning.
Before starting, you will need to install the Apache web server on your system. By default, the Apache server package is included in the Ubuntu default repository. You can install it by running the following command:
apt-get install apache2 -y
Once the Apache server package is installed, start and enable the Apache service with the following command:
systemctl start apache2
systemctl enable apache2
You can check the status of the Apache with the following command:
systemctl status apache2
You should see the following output:
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-07-28 07:32:36 UTC; 4s ago
Docs: https://httpd.apache.org/docs/2.4/
Process: 16287 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 16300 (apache2)
Tasks: 55 (limit: 2347)
Memory: 4.9M
CGroup: /system.slice/apache2.service
├─16300 /usr/sbin/apache2 -k start
├─16301 /usr/sbin/apache2 -k start
└─16302 /usr/sbin/apache2 -k start
Jul 28 07:32:36 linux systemd[1]: Starting The Apache HTTP Server...
You can also verify the Apache version using the following command:
apache2ctl -v
You should see the following output:
Server version: Apache/2.4.41 (Ubuntu)
Server built: 2022-06-14T13:30:55
Now you will need to create a directory for WebDAV that you want to share to your users. Run the following command to create a WebDAV directory inside the Apache web root:
mkdir /var/www/html/webdav
Then change the ownership of the WebDAV directory to www-data:
chown -R www-data:www-data /var/www/html/webdav
And create a directory to store the WebDAV database file:
Following step is to create an Apache virtual host configuration file to serve WebDAV folder via internet. You can create it with the following command:
nano /etc/apache2/sites-available/webdav.conf
Add the following lines:
DavLockDB /usr/local/apache/var/DavLock
ServerAdmin admin@example.com
ServerName webdav.example.com
DocumentRoot /var/www/html/webdav
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /webdav /var/www/html/webdav
DAV On
Save and close the file then activate the Apache virtual host using the following command:
The WebDAV is Apache’s default features. So in order to use this feature, you will need to enable the WebDAV modules to activate its functionality. You can enable both WebDAV modules with the following command:
a2enmod dav
a2enmod dav_fs
Please restart the Apache service to apply the configuration changes:
For security reasons, it is recommended to protect the WebDAV share with username and password. In order to enable the WebDAV authentication, firstly create a file to store the WebDAV password:
You will be asked to set your password as shown below:
Adding user webadmin in realm webdav
New password:
Re-type new password:
Once the WebDAV user is created, you will need to edit the WebDAV configuration file and enable the WebDAV authentication. You can edit it with the following command:
Save and close the file then enable the Digest module and restart the Apache service with the following command:
a2enmod auth_digest
systemctl restart apache2
A brief explanation of each directive is shown below:
AuthType Digest: Used to define the authentication method.
AuthName “webdav”: Define which users are allowed from the webdav realm.
AuthUserFile /usr/local/apache/var/users.password: Define the username and password location to access the WebDAV.
Require valid-user: Allow only users listed in the users.password file.
At this point, the WebDAV server is installed and configured with authentication. You can now proceed to access the WebDAV share from the remote machine.
There are several ways to connect to the WebDAV server, such as File manager, Web browser, Command line, WebDrive. WinSCP, Cyberduck and others can work with multiple protocols.
Before accessing the WebDAV, create some files inside the WebDAV directory.
Open your File Manager, press the CTRL + L and type the URL dav://webdav.example.com/webdav as shown below:
Hit the Enter key. You will be asked to provide WebDAV username and password:
Provide your admin username, password and click on the Connect button. You should see the content of the WebDAV directory on the following screen:
Once you are login to the WebDAV server, you can perform the several things, including Create a new file, Create a folder, Edit an existing file, Delete a file, Delete a folder, Copy or Move files between a local folder and a remote folder on the server, Put a lock on a resource, Remove a lock from a resource and many others.
Additionally WebDAV also allows you to access it via command line interface. Command line method is very useful when you are working on the server without Desktop manager. It helps system administrator to easily access and manage the WebDAV share. To access the WebDAV via command line, you will need to install the davfs package on your server.
By default, the devfs package is included in the Ubuntu default repository. You can install it easily by running the following command:
apt-get install davfs2
Once the devfs package is installed, you will need to mount the WebDAV share to the local folder in order to use it. You can mount the WebDAV directory on the /mnt directory using the following command:
mount.davfs http://webdav.example.com/webdav /mnt
You will be asked to provide your WebDAV username and password:
Please enter the username to authenticate with server
http://webdav.example.com/webdav or hit enter for none.
Username: webadmin
Please enter the password to authenticate user webadmin with server
http://webdav.example.com/webdav or hit enter for none.
Password:
After the successful authentication, you can verify the content of WebDAV directory using the following command:
ls /mnt/
You should see the following output:
file1.txt file2.txt file3.txt
You can now easily copy and remove files to and from the WebDAV share directory via command line.
It is a good idea to secure the WebDAV access with Let’s Encrypt SSL certificate so every communication done through secure channel. To do so, you will need to install the Certbot client in your system.
You can install the Certbot with the following command:
apt-get install certbot python3-certbot-apache -y
Once the Certbot client has been installed successfully, run the following command to install the Let’s Encrypt SSL for your website:
certbot --apache -d webdav.example.com
You will be asked to provide your valid email and accept the term of service as shown below:
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): hitjethva@gmail.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for webdav.example.com
Enabled Apache rewrite module
Waiting for verification...
Cleaning up challenges
Created an SSL vhost at /etc/apache2/sites-available/webdav-le-ssl.conf
Enabled Apache socache_shmcb module
Enabled Apache ssl module
Deploying Certificate to VirtualHost /etc/apache2/sites-available/webdav-le-ssl.conf
Enabling available site: /etc/apache2/sites-available/webdav-le-ssl.conf
Select whether or not to redirect HTTP traffic to HTTPS or configure Apache to redirect all traffic to secure HTTPS access as shown in the following output:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Type 2 and hit Enter to start the process. Once the installation is completed, you should get the following output:
Enabled Apache rewrite module
Redirecting vhost in /etc/apache2/sites-enabled/webdav.conf to ssl vhost in /etc/apache2/sites-available/webdav-le-ssl.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://webdav.example.com
You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=webdav.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/webdav.example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/webdav.example.com/privkey.pem
Your cert will expire on 2022-09-30. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
You can now access your WebDAV share securely via HTTPS protocol.
Thank you for reading how to Setup Apache WebDAV Server Access on Ubuntu 20.04.
How to Setup Apache WebDAV Server Access on Ubuntu 20.04 Conclusion
In this guide, we explained how to setup a WebDAV server on Ubuntu 20.04. To conclude WebDAV is very useful for developers to download and upload code on the Webserver. Using WebDAV, you can easily access and manage the files in your WebDAV server from the central location.
I am a fan of open source technology and have more than 10 years of experience working with Linux and Open Source technologies. I am one of the Linux technical writers for Cloud Infrastructure Services.
52votes
Article Rating
Subscribe
Login and comment with
I allow to create an account
When you login first time using a Social Login button, we collect your account public profile information shared by Social Login provider, based on your privacy settings. We also get your email address to automatically create an account for you in our website. Once your account is created, you'll be logged-in to this account.
DisagreeAgree
Login and comment with
I allow to create an account
When you login first time using a Social Login button, we collect your account public profile information shared by Social Login provider, based on your privacy settings. We also get your email address to automatically create an account for you in our website. Once your account is created, you'll be logged-in to this account.