Este fin de semana, con la ayuda de Carlos del Blog de Lazaro, a quien agradezco todo el tiempo dedicado a responder todas mis preguntas, he montado por fin el Docker de Let's Encrypt de la comunidad Linux Server, que no solo te permite generar un certificado automáticamente y totalmente gratuito, para acceder a un servicio fuera de tu red local, si no que ademas permite crear un servidor de Proxy Inverso, permitiendo gracias a los subdominios de Duck DNS, poder acceder a mas de un servicio, teniendo solo un puerto abierto.
Esto nos permitirá poder acceder a muchos de los servicios que os he hablado durante más de dos años de Podcast, desde cualquier lugar, dispositivo, sin necesidad de utilizar una VPN y disfrutando de la totalidad de características disponibles en estos servicios.
También podremos dar acceso a otros usuarios, amigos, familiares, etc… Ya que nosotros como administradores del servicio, tenemos el control total del mismo.
Servicios como Nextcloud, Jellyfin, tt-rss, Dokuwiki, Wordpress, etc… Los podremos utilizar en cualquier lugar, teniéndolos en nuestra Raspberry o Servidor y manteniendo el control total de todos nuestros datos.
Recuerda que gracias al certificado de Let's Encrypt, todos los datos entre servidor y cliente, irán totalmente cifrados.
Yo os voy a explicar como montarlo en Raspbian o cualquier servidor Linux, pero si eres de los que utilizan Open Media Vault, en breve Carlos publicará un Post paso a paso de como hacerlo.
Accediendo a https://www.duckdns.org/, podremos dar de alta hasta cinco subdominios totalmente gratuitos. Dalos de alta y apunta el TOKEN que será necesario para el montaje del contenedor.
Este es un ejemplo de lo que tenemos que introducir en la terminal para la montaje del Docker de Proxy inverso, donde debes de sustituir los siguiente valores:
docker create \
--name=letsencrypt \
--cap-add=NET_ADMIN \
--restart unless-stopped \
-e ONLY_SUBDOMAINS=true \
-e PUID=1000 \
-e PGID=100 \
-e TZ=Europe/Madrid \
-e URL=duckdns.org \
-e SUBDOMAINS=subdominio-uno,subdominio-dos,subdominio-tres \
-e VALIDATION=http \
-e DUCKDNSTOKEN=41fc1578-7fev7-4fb9-b20d-6d8vgemj6a9359 \
-e EMAIL=ugeekpodcast@gmail.com \
-e DHLEVEL=2048 \
-p 443:443 \
-p 80:80 \
-v $HOME/docker/letsencript:/config \
linuxserver/letsencrypt
En el caso de la Raspberry, yo he utilizado estas misma líneas de terminal y me ha funcionado perfectamente sin problemas
Ya tenemos creado nuestro Docker. Ahora accederemos a la carpeta donde están los archivos de configuración de muestra (Hay muchos servicios de ejemplo) y vamos a modificar el archivo, añadiendo nuestra IP y puerto del servicio que queramos añadir en el Proxy Inverso.
~/docker/letsencript/nginx/proxy-confs
Recuerda renombrar el archivo, dejando que acabe en .conf, para que el servidor interprete que es un archivo de configuración válido.
Vamos a crear un archivo para Nextcloud, pero en realidad puedes hacer lo mismo para cualquier servicio.
Creamos el nuevo archivo de configuración para Nexcloud.
nano ~/docker/letsencript/nginx/proxy-confs/nextcloud.subdomain.conf
Sustituye las siguientes líneas y pon tus datos. Dominio, ip, puerto.
Nextcloud lo tengo montado con letsencript, por eso la ruta del servidor es https. Si tu servicio utiliza http, ponlo así.
server_name mi_dominio.duckdns.org;
proxy_pass https://192.168.1.100:81;
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name mi_dominio.duckdns.org;
include /config/nginx/ssl.conf;
client_max_body_size 0;
# enable for ldap auth, fill in ldap details in ldap.conf
#include /config/nginx/ldap.conf;
location / {
# enable the next two lines for http auth
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
# enable the next two lines for ldap auth
#auth_request /auth;
#error_page 401 =200 /login;
include /config/nginx/proxy.conf;
resolver 127.0.0.11 valid=30s;
set $upstream_nextcloud nextcloud;
proxy_pass https://192.168.1.100:81;
}
}
Para que los buscadores como Google no indexen el servicio que tienes expuesto en el docker de Letsencrypt, añade al archivo de configuración las siguientes lineas:
add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
add_header X-Robots-Tag "none";
Iniciar, reiniciar o detener el contenedor, no va a ser diferente a cualquier Docker que tengamos corriendo en nuestro servidor:
docker start letsencrypt
docker stop letsencrypt
docker restart letsencrypt
Es recomendable la primera vez que iniciamos el Docker, comprobar que todo funciona correctamente y no hay ningún error en algún archivo de configuración.
Si lo hubiera, el log nos mostrará donde está este error.
docker logs -f letsencrypt
Os puedo garantizar que el poder acceder desde el exterior de tu red local, a todos estos servicios de un modo seguro y teniendo el control de tus datos tu, es una sensación muy agradable. Montar el Docker no lleva mas de 5 minutos, así que te recomiendo el probarlo y que me cuentes tu experiencia.
Publicado por Angel el Wednesday 15 May del 2019 y actualizado el Friday 13 September del 2019
También te puede interesar:
Powered by org-bash-blog
Written in OrgMode with Emacs and converted to HTML with Pandoc
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.