← All articles
Self-hostingDeployment

Deploy Paperclip on Vultr

Vultr Cloud Compute gives you fast NVMe SSD VPS instances at competitive prices, with 32 datacenter locations worldwide. A $6/month instance handles Paperclip well for personal and small-team use.

Deploy on Railway instead →

Why Vultr for Paperclip

Vultr offers a clean interface, hourly billing, and 32 global locations — including regions that competitors don't cover (Seoul, Osaka, São Paulo, Mumbai). The $6/month Cloud Compute instance (1 vCPU / 1 GB RAM / 25 GB NVMe SSD) is sufficient for personal Paperclip deployments. For team use, upgrade to the $12/month plan (1 vCPU / 2 GB RAM).

Step 1: Create a Vultr instance

  1. Sign up at vultr.com
  2. Click Deploy New Server
  3. Choose Cloud Compute — Shared CPU
  4. Configure:
    • Server Location: Pick the region closest to your users
    • Server Image: Ubuntu 22.04 LTS x64
    • Server Size: 1 vCPU / 1 GB RAM / 25 GB NVMe SSD ($6/month)
    • SSH Keys: Add your public key
  5. Click Deploy Now

Server provisions in about 60 seconds.

Step 2: Connect and secure the server

ssh root@YOUR_SERVER_IP

# Update packages
apt update && apt upgrade -y

# Install essentials
apt install -y curl git nginx ufw fail2ban

# Create a deploy user
adduser deploy
usermod -aG sudo deploy

# Copy SSH keys to deploy user
rsync --archive --chown=deploy:deploy ~/.ssh /home/deploy

Step 3: Install Node.js 20 LTS

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
apt install -y nodejs
node --version  # v20.x.x
npm --version

Step 4: Install and configure Paperclip

npm install -g paperclipai

# Create data directory
mkdir -p /opt/paperclip/data
chown -R deploy:deploy /opt/paperclip

# Create environment file
cat > /opt/paperclip/.env << 'EOF'
NODE_ENV=production
PAPERCLIP_DATA_DIR=/opt/paperclip/data
BETTER_AUTH_SECRET=REPLACE_WITH_RANDOM_SECRET
PAPERCLIP_LISTEN_PORT=3100
PAPERCLIP_LISTEN_HOST=127.0.0.1
EOF
chmod 600 /opt/paperclip/.env

Generate your secret: openssl rand -hex 32

Step 5: Set up systemd service

cat > /etc/systemd/system/paperclip.service << 'EOF'
[Unit]
Description=Paperclip AI Platform
After=network.target

[Service]
Type=simple
User=deploy
WorkingDirectory=/opt/paperclip
EnvironmentFile=/opt/paperclip/.env
ExecStart=/usr/bin/npx paperclipai server start
Restart=on-failure
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now paperclip

Check it's running:

systemctl status paperclip
journalctl -u paperclip -f

Step 6: Configure nginx

cat > /etc/nginx/sites-available/paperclip << 'EOF'
server {
    listen 80;
    server_name paperclip.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:3100;
        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_read_timeout 300;
        proxy_connect_timeout 300;
    }
}
EOF

ln -s /etc/nginx/sites-available/paperclip /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx

Step 7: SSL certificate

apt install -y certbot python3-certbot-nginx
certbot --nginx -d paperclip.yourdomain.com --email you@yourdomain.com --agree-tos

Step 8: Firewall

ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow 'Nginx Full'
ufw --force enable

Step 9: DNS

Add an A record in your DNS pointing paperclip.yourdomain.com to your Vultr server IP. DNS typically propagates in 5–30 minutes.

Once live, open https://paperclip.yourdomain.com and complete the admin setup.

Vultr Block Storage (optional)

If 25 GB isn't enough, Vultr Block Storage lets you attach additional volumes:

  1. In the Vultr dashboard, go to Block Storage → Add Block Storage
  2. Choose size and attach to your server
  3. On the server, format and mount:
mkfs.ext4 /dev/vdb
mkdir -p /mnt/paperclip-data
mount /dev/vdb /mnt/paperclip-data
echo '/dev/vdb /mnt/paperclip-data ext4 defaults 0 2' >> /etc/fstab

Update PAPERCLIP_DATA_DIR in your .env to /mnt/paperclip-data.

Updating Paperclip

npm install -g paperclipai@latest
systemctl restart paperclip

Cost

  • Cloud Compute $6/month: 1 vCPU / 1 GB RAM / 25 GB NVMe
  • Recommended for Paperclip: $12/month plan (2 GB RAM) for more headroom

For zero-setup deployments, Railway gives $20 free credit and handles everything automatically.

Ready to deploy?

Affiliate disclosure: this link may earn us a commission at no extra cost to you.

This is an independent guide. Paperclip Hosting is not affiliated with the official Paperclip project. Guide steps are based on real deployments and are subject to change as the software evolves.