hits counter
Este sitio web utiliza cookies para obtener estadísticas de navegación. Si sigue adelante, consideraremos que acepta su uso. Acepto | Más información

Cloud



Cliente Mega

El Cloud computing, o almacenamiento en la nube, se utiliza cada vez con mayor frecuencia como una forma de guardar nuestros datos y que estos permanezcan accesibles desde cualquier lugar. Los servicios de este tipo suelen tener clientes para los sistemas operativos más usados (Windows, macOS y Linux) y también para smartphones o tabletas digitales. Pero no todos tienen, además, un cliente específico para la Raspberry Pi, ya que esta placa, aunque utiliza Linux como sistema operativo, este no está basado en la arquitectura x86, sino en ARM. Uno de los servicios que sí lo tienen es MEGA, un sistema de almacenamiento en la nube muy utilizado en todo el mundo. Si nos damos de alta, obtendremos una cuenta gratuita con 20 GB de capacidad.

Para poder usarlo en nuestro sistema, sólo tenemos que realizar cuatro sencillos pasos:

  1. 1.) Nos descargamos el cliente desde este enlace. Para ello, pinchamos en la versión de Raspbian que estamos usando, entramos en la carpeta armhf y nos bajamos el fichero nombrado como megacmd_xxxx_armhf.deb (siendo xxxx el número de versión disponible en este momento).
  2. 2.) Si lo hemos descargado desde la propia Raspberry, vamos al paso siguiente. Pero si lo hemos hecho desde un PC con Linux, lo copiamos en la Raspberry, por ejemplo, mediante el comando scp, mientras que en Windows podemos usar WinSCP.
  3. 3.) Hay que instalar previamente varias librerías que son necesarias:
    sudo apt install libc-ares2 libcrypto++6 libcurl3-gnutls libmediainfo0v5 libmms0 libpcrecpp0v5 libtinyxml2-8 libzen0v5
  4. 4.) Y ahora ya podemos proceder con la instalación del paquete .deb que descargamos antes:
    sudo dpkg -i megacmd_1.2.0-6.1_armhf.deb

En caso de que no se realice correctamente la instalacion y aparezcan mensajes de error, ejecutamos este comando:

sudo apt --fix-broken install

Ya podremos interactuar con nuestra cuenta de MEGA desde la Raspberry mediante una serie de comandos. Estos son algunos de los más usados:

mega-login usuario contraseña     # acceder a MEGA
mega-put [path] fichero/carpeta   # enviar fichero/carpeta
mega-get fichero/carpeta          # descargar fichero/carpeta
mega-mkdir carpeta	          # crear directorio
mega-rm 	 		  # borrar un fichero
mega-rm -rf carpeta               # borrar un directorio
mega-ls                           # ver contenido del directorio actual
mega-ls /                         # ver contenido del directorio raíz
mega-tree                         # ver árbol de directorios
mega-cd directorio                # cambiar de directorio
mega-lcd directorio               # cambiar de directorio (en la RPi)
mega-pwd directorio               # mostrar el directorio actual
mega-lpwd directorio              # mostrar directorio actual (en RPi)
mega-logout                       # salir de MEGA

Podemos conocer la lista completa de comandos escribiendo mega-help. Además, tenemos una guía de usuario en este enlace.

En lugar de operar desde la Raspberry, es posible entrar directamente en la consola de MEGA y trabajar desde dentro de nuestra propia cuenta, igual que cuando accedemos a través del navegador. Para ello, escribiremos mega-cmd y usaremos los comandos directamente, sin escribir el prefijo mega-. Para salir podemos usar exit o quit.

IMPORTANTE: Una vez hecho el login, el cliente permanece activo en segundo plano (siempre listo para usarse, aunque reiniciemos o apaguemos la Raspberry) hasta que hagamos logout.



Nextcloud + SSL

Nextcloud es un fork o escisión del anterior ownCloud que surgió en 2016 por un problema de licencias. Y es que, aunque ambos sistemas son Open source (código abierto), este último tiene algunas funciones que sólo están disponibles en la versión Enterprise, que tiene licencia comercial, mientras que en Nextcloud todos sus componentes se encuentran bajo la licencia libre AGPLv3 (Affero General Public License). Este hecho, unido a su rápido desarrollo, son los motivos por los que el uso de este sistema se ha ido extendiendo cada vez más.

