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:
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:
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.