Install focalboard on Ubuntu 24.04
Install docker compose
$sudo apt install docker-compose
Create docker-compose.yml
file
$sudo nano docker-compose.yml
version: "3.3"
services:
focalboard:
ports:
- 8000:8000
restart: always
image: mattermost/focalboard
Start docker compose in detached mode
$docker compose up -d
access http://localhost:8000
Nginx reverse proxy
$sudo nano /etc/nginx/sites-available/[your site]
upstream focalboard {
server localhost:8000;
keepalive 32;
}
server {
listen 80;
server_name [your domain];
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;
}
}
$sudo ln -s /etc/nginx/sites-available/[your domain] /etc/nginx/sites-enable
Let's encrypt