Con Nextcloud podremos tener nuestro propio servidor de nube personal, sin tener que depender de los servicios de proveedores externos como Mega, Dropbox, OneDrive, Google Drive... y además la capacidad de almacenamiento de la que dispondremos sólo estará limitada por el tamaño del dispositivo (un disco duro USB, por ejemplo) que tengamos conectado a la Raspberry.


Requisitos previos

Dando por hecho que tenemos Raspberry Pi OS ya instalado, para montar nuestra propia nube, antes de nada tenemos que asegurarnos de haber realizado estas tres cosas:

  1. 1.) Asignarle a la Raspberry Pi una IP estática, tal y como se indica en este apartado.
  2. 2.) Conectar un dispositivo USB externo y darle formato ext4. Este proceso se explica detalladamente aquí.
  3. 3.) Crear un DNS dinámico para poder acceder al servidor desde Internet, algo que podemos hacer de la forma que explicamos aquí.

Una vez realizados los pasos anteriores, vamos a crear un directorio donde montar nuestro dispositivo de almacenamiento:

sudo mkdir /media/usb

Para que el dispositivo se monte automáticamente al iniciar la Raspberry Pi, tendremos que editar el archivo fstab:

sudo nano /etc/fstab

Añadiremos al final del mismo una nueva línea, en la que indicaremos el nombre de la unidad, la carpeta de montaje y el sistema de ficheros usado. La línea debe quedar así (los espacios se insertan con el tabulador):

/dev/sda1    /media/usb    ext4    defaults    0    0

Guardamos el fichero y reiniciamos el sistema:

sudo reboot


Apache + PHP

Aunque Apache no es el servidor web más adecuado para una placa como la Raspberri Pi, sin embargo es el más usado en Internet, por lo que presenta algunas ventajas de compatibilidad y facilidad de configuración con respecto a los demás.

Instalarlo y dejarlo listo para funcionar es muy fácil:

sudo apt install apache2

Si en el PC abrimos el navegador y escribimos la IP local de nuestra RasPi, podremos ver una página web de prueba que nos indica que el servidor está funcionando:

Vamos a habilitar varios módulos de Apache:

sudo a2enmod rewrite headers env dir mime

Reiniciamos el servidor web:

sudo systemctl restart apache2

AVISO: si al reiniciar Apache obtenemos un mensaje de error (Job for apache2.service failed because the control process exited with error code...), debemos desinstalar el servidor (sudo apt purge apache2) y volver a instalarlo de nuevo (sudo apt install apache2).

Y configuramos adecuadamente este fichero:

sudo nano /etc/apache2/sites-enabled/000-default.conf

modificando o añadiendo las líneas que se muestran al final en negrita, de manera que quede así:

<VirtualHost *:80>
       . . . . . .
       . . . . . .
       ServerAdmin webmaster@localhost
       DocumentRoot /var/www/html
       . . . . . .
       . . . . . .
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
       . . . . . .
       . . . . . .
       <Directory /var/www/html/nextcloud>
           AllowOverride All
       </Directory>


</VirtualHost>

Después editamos este otro fichero:

sudo nano /etc/apache2/apache2.conf

Con Ctrl+w buscamos las siguientes directivas y cambiamos None por All, así:

<Directory /var/www/>
         Options Indexes FollowSymLinks
         AllowOverride All
         Require all granted
</Directory>

Antes de guardarlo, por razones de seguridad, vamos a evitar que se envíe la versión del servidor en las conexiones al mismo. Para ello, al final del fichero que estamos editando añadiremos estas dos directivas:

ServerSignature Off
ServerTokens Prod

Guardamos los cambios y, como segunda medida de seguidad, borramos el archivo que muestra diversa información sobre el servidor que tenemos instalado. Hecho esto, nos situamos de nuevo en nuestro directorio /home:

cd /var/www/html
sudo rm index.html
cd

