Tutoriales, noticias y soluciones informáticas

PiServer con Docker – Parte 5: Instalación de un VPN personal

Usuario de wireguard en una cafetería

Por si os incorporáis ahora a esta serie de tutoriales, antes de empezar voy a resumir un poco lo que hemos visto en artículos anteriores.

  • Parte 1: Hemos instalado el sistema operativo a una Raspberry
  • Parte 2: Hemos explicado qué es Docker y sus componentes, y hemos instalado en nuestro equipo Docker y Docker compose.
  • Parte 3: Hemos instalado nuestro primer Docker (Esto lo podemos hacer en una Raspberry o en un ordenador con cualquier Linux derivado de Debian o Ubuntu)
  • Parte 4: Hemos explicado unos cuantos comandos útiles para resolver problemas y gestionar nuestros Dockers.

En este artículo vamos a instalar nuestro segundo Docker, pero lo haremos mucho más rápido que el primero, porque voy a suponer que tenemos los conceptos más claros. Si os habéis incorporado ahora en el tutorial y no queréis ver los anteriores os recuerdo que para hacer lo que se indica aquí necesitáis 3 cosas.

  • Tener una Raspberry Pi con Raspberry Pi OS lite instalado (Se explica cómo instalarlo en el primer tutorial), o un equipo con un sistema operativo linux derivado de Debian o Ubuntu, aunque sea un PC estándar.
  • Tener instalado en ese equipo Docker y Docker Compose (Se explica cómo instalarlo en el segundo tutorial).
  • Para poder hacer todo lo que se indica en este artículo es completamente necesario que vuestro proveedor de internet os de una dirección de IP pública (ya sea una IP fija o dinámica, pero al menos que sea una IP accesible desde internet, o sea, desde fuera de vuestra conexión). A veces, para abaratar conexiones, los operadores comparten la misma dirección IP con varios usuarios (es una tecnología que se llama «CGNat») y así es imposible crear un servidor de absolutamente nada (Vodafone es muy de hacer estas cosas). Si vuestro proveedor os da una conexión de este tipo, hablad con su servicio de atención al cliente. Muchas veces el cambio a una ip pública es gratuíto. Si no os lo ofrecen, tendríais que cambiar de operador de internet. No queda otra.
  • Tener en la carpeta de nuestro usuario una carpeta llamada «docker». Algo así:
/home/<carpeta_del_usuario>/docker
¿Y qué VPN vamos a instalar? ¿OpenVPN? ¿Wireguard? ¿IKEv2? ¿L2TP con IPSec? ¿Alguno raruno que te vas a sacar de la manga?
Otro usuario de wireguard en una cafetería

No, usuario anónimo. No nos vamos a poner a hacer saltos mortales en este artículo. Creo que lo mejor en este caso es instalar Wireguard. Es un sistema muy extendido, rápido y fiable. Dado que el objetivo es ponerlo a funcionar en instalaciones domésticas (hemos venido a aprender) y dado que no quiero meteros miedo con instalaciones «extrañas», vamos a tirar por la vía más sencilla de instalación. La instalación oficial de Wireguard en Docker es algo complicada para el nivel que queremos tener en estos tutoriales, sobre todo a la hora de gestionar usuarios (crear usuarios nuevos, eliminar los ya existentes, etc…). Por eso, en lugar de usar el docker oficial, haremos la instalación de otro sistema que se llama WG-Easy, que…

¡¡Pero qué me estás diciendo!! ¡¡No me lo puedo creer!! En el segundo artículo nos das la chapa acerca de que no debemos instalar nunca Dockers que no provengan de desarrolladores oficiales y ahora me mandas instalar algo de un ¿hacker Ruso?. El experto en docker que nos has presentado hace un par de tutoriales no estaría de acuerdo con ésto. 

