ceu-notes/2/SRI/assignments/fossil-setup/fossil-setup.md
Nicolás A. Ortega Froysa 5da929c96b SRI::fossil-setup: add
Signed-off-by: Nicolás A. Ortega Froysa <nicolas@ortegas.org>
2023-02-10 16:54:59 +01:00

124 lines
3.6 KiB
Markdown

# Configuración de un Servidor Fossil
Nicolás A. Ortega Froysa
## Introducción
Fossil es un sistema de gestión de versiones, considerado generalmente como
alternativa a Git, pero que contiene además soporte para muchos elementos que
suelen estar asociados a los proyectos de código, como serían Wiki y una
herramienta de gestión de tarea. Es una herramienta poco usada en ámbitos
generales, pero sí se usa para el proyecto conocido SQLite. También tiene la
ventaja de que todo está contenido dentro del mismo repositorio, y por tanto se
puede compartir fácilmente, y descentralizar el control del código.
## Instalación de Fossil
Antes de configurar nuestro servicio hemos de instalar Fossil en nuestro
servidor. Como estamos usando un sistema Debian, lo instalamos utilizando el
comando siguiente:
```
# apt install fossil
```
## Creación del Repositorio
Una vez instalado, vamos a crear el repositorio como tal, que consta de un
archivo que guardaremos en el servidor. Para hacer esto primero hemos de crear
el usuario y grupo que se encargará de gestionar este repositorio.
```
# groupadd fossil
# useradd -d /srv/fossil -m -g fossil -s /usr/sbin/nologin fossil
```
Esto creará el directorio `/srv/fossil` que lo usaremos para guardar el archivo
del repositorio. Para crear el repositorio como tal hemos de correr el comando
siguiente:
```
# cd /srv/fossil
# fossil init semanaverde.fossil
project-id: 88b14f646618a2bbef27386242a857e56c55ced3
server-id: 23476a9b53e66b1866c04de1d59a4947bb068869
admin-user: root (initial password is "qbHCunmSj8")
```
Esto nos mostrará el usuario y la contraseña del usuario administrador, que
deberíamos guardarlo para luego.
Finalmente, para que el usuario `fossil` pueda acceder al archivo (y más
importante, modificarlo) cambiamos el dueño del archivo:
```
# chown fossil:fossil semanaverde.fossil
```
## Configuración del Servidor
El servidor de Fossil (web) se accede mejor por medio de un SCGI. Para esto, lo
que más nos conviene (en un sistema Debian) es crear un servicio de Systemd para
que se inicialice al iniciar el sistema. Para eso crearemos
`/usr/lib/systemd/system/fossil-server.service` con el contenido siguiente:
```
[Unit]
Description=Fossil user server
After=network-online.target
[Service]
WorkingDirectory=/srv/fossil
ExecStart=/usr/bin/fossil server --scgi --localhost --port 8080 /srv/fossil/semanaverde.fossil
User=fossil
Group=fossil
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
```
Ahora ya podremos gestionar nuestro servicio por medio de `systemctl` como
cualquier otro servicio. Como queremos habilitar y encender este servicio,
corremos los comandos siguientes:
```
# systemctl enable fossil-server.service
# systemctl start fossil-server.service
```
## Configuración del Proxy con Nginx
Una vez que tengamos el servicio puesto, es necesario crear un proxy que apunta
(y traduce) a nuestro servidor Fossil. En nuestro caso usaremos el servidor HTTP
Nginx. Crearemos un archivo de configuración Nginx con el __path__
`/etc/nginx/sites-available/repo.semanaverde.com.es.conf` con el contenido
siguiente:
![Configuración Nginx Fossil](nginx-fossil.jpg)
Ahora creamos un enlace simbólico para que Nginx vea esta configuración,
habilitándolo:
```
# cd /etc/nginx/sites-enabled
# ln -s ../sites-available/repo.semanaverde.com.es.conf ./
```
Comprobamos que está escrito correctamente el código:
```
# nginx -t
```
Si todo sale bien, reiniciamos Nginx para poder tener acceso a nuestro servicio
de Fossil:
```
# systemctl reload nginx.service
```
Ya con esto podremos acceder a nuestro servicio Fossil desde
`repo.semanaverde.com.es`.