chamorrx/README.md

100 lines
2.1 KiB
Markdown

# chamorrx
pequeño servidor gemini en go
basado en el ejemplo de servidor de [go-gemini](https://git.sr.ht/~adnano/go-gemini) y algunos aspectos del servidor de [flounder](https://git.alexwennerberg.com/flounder/) para tener múltiples "hosts virtuales" cada uno con su propio certificado.
# instalación
## ejecutar
en principio esto funciona con go>=1.17 y se puede ejecutar de la siguiente forma:
```
$ go run .
```
## bien instalado
como sea, para una instalación más adecuada, tomo algunos pasos de la [instalación de pleroma](https://docs-develop.pleroma.social/backend/installation/debian_based_en/).
crea une user en el sistema para correr el servicio:
```
$ su -
# useradd -r -s /bin/false -m -d /var/lib/chamorrx -U chamorrx
```
créale sus directorios:
```
# mkdir -p /opt/chamorrx
# chown -R chamorrx:chamorrx /opt/chamorrx
```
ingresamos a su cuenta para trabajar más fácil:
```
# su -l chamorrx -s $SHELL
$ cd /opt/chamorrx
```
clonamos el repositorio en ese mismo directorio:
```
$ git clone https://tildegit.org/sejo/chamorrx /opt/chamorrx
```
probamos correr el servidor; va a descargar algunos paquetes y va a lanzar error al querer leer la configuración:
```
$ go run .
```
creamos el archivo `config.txt` de acuerdo a las instrucciones de abajo. después ya debería funcionar :)
ahora construimos el ejecutable `chamorrx`:
```
$ go build
```
que ahora podemos ejecutar:
```
$ ./chamorrx
```
## systemd
en el repositorio, `ejemplo-chamorrx.service` lo podemos usar como plantilla para correr el servidor a través de systemd.
regresamos a root y copiamos el servicio:
```
$ exit
# cp /opt/chamorrx/ejemplo-chamorrx.service /etc/systemd/system/chamorrx.service
```
modificamos el archivo de ser necesario.
iniciamos el servicio:
```
# systemctl start chamorrx
```
# config
el servidor espera una configuración con el siguiente formato en un archivo `config.txt`, para indicar los hosts que existirán y desde dónde se servirán:
```
example.com /var/gemini/ejemplo
otrohost.com /var/gemini/otroejemplo
```
# licencia
> THIS IS CHAOTIC SOFTWARE BEWARE <gemini://sunshinegardens.org/~xj9/wiki/chaotic-software/>