-- Leo's gemini proxy

-- Connecting to sl1200.dystopic.world:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;lang=es-ES

kineto proxy para ver cápsulas gemini desde cualquier navegador web

2022-04-03

#linux #vps

Este es un tutorial destinado a noobs o usuarios con conocimientos limitados de linux, para instalar con facilidad el proxy kineto y hagáis accesible vuestra cápsula gémini desde cualquier navegador web.


Requisitos previos


Tener instalados nginx, certbot y go.

En mi caso dispongo de un VPS con Debian 10, un usuario con nombre sl1200 y un dominio, dystopic.world, con las DNS configuradas para que las peticiones de cualquier subdominio se dirijan a mi VPS. El objetivo es que el proxy dirija al subdominio proxy.dystopic.world, que será la dirección en la cual se podrá ver mi cápsula desde cualquier navegador web http.


Nginx debe estar en todos los repositorios, su instalación es muy simple.

   sudo apt update
   sudo apt install nginx

Para instalar certbot debes seguir las instrucciones en su web, en función de que servidor web tengas, en este caso nginx:


Instalación de cerbot


Instalación de go

Lo primero actualizamos

   sudo apt update
   sudo apt upgrade

Descargamos go, poner la última versión en lugar de XX.X y descomprimimos en /usr/local

   wget https://golang.org/dl/go1.XX.X.linux-amd64.tar.gz
   sudo tar -C /usr/local -xzf go1.XX.X.linux-amd64.tar.gz

Nos aparecerá la carpeta go dentro de /user/local y dentro la carpeta bin que contendrá el ejecutable. Ahora añadimos ese path al archivo ~/.bashrc. Abrimos el archivo ~/.bashrc :

   sudo nano ~/.bashrc

Añadimos esta línea al final:

   export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin

Guardamos, salimos y recargamos ~/.bashrc con este comando:

   source ~/.bashrc

Comprobamos que go está efectivamente instalado con el comando:

   go version

Que nos dirá la versión instalada:

   go version go1.XX.X linux/amd64

Instalación de Kineto

Clonamos :

   git clone https://git.sr.ht/~sircmpwn/kineto

Accedemos al directorio `kineto` y compilamos:


   go build

Si todo va bien, se generará un ejecutable `kineto` cuya ruta absoluta será `/home/sl1200/kineto/kineto`. Conocer esta ruta será necesario para el siguiente paso.


Creación del servicio Kineto para que arranque en el inicio


Usaremos systemd para convertir kineto en un demonio e inicializarlo al arrancar el sistema. Creamos el archivo `/etc/systemd/system/kineto.service` con el siguiente contenido:


   [Unit]
   Description=Kineto Server

   [Service]
   Type=simple
   Restart=always
   ExecStart=/home/sl1200/kineto/kineto \
       -b 0.0.0.0:1966 \
       gemini://proxy.dystopic.world

   [Install]
   WantedBy=default.target

Habilitamos y arrancamos el nuevo servicio:


   sudo systemctl daemon-reload
   sudo systemctl enable kineto.service
   sudo systemctl start kineto.service

Con estos parámetros, hemos configurado que el proxy se arranque en el puerto 1966 (por poner uno, puede ser cualquiera) y que la página de inicio del proxy sea nuestra propia cápsula.


Obtención del certificado Let's Encrypt

   sudo certonly --nginx -d proxy.dystopic.world

Esto nos creará el certificado en los directorios:

ssl_certificate /etc/letsencrypt/live/proxy.dystopic.world/fullchain.pem;

ssl_certificate_key /etc/letsencrypt/live/proxy.dystopic.world/privkey.pem;


Configuración de Nginx como proxy inverso

- El puerto 80 (HTTP) lo redirigiremos al puerto 443 (HTTPS).

- El puerto 443 lo desviaremos a su vez al 1966 (donde está el proxy), pero con el añadido del cifrado con el certificado.


Creamos un archivo `/etc/nginx/conf.d/gemini.conf` con este contenido:


       server {

       listen 80;
       server_name proxy.dystopic.world;
       return 301 https://proxy.dystopic.world$request_uri;
   }
       server {
       listen 443 ssl;
       server_name proxy.dystopic.world;

       ssl_certificate     /etc/letsencrypt/live/proxy.dystopic.world/fullchain.pem;
       ssl_certificate_key /etc/letsencrypt/live/proxy.dystopic.world/privkey.pem;
       ssl_protocols       TLSv1.3;

       location / {

       proxy_pass http://127.0.0.1:1966;
       }
   }

Reiniciamos el servicio nginx

   sudo systemctl restart nginx

y ya podemos ver el proxy accediendo a https://proxy.dystopic.world


Dar un formato personalizado al proxy con CSS

Si queremos personalizar el CSS del proxy, añadimos -s y la ruta de nuestro archivo de estilo, estilo.css, a la línea ExecStart... del archivo del servicio kineto.service que hemos creado antes, al final el archivo quedará así:

   [Unit]
   Description=Kineto Server

   [Service]
   Type=simple
   Restart=always
   ExecStart=/home/sl1200/kineto/kineto -s /home/sl1200/kineto/estilo.css -b 0.0.0.0:1966 gemini://s$

   [Install]
   WantedBy=default.target

Después reiniciamos el servicio y el proxy quedará con el formato que hayamos definido en el CSS:

   sudo systemctl daemon-reload
   sudo systemctl enable kineto.service
   sudo systemctl start kineto.service

Utilizar el proxy para acceder a otras cápsulas

Si accedes a la cápsula a través del proxy y pulsas sobre un link de otra cápsula te percatarás de que es posible acceder a otras cápsulas a través del proxy. Si quieres usar directamente el proxy para acceder a otras cápsulas de las que no tenga un link publicado sólo tienes que añadir /x/ y la url gemini de la cápsula que quieres visitar al final de la dirección de mi proxy, por ejemplo, si quieres acceder a:

gemini://medusae.space

sólo deberás poner:

https://proxy.dystopic.world/x/medusae.space

Opinión sobre el uso del proxy

Aunque parezca un poco complicado todo el proceso de contratar un dominio, vps, crear tu cápsula y ahora el proxy, recomiendo de verdad publicar en gemini y tener presencia en la web http a través de un proxy. Te queda la sensación de tener un enorme control sobre lo que has hecho, algo que no vas a tener contratando un servicio de hosting, un wordpress y usando generadores de sitios estáticos o cualquier otra solución en la que tu dependencia de terceros sea excesiva.


This work by SL1200 is marked with CC0 1.0


◄ BACK

🏠 Home






-- Response ended

-- Page fetched on Fri May 17 02:09:34 2024