Finalmente reiniciamos el servidor:

sudo systemctl restart apache2

A continuación instalamos PHP en su versión 7.4:

sudo apt install php7.4 libapache2-mod-php7.4 php7.4 php7.4-gd php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-mysql php7.4-bz2 php7.4-intl php7.4-imap php7.4-gmp php-smbclient php-imagick php-memcache php-pear

Y reiniciamos de nuevo el servidor web:

sudo systemctl restart apache2

A partir de este momento nuestra Raspberry ya tiene soporte para PHP, algo imprescondible para poder ejecutar luego Nextcloud.

Las páginas o sitios web que queramos mostrar hemos de guardarlas, como hemos visto antes, en el directorio /var/www/html. Por otro lado, conviene saber que los ficheros que guardan los registros de acceso al servidor se encuentran en /var/log/apache2 y son dos: access.log y error.log. Podemos revisarlos de vez en cuando para comprobar el funcionamiento del servidor.


MariaDB

Procedemos a la instalación de este gestor de bases de datos:

sudo apt install mariadb-server

Contrariamente a lo que cabría esperar, MariaDB no nos pide que pongamos una contraseña de administrador durante su instalación, así que tendremos que dar un rodeo para añadirla:

sudo mysql_secure_installation

Lo que nos dará como resultado lo siguiente:

Enter current password for root (enter for none):                   [Pulsamos <Enter>]
Switch to unix_socket authentication [Y/n]                             [Contestamos 'Y' a la pregunta]
Change the root password? [Y/n]                    [Escribimos 'Y' para poner una nueva password]
New password:                                                [Ponemos una contraseña y la anotamos]
Re-enter new password:                                 [La escribimos de nuevo]

Luego, a todas las demás preguntas, contestamos Y, que es la opción por defecto.

IMPORTANTE: no olvidemos anotar la contraseña de root que acabamos de poner. La vamos a necesitar a continuación para la creación de una base de datos y también al final para entrar en phpMyAdmin.

Ahora vamos a crear la base de datos y el usuario con su contraseña:

sudo mysql -u root -p

Escribimos las órdenes que se muestran en negrita, cambiando mi_password por una contraseña para la base de datos (que anotaremos, ya que vamos a usarla después para configurar Nextcloud):

Enter password:                    [La del administrador (root), que anotamos más arriba]
MariaDB [(none)]> CREATE DATABASE nextcloud;
MariaDB [(none)]> CREATE USER 'nc_user'@'localhost' IDENTIFIED BY 'mi_password';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nextcloud.* TO 'nc_user'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit;

Descargar Nextcloud

Nos vamos al directorio en el que se guardan las páginas web, descargamos Nextcloud, lo descomprimimos, borramos el fichero descargado y volvemos a nuestro directorio /home:

cd /var/www/html
sudo wget https://download.nextcloud.com/server/releases/latest.zip
sudo unzip latest.zip
sudo rm latest.zip
cd

Usuario, grupo y permisos

Otorgamos recursivamente al usuario y al grupo www-data la propiedad del contenido del subdirectorio donde hemos guardado Nextcloud:

sudo chown -R www-data:www-data /var/www/html/nextcloud

Continuamos otorgándole los permisos adecuados a las carpetas y a los archivos que están dentro de ese subdirectorio (lo que tardará un poco):

sudo find /var/www/html/nextcloud -type d -exec chmod 750 {} \;
sudo find /var/www/html/nextcloud -type f -exec chmod 640 {} \;

Dentro de la carpeta donde montamos el dispositivo USB, creamos una subcarperta para guardar los datos de nuestra nube particular (cuya ruta tendremos que escribir más adelante al instalar Nextcloud):

sudo mkdir -p /media/usb/nextcloud

Asignamos el usuario y el grupo www-data a todo el contenido de la subcarpeta que acabamos de crear:

sudo chown -R www-data:www-data /media/usb/nextcloud

Además, le otorgamos los permisos adecuados a los directorios y a los ficheros:

sudo find /media/usb/nextcloud -type d -exec chmod 750 {} \;
sudo find /media/usb/nextcloud -type f -exec chmod 640 {} \;

