Deploy on Debian linux


  • Node.js and npm
  • git
  • 3 gigabyte or more free (harddrive)disk space

Diskspace needed:

Amount of disk space consumed after installing:

$ user@debian:/tmp$ du -sh app-v0.0.1
1.5G    app-v0.0.1

Install npm on Debian:

We recommend that you use a npm version that is later than 8.5, in order to get a later version on debian, add the nodejs package mirror and upgrade your local nodejs version:

$ sudo apt-get update
$ sudo apt-get install -y ca-certificates curl gnupg
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL | sudo gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
$ echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg]$NODE_MAJOR.x nodistro main" | sudo tee /etc/apt/sources.list.d/nodesource.list
$ sudo apt-get update  
$ sudo apt-get install nodejs -y  

Step 1:

Clone repo:

$ git clone

Install with npm:

$ cd app/ 
$ npm install -f 
$ npm run build 

Note: Make sure you run a version of nodejs that is more later than 8,5.

Step 2:

Run the local instance

$ npm run dev

> @bagpipes/xcm-send@0.0.3 dev
> yarn build:tailwind && vite

yarn run v1.22.19
$ npx tailwindcss -c ./tailwind.config.js -i ./src/index.css -o dist/output.css
  VITE v4.4.9  ready in 9429 ms

  ➜  Local:   http://localhost:5173/
  ➜  Network: use --host to expose
  ➜  press h to show help

Paste 'http://localhost:5173/' into your browser and your ready to use bagpipes.

Step 3(optimal):

In step 2 you learned how to run a local instance of XCMSend. If you want people to be able to access it publicly we need to forward incoming connections to our XCMSend instance that is located at:

Run a public instance

A popular way to deploy XCMSend would be to let the Nginx webserver reverseproxy the connections to the local instance.

Install nginx

apt install nginx

Enable nginx to auto start

$ systemctl enable nginx

Set configuration file /etc/nginx/sites-available/nginx.conf:

server {
    listen 8080;
    server_name localhost;

    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    location /static/ {
        alias /usr/src/app/app-v0.0.1/static/;

    location /media/ {
        alias /usr/src/app/app-v0.0.1/media/;


Restart nginx:

$ systemctl restart nginx