¿Pero qué hacker ruso ni qué…? A ver: WG-Easy es un proyecto que intenta resolver dos problemas: Por un lado hacer la instalación de Wireguard mucho más sencilla y por otro darnos un interfaz gráfico para gestionar los usuarios. El proyecto está publicado en Github, donde puedes ver los nombres de los desarrolladores. Y si aún así tienes dudas sobre si este software es maligno, eres completamente libre de inspeccionar el código y compilarlo por tu cuenta para comprobar que no tiene ningún virus ni sorpresas ocultas (Esa es la magia del software libre).

Sin más preámbulos vamos a seguir el mismo esquema que usamos en el artículo de Pi-hole para no liarnos en estos primeros pasos.

1) Dentro de la carpeta «docker» creamos la carpeta «wireguard» y su estructura.

Vamos a ir a nuestra carpeta «docker» que está en la carpeta de nuestro usuario (recuerda: en /home/<tu_usuario>/docker) y dentro vamos a crear otra carpeta llamada etc_wireguard. Lo haremos con estos comandos.

mkdir wireguard
cd wireguard
mkdir etc_wireguard
Recuérdame: ¿Por qué hacías esto?

En esa carpeta se van a almacenar todos los datos que genere WG-Easy, que en resumidas cuentas serán las configuraciones del programa y los perfiles de los usaurios. Por el nombre, seguro que te das cuenta de que esa carpeta, si no estuviéramos usando docker, estaría en la ruta /etc/wireguard.

¿Y cómo has sabido que debías crear esa carpeta?

Pues porque aparece en la zona volumes del archivo docker-compose.yml. Vamos a verlo.

2) Creamos el archivo .yml con la configuración del docker.

Dentro de la carpeta wireguard vamos a crear el archivo docker-compose.yml con este comando.

sudo nano docker-compose.yml

Y le vamos a poner exactamente este contenido (no le cambiéis ni una coma).

version: "3.8"
volumes:
  etc_wireguard:

services:
  wg-easy:
    environment:
      # Change Language:
      # (Supports: en, ru, tr, no, pl, fr, de, ca, es)
      - LANG=$LANG
      - WG_HOST=$WG_HOST
      - PASSWORD=$PASSWORD
      - WG_DEFAULT_DNS=$WG_DEFAULT_DNS
      # Optional:
      # - WG_PORT=$WG_PORT
      # - WG_DEFAULT_ADDRESS=$WG_DEFAULT_ADDRESS
      # - WG_MTU=$WG_MTU
      # - WG_ALLOWED_IPS=$WG_ALLOWED_IPS
      # - WG_PERSISTENT_KEEPALIVE=25
      # - WG_PRE_UP=echo "Pre Up" > /etc/wireguard/pre-up.txt
      # - WG_POST_UP=echo "Post Up" > /etc/wireguard/post-up.txt
      # - WG_PRE_DOWN=echo "Pre Down" > /etc/wireguard/pre-down.txt
      # - WG_POST_DOWN=echo "Post Down" > /etc/wireguard/post-down.txt

    image: ghcr.io/wg-easy/wg-easy
    container_name: wg-easy
    volumes:
      - $DOCKERDIR/wireguard/etc_wireguard:/etc/wireguard
    ports:
      - "51820:51820/udp"
      - "51821:51821/tcp"
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1

Pulsad ahora las teclas "Control" + "o" para guardar los cambios y luego "Control" + "X" para salir del editor de texto.

