Deploying to a VPS
Run the website on your own Linux server with Node.js, a process manager, and a reverse proxy.
12 min readUpdated 2026-09
Server setup
These steps assume a Linux server with SSH access. Install Node.js 20 LTS and a process manager such as PM2.
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo npm install -g pm2Build and run
git clone <your-repository> noir-website
cd noir-website
cp .env.example .env.local # then edit values
npm install
npm run build
pm2 start npm --name noir-website -- start
pm2 saveReverse proxy and HTTPS
Use a reverse proxy such as Nginx or Caddy to forward traffic from ports 80/443 to the application on port 3000 and to terminate TLS.
server {
server_name example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Obtain a certificate with Let's Encrypt (for example using certbot) and reload the proxy.
Updating the site
cd noir-website
git pull
npm install
npm run build
pm2 restart noir-websiteSecurity basics
Keep the server updated, use SSH keys instead of passwords, and never commit .env.local to your repository.