Forecasting · documentation
↗ Open dashboard
Operations

Deployment guide

Stand the dashboard up on a fresh Ubuntu/Debian VPS, either with the bundled installer or step by step, and reach it on the server's IP.

Prerequisites

Option A — automated

From inside the project directory:

cd weather-dashboard
sudo bash deploy/setup.sh

This installs Node and nginx, deploys to /opt/weather-dashboard, creates a service user, enables the service on boot, configures nginx, and opens the firewall. When it finishes it prints the URL. Open http://<server-ip>/.

Option B — manual

1. Install Node 18+ and nginx

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo bash -
sudo apt-get install -y nodejs nginx

2. Deploy files and install dependencies

sudo mkdir -p /opt/weather-dashboard
sudo cp -r server.js package.json public /opt/weather-dashboard/
cd /opt/weather-dashboard
sudo npm install --omit=dev
sudo useradd --system --no-create-home wdash
sudo chown -R wdash:wdash /opt/weather-dashboard

3. Run it as a service

sudo cp deploy/weather-dashboard.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now weather-dashboard
systemctl status weather-dashboard

The app now listens on 127.0.0.1:3000.

4. Put nginx in front

sudo cp deploy/nginx.conf /etc/nginx/sites-available/weather-dashboard
sudo ln -sf /etc/nginx/sites-available/weather-dashboard /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl reload nginx

5. Open the firewall

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw enable

Browse to http://<server-ip>/.

Running without nginx

To let Node bind port 80 directly, edit the systemd unit:

Environment=PORT=80
Environment=HOST=0.0.0.0
AmbientCapabilities=CAP_NET_BIND_SERVICE

Then sudo systemctl daemon-reload && sudo systemctl restart weather-dashboard.

Adding HTTPS

Point a domain at the IP, then:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx

Certbot rewrites the nginx config for TLS; nothing else changes.

Updating content later

Logs journalctl -u weather-dashboard -f follows the service log.
Forecasting dashboard documentation · Meteo Bulgaria EOOD · 2026