Skip to main content

Hosting Imágenes

Software: lutim
Web oficial: https://framagit.org/fiat-tux/hat-softwares/lutim
Documentación oficial: https://framagit.org/fiat-tux/hat-softwares/lutim/-/wikis/home
Foro/Matrix de soporte:

Ubicaciones importantes:/var/www/lutim/
Logs relevantes:/var/www/lutim/log/production.log

Comandos de gestión

Acceder al contenedor Lutim está dentro de un contenedor LXD en el servidor de blog de anartist (blog.anartist.org). Para acceder tenemos que usar:

sudo lxc list #Esto es para listar información de los contenedores, no es necesario
sudo lxc lutim exec

Y ya estaremos dentro del servidor.

Actualizar
¡¡Siempre hay que leer la instrucciones en la documentación oficial y leer el changelog de la nueva versión!!
¡¡Es muy recomendable hacer una copia de seguridad antes de actualizar!!

cd /var/www/lutim/
git pull
carton install
vimdiff lutim.conf lutim.conf.template
carton exec hypnotoad script/lutim

Diario de instalación

Primero he instalado lxd via snap:

sudo snap install core
sudo snap install lxd

He configurado lxd con todas las opciones por defecto y he creado una imagen con ubuntu 20.04:

sudo lxd init
sudo lxc launch images:ubuntu/focal lutim

Listamos las imágenes y entramos dentro del contenedor

sudo lxc list
sudo lxc exec lutim bash

Siguiendo las instrucciones, actualizo el servidor y voy instalando lo necesario:

apt update
apt upgrade
apt install cpan
apt install build-essential
cpan Carton
cpan inc::Module::Install::DSL
apt install libssl-dev shared-mime-info libpq-dev zlib1g-dev git
git clone https://framagit.org/fiat-tux/hat-softwares/lutim.git
cd lutim/
carton install --deployment --without=test --without=postgresql --without=ldap --without=htpasswd --without=cache --without=memcached
cp lutim.conf.template lutim.conf
vi lutim.conf
carton exec hypnotoad script/lutim
cp utilities/lutim.service /etc/systemd/system/
vi /etc/systemd/system/lutim.service 
sudo mkdir /var/www
mv lutim/ /var/www/
systemctl restart lutim

Configuramos nginx:

apt install nginx
rm /etc/nginx/sites-enabled/default
vi /etc/nginx/sites-available/lutim

Fichero de configuracíón de nginx dentro del contenedor:

server {
    listen 80;
    # No need to have a `root` parameter.

    # This is important for user's privacy !
    access_log off;
    error_log /var/log/nginx/lutim.error.log;

    # This is important ! Make it OK with your Lutim configuration
    client_max_body_size 40M;

    location ~* ^/(img|css|font|js)/ {
        try_files $uri @lutim;
        add_header Expires "Thu, 31 Dec 2037 23:55:55 GMT";
        add_header Cache-Control "public, max-age=315360000";

        # HTTPS only header, improves security
        #add_header Strict-Transport-Security "max-age=15768000";
    }

    location / {
        try_files $uri @lutim;

        # HTTPS only header, improves security
        #add_header Strict-Transport-Security "max-age=15768000";
    }

    location @lutim {
        # Adapt this to your configuration
        proxy_pass http://127.0.0.1:8080;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # If you want to log the remote port of the image senders, you'll need that
        proxy_set_header X-Remote-Port $remote_port;

        proxy_set_header X-Forwarded-Proto $scheme;

        # We expect the downsteam servers to redirect to the right hostname, so don't do any rewrites here.
        proxy_redirect off;
    }
}

Continuamos con la configuración de nginx:

ln -s /etc/nginx/sites-available/lutim /etc/nginx/sites-enabled/
systemctl restart nginx

En el servidor host, también he configurado el nginx con el siguiente fichero:

server {

    listen 80;
    listen [::]:80;

    server_name    lutim.anartist.org;

    location / {
        proxy_pass          http://10.253.31.53:80;
        proxy_set_header    Host    $host;
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_set_header    X-Real-IP   $remote_addr;
        proxy_pass_header   server;        
    }

Y configuramos el certificado de Let's Encrypt:

sudo systemctl restart nginx
sudo certbot --nginx