Cloudflare y una computadora vieja con Linux es todo lo que necesitas

Una guía práctica sobre cómo alojar tus propios servicios sin tener que gastar mucho dinero

Un poco de historia

Cuando era niño tenía muchos problemas para desplegar mis proyectos y hacerlos accesibles a través de la web. Esa es una de las razones por las que desarrollé un interés por las redes p2p.

Antes usaba heroku (2021-2022) para desplegar mis proyectos de Go hasta que dejaron de ofrecer alojamiento gratuito para proyectos simples. Después de eso empecé a planear algunas formas extrañas en las que podría desplegar mis proyectos y eran un desastre. Era joven y no tenía mucho dinero. Aunque tenía suficiente dinero para comprar snacks y otras cosas.

Ahí es cuando entra Cloudflare. Solo necesitas gastar menos que en un snack en un dominio que estés dispuesto a pagar. Y después de eso no necesitas hacer mucho.

Lo que necesitas

  • Cloudflare (dominio, zero trust y cloudflared)
  • Golang
  • SHP
  • git
  • Una computadora con Linux (cualquier distro está bien, pero personalmente recomendaría lubuntu)

Cloudflare

Obviamente necesitarás crear una cuenta y hacer otras cosas en Cloudflare; para eso puedes encontrar muchos videos. Probablemente recomendaría este:

self hosting platform

Pero eso no es suficiente, esto solo funciona para que expongas un puerto al público, pero no ayuda con que los servicios se mantengan activos, ni despliega tus servicios. Para eso necesitarías saber usar systemd o simplemente evitar hacer eso, configurar un servicio simple de SHP y entrar al panel y hacer tus propias cosas.

SHP simplifica el proceso de desplegar tus servicios y mantenerlos activos sin tener que configurar ningún archivo de servicio después de que SHP haya sido desplegado correctamente. También puedes exponerlo a la red pública para que puedas acceder a él en cualquier parte del mundo, pero si haces eso me aseguraría de tener una contraseña muy buena.

Pasos

  1. Instala y configura Golang; para eso solo necesitas agregarlo al PATH

  2. Clona el proyecto ejecutando este comando

    git clone https://github.com/ranon-rat/self-hosting-platform.git
    
  3. Cuando hayas instalado SHP, recuerda crear un archivo llamado .env.local. Debería verse así

    PASSWORD=<crea una contraseña fuerte, no seas tonto>
    PORT=1234 # puedes especificar cualquier puerto, eso depende de ti
    
  4. Crea un archivo de servicio. Necesitas crear el archivo en este directorio /etc/systemd/system/ Aquí hay un ejemplo de cómo debería verse el archivo:

    # nombremos el archivo self-hosting-platform.service; si lo nombras de otra forma, tendrás que ejecutar comandos diferentes.
    [Unit]
    Description=Self Hosting Platform Go Service
    After=network.target
    
    [Service]
    Type=simple
    User=<tu usuario>
    # debes especificar dónde has instalado el directorio shp
    WorkingDirectory=<ruta a tu archivo>
    
    # Variables básicas
    Environment="HOME=/home/<tu usuario>"
    Environment="USER=<tu usuario>"
    
    # Normalmente instalo el binario de golang en el home de mi usuario, pero eso depende de ti.
    Environment="PATH=/home/<tu usuario>/go/bin:/usr/local/go/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    
    # Cargar .bashrc antes de ejecutar
    ExecStartPre=/bin/bash -c 'source /home/<tu usuario>/.bashrc'
    ExecStart=/usr/bin/env go run main.go
    
    Restart=on-failure
    RestartSec=10
    StandardOutput=journal
    StandardError=journal
    
    [Install]
    WantedBy=multi-user.target
    
    
  5. Ejecuta los comandos finales

    # primero debes recargar el daemon
    systemctl --user daemon-reload
    # esto hará que se inicie automáticamente cuando arranque el sistema
    systemctl --user enable self-hosting-platform.service
    # esto iniciará el servicio inmediatamente
    systemctl --user start self-hosting-platform.service
    # esto solo te dirá el estado actual del servicio :)
    systemctl --user status self-hosting-platform.service
    

Gracias por leer.