Skip to main content

Installing Pluton on Linux Servers

This guide covers installing Pluton on headless Linux servers without a desktop environment.

Prerequisites

  • Linux server (x86_64 or arm64 architecture)
  • Root/sudo access
  • systemd (most modern Linux distributions)
  • curl

Interactive Installation

curl -sSL https://dl.usepluton.com/server/scripts/install.sh | sudo bash

Follow the prompts to configure:

  • Server port (default: 5173)
  • Max concurrent backups (default: 2)
  • Encryption key (min 12 characters)
  • Admin username
  • Admin password

Non-Interactive Installation

For automated deployments, provide all configuration via command line:

curl -sSL https://dl.usepluton.com/server/scripts/install.sh | sudo bash -s -- \
--port 5173 \
--max-concurrent 2 \
--encryption-key "your-secure-encryption-key" \
--user admin \
--password "your-secure-password" \
--non-interactive

Installation with Config File

Create a configuration file (e.g., /tmp/pluton.env):

PLUTON_ENCRYPTION_KEY=your-secure-encryption-key
PLUTON_USER_NAME=admin
PLUTON_USER_PASSWORD=your-secure-password
SERVER_PORT=5173
MAX_CONCURRENT_BACKUPS=2

Then install:

curl -sSL https://dl.usepluton.com/server/scripts/install.sh | sudo bash -s -- \
--config /tmp/pluton.env --non-interactive

Network Configuration

Firewall Configuration

# UFW (Ubuntu/Debian)
sudo ufw allow 5173/tcp

# firewalld (RHEL/CentOS/Fedora)
sudo firewall-cmd --permanent --add-port=5173/tcp
sudo firewall-cmd --reload

File Locations

PathDescription
/opt/pluton/Application binaries
/var/lib/pluton/Data directory (database, logs, backups)
/etc/pluton/pluton.envCredentials (secured, mode 600)
/var/lib/pluton/config/config.jsonNon-sensitive configuration
/var/lib/pluton/logs/Application logs

Custom Domain with Reverse Proxy

To access Pluton via a custom domain (e.g., backups.example.com), set up a reverse proxy that forwards traffic to Pluton's local port.

Nginx

First Install Nginx:

sudo apt install nginx   # Debian/Ubuntu
sudo dnf install nginx # RHEL/Fedora

And then create /etc/nginx/sites-available/pluton:

server {
listen 80;
server_name backups.example.com;

location / {
proxy_pass http://127.0.0.1:5173;
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;

# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

client_max_body_size 0;
}

Enable the site and reload:

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

Caddy (Alternative)

Caddy provides automatic HTTPS with no extra configuration. Install Caddy and create /etc/caddy/Caddyfile:

backups.example.com {
reverse_proxy 127.0.0.1:5173
}

Reload with sudo systemctl reload caddy. Caddy automatically provisions and renews SSL certificates.

Apache (Alternative)

Enable required modules and create /etc/apache2/sites-available/pluton.conf:

sudo a2enmod proxy proxy_http proxy_wstunnel
<VirtualHost *:80>
ServerName backups.example.com
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:5173/
ProxyPassReverse / http://127.0.0.1:5173/

RewriteEngine On
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:5173/$1 [P,L]
</VirtualHost>
sudo a2ensite pluton && sudo systemctl reload apache2

SSL Certificate with Let's Encrypt

If using Caddy, SSL is automatic — no extra steps needed.

For Nginx or Apache, use Certbot:

# Install certbot
sudo apt install certbot python3-certbot-nginx # Nginx
sudo apt install certbot python3-certbot-apache # Apache

# Obtain and install certificate
sudo certbot --nginx -d backups.example.com # Nginx
sudo certbot --apache -d backups.example.com # Apache

Certbot automatically configures SSL and sets up auto-renewal via a systemd timer. Verify renewal works:

sudo certbot renew --dry-run
tip

Ensure your domain's DNS A record points to your server's public IP address before requesting a certificate.


Uninstalling Pluton

curl -sSL https://dl.usepluton.com/server/scripts/uninstall.sh | sudo bash

For automated removal including all data:

curl -sSL https://dl.usepluton.com/server/scripts/uninstall.sh | sudo bash -s -- \
--remove-data --non-interactive

Or use the local uninstall script:

sudo /opt/pluton/uninstall.sh

Managing the Service

# Check status
sudo systemctl status pluton

# Stop service
sudo systemctl stop pluton

# Start service
sudo systemctl start pluton

# Restart service
sudo systemctl restart pluton

# View logs
sudo journalctl -u pluton -f

Updating Pluton

curl -sSL https://dl.usepluton.com/server/scripts/install.sh | sudo bash -s -- --upgrade

This preserves your credentials and data while updating the binaries.

Troubleshooting

View Application Logs

# Service logs
sudo journalctl -u pluton -f

# Application stdout/stderr
tail -f /var/lib/pluton/logs/stdout.log
tail -f /var/lib/pluton/logs/stderr.log

Check Service Status

sudo systemctl status pluton

Verify Credentials File

sudo cat /etc/pluton/pluton.env

Restart After Configuration Changes

sudo systemctl daemon-reload
sudo systemctl restart pluton