How to Install PairDrop on Ubuntu 24.04
PairDrop is a self-hosted, collaborative file sharing and communication tool. This guide walks you through a full installation on Ubuntu 24.04, including Node.js setup, service management, Nginx reverse proxy, and firewall configuration.
Step 1: Install System Dependencies
PairDrop requires Node.js, git, Nginx, and several build tools.
sudo apt update
sudo apt install -y curl git nginx ufw build-essential python3-pip
This ensures the server is ready to download binaries, compile Node modules, and serve content via Nginx.
Step 2: Install Node.js
Download and extract Node.js manually to avoid package conflicts:
wget https://nodejs.org/dist/v18.19.1/node-v18.19.1-linux-x64.tar.xz -O /tmp/node-v18.19.1-linux-x64.tar.xz
sudo tar -xJf /tmp/node-v18.19.1-linux-x64.tar.xz -C /usr/local --strip-components=1
Create symlinks for easier access:
sudo ln -sf /usr/local/bin/node /usr/bin/node
sudo ln -sf /usr/local/bin/npm /usr/bin/npm
sudo ln -sf /usr/local/bin/npx /usr/bin/npx
Verify versions:
node -v
npm -v
Step 3: Create PairDrop User and Directories
Create a dedicated system user and clean up any previous installations:
sudo useradd -r -m -d /var/www/pairdrop -s /bin/bash pairdrop
sudo rm -rf /var/www/pairdrop
sudo mkdir -p /var/www/pairdrop
sudo chown -R pairdrop:pairdrop /var/www/pairdrop
Step 4: Clone PairDrop Repository
Clone the latest code into a temporary directory, then move it to the final location:
sudo -u pairdrop mkdir -p /tmp/pairdrop-temp
cd /tmp/pairdrop-temp
sudo -u pairdrop git clone --depth 1 https://github.com/schlagmichdoch/PairDrop.git .
sudo -u pairdrop cp -r /tmp/pairdrop-temp/* /var/www/pairdrop/
sudo -u pairdrop cp -r /tmp/pairdrop-temp/.* /var/www/pairdrop/ 2>/dev/null || true
sudo rm -rf /tmp/pairdrop-temp
sudo chown -R pairdrop:pairdrop /var/www/pairdrop
Step 5: Install Node Modules
Navigate to the PairDrop directory and install dependencies:
cd /var/www/pairdrop
sudo -u pairdrop npm install
Optional: check available npm scripts:
sudo -u pairdrop npm run
Test startup (for 15 seconds):
sudo -u pairdrop timeout 15s npm start
Step 6: Configure PairDrop as a Systemd Service
Create a service file for automatic startup:
sudo nano /etc/systemd/system/pairdrop.service
[Unit]
Description=PairDrop Service
After=network.target
[Service]
Type=simple
User=pairdrop
Group=pairdrop
WorkingDirectory=/var/www/pairdrop
ExecStart=/usr/bin/npm start
Restart=on-failure
RestartSec=5
Environment=PORT=3000
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
Reload systemd and start the service:
sudo systemctl daemon-reload
sudo systemctl enable --now pairdrop
Step 7: Configure Nginx Reverse Proxy
Create an Nginx site for PairDrop:
sudo nano /etc/nginx/sites-available/pairdrop
server {
listen 80;
server_name <server-ip>;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $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_cache_bypass $http_upgrade;
}
}
Enable the site and restart Nginx:
sudo ln -sf /etc/nginx/sites-available/pairdrop /etc/nginx/sites-enabled/pairdrop
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t
sudo systemctl restart nginx
Step 8: Configure Firewall
Allow HTTP traffic:
sudo ufw allow 80/tcp
Step 9: Verify Installation
Check PairDrop and Nginx status:
sudo systemctl status pairdrop
sudo systemctl status nginx
curl http://<server-ip>
Highlights of this Installation
-
Manual Node.js binary installation (avoids package conflicts)
-
Bulletproof Git clone and move method
-
Proper user permissions with system user
pairdrop
-
Managed via systemd for automatic restart
-
Nginx reverse proxy and firewall configuration included
Your PairDrop instance is now fully operational and accessible via your server IP.