← All articles
Self-hostingDeployment

Deploy Paperclip on Linode (Akamai Cloud)

Linode, now part of Akamai, has been a developer-favorite VPS provider for 20 years. Their Nanode plan starts at $5/month for a personal Paperclip deployment, with straightforward pricing and solid uptime.

Deploy on Railway instead →

Why Linode for Paperclip

Linode (Akamai Cloud) is one of the most established VPS providers. Their infrastructure is reliable, support is responsive, and pricing is transparent. The Nanode 1GB ($5/month) will run Paperclip, but the Linode 2GB ($12/month) gives you more breathing room for agent workloads and database operations. Eleven global regions including Singapore, Sydney, and Toronto.

Step 1: Create a Linode

  1. Sign in at cloud.linode.com
  2. Click Create → Linode
  3. Configure:
    • Distribution: Ubuntu 22.04 LTS
    • Region: Select closest to your users
    • Linode Plan: Shared CPU → Nanode 1GB ($5/month) or Linode 2GB ($12/month recommended)
    • Linode Label: paperclip
    • Root Password: Set a strong root password
    • SSH Keys: Add your public key
  4. Click Create Linode

Provisioning takes about 45 seconds.

Step 2: Initial server setup

ssh root@YOUR_LINODE_IP

apt update && apt upgrade -y
apt install -y curl git nginx ufw

# Create a dedicated deploy user
adduser deploy
usermod -aG sudo deploy
rsync --archive --chown=deploy:deploy ~/.ssh /home/deploy

Disable root SSH login for security:

sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl reload sshd

From this point, connect as deploy@YOUR_LINODE_IP.

Step 3: Install Node.js 20

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

Step 4: Install Paperclip and set up directories

npm install -g paperclipai

mkdir -p /opt/paperclip/data
chown -R deploy:deploy /opt/paperclip

Create /opt/paperclip/.env:

sudo bash -c 'cat > /opt/paperclip/.env << EOF
NODE_ENV=production
PAPERCLIP_DATA_DIR=/opt/paperclip/data
BETTER_AUTH_SECRET=REPLACE_WITH_RANDOM
PAPERCLIP_LISTEN_PORT=3100
PAPERCLIP_LISTEN_HOST=127.0.0.1
EOF'
sudo chmod 600 /opt/paperclip/.env
sudo chown deploy:deploy /opt/paperclip/.env

Generate the secret: openssl rand -hex 32

Step 5: Create systemd service

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

[Service]
Type=simple
User=deploy
WorkingDirectory=/opt/paperclip
EnvironmentFile=/opt/paperclip/.env
ExecStart=/usr/bin/npx paperclipai server start
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF'

sudo systemctl daemon-reload
sudo systemctl enable --now paperclip
sudo systemctl status paperclip

Step 6: nginx configuration

sudo bash -c '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;
    }
}
EOF'

sudo ln -s /etc/nginx/sites-available/paperclip /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

Step 7: SSL certificate

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d paperclip.yourdomain.com

Step 8: Firewall

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable

Step 9: Linode DNS Manager (optional)

If your domain is managed elsewhere, skip this. If you want to use Linode's DNS:

  1. In cloud.linode.com, go to Domains → Add a Domain
  2. Add your domain and create an A record for paperclip pointing to your Linode IP
  3. Update your domain's nameservers to Linode's nameservers

Monitoring with Linode

Linode includes basic CPU, RAM, and network graphs in the dashboard. For detailed monitoring, install the Linode Monitoring Agent:

curl -O https://lp.akamai.com/rs/010-ZEP-759/images/linode-longview-install.sh
bash linode-longview-install.sh

Backups

Enable Linode Backups in your dashboard ($2–$5/month depending on plan size). For critical Paperclip data, also snapshot the database manually:

# Stop Paperclip briefly for a clean backup
sudo systemctl stop paperclip
tar -czf /tmp/paperclip-backup-$(date +%Y%m%d).tar.gz /opt/paperclip/data
sudo systemctl start paperclip

Updating Paperclip

sudo npm install -g paperclipai@latest
sudo systemctl restart paperclip

Cost

  • Nanode 1GB: $5/month (personal use)
  • Linode 2GB: $12/month (recommended for agents running concurrently)
  • Backups: +20% of plan cost

For fully managed deploys without server setup, Railway gives you $20 free credit to get started.

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.