Configurar un Servidor WebDAV Seguro en Ubuntu Server con Apache y HTTPS en VPS de Hetzner

Este tutorial te guiará paso a paso para configurar una carpeta WebDAV en tu servidor Ubuntu, utilizando Apache2 como servidor web y HTTPS con certificados de Let's Encrypt para asegurar todas tus comunicaciones.

Sistemas

¿Qué es WebDAV?

WebDAV (Web Distributed Authoring and Versioning) es una extensión del protocolo HTTP que permite a los usuarios editar y gestionar archivos directamente en un servidor web remoto. Esto significa que puedes montar una carpeta en tu servidor como una unidad de red en tu sistema operativo (Windows, macOS, Linux) y trabajar con los archivos como si estuvieran localmente, pero en realidad se guardan de forma segura en tu servidor.


Requisitos Previos

Antes de comenzar, asegúrate de tener lo siguiente:

  • Un servidor Ubuntu Server (versión 20.04 LTS o superior recomendada).
  • Acceso SSH al servidor con un usuario que tenga privilegios sudo.
  • Un nombre de dominio registrado (ej. webdav.tudominio.com) que apunte a la dirección IP pública de tu servidor. Esto es esencial para la configuración HTTPS con Let's Encrypt.
  • Conocimientos básicos de la línea de comandos de Linux.

Paso 1: Preparar tu Sistema e Instalar Apache

Comienza actualizando tu servidor y asegurándote de que Apache esté instalado y listo para los módulos WebDAV y SSL.

  1. Actualiza los paquetes del sistema:

    Siempre es una buena práctica empezar con un sistema actualizado.

    sudo apt update
    sudo apt upgrade -y
  2. Instala Apache2:

    Si no lo tienes ya, instala el servidor web Apache.

    sudo apt install apache2 -y
  3. Habilita los módulos necesarios de Apache:

    Los módulos dav, dav_fs, ssl y rewrite son fundamentales para la funcionalidad WebDAV y HTTPS.

    sudo a2enmod dav
    sudo a2enmod dav_fs
    sudo a2enmod ssl
    sudo a2enmod rewrite # Necesario para la redirección HTTP a HTTPS
  4. Reinicia Apache

    para que los cambios en los módulos surtan efecto:

    sudo systemctl restart apache2

Paso 2: Crea la Carpeta WebDAV y Configura Permisos

Ahora, crea el directorio que actuará como tu carpeta WebDAV y otorga a Apache los permisos necesarios.

  1. Crea el directorio WebDAV:

    Aunque puedes elegir otra ubicación, /var/www/webdav es una opción común y recomendada.

    sudo mkdir /var/www/webdav
  2. Establece el propietario y los permisos:

    Asigna la propiedad de la carpeta al usuario y grupo de Apache (www-data) para permitir la lectura y escritura.

    sudo chown -R www-data:www-data /var/www/webdav
    sudo chmod -R 755 /var/www/webdav

    chmod 755 asegura que el propietario (www-data) tenga permisos completos, mientras que otros pueden leer y ejecutar.


Paso 3: Configura la Autenticación de Usuario para WebDAV

Para proteger tu carpeta WebDAV, establecerás una autenticación de usuario básica.

  1. Crea el archivo de contraseñas:

    Utiliza htpasswd para generar un archivo con nombres de usuario y contraseñas cifradas. La opción -c crea el archivo si no existe. Asegúrate de reemplazar tu_usuario por el nombre de usuario que prefieras.

    sudo htpasswd -c /etc/apache2/webdav.passwd tu_usuario

    Se te pedirá que introduzcas y confirmes la contraseña para tu_usuario.

  2. Añade usuarios adicionales (opcional):

    Si necesitas añadir más usuarios en el futuro, no uses -c, ya que esto sobrescribiría el archivo existente. Simplemente omítelo:

    sudo htpasswd /etc/apache2/webdav.passwd otro_usuario

