Creando tu propia cápsula de Gemini | Programador Web Valencia

Creando tu propia cápsula de Gemini

3 minutos

Gemini protocolo

Me gustaría compartir contigo el proceso para crear tu propia cápsula del protocolo Gemini. Usaré Agate, un servidor de Gemini escrito en Rust recomendado por la comunidad. Por otro lado, nos apoyaremos en Docker para facilitar la instalación y configuración. Por lo tanto, necesitarás tener Docker instalado en tu sistema antes de continuar. ¿Empezamos?

Empezaremos creando un archivo llamado Dockerfile. Lo usaremos para compilar Agate y crear una imagen de Docker.

FROM rust:alpine AS builder
RUN wget -O source.tar.gz $(wget -qO- https://api.github.com/repos/mbrubeck/agate/releases/latest | sed -nE 's/^.*"tarball_url"\s*:\s*"([^"]+)".*$/\1/p')&& tar xzf source.tar.gz && \
    mv mbrubeck-agate-* /agate

WORKDIR /agate
RUN apk --no-cache add libc-dev && \
    cargo install --target x86_64-unknown-linux-musl --path .

FROM alpine:latest
COPY --from=builder /usr/local/cargo/bin/agate /usr/bin/agate

Es una imagen multi etapa de Docker.

  1. Descarga la imagen de Rust con Alpine.
  2. Baja el código fuente de Agate.
  3. Compila Agate con cargo, el gestor de paquetes de Rust.
  4. Crea una imagen de Alpine con Agate instalado.

Con la imagen definida, crearemos un archivo llamado compose.yml para configurar el servicio de Agate.

services:

  agate:
    build: .
    restart: "always"
    ports:
      - "1965:1965"
    command: >
      agate --content /gmi/
      --hostname tu-dominio.com
      --addr [::]:1965
      --addr 0.0.0.0:1965
      --lang es-ES
      --skip-port-check
    volumes:
      - ./gmi:/gmi
      - ./gmi/.certificates:/app/.certificates

En este archivo, definimos un servicio llamado agate que usa la imagen que hemos creado anteriormente.

  1. restart: "always": Reinicia el servicio si se detiene.
  2. ports: Mapea el puerto 1965 del contenedor al puerto 1965 del host. Es el puerto por defecto del protocolo Gemini.
  3. command: Configura Agate con los siguientes parámetros:
    • --content /gmi/: Indica la carpeta donde se encuentra el contenido de la capsula.
    • --hostname tu-dominio.com: El dominio que usaremos para acceder al servidor.
    • --addr [::]:1965y --addr 0.0.0.0 1965: Escucha en todas las interfaces de red.
    • --lang es-ES: Configura el idioma del servidor.
    • --skip-port-check: Salta la comprobación del puerto.
  4. volumes: Mapea las carpetas locales gmi y gmi/.certificates al contenedor. La carpeta .certificates es donde Agate guarda los certificados TLS.

Después de definir el servicio de Docker, pasamos al siguiente paso.

Necesitaremos un contenido mínimo para mostrar a nuestros visitantes, y a la vez poder comprobar que el servidor esta funcionando correctamente.

Para ello crea la carpeta gmi, a la misma altura que el archivo compose.yml y Dockerfile, y dentro de la nueva carpeta crea un fichero llamado index.gmi con el siguiente contenido:

# Bienvenido a mi servidor de Gemini

Este es un servidor de Gemini que he creado para compartir contenido de forma sencilla y segura.

Ya esta todo listo para levantar el servidor. Abre una terminal en la carpeta donde has creado los archivos y ejecuta el siguiente comando:

docker-compose up -d

Te adelanto que la primera vez tardará un poco, ya que tiene que descargar las imágenes y compilar Agate. Recordemos que esta escrito en Rust.

Una vez que termine, abre tu navegador de Gemini y escribe gemini://tu-dominio.com en la barra de direcciones.

Si estas trabajando en local, o no tienes un dominio contratado, puedes añadir la siguiente linea a tu archivo /etc/hosts para simular un dominio:

127.0.0.1 tu-dominio.com

Debes hacerlo ya que el protocolo Gemini usa certificados TLS por defecto, te negará el acceso si no entras por el dominio que has configurado.

Si todo ha ido bien, deberías ver el contenido que has creado en el archivo index.gmi.

¡Felicidades! Acabas de crear tu cápsula Gemini. 🎉

Si necesitas redireccionar el dominio desde otro servidor, puedes visitar Proxy inverso para el protocolo Gemini.

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me invitas a un café? ☕

Puedes hacerlo usando el terminal.

ssh customer@andros.dev -p 5555

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario

Tal vez también te interese...