Blog del Podcast
podcast      GitHub      Twitter   Telegram

Servidor WebDAV con rclone, con nube público o privada

Tiempo estimado de lectura: 5 minutos. 653 palabras. docker

Os he explicado varias formas de montar un servidor WebDAV.

El modo que os explicaré hoy con rclone, es el más fácil, rápido y seguro de todos los que os he explicado.

Además este modo tiene una característica importante, puedes utilizar una nube pública ya sea cifrada o no para servirla a través de tu servidor WebDAV.

Crear usuario y contraseña

Hay dos formas de crear el usuario y contraseña. Una sería añadir el usuario y contraseña como unas variables en el docker-compose, la otra es creando un archivo htpasswd, donde esta información estará cifrada.

Lo primero que necesitamos, es instalar el paquete apache2-utils, para utilizar htpasswd y crear el hash de la contraseña.

sudo apt-get install apache2-utils

Una vez instalado, voy a crear el usuario angel y la contraseña 1234, como ejemplo.

htpasswd -nb angel 1234

La terminal me devuelve:

angel:$apr1$DANrK6fl$Ov/imrJhcDk/t5TgPEm9N1

Esto lo copiaré en el archivo htpasswd, donde guardaré todas mis contraseñas para acceder a la nube.

Recuerda que puedo crear tantos usuarios y contraseñas como desee

En mi caso, para no montar tantos volúmenes, guardaré el archivo htpasswd en la misma ruta que el archivo rclone.conf.

Servidor almacenamiento local

Voy a montar un servidor WebDAV con almacenamiento local, osea, todos los archivos y directorios de mi servidor WebDAV, estarán en mi Raspberry, Servidor o VPS.

docker-compose

rclone-webdav-server:
  container_name: webdav
  image: rclone/rclone
  ports:
     - 100:80
  command:
     - "--config"
     - "/root/.config/rclone/rclone.conf"
     - "--verbose"
     - "serve"
     - "webdav"
     - "local:/webdav"   # El almacenamiento del servidor, está en el directorio local /webdav
     - "--addr"
     - "0.0.0.0:80"
     - "--htpasswd"                     # habilitar el usuario y contraseña
     - "/root/.config/rclone/htpasswd"  # ruta del archivo donde está el usuario y hash de la contraseña
     - "-v"
     - "--log-file"
     - "/webdav.log"
  volumes:
     - $HOME/.config/rclone:/root/.config/rclone/:ro
     - /webdav:/webdav # Crea un volumen que comparte el directorio /webdav dentro del docker, con /webdav en local
     - $HOME/docker/webdav/webdav.log:/webdav.log    # logs de acceso
  environment:
     - TZ=Europe/Madrid

Sustituye:

Almacenamiento en nube pública

En este caso, voy a utilizar la nube pública como almacenamiento de mis archivos. Mi servidor WebDAV servirá estos archivos.

En mi caso, he cifrado todos los archivos de la nube pública, así tengo más privacidad.

docker-compose

La nube que tengo configurada en rclone es drive:.

rclone-webdav-server:
  container_name: webdav
  image: rclone/rclone
  ports:
     - 100:80
  command:
     - "--config"
     - "/root/.config/rclone/rclone.conf"
     - "--verbose"
     - "serve"
     - "webdav"
     - "drive:"
     - "--addr"
     - "0.0.0.0:80"
     - "--htpasswd"   
     - "/root/.config/rclone/htpasswd"  
     - "-v"
     - "--log-file"
     - "/webdav.log"
  volumes:
     - $HOME/.config/rclone:/root/.config/rclone/:ro
     - $HOME/docker/webdav/webdav.log:/webdav.log
  environment:
     - TZ=Europe/Madrid

logs de acceso

En el docker-compose anterior, tenemos que añadir la opción -v y --log-file para crear un archivo de texto plano donde se guardarán todos los logs.

- "-v"
- "--log-file"
- "/webdav.log"

También crearemos un volumen para guardar el archivo de texto plano. Como ves en el ejemplo, lo he nombrado como webdav.log.

volumes:
- $HOME/docker/webdav/webdav.log:/webdav.log

Errores

Recuerda consultar los logs en caso de errores al montar la nube.

docker logs -f webdav

Publicado por Angel el Tuesday 11 May del 2021



También te puede interesar:




Powered by org-bash-blog

Written in OrgMode with Emacs and converted to HTML with Pandoc

Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.