Si os fijáis hay muchas líneas comentadas (son configuraciones opcionales que no vamos a ver aquí), pero siempre está bien inspeccionar el código. No vamos a hacer de programadores, pero si queréis usar Docker con soltura al menos debemos fijarnos en estas cosas:

  • El apartado «volumes»: Como veis, indica que dentro del docker, hay una carpeta «/etc/wireguard» que en el host (en el sistema operativo de nuestra raspberry) se situa en «$DOCKERDIR/wireguard/etc_wireguard«. Es decir, que todo lo que haya en esa carpeta de nuestro host también estará en la carpeta del directorio «/etc/wireguard» del Docker. Como es la única carpeta que hay en «volumes», es la única carpeta que creamos en el primer apartado. La parte donde está el símbolo del dólar ($DOCKERDIR) es una variable que definiremos en el archivo de variables de entorno más adelante (para no meter ese dato dentro del archivo docker-compose.yml.
  • El apartado «environment»: Si os fijáis, ahí van configuraciones y contraseñas. Todas las entradas en este apartado usan variables (tienen el símbolo del dolar), precisamente para no exponerlas en ese archivo (por seguridad).
  • El apartado «ports». Como veis, este Docker usa dos puertos. El 51821 es para generar una página web y el 51820 es el puerto que usa Wireguard para comunicarse con los clientes. Debemos abrir este último puerto en el router (mapearlo para que la ip de la raspberry pueda recibir peticiones desde internet hacia el puerto 51820 por UDP).
¿Y eso cómo se hace?

Debes entrar dentro del interfaz de configuración de tu router y hacerlo desde ahí. Por desgracia cada router tiene un sistema diferente para hacer este tipo de configuraciones, así que depende del fabricante y del modelo de router. Consulta su manual.

¿Y el 51821 no debo mapearlo?

No. Ese puerto sólo genera una web que usaremos para crear los usuarios. Hazme caso: No te interesa poner esa web disponible en internet. Sería un riesgo de seguridad.

3) Creamos un archivo oculto de variables de entorno.

Vamos a crear un archivo que se va a llamar «.env» para pasarle al docker-compose.yml las variables de entorno. Lo haremos con este comando:

sudo nano .env

Una vez dentro del editor de texto, pegaremos este contenido.

DOCKERDIR=/home/usuario/docker
LANG=es
WG_HOST=mi.dirección.ip.publica
PASSWORD=supercontraseñasecreta
WG_DEFAULT_DNS=1.1.1.1
# Parámetros opcionales
WG_PORT=51820
WG_DEFAULT_ADDRESS=10.8.0.x
WG_MTU=1420
WG_ALLOWED_IPS=192.168.15.0/24, 10.0.1.0/24

