Cómo crear un recurso compartido WebDAV con JuiceFS

WebDAV es un protocolo de intercambio de archivos basado en HTTP. Fue diseñado originalmente para la edición colaborativa de documentos de múltiples usuarios y también se usa ampliamente en el almacenamiento de archivos basado en Internet, la sincronización de datos y otros escenarios de aplicaciones de disco de red.

Hay una gran cantidad de aplicaciones en teléfonos móviles y PC con soporte integrado para WebDAV, como la conocida herramienta de gestión de documentos Zotero, la popular herramienta para tomar notas Notability en el iPad, el software de oficina doméstica WPS, la cruz -plataforma Markdown herramienta para tomar notas Joplin, administrador de archivos ES, etc., lo que significa que siempre que tenga su propio almacenamiento WebDAV, puede usar WebDAV para guardar los datos de documentos que generamos en este software.

Para evitar confusiones, es necesario aclarar los conceptos relacionados con WebDAV.Como se muestra en la siguiente figura, WebDAV se divide en dos partes: servidor y cliente:

  • Servidor WebDAV : La nube azul representa el servidor WebDAV, que se utiliza para responder a las solicitudes de conexión y lectura y escritura del cliente, y almacenar datos.
  • Cliente WebDAV : varios programas con cliente WebDAV incorporado, que se ejecutan en teléfonos móviles, tabletas o computadoras.

Después de comprender la composición de la arquitectura WebDAV, lo que debemos hacer es configurar un conjunto de servidores WebDAV propios. De hecho, también podemos llamarlo uso compartido de WebDAV. En resumen, lo que debemos hacer es la "nube azul". parte del diagrama de arquitectura.

En el pasado, el software de servidor web, como el servicio Apache HTTP o Nginx, se usaba generalmente para configurar el uso compartido de WebDAV. Dado que no estaba disponible de fábrica, se requería una carga adicional o una compilación manual de los módulos WebDAV, lo que aumentaba la complejidad de la configuración de WebDAV. hasta cierto punto.

Aunque algunos sistemas operativos NAS también brindan la función de configuración de uso compartido de WebDAV, pero están limitadas por el entorno de la intranet, es difícil que el uso compartido de WebDAV configurado aproveche su provisión de servicios basados ​​en Internet.

Si actualmente está buscando una solución de configuración del servicio de uso compartido WebDAV más general, más efectiva y más simple, JuiceFS puede ser una solución que valga la pena probar para usted.

JuiceFS es un sistema de archivos distribuido de código abierto orientado a la nube, que se basa en el almacenamiento de objetos y la base de datos, puede construir rápidamente un sistema de almacenamiento de alto rendimiento con capacidad elástica. JuiceFS proporciona POSIX, S3 API, HDFS API, controlador Kubernetes CSI, Docker Volume Plugin, WebDAV y otras interfaces de acceso ricas, que pueden acceder fácilmente a varias aplicaciones.

A continuación, compartiré con ustedes cómo usar JuiceFS para configurar fácil y rápidamente un servicio WebDAV con flexibilidad de espacio, seguridad y practicidad.

Preparación

El recurso compartido WebDAV presentado en este artículo es una interfaz de acceso proporcionada por JuiceFS, que se basa en el sistema de archivos JuiceFS. Entonces, antes de la configuración, debe crear un sistema de archivos JuiceFS.

El sistema de archivos de JuiceFS consta de dos partes: almacenamiento de datos y motor de metadatos. El almacenamiento de datos puede ser servicios de almacenamiento de objetos proporcionados por varias plataformas de computación en la nube, o discos locales o MinIO de construcción propia. El motor de metadatos se usa para almacenar la información de metadatos del archivo. Puede usar una base de datos basada en red como Redis, MySQL, PostgreSQL o una base de datos independiente como SQLite o BadgerDB.

Para que el recurso compartido WebDAV sea accesible a través de Internet, lo crearemos a continuación en un servidor en la nube con una dirección IPv4 pública fija. Debido a que WebDAV se crea en un solo lugar, se puede acceder a él desde cualquier lugar por dirección IP o nombre de dominio. Por lo tanto, el motor de almacenamiento de datos y metadatos que componen JuiceFS se puede combinar de manera más flexible, como por ejemplo:

  1. Disco local + base de datos independiente: Cuando el espacio disponible del disco local del servidor en la nube es suficiente.
  2. Almacenamiento de objetos + base de datos independiente: cuando se requiere un espacio de almacenamiento de mayor capacidad.
  3. Almacenamiento de objetos + base de datos de red: cuando se requiere un mayor espacio de almacenamiento y otros hosts necesitan acceder a JuiceFS al mismo tiempo.

Servidor en la nube

Supongamos que tenemos un servicio en la nube configurado de la siguiente manera:

  • Sistema: Servidor Ubuntu 22.04 AMD64
  • CPU: 1 núcleo
  • Memoria: 1GB
  • Disco Duro: 25GB
  • Dirección IP: 120.118.8.10 (esta es una IP FALSA escrita al azar con fines de demostración)

Para el escenario descrito en este artículo, un servidor en la nube de nivel de entrada de cualquier plataforma en la nube puede satisfacer las necesidades, y el punto clave es tener una dirección IPv4 de red pública.

almacenamiento de objetos

Supongamos que hemos preparado los siguientes baldes:

Para el escenario descrito en este artículo, el almacenamiento de objetos no es necesario.Si el espacio en el disco duro del servidor en la nube es suficiente, el disco duro se puede usar como almacenamiento de objetos de JuiceFS.

base de datos

Para el escenario descrito en este artículo, la base de datos independiente es la opción más fácil, aquí usamos una base de datos SQLite de un solo archivo. No es necesario prepararse con anticipación, se generará automáticamente cuando se cree el sistema de archivos de JuiceFS.

Si es necesario, también puede consultar el documento " Cómo configurar el motor de metadatos " para utilizar otros tipos de bases de datos.

Crear sistema de archivos JuiceFS

  1. Instalar el cliente
curl -sSL https://d.juicefs.com/install | sh -
  1. crear sistema de archivos

Las siguientes son dos formas de crear un sistema de archivos, elija una según las necesidades reales:

Método 1: use un disco duro local como almacenamiento de objetos

juicefs format sqlite3://myjfs.db myjfs

Método 2: usar el servicio de almacenamiento de objetos (los datos se almacenan en el almacenamiento de objetos)

juicefs format --storage oss \
--bucket https://myjfs.oss-cn-shanghai.aliyuncs.com \
--access-key abcdefg \
--secret-key gfedcba \
sqlite3://myjfs.db myjfs

Implementar el servicio WebDAV

Una vez que el sistema de archivos de JuiceFS esté listo, puede comenzar a configurar el uso compartido de WebDAV. La forma más fácil es abrir directamente el almacenamiento de JuiceFS en forma de una interfaz WebDAV sin realizar ninguna configuración.

sudo juicefs webdav sqlite3://myjfs.db 120.118.8.10:80

Utilice cualquier software de cliente WebDAV integrado para acceder a http://120.118.8.10 para conectarse y acceder.

Aunque es muy conveniente, no es difícil ver que este método de acceso anónimo tiene grandes riesgos de seguridad. Primero, cualquier persona que conozca la dirección IP puede leer y escribir nuestros archivos directamente a través del cliente WebDAV sin autenticación de identidad; segundo, usar HTTP sin cifrar Protocolo, el proceso de comunicación es fácil de ser espiado y atacado. Es muy necesario para nosotros mejorar las deficiencias en estos dos aspectos, de hecho es muy simple, para resolver el primer problema solo necesitamos configurar la autenticación de identidad para WebDAV, y para resolver el segundo problema solo necesitamos para configurar el certificado SSL para habilitar el soporte de conexión cifrada HTTPS.

Configurar la autenticación

JuiceFS v1.1 (a partir de la publicación de este artículo, esta versión no se ha lanzado oficialmente) y las versiones anteriores comienzan a ser compatibles con las funciones de autenticación WebDAV y certificado SSL, confirme la versión de su cliente antes de configurar, se recomienda consultar "Manualmente Compile JuiceFS Client " Compila la rama principal del repositorio de GitHub.

Configurar un nombre de usuario y una contraseña para acceder a WebDAV es tan simple como configurar las variables de entorno correspondientes:

export WEBDAV_USER=user
export WEBDAV_PASSWORD=mypassword

certificado SSL

Habilitar conexiones cifradas HTTPS para WebDAV requiere un certificado SSL, ya sea un certificado de confianza emitido por una CA o un certificado autofirmado emitido por OpenSSL.

Las organizaciones de CA generalmente solo emiten certificados para nombres de dominio, por lo que debe poseer un nombre de dominio y vincularlo a la IP del servidor. Las herramientas gratuitas de emisión de certificados incluyen certbot, acme.sh, etc. Puede usar estas herramientas para solicitar certificados SSL gratuitos. .

Solicitar y emitir un certificado a través de una autoridad de certificación de CA de terceros es otro tema.Para simplificar, se utiliza un certificado autofirmado para lograr esta función.

  1. Generar clave privada del servidor
openssl genrsa -out private.key 4096
  1. Generación de una solicitud de firma de certificado (CSR) Este paso requiere que se proporcione una serie de información de forma interactiva.
openssl req -new -key private.key -out client.csr
  1. Emitir un certificado usando un CSR