Paso 4: Configura el Virtual Host de Apache para WebDAV

Aquí definirás cómo Apache servirá tu carpeta WebDAV, incluyendo la crucial configuración para HTTPS.

  1. Crea el archivo de configuración del Virtual Host:

    Usaremos nano para crear un nuevo archivo de configuración en sites-available. Recuerda reemplazar webdav.tudominio.com con tu nombre de dominio real.

    sudo nano /etc/apache2/sites-available/webdav.conf
  2. Pega la siguiente configuración:

    Este código configurará un Virtual Host para HTTP que redireccionará todo el tráfico a HTTPS, y un Virtual Host para HTTPS que contendrá la configuración WebDAV.

    <VirtualHost *:80>
        ServerName webdav.tudominio.com # ¡Cambia esto a tu dominio!
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
    
        # Redireccionar todo el tráfico HTTP a HTTPS para WebDAV
        RewriteEngine On
        RewriteCond %{HTTPS} off
        RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    
    <VirtualHost *:443>
        ServerName webdav.tudominio.com # ¡Cambia esto a tu dominio!
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    
        Alias /webdav /var/www/webdav
    
        <Location /webdav>
            DAV On
            AuthType Basic
            AuthName "Acceso Restringido WebDAV"
            AuthUserFile /etc/apache2/webdav.passwd
            Require valid-user
    
            # Opcional: Permite ciertas operaciones (GET, HEAD, OPTIONS, PROPFIND)
            # sin autenticación, pero requiere autenticación para el resto.
            # Si quieres que *TODAS* las operaciones requieran autenticación,
            # elimina este bloque <LimitExcept>.
            <LimitExcept GET HEAD OPTIONS PROPFIND>
                Require valid-user
            </LimitExcept>
        </Location>
    
        # --- Directivas SSL/TLS (¡Estas serán actualizadas por Certbot!) ---
        # Estas líneas son marcadores de posición. Certbot las rellenará automáticamente.
        # SSLEngine on
        # SSLCertificateFile /etc/letsencrypt/live/webdav.tudominio.com/fullchain.pem
        # SSLCertificateKeyFile /etc/letsencrypt/live/webdav.tudominio.com/privkey.pem
        # Include /etc/letsencrypt/options-ssl-apache.conf
        # -----------------------------------------------------------------
    </VirtualHost>

    Guarda y cierra el archivo (Ctrl+X, Y, Enter).

  3. Habilita el Virtual Host

    que acabas de crear:

    sudo a2ensite webdav.conf
  4. Reinicia Apache

    para cargar la nueva configuración del Virtual Host:

    sudo systemctl restart apache2

Paso 5: Asegura tu WebDAV con HTTPS (Certbot/Let's Encrypt)

Este es el paso clave para obtener e instalar un certificado SSL/TLS gratuito para tu dominio, habilitando así HTTPS.

  1. Instala Certbot para Apache:

    sudo apt install certbot python3-certbot-apache -y
  2. Obtén y configura el certificado SSL:

    Ejecuta Certbot; te guiará a través del proceso.

    sudo certbot --apache
    • Se te pedirá una dirección de correo electrónico para avisos de renovación.
    • Deberás aceptar los términos de servicio.
    • Te preguntará si quieres compartir tu correo con la EFF (esto es opcional).
    • Certbot detectará automáticamente tu dominio (webdav.tudominio.com) y te pedirá que lo selecciones (normalmente escribiendo el número correspondiente).
    • Finalmente, te preguntará si quieres redireccionar todo el tráfico HTTP a HTTPS. Es fundamental seleccionar la opción para redireccionar (generalmente opción 2). Esto garantiza que tu WebDAV siempre utilice una conexión segura.

    Si el proceso es exitoso, Certbot modificará tu archivo webdav.conf para incluir las directivas SSLEngine, SSLCertificateFile, etc., y configurará la renovación automática del certificado.


Paso 6: Ajustes Finales y Verificación

Realiza una verificación rápida de tu configuración de Apache y asegúrate de que el firewall esté correctamente configurado.

  1. Verifica la sintaxis de la configuración de Apache (opcional pero recomendado):

    sudo apache2ctl configtest

    Deberías ver Syntax OK.

  2. Reinicia Apache

    una última vez para aplicar todos los cambios de Certbot:

    sudo systemctl restart apache2
  3. Configura el Firewall (UFW):

    Si estás usando UFW (Uncomplicated Firewall), asegúrate de que los puertos 80 (HTTP) y 443 (HTTPS) estén abiertos. Certbot suele encargarse de esto, pero es buena idea verificar.

    sudo ufw allow 'Apache Full'
    sudo ufw enable # Si el firewall no está habilitado
    sudo ufw status

    Deberías ver que 'Apache Full' permite el tráfico en los puertos 80 y 443.


Paso 7: Accede a tu Carpeta WebDAV

¡Ya está! Ahora puedes acceder a tu carpeta WebDAV de forma segura.

Desde un navegador web:

Abre tu navegador y navega a https://webdav.tudominio.com/webdav target="_blank" rel="noopener noreferrer">https://webdav.tudominio.com/webdav. Deberías ver un mensaje solicitando usuario y contraseña. Una vez introducidos, podrás ver el contenido de tu directorio /var/www/webdav. Asegúrate de usar https:// y no http://.

Monta la carpeta WebDAV como una unidad de red:

Windows:

  1. Abre "Este equipo" o "Mi PC".
  2. Haz clic derecho y selecciona "Conectar a unidad de red".
  3. En "Carpeta", introduce https://webdav.tudominio.com/webdav.
  4. Marca la casilla "Conectar usando credenciales diferentes" y haz clic en "Finalizar".
  5. Introduce el nombre de usuario y la contraseña que configuraste con htpasswd.

macOS:

  1. En el Finder, ve a "Ir" > "Conectarse al servidor..." (o presiona ⌘K).
  2. En el campo "Dirección del servidor", introduce https://webdav.tudominio.com/webdav.
  3. Haz clic en "Conectar".
  4. Introduce el nombre de usuario y la contraseña cuando se te solicite.

Linux (GNOME/KDE):

  • GNOME (Nautilus): Abre el gestor de archivos, haz clic en "Otras ubicaciones" en la barra lateral, y en la parte inferior, en "Conectar al servidor", escribe davs://webdav.tudominio.com/webdav y haz clic en "Conectar".
  • KDE (Dolphin): Abre el gestor de archivos, en la barra de direcciones escribe webdavs://webdav.tudominio.com/webdav y presiona Enter.


 Cursos de Programación

 Curso de Programación C# (Sharp)

Gratis
Curso de programacion C# Sharp
  • 12 Lecciones C# con sus ejercicios
  • 224 Ejercicios C# con la solución
  • 224 Códigos C# de ejemplo
  • GRATUITO y sin REGISTROS
  • Apto principiantes hasta avanzados
  • Apto para todos los públicos
Ir al curso C# (C Sharp)  

 Curso de Programación Java

Gratis
Curso de Programación Java
  • 12 Lecciones Java con sus ejercicios
  • 224 Ejercicios Java con la solución
  • 224 Códigos Java de ejemplo
  • GRATUITO y sin REGISTROS
  • Apto principiantes hasta avanzados
  • Apto para todos los públicos
Ir al curso Java  

 Curso de Programación VB.Net

Gratis
Curso de Programación Visual Basic (VB.Net)
  • 12 Lecciones VB.Net con sus ejercicios
  • 224 Ejercicios VB.Net con la solución
  • 224 Códigos Visual Basic de ejemplo
  • GRATUITO y sin REGISTROS
  • Apto principiantes hasta avanzados
  • Apto para todos los públicos
Ir al curso VB.Net