En cada línea debemos rellenar los parámetros correctos. Os guío un poco.

  • DOCKERDIR: es la ruta de acceso a la carpeta «Wireguard» dentro de vuestra carpeta de Docker (Básicamente, en esta línea sólo hay que cambiar la palabra «usuario» por el usuario correcto.
  • LANG: debemos poner el lenguaje que usamos. Normalmente «es» si queréis lengua española.
  • PASSWORD: Debemos poner una contraseña larga y complicada. Es la contraseña que usaremos para acceder a la interfaz web.
  • WG_DEFAULT_DNS: Si hemos seguido por orden los tutoriales, aquí deberíamos poner la IP de la Raspberry (ya que Pi-Hole será nuestro servidor de DNS). Así, cuando nos conectemos a la VPN, el equipo desde el que nos conectemos no tendrá publicidad. Si no tenéis Pi-Hole instalado, poned alguna DNS genérica, como 1.1.1.1
  • WG_HOST: Aquí debemos poner la dirección IP pública de nuestra conexión a internet (Recordad: No nos sirve CGNat. Consultad con vuestro operador de internet si tenéis dudas). La podemos obtener fácilmente accediendo a ésta página.

https://www.cualesmiip.com/

Oye… pero yo tengo una conexión doméstica con una IP variable, no una IP fija (como casi todo el mundo en su casa, vamos). Cada vez que reinicio el router mi IP pública cambia.

Entonces lo mejor que puedes hacer es registrarte en un servicio de DNS dinámico. Hay varios servicios gratuitos de este tipo, pero personalmente he tenido buenas experiencias con DNSExit. Lo que hacen estos servicios es asociar un dominio de internet del tipo loquesea.dyndns.org a tu dirección IP pública, de tal forma que cuando algo intente acceder a esa dirección (por ejemplo un cliente de VPN), se redirigirá a tu IP pública. Para mantener la vinculación entre ambas cosas (IP pública y nombre de dominio), debes instalar un programa en tu Raspberry que cada 5 minutos vigila si ha cambiado la IP pública, y si es así se actualiza la vinculación con la nueva dirección IP. Si lo haces así deberías poner en el campo WG_HOST la URL que te da el servicio de DNSExit (del tipo loquesea.dyndns.org).

También se puede contratar un dominio “de verdad” (de la forma loquesea.com) y vincularlo a tu dirección IP pública. DNSExit ofrece la posibilidad de hacerlo, aunque si se trata de contratar un dominio para hacer cosas así prefiero hacerlo con DonDominio (que es una empresa española y tiene también un software específico para estas cosas que va muy bien). Para que te hagas una idea, esta web (flopy.es) está alojada en un servidor que tengo en casa, bajo ip dinámica y con el software de Dondominio vigilando por si en algún momento cambia la IP.

Es largo de explicar pero por fortuna ya lo hice en su momento, así que os voy a remitir al punto 2 de este artículo del blog. Ahí está absolutamente todo el proceso explicado. Por cierto: públicamente quiero agradecer al usuario «nomad0912» porque se me había olvidado comentar toda esta problemática de la variable WG_HOST en el artículo. Muchas gracias por tu indicación.

En cuanto a los parámetros opcionales que hay en el archivo docker-compose.yml también los he metido dentro de las variables de entorno, pero para lo que vamos a hacer no necesitamos tocarlos y no quiero complicar demasiado el tutorial explicándolos, así que simplemente dejadlos como están. Si cubrís correctamente el resto de parámetros, todo os debería funcionar bien en una instalación doméstica.

Una vez que hayamos puesto el contenido correcto en este archivo, lo guardamos pulsando primero «Control» + «o» y luego pulsando «Control»+ «X».

4) Protegemos el archivo de variables de entorno.

Vamos ahora a darle seguridad a ese archivo «.env». Simplemente debemos escribir este comando:

sudo chmod 600 .env
Este comando ya lo pusiste cuando instalamos el Pi-hole. ¿Qué hace exactamente? ¿Por qué este comando le da seguridad a ese archivo?

Mira, el comando chmod sirve para cambiar los permisos a los archivos y carpetas. El número que va después del comando indica los permisos que le estamos dando a ese archivo. El primer número indica los permisos que le vamos a dar al propietario del archivo, el segundo número son los permisos que le daremos al grupo de usuarios al que pertenece el archivo y el tercer número son los permisos que le vamos a dar al resto de usuarios en general.

Cada una de esas cifras puede tomar estos valores:

0: Sin permisos.
1: Permiso de ejecución.
2: Permiso de escritura.
3: Permiso de escritura y ejecución.
4: Permiso de lectura.
5: Permiso de lectura y ejecución.
6: Permiso de lectura y escritura.
7: Permiso de lectura, escritura y ejecución.

Con eso en mente, lo que hacemos con el comando que os he indicado es lo siguiente:

  • 6: El propietario del archivo tiene permisos de lectura y escritura.
  • Primer cero: El grupo al que pertenece el archivo no tiene acceso al mismo
  • Segundo cero: Ningún otro usuario tiene acceso al archivo.

Así que el único usuario que puede acceder al archivo es el nuestro. Si por algún motivo hay en el dispositivo alguna puerta trasera que intente acceder al archivo con otro usuario, incluso escalando privilegios, ese intruso no va a poder acceder a él.

Después de este inesperado paréntesis vamos a continuar montando nuestro Docker.

5) Desplegamos la máquina

¿Qué vamos a hacer ahora? Efectivamente: poner nuestra máquina en marcha. Para ello primero nos aseguramos de estar en ésta ruta:

/home/<tu_usuario>/docker/wireguard

Dicho de otra forma, debemos estar en la carpeta dónde hemos puesto el archivo docker-compose.yml. Desde ahí vamos a teclear este comando:

sudo docker-compose -p "wireguard" up -d

Después de un ratito, nuestro Docker ya estará correctamente instalado en nuestro sistema.

Genial. ¿Entonces ya puedo usarlo? ¿Cómo me conecto desde el trabajo a mi casa? 

Te puede el ansia viva Usuario Anónimo. Vamos a verlo en el siguiente punto.

6) Primeros pasos con la VPN

Primero deberás entrar en la página web que genera el sistema y crearte un usuario de VPN (o crear todos los que veas conveniente). Ten en cuenta que no puedes usar el mismo usuario a la vez desde dos dispositivos diferentes, así que haz tantos usuarios como dispositivos desde los que vayas a acceder. La página web a la que debes entrar para crearte usuarios es ésta:

http://<direccion_ip_de_la_Raspberry>:51821

Asegúrate de sustituir lo que está dentro de los corchetes por la dirección IP de tu Raspberry. Te encontrarás con algo como ésto.

Login WG-Easy

En esta página debemos poner la contraseña que hemos definido en el archivo de variables de entorno (.env). En cuanto nos logemos, aparecerá algo así.

Clientes de WG-Easy

Pulsamos en «New Client» y creamos un nuevo usuario para nuestro VPN (Podemos crear tantos como queramos).

Cliente de WG-Easy creado
¡Hay que ver qué nombres más raros tienen los usuarios de tus servicios!

Qué te voy a decir a ti, Usuario Anónimo. Una vez creado el usuario lo veremos en la página principal.

Opciones para descargar la configuración

Ahora podemos añadir esta cuenta al cliente de correo de wireguard tanto bajándonos el archivo de configuración (Con la flecha que apunta hacia abajo) como por medio del código QR que nos proporciona el sistema.

¿Y eso cómo se hace?

No tiene mucha ciencia, pero casi mejor te voy a remitir al apartado 12 de este artículo que escribimos en su día. Ahí se explica cómo descargar el cliente de VPN y cómo añadirle un usuario.

7) ¿Cómo se actualiza este Docker?

Al igual que en el artículo en el que explicábamos cómo instalar Pi-hole sobre Docker, realizar la actualización es muy sencillo. Como ya sabéis, lo hago creando un pequeño script. Nos situamos en a carpeta /home/<tu_usuario> y allí escribo el siguiente comando:

sudo nano actualizar.sh

Pueden pasar ahora dos cosas: Si habéis seguido el artículo sobre la instalacion de Pi-Hole, os encontraréis con el código de actualización de ese docker, al que le debemos añadir algo muy similar para actualizar este nuevo docker. El código en este caso quedaría así:

sudo apt-get update -y
sudo apt-get dist-upgrade -y
sudo apt-get autoremove -y
sudo apt-get autoclean -y
cd /home/<tu_usuario>/docker/pihole
sudo docker-compose pull
sudo docker-compose up -d --remove-orphans
sudo docker image prune -f
cd /home/<tu_usuario>/docker/wireguard
sudo docker-compose pull
sudo docker-compose up -d --remove-orphans
sudo docker image prune -f
sudo shutdown -r now

Por favor, acordaos de cambiar <tu_usuario> por la carpeta de vuestro usuario. Si no lo hacéis, tendréis errores a la hora de ejecutar el script.

Como veis, los comandos son los mismos. Exactamente los mismos. La única diferencia es que los ejecutamos desde el directorio dónde está el docker-compose.yml del Wireguard.

En el caso de que no os interese instalar pi-hole, entonces el código quedaría algo así:

sudo apt-get update -y
sudo apt-get dist-upgrade -y
sudo apt-get autoremove -y
sudo apt-get autoclean -y
cd /home/<tu_usuario>/docker/wireguard
sudo docker-compose pull
sudo docker-compose up -d --remove-orphans
sudo docker image prune -f
sudo shutdown -r now

En ambos casos, pulsaría Control + o para guardar los cambios y luego Control + x para salir del editor.