openssl x509 -req -days 365 -in client.csr -signkey private.key -out client.crt
  1. realizar limpieza
rm client.csr

Después de los pasos anteriores, hay dos archivos, private.key y client.crt, en el directorio actual, y luego utilícelos para ejecutar el servicio WebDAV.

Servicio WeDAV ejecutado oficialmente

Ahora puede combinar lo anterior para ejecutar un servicio WebDAV con autenticación básica y una conexión cifrada HTTPS:

export WEBDAV_USER=user
export WEBDAV_PASSWORD=mypassword
sudo juicefs webdav --cert-file ./client.crt --key-file ./private.key sqlite3://myjfs.db 120.118.8.10:443

En este punto, hemos habilitado la conexión encriptada HTTPS, y necesitamos usar la dirección con https al acceder a WebDAV https://120.118.8.10. Al mismo tiempo, necesitamos ingresar el nombre de usuario y la contraseña para conectarnos con éxito.

Además, dado que aquí se usa el certificado autofirmado, algunos clientes pueden emitir una advertencia de que el certificado no es de confianza durante el acceso, simplemente ignórelo.

Si ha vinculado un nombre de dominio al servidor y ha solicitado un certificado SSL, el comando para implementar WebDAV debe ajustarse de la siguiente manera:

export WEBDAV_USER=user
export WEBDAV_PASSWORD=mypassword
sudo juicefs webdav --cert-file ./your-domain.crt --key-file ./your-domain.key sqlite3://myjfs.db www.your-domain.com:443

En consecuencia, la dirección de acceso también debe cambiarse a su nombre de dominio, por ejemplo: https://www.su-dominio.com . Usando el certificado emitido por la institución CA, varios accesos de clientes WebDAV no emitirán advertencias, lo que puede resolver de manera efectiva el problema de que algunas aplicaciones no pueden conectarse al servicio WebDAV.

Ejemplo de aplicación

Tomando el navegador de archivos ES y Joplin como ejemplos para presentar cómo configurar y usar el servicio WebDAV autoconstruido para sincronizar datos de documentos.

Nota: Al configurar WebDAV en algunas aplicaciones, si la dirección y la información de autenticación de identidad se ingresan correctamente, el programa aún informa que no puede conectarse a WebDAV. Esto puede deberse a que el programa no admite certificados autofirmados. Certificados confiables para configurar el servicio WebDAV para resolver este problema.

Explorador de archivos ES

El navegador de archivos ES es un administrador de archivos de terceros de uso común en el terminal móvil. Además de poder administrar archivos en el teléfono móvil, también admite la adición de muchos servicios de almacenamiento de terceros, incluido el almacenamiento WebDAV.

Simplemente agregue un tipo de almacenamiento WebDAV en el menú de servicio y complete la dirección, el nombre de usuario y la contraseña como se muestra en la figura a continuación.

Joplin

Joplin es un software de toma de notas Markdown de código abierto que admite la sincronización de documentos mediante WebDAV. Simplemente ingrese su enlace WebDAV, nombre de usuario y contraseña en la configuración de sincronización.

Cabe señalar que aquí estamos usando un certificado autofirmado, y Joplin informará un error al verificar la configuración de sincronización. La solución es expandir las opciones avanzadas, marcar "Ignorar errores de certificado TLS", y la configuración de la aplicación puede pasar la verificación después de intentar verificar.

escribir al final

Al igual que FTP, WebDAV es un protocolo para compartir archivos relativamente antiguo, pero todavía se usa ampliamente en la actualidad. Nunca existe la mejor herramienta en el campo de la tecnología de la información, solo la herramienta más adecuada. En términos de funciones, es posible que WebDAV no tenga tantas funciones como un cliente de disco de red dedicado, pero el protocolo WebDAV es más general y abierto, y se puede usar directamente en una gran cantidad de aplicaciones compatibles integradas, que no solo pueden proteger su privacidad, pero también evitar ser pirateado Paquetes de plataforma específicos.

WebDAV es solo una de las muchas interfaces de acceso admitidas por JuiceFS. Si está interesado, puede explorar más a fondo otras interfaces de acceso, como POSIX a la que se accede en forma de disco local, puerta de enlace S3 a la que se accede en forma de API S3 y Docker Volume Complemento para acceso en contenedores, controlador Kubernetes CSI, etc. El uso flexible de estos métodos de acceso puede lograr capacidades de administración de almacenamiento en la nube más eficientes y flexibles. Compartiremos más sobre el contenido relacionado en artículos posteriores.

Si es de ayuda, preste atención a nuestro proyecto Juicedata/JuiceFS . (0ᴗ0✿)

{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/u/5389802/blog/7034331
Recomendado
Clasificación