Y reiniciamos el sistema:

sudo reboot

Certificado SSL

Con lo hecho hasta aquí, una vez que instalemos Nextcloud en el siguiente paso, sólo podremos usarlo mediante el protocolo HTTP. Pero necesitamos convertir nuestro servidor Apache en un servidor web seguro que use el protocolo HTTPS. Para ello vamos a añadir un Certificado SSL de Let's Encrypt.


Instalación de Nextcloud

Desde el PC accedemos a la Raspberry mediante el protocolo HTTPS:

https://midominio.com/nextcloud

y rellenamos cada uno de los campos que aparecen:

  1. 1.) Cuenta de administrador: en los dos primeros campos escribimos el nombre del usuario y la contraseña que vamos a usar para administrar Nextcloud. Anotamos ambos datos para no olvidarlos.
  2. 2.) Carpeta de datos: ponemos la ruta donde se van a almacenar los datos de nuestra nube: /media/usb/nextcloud.
  3. 3.) Configurar la base de datos: aquí tenemos que indicar los datos que usamos más arriba para crear la base de datos: el nombre del usuario (nc_user) y su correspondiente contraseña, el nombre de la base de datos (nextcloud) y la ubicación de nuestro servidor MariaDB (localhost).

Sólo nos queda hacer clic en Completar la instalación y esperar unos minutos, ya que tardará bastante tiempo en completarse. Cuando termine la instalación (puede que la interfaz web muestre pérdida de conexión, que será algo temporal) salimos de Nextcloud cerrando la sesión.

Por cuestiones de seguridad es necesario establecer los dominios de confianza que podrán usarse para acceder a nuestra nube. Para ello, editamos este fichero:

sudo nano /var/www/html/nextcloud/config/config.php

y comprobamos que tenemos puestas las dos direcciones (WAN y LAN) para acceder al servidor:

'trusted_domains' =>
array (
     0 => '192.168.1.33',
     1 => 'midominio.com',
 ),

Si hemos hecho algún cambio, reiniciamos el servidor:

sudo systemctl restart apache2

Por último, añadir que los clientes de escritorio para cada sistema operativo podemos descargarlos de este enlace.


Optimizar Nextcloud

Para mejorar la velocidad de ejecución de los scripts en PHP es necesario instalar APCu y Redis:

sudo apt install redis-server php-redis php-apcu

Editamos el fichero de configuración de Redis:

sudo nano /etc/redis/redis.conf

Con las teclas Ctrl+w buscamos las siguientes líneas (cambiando su valor y/o descomentándolas, según el caso) y las dejamos así:

port 0
unixsocket /var/run/redis/redis-server.sock
unixsocketperm 770

Guardamos los cambios y a continuación añadimos el usuario de Redis al grupo de Apache:

sudo usermod -a -G redis www-data

Ahora iniciamos el primer servicio y reiniciamos el segundo:

sudo service redis-server start
sudo systemctl restart apache2

Para que Nextcloud utilice Redis, modificaremos su fichero de configuración de PHP:

sudo nano /var/www/html/nextcloud/config/config.php

Pegamos al final [justo antes de );] estas líneas:

'memcache.local' => '\OC\Memcache\Redis',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'filelocking.enabled' => 'true',
'redis' => array (
  'host' => '/var/run/redis/redis-server.sock',
  'port' => 0,
  'timeout' => 0.0,
),

Reiniciamos el servidor Redis:

sudo service redis-server restart

Se requiere una configuración adicional para que funcione adecuadamente el Opcache de PHP. Para ello, editamos este fichero:

sudo nano /etc/php/7.4/apache2/php.ini

y al final del mismo añadimos lo siguiente:

; Nextcloud Opcache settings
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Para concluir con todo lo relativo a la memoria caché, reiniciamos el servidor web por última vez:

sudo systemctl restart apache2

Finalmente, y como ayuda extra, no estaría de más ampliar la memoria de intercambio (swap) de Raspberry Pi OS como explicamos aquí.


Dirección URL elegante