Y en el segundo caso acordaos que debemos indicar que es un archivo ejecutable mediante el comando sudo chmod +x actualizar.sh

Cuando queramos actualizar el sistema a su última versión, simplemente deberíamos ejecutar este script con el comando ./actualizar.sh

Y esto es todo. Honradamente me ha salido un artículo mucho más largo de lo que quería. Al final va a tener razón el Usuario Anónimo cuando dice que me voy mucho por las ramas. Espero no haberos aburrido demasiado. ¿Habéis tenido algún problema desplegando este docker? ¿Queréis aportar alguna aclaración o algún otro método de instalación? Estaré atento a vuestros comentarios.

Share

13 comentarios

  1. nomad0912

    Buenas Marcos, genial como siempre.
    Un apunte, ¿quizá faltaría matizar en el apartado de variables de entorno que es WG_HOST?

    • Marcos

      Uy… efectivamente. Me ha parecido tan obvio (es sólo la dirección ip pública de tu conexión a internet) que me he olvidado de ponerlo. Lo corrijo hoy por la noche sin falta. Mil gracias por el apunte.

    • Marcos

      Ya está el artículo actualizado con todas las referencias añadidas a la problemática sobre ip’s públicas, ip’s dinámicas, CGNat y dominios asociados. Lo he hecho tanto en la parte inicial del artículo, dónde se indican los requisitos y también en la propia parte de las variables. La verdad es que era una parte importante que se me había pasado completamente añadirla en el artículo. Mil gracias por el aporte, y que sepas que he indicado en el propio artículo que has sido tú el que me ha recordado esto.

      • nomad0912

        Con artículos tan completos y complejos es normal que se pueda escapar alguna cosilla, es un placer haber ayudado.

  2. Jose Miguel

    Buenas. Supongo que ya tienes una ruta marcada sobre los próximos posts que supongo dependerá de lo que tu uses en tu Rpi server. Me permito hacerte algunas sugerencias para el futuro (son las que uso yo en mi Rpi server pero están instaladas directamente sobre el sistema operativo). Seafile es un ‘dropbox’ más robusto que Owncloud y más seguro e infinitamente más rápido. Navidrome es un spotify con tu música en tu Rpi que puedes oir en el coche o donde quieras que tengas conexión. Calibre-web para tener todos tu libros a mano siempre. Por supuesto son solo sugerencias, eres el puto amo.

    • Marcos

      Efectivamente. Conozco los tres softwares que indicas, y debo darte la razón: Cualquiera de los tres son una pasada para usuarios domésticos.

      En todo caso fíjate que para cualquiera de los tres, antes de instalarlos a través de docker hay que instalar un proxy de algún tipo (podría recomendaros nginx proxy manager o traefik). Así que antes de indicar la instalacion de cualquiera de ellos hay que explicar la instalación de uno de estos proxys. Pero aún no es el momento. Primero quería seguir el mismo orden del antiguo tutorial y explicar la instalación de unos cuantos programas más que no van a necesitar ese proxy. Para ir poco a poco. Luego sí que instalaremos el proxy y nos pondremos a instalar cosas así. De los tres que indicas, sí que tenía pensado explicar Calibre. Seafile tiene ventajas sobre nextcloud, pero nextcloud tiene más opciones para pequeñas empresas, así que si explico la instalación de algo de esto (que tengo que pensar si es conveniente), posiblemente explique nextcloud. Navidrome sí que es el programa idóneo para temas de música, pero honradamente… últimamente uso tan poco estos softwares de música que prefiero no meterme con esto (no quiero explicar cosas de las que no tengo mucha experiencia).

      En todo caso tendré en cuenta tu comentario. gracias por el aporte.

  3. Jose Miguel

    Gracias. Un apunte sobre owncloud-nextcloud. Por supuesto es experiencia personal. En varias de mis Rpis han acabado sin funcionar al cabo de meses. Y teniendo que reinstalar. Y no era la tarjeta SD porque sobre esa misma lleva Seafile corriendo 7 años 24 horas/365 dias. Sin interrupción y sin problemas. Nunca he conseguido un sistema estable con owncloud o nextcloud, siempre se corrompían.

    • Marcos

      mmmm… cuando pasan este tipo de problemas yo los achaco más a problemas con la tarjeta SD que a la propia instalacion de nextcloud. Además de mi nextcloud personal he hecho varias instalaciones de nextcloud para varias empresas y nunca he tenido ni el más mínimo problema de estabilidad. De hecho una de estas instalaciones lleva funcionando desde el 2014, se ha migrado desde owncloud a nextcloud, se han realizado todas las actualizaciones de forma que ahora mismo está en la última versión disponible de nextcloud, y funciona perfectamente (y mira que ha sido trasteada mil veces). Además, para que te hagas una idea, esa instalación ocupa más de un TB (sólo el nextcloud) y la usan simultáneamente y de forma muy activa 400 usuarios simultáneos. Vamos… que no he visto nunca problemas de estabilidad en nextcloud. Los problemas deberían ir por otro lado.

      Donde sí he visto problemas (y a veces muy graves) es en las tarjetas SD de las raspberrys. Suelen ser bastante puñeteras y sensibles a cortes de luz y a reinicios inesperados. No es la primera vez que veo que se fastidia algo en una raspberry por culpa de un apagón o simplemente sin venir a cuento. Cuando la estabilidad en una raspbery es importante, siempre recomiendo hacer lo que indico en este tutorial:

      https://www.flopy.es/arrancar-una-raspberry-desde-un-disco-duro-externo-o-un-pen-drive/

      O sea, arrancarla e instalar todo en un disco duro externo en lugar de en la tarjeta SD. La velocidad va a ser mejor gracias al USB3 y se gana en estabilidad (mientras tuve la raspberry como servidor principal en mi casa, usé este método y ha significado una ausencia total de problemas).

      Oye… no me entiendas mal. No estoy dudando de tu experiencia. Si a mi me pasara también estaría dudando de la estabilidad de Nextcloud. Pero al menos yo no he tenido nunca esa problemática en producción. Sí que la he tenido con tarjetas SD’s que me han llegado a tocar la moral y por eso me da que el problema va a ir por esa vía.

      Y sí. Tengo que darte la razón. Seafile es un sistema también robusto y efectivamente es más rápido que Nextcloud (lo que dices es completamente cierto). Pero también tiene menos características adicionales y aplicaciones de terceros que expandan funcionalidades. Cada una tiene su nicho de mercado. Seafile tal vez está más enfocada al usuario doméstico (requiere menos equipo y va más fluída, además de tener una instalación y funcionalidades más sencillas), mientras que Nextcloud está orientado a cosas «mas grandes» (requiere más equipo pero a cambio te ofrece muchas más funcionalidades). Cada una es para lo que es y es justo decir que ambos softwares son muy buenos. Quién nos diría hace años que podríamos disfrutar de algo así en entornos domésticos. Como te dije antes no tengo claro si añadir una instalación de este tipo a este grupo de tutoriales. Después de explicar la problemática de los proxys (Ngins proxy manager y traefik) lo pensaré.

      • José Miguel

        Buscaré un disco SSD USB a ver qué tal de precio y seguiré tus tutoriales en una Raspberry pi 4 que tengo por ahí. Cuando hagas el tuto de Nextcloud me lo instalaré en su docker para probar otra vez. Igual acabo desenchufando la Rpi con Seafile porque Nextcloud con sus plugins es mucho más que un simple servidor de archivos en tu propia nube. En eso tienes razón. De nuevo muchas gracias. Te sigo a partir de ahora. Y gracias al que te ha puesto en Menéame que si no es por él no me entero.

        • Marcos

          La verdad es que en menéame mandan muchas cosas de política, pero de vez en cuando aparecen pequeñas joyas a nivel de informática. Siempre que alguien sube algo de mi blog a menéame me siento más que agradecido, porque la verdad es que se nota en estadísticas de uso del blog. No me aporta nada a nivel económico (porque como veis no tengo publicidad en ningún sitio del blog) pero sí que es de agradecer a nivel personal ver que estás ayudando a más gente. Si alguna vez veis algún artículo mío interesante en el blog y lo subís a menéame o le dais difusión por otros sitios, para mi es la mejor recompensa.

  4. yepaswepas

    Hoy no soy el primero. Buenisimo. Yo monte wg-easy hace unos dias por mi cuenta. Tuve problemas para conectarlo con el pi-hole, ya que estan en redes distintas en docker. En mi caso una .18.x y 19.x. No supe conectarlas. Crep que modificaba los yml pero luego no me cambiaba. Cuando lo conseguí, creo que era que hay que borrar y volver a crear el usuario. En el hub de wg-easy encontre alguien que hacia un unico compose para los 2 con la declaracion de la red, asi si funcionaba.
    Asi que voy a sugerir. Gestion de redes en docker, y como modificar contenedores (para no borrarlos y volver a empezar), asi si modifico wg-easy para ponerlo como tu, no perder los usuarios que ya tengo creados.

    • Marcos

      A ver… hay una forma de hacerlo más elegante pero más complicada (que no es plan explicarla en estos artículos básicos para gente que se está iniciando) y luego la solución por la que hemos optado aquí.

      Sobre la forma elegante: evidentemente podemos poner los dos dockers en la misma red. En ambos dockers podríamos poner algo como esto en el archivo yml.


      version: '3'
      services:
      nombre del servicio:
      image: imagen_del_servicio
      networks:
      - red_compartida

      networks:
      red_compartida:
      driver: bridge

      De esta forma estarían los dos en la misma red. Volveríamos a lanzar los servicios con docker-compose up -d y listo. Estarían los dos en la misma red. En el VPN habría que poner la dirección asignada al docker de pi-hole.

      Pero eso implica tener conocimientos de las redes que crea Docker, segmentos de red, etc… Me parece un poco pronto para plantear esto.

      La solución por la que optamos es un poco menos elegante. El docker de pi-hole es un servidor de dns. Al coger las dns directamente desde el host, habrá un salto en la red (esa conexión se hace primero en el host y luego debe ir al segmento de red del docker). Ese salto no es lo ideal porque también se hace en el otro docker (Se coge del segmento del host y se pasa al openvpn). Al final, para cada petición de DNS hay dos saltos. Pero funciona y es menos lioso.

      Un problema similar lo tendremos si queremos montar un servidor apache o nginx y queremos que la velocidad de descarga o subida de ese docker sea la óptima usando un proxy. Si lo hacemos de la forma que he propuesto en este artículo, aquí sí que se va a notar lentitud en el sistema (y para eso está precisamente traefik, para arreglar este problema). En todo caso llegado el caso me pensaré cómo es la mejor manera de abordar toda esta problemática de forma que sea lo más didáctica posible.

      La gestión de redes en docker no es algo tan sencillo de explicar y de entender como los conceptos que estamos viendo. Si lo vemos, lo veremos en todo caso más tarde, cuando nos dediquemos al proxy nginx manager.

      En cuanto a modificar contenedores… tal y cómo te dije, y sólo si es añadir características al archivo .yml, es tan simple como modificar el archivo .yml y volver a lanzar el comando para desplegar el contenedor. Si es algo que implique modificar la imagen, entonces de nuevo es algo que es mejor tratar con profundidad.

      • yepaswepas

        Muchas gracias por la respuesta. Seguiremos antentos a los proximos. Me imagino que no soy el unico que no parto de cero de los que te seguimos, de redes tengo «el culo pelao» y estamos aquí por docker.
        Muy fan, eres un maquina.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

© 2024 Flopy.es

Tema por Anders NorenArriba ↑

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies