Cómo instalar Focalboard en Ubuntu 22.04

Focalboard es una herramienta de gestión de proyectos de código abierto y autoalojada. Es multilingüe y una alternativa a Asana, Trello y Notion que pueden utilizar los desarrolladores para hacer un seguimiento y gestionar el trabajo de los equipos. Se basa en kanban y está disponible para ordenadores de sobremesa y servidores. Puede utilizarse como servidor personal independiente para pruebas y desarrollo. Focalboard ayuda a los desarrolladores a mantenerse alineados para completar tareas, alcanzar hitos y lograr sus objetivos.

En este post, te mostraremos cómo instalar Focalboard con Nginx como proxy inverso en Ubuntu 22.04.

Requisitos previos

  • Un servidor con Ubuntu 22.04.
  • Un nombre de dominio válido apuntado con la IP de tu servidor.
  • Una contraseña de root configurada en el servidor.

Instalar y configurar PostgreSQL

Focalboard utiliza PostgreSQL para almacenar sus datos. Así que el servidor de bases de datos PostgreSQL debe estar instalado en tu sistema.

Si no está instalado, puedes instalarlo con otros paquetes mediante el siguiente comando:

apt-get install curl wget gnupg2 -y
apt-get install postgresql postgresql-contrib -y

Después de instalar PostgreSQL, conéctate al PostgreSQL utilizando el siguiente comando:

su - postgres
psql

A continuación, crea una base de datos y un usuario para PostgreSQL con el siguiente comando:

CREATE DATABASE focaldb;
CREATE USER focaluser WITH PASSWORD 'password';

A continuación, sal del shell de PostgreSQL con el siguiente comando:

\q
exit

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar y configurar Focalboard

En primer lugar, visita la página de descargas de Focalboard Git Hub y descarga la última versión de Focalboard con el siguiente comando:

VER=$(curl -s https://api.github.com/repos/mattermost/focalboard/releases/latest|grep tag_name | cut -d '"' -f 4)
wget https://github.com/mattermost/focalboard/releases/download/${VER}/focalboard-server-linux-amd64.tar.gz

Una vez completada la descarga, extrae el archivo descargado con el siguiente comando:

tar -xvzf focalboard-server-linux-amd64.tar.gz

A continuación, mueve el Focalboard al directorio /opt con el siguiente comando:

mv focalboard /opt

A continuación, edita el archivo de configuración del Focalboard:

nano /opt/focalboard/config.json

cambia las siguientes líneas que coincidan con tu base de datos como se muestra a continuación:

"dbtype": "postgres",
"dbconfig": "postgres://focaluser:password@localhost/focaldb?sslmode=disable&connect_timeout=10",

Guarda y cierra el archivo cuando hayas terminado.

Crear un archivo de servicio Systemd para Focalboard

Es una buena idea iniciar y gestionar Focalboard con systemd. Para ello, tendrás que crear un archivo de servicio systemd para Focalboard:

nano /lib/systemd/system/focalboard.service

Añade las siguientes líneas:

[Unit]
Description=Focalboard server

[Service]
Type=simple
Restart=always
RestartSec=5s
ExecStart=/opt/focalboard/bin/focalboard-server
WorkingDirectory=/opt/focalboard

[Install]
WantedBy=multi-user.target

Guarda y cierra el archivo, y vuelve a cargar el demonio systemd para aplicar los cambios:

systemctl daemon-reload

A continuación, inicia y activa el servicio Focalboard con el siguiente comando:

systemctl start focalboard
systemctl enable focalboard

Ahora puedes comprobar el estado del Focalboard con el siguiente comando:

systemctl status focalboard

Obtendrás la siguiente salida:

? focalboard.service - Focalboard server
     Loaded: loaded (/lib/systemd/system/focalboard.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-08-21 11:22:22 UTC; 8s ago
   Main PID: 4347 (focalboard-serv)
      Tasks: 4 (limit: 2242)
     Memory: 18.1M
        CPU: 1.977s
     CGroup: /system.slice/focalboard.service
             ??4347 /opt/focalboard/bin/focalboard-server

Aug 21 11:22:23 ubuntu2204 focalboard-server[4347]: debug [2022-08-21 11:22:23.507 Z] listener(s) for blockID                  caller="ws/ser>
Aug 21 11:22:23 ubuntu2204 focalboard-server[4347]: debug [2022-08-21 11:22:23.507 Z] listener(s) for blockID                  caller="ws/ser>
Aug 21 11:22:23 ubuntu2204 focalboard-server[4347]: debug [2022-08-21 11:22:23.510 Z] listener(s) for workspaceID              caller="ws/ser>
Aug 21 11:22:23 ubuntu2204 focalboard-server[4347]: debug [2022-08-21 11:22:23.510 Z] listener(s) for blockID                  caller="ws/ser>
Aug 21 11:22:23 ubuntu2204 focalboard-server[4347]: debug [2022-08-21 11:22:23.510 Z] listener(s) for blockID                  caller="ws/ser>
Aug 21 11:22:24 ubuntu2204 focalboard-server[4347]: debug [2022-08-21 11:22:24.928 Z] import archive - done                    caller="app/im>
Aug 21 11:22:24 ubuntu2204 focalboard-server[4347]: info  [2022-08-21 11:22:24.937 Z] initialized workspace                    caller="app/wo>
Aug 21 11:22:24 ubuntu2204 focalboard-server[4347]: info  [2022-08-21 11:22:24.941 Z] Server.Start                             caller="server>
Aug 21 11:22:24 ubuntu2204 focalboard-server[4347]: info  [2022-08-21 11:22:24.941 Z] http server started                      caller="web/we>
Aug 21 11:22:24 ubuntu2204 focalboard-server[4347]: info  [2022-08-21 11:22:24.947 Z] Starting unix socket server              caller="server>

En este momento, Focalboard está iniciado y escuchando en el puerto 8000. Puedes comprobar sus puertos de escucha con el siguiente comando:

ss -antpl | grep focalboard

Obtendrás la siguiente salida:

LISTEN 0      4096               *:8000            *:*    users:(("focalboard-serv",pid=4347,fd=9))
LISTEN 0      4096               *:9092            *:*    users:(("focalboard-serv",pid=4347,fd=8))

Una vez que hayas terminado, puedes pasar al siguiente paso.

Configurar Nginx como proxy inverso

A continuación, es conveniente instalar y configurar Nginx como proxy inverso para acceder al Focalboard a través del puerto 80. Primero, instala el servidor Nginx con el siguiente comando:

apt-get install nginx -y

Una vez instalado el servidor Nginx, crea un archivo de configuración del host virtual Nginx:

nano /etc/nginx/conf.d/focalboard.conf

Añade las siguientes líneas:

upstream focalboard {
   server localhost:8000;
   keepalive 32;
}

server {
   listen 80;

   server_name focalboard.example.com;

   location ~ /ws/* {
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection "upgrade";
       client_max_body_size 50M;
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Frame-Options SAMEORIGIN;
       proxy_buffers 256 16k;
       proxy_buffer_size 16k;
       client_body_timeout 60;
       send_timeout 300;
       lingering_timeout 5;
       proxy_connect_timeout 1d;
       proxy_send_timeout 1d;
       proxy_read_timeout 1d;
       proxy_pass http://focalboard;
   }

   location / {
       client_max_body_size 50M;
       proxy_set_header Connection "";
       proxy_set_header Host $http_host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Proto $scheme;
       proxy_set_header X-Frame-Options SAMEORIGIN;
       proxy_buffers 256 16k;
       proxy_buffer_size 16k;
       proxy_read_timeout 600s;
       proxy_cache_revalidate on;
       proxy_cache_min_uses 2;
       proxy_cache_use_stale timeout;
       proxy_cache_lock on;
       proxy_http_version 1.1;
       proxy_pass http://focalboard;
   }
}

Guarda y cierra el archivo cuando hayas terminado, y luego verifica el Nginx por si hay algún error de configuración de sintaxis con el siguiente comando:

nginx -t

Obtendrás la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, reinicia el servicio Nginx para aplicar los cambios de configuración:

systemctl restart nginx

También puedes comprobar el estado de Nginx con el siguiente comando:

systemctl status nginx

Deberías ver la siguiente salida:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-08-21 11:24:08 UTC; 7s ago
       Docs: man:nginx(8)
    Process: 5017 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 5018 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 5019 (nginx)
      Tasks: 2 (limit: 2242)
     Memory: 2.6M
        CPU: 35ms
     CGroup: /system.slice/nginx.service
             ??5019 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??5020 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Aug 21 11:24:08 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server...
Aug 21 11:24:08 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.

Accede a la interfaz web de Focalboard

Ahora, abre tu navegador web y escribe la URL http://focalboard.example.com/login para acceder al Focalboard. Serás redirigido a la página de inicio de sesión de Focalboard:

Haz clic en el botón de crear una cuenta. Deberías ver la página de creación de cuentas de Focalboard:

inicio de sesión

Proporciona tu dirección de correo electrónico, el nombre de usuario de administrador, la contraseña y haz clic en el botón Registrar. Deberías ver el panel de control de Focalboard en la siguiente página:

Focalboard en Ubuntu

Habilitar SSL en Focalboard

Por razones de seguridad, es una buena idea asegurar Focalboard con Let’s Encrypt SSL. A continuación, tendrás que instalar el paquete cliente Certbot para instalar y gestionar el SSL de Let’s Encrypt.

Primero, instala el Certbot con el siguiente comando:

apt-get install python3-certbot-nginx -y

Una vez terminada la instalación, ejecuta el siguiente comando para instalar el SSL de Let’s Encrypt en tu sitio web:

certbot --nginx -d focalboard.example.com

Se te pedirá que proporciones una dirección de correo electrónico válida y que aceptes las condiciones del servicio, como se muestra a continuación:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for focalboard.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/focalboard.conf

A continuación, elige si quieres redirigir el tráfico HTTP a HTTPS como se muestra a continuación:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Escribe 2 y pulsa Intro para finalizar la instalación. Deberías ver la siguiente salida:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/focalboard.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://focalboard.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=focalboard.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/focalboard.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/focalboard.example.com/privkey.pem
   Your cert will expire on 2022-11-21. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

Conclusión

Enhorabuena! has instalado con éxito Focalboard con Nginx como proxy inverso en Ubuntu 22.04. Ahora puedes desplegar Focalboard en tu organización y empezar a gestionar y seguir tus proyectos fácilmente desde el navegador web. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...