La dirección del servidor que se muestra en el navegador tendrá una forma similar a esta: https://midominio.com/nextcloud/index.php/login. Opcionalmente, podemos evitar que aparezca index.php en la URL. Para ello, editamos de nuevo este fichero:

sudo nano /var/www/html/nextcloud/config/config.php

Y justo delante de las líneas que añadimos anteriormente, incluimos esta otra:

'htaccess.RewriteBase' => '/nextcloud',

de modo que quede como se muestra en la siguiente imagen:

Reiniciamos el servidor:

sudo systemctl restart apache2

Luego, como root, activamos el cambio realizando estas acciones:

sudo su
cd /var/www/html/nextcloud
sudo -u www-data php occ maintenance:update:htaccess
exit
sudo systemctl restart apache2

A partir de este momento, una vez iniciada sesión, en adelante aparecerá en la barra de direcciones https://midominio.com/nextcloud/login (sin el index.php).


phpMyAdmin

phpMyAdmin es una utilidad, escrita en PHP, que sirve para administrar las bases de datos SQL por medio de una interfaz web, por lo que su uso resulta muy fácil e intuitivo. Para su instalación vamos a escribir lo siguiente:

sudo apt install phpmyadmin

Durante el proceso de instalación se nos preguntará qué servidor web hemos instalado. Seleccionamos apache2 con la tecla Espacio, le damos a Aceptar y continuamos. Después nos preguntará si queremos configurar la base de datos con dbconfig-common; puesto que ya tenemos una creada, contestamos que No.

Una vez finalizada la instalación, escribiremos estos dos comandos:

sudo phpenmod mysqli
sudo systemctl restart apache2

Y ahora, para acceder a la interfaz de phpMyAdmin, ponemos en el navegador lo siguiente:

http://192.168.1.33/phpmyadmin

La IP anterior debe corresponder, lógicamente, con la IP local de nuestra Raspberry. El usuario es root y su contraseña es la que le asignamos más arriba cuando instalamos MariaDB.




WebDAV + SSL

WebDAV es el acrónimo de Web Distributed Authoring and Versioning (Creación y control de versiones distribuidas en Web) y consiste en una extensión del protocolo HTTP que permite descargar, leer, editar y reproducir todo el contenido almacenado en un servidor web. No necesitaremos utilizar otros protocolos de intercambio de archivos en red local o Internet, como Samba, FTP o NFS. El objetivo de WebDAV es que se pueda trabajar directamente en el servidor web sin necesidad de utilizar protocolos adicionales para el manejo remoto de los archivos. Permite además que los servidores web puedan aparecer como unidades de red en nuestro PC.

Es un buen sistema para almacenamiento de datos, hacer copias de seguridad y descargar después ese contenido previamente almacenado. También es posible trabajar en grupo con los documentos guardados. Para acceder de forma sencilla podemos usar un simple navegador, aunque para sacarle todo el partido tendremos que utilizar un cliente.

Vamos a instalar este protocolo para guardar datos en un dispositivo externo USB (un HD, un SSD o un pendrive de gran capacidad). Para hacerlo necesitamos cumplir antes con los requisitos que veremos a continuación.


Requisitos previos

Dando por hecho que tenemos Raspberry Pi OS ya instalado, para montar nuestro servidor WebDAV, antes de nada tenemos que asegurarnos de haber realizado estas tres cosas:

  1. 1.) Asignarle a la Raspberry Pi una IP estática, tal y como se indica en este apartado.
  2. 2.) Conectar un dispositivo USB externo y darle formato ext4. Este proceso se explica detalladamente aquí.
  3. 3.) Crear un DNS dinámico para poder acceder al servidor desde Internet, algo que podemos hacer de la forma que explicamos aquí.

Una vez realizados los pasos anteriores, vamos a crear un directorio donde montar nuestro dispositivo de almacenamiento:

sudo mkdir /media/usb

Para que el dispositivo se monte automáticamente al iniciar la Raspberry Pi, tendremos que editar el archivo fstab:

sudo nano /etc/fstab

Añadiremos al final del mismo una nueva línea, en la que indicaremos el nombre de la unidad, la carpeta de montaje y el sistema de ficheros usado. La línea debe quedar así (los espacios se insertan con el tabulador):

/dev/sda1    /media/usb    ext4    defaults    0    0

Guardamos el fichero y reiniciamos el sistema:

sudo reboot

Apache

Comenzaremos por instalar Apache (por sus ventajas de compatibilidad con respecto a otros servidores web) y algunas utilidades:

sudo apt install apache2 apache2-utils

En la carpeta donde hemos montado el disco duro USB vamos a crear una subcarpeta para almacenar en ella nuestros archivos:

sudo mkdir /media/usb/webdav

Ahora vamos a asignar el usuario y grupo www-data, de forma recursiva, a dicha carpeta:

sudo chown -R www-data:www-data /media/usb/webdav/

Habilitamos un par de módulos de Apache que necesitamos:

sudo a2enmod dav dav_fs

Reiniciamos el servidor web:

sudo systemctl restart apache2

AVISO: si al reiniciar Apache obtenemos un mensaje de error (Job for apache2.service failed because the control process exited with error code...), debemos desinstalar el servidor (sudo apt purge apache2) y volver a instalarlo de nuevo (sudo apt install apache2).

Vamos a configurar el VirtualHost de Apache:

sudo nano /etc/apache2/sites-available/000-default.conf

añadiendo algunas directivas (las que se muestran en negrita), de manera que quede así:

DavLockDB /var/www/DavLock
<VirtualHost *:80>
       . . . . . .
       ServerAdmin webmaster@localhost
       DocumentRoot /var/www/html
       . . . . . .
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
       . . . . . .
       Alias /webdav /media/usb/webdav

       <Directory /media/usb/webdav>
           Options Indexes FollowSymLinks
           AllowOverride None
           Require all granted
           DAV On
       </Directory>

       . . . . . .
</VirtualHost>

Veamos el significado de lo que acabamos de añadir a este archivo:

  1. 1.) En la primera línea especificamsos la directiva que indica la ruta y el nombre del fichero que contiene la base de datos de bloqueos: /var/www/DavLock. Este fichero se crea automáticamente siempre que el directorio que lo contiene (/www) tenga permisos de escritura para www-data (es decir, Apache). Para ello, basta con cambiar el dueño y grupo de este directorio:
    cd /var
    sudo chown www-data:www-data www
  2. 2.) Con Alias indicamos que los accesos a http://192.168.1.33/webdav sean redirigidos al contenido del directorio /media/usb/webdav.
  3. 3.) Y en <Directory /media/usb/webdav> incluimos las directivas que se deben aplicar a dicho directorio.

Reiniciamos el servidor para que los cambios surtan efecto:

sudo systemctl restart apache2

Además, por razones de seguridad, vamos a hacer dos cosas: primero evitar que se envíe la versión del servidor en las conexiones al mismo. Para lograrlo, editamos el siguiente fichero:

sudo nano /etc/apache2/apache2.conf

y al final del mismo escribimos estas dos directivas:

ServerSignature Off
ServerTokens Prod

En segundo lugar borramos el archivo que muestra diversa información sobre servidor que tenemos instalado:

cd /var/www/html
sudo rm index.html

Finalmente reiniciamos el servidor:

sudo systemctl restart apache2

Para comprobar que WebDAV está operativo, accedemos desde el PC a la IP local de la Raspberry:

http://192.168.1.33/webdav

y nos aparecerá esta imagen:


Método de autentificación

Para que no pueda acceder cualquiera al servidor, vamos a crear un sistema de autentificación mediante usuario y contraseña. Para ello ejecutamos el siguiente comando (cambiando usuario por un nombre que nosotros elijamos):

sudo htdigest -c /etc/apache2/users.password webdav usuario

Se nos pedirá que escribamos la contraseña dos veces. Si queremos añadir más usuarios, escribiremos el mismo comando, pero omitiendo el parámetro -c.

IMPORTANTE: Es conveniente que anotemos el nombre de usuario y la contraseña que hemos puesto para no olvidarla en lo sucesivo.

Ahora vamos a permitir que Apache pueda acceder al fichero que guarda las contraseñas:

sudo chown www-data:www-data /etc/apache2/users.password

A continuación editaremos de nuevo el VirtualHost de Apache para activar el método de autentificación que hemos definido:

sudo nano /etc/apache2/sites-available/000-default.conf

Comentamos con el símbolo # la línea señalada y después añadimos las otras cinco directivas que aparecen más abajo en negrita:

DavLockDB /var/www/DavLock
<VirtualHost *:80>
       . . . . . .
       ServerAdmin webmaster@localhost
       DocumentRoot /var/www/html
       . . . . . .
       ErrorLog ${APACHE_LOG_DIR}/error.log
       CustomLog ${APACHE_LOG_DIR}/access.log combined
       . . . . . .
       Alias /webdav /media/usb/webdav

       <Directory /media/usb/webdav>
           Options Indexes FollowSymLinks
           AllowOverride None
        # Require all granted
           DAV On
           DirectoryIndex disabled
           AuthType Digest
           AuthName "webdav"
           AuthUserFile /etc/apache2/users.password
           Require valid-user

       </Directory>
       . . . . . .
</VirtualHost>

Activamos el módulo de autentificación:

sudo a2enmod auth_digest

y reiniciamos el servidor:

sudo systemctl restart apache2

Para comprobar que WebDAV ahora tiene acceso protegido, accedemos desde el PC a la IP local de la Raspberry:

http://192.168.1.33/webdav

y nos aparecerá una ventana pidiendo que introduzcamos un nombre de usuario y su contraseña:


Certificado SSL

Ahora mismo podemos usar WebDAV mediante el protocolo HTTP. Pero para que la transmisión de información entre cliente/servidor se haga de forma cifrada, necesitamos dotar de acceso seguro a nuestro servidor Apache mediante el uso del protocolo HTTPS. Para ello vamos a añadir un Certificado SSL de Let's Encrypt.

Hecho lo anterior, ya podemos acceder al servidor usando una conexión segura HTTPS:

https://midominio.com/webdav

Esto significa que los datos que intercambiemos con el servidor irán cifrados.


Usar un cliente

Desde el navegador sólo podremos ver, descargar y reproducir el contenido disponible, pero no tenemos la posibilidad de subir, crear, editar o borrar ficheros y carpetas. Para hacer esto necesitamos utilizar un cliente.

  • Windows: Un cliente muy recomendable para el SO de Microsoft es WinSCP, que dispone de varios protocolos: SCP, FTP, SFTP y WebDAV. Podemos descargar la version instalable o la portable, que no necesita instalación.

  • Linux: Independientemente de la distribución y del escritorio que estemos usando, tenemos que buscar en el menú o en el Gestor de archivos la opción Conectar con el servidor. En Servidor escribirmos la URL de acceso (midominio.com), en Tipo seleccionamos WebDAV seguro (HTTPS), en Carpeta ponemos /webdav y finalmente escribimos el Usuario y la Contraseña.

    En Ubuntu (Gnome), por ejemplo, abrimos Archivos -- Otras ubicaciones -- Conectar al servidor y escribimos:
    davs://midominio.com/webdav
    Se nos pedirá el usuario y la contraseña.

    Si preferimos trabajar desde la línea de comandos, la aplicación cadaver es la elección adecuada. La instalamos de la forma habitual:
    sudo apt install cadaver
    y conectamos añadiendo la dirección del servidor WebDAV:
    cadaver https://midominio.com/webdav
    Escribimos el usuario y la contraseña e inmediatamente se establecerá la conexión. Desde el prompt (dav:/webdav/>) podemos utilizar los comandos habituales: ls, cd, pwd, cp, get, put, cat, edit (crear/editar fichero con Vim), rm, mkdir, quit,... Con help obtendremos una lista completa. Y en este enlace tenemos disponible una descripción de todos los comandos.

  • Android: Para el SO de Google hay disponibles varias apps que nos permiten acceder y gestionar nuestro servidor. Una de ellas es Gestor de archivos, que ofrece la posibilidad de elegir distintos protocolos para una coneción remota, entre ellos WebDAV. Otra muy similar a la anterior es Cx Explorador de archivos.