Skip to content

Getting Started

Plitho is a self-contained deployment platform that runs your apps as native Linux processes — no Docker, no containers. You push your code, and Plitho handles everything: process management, web server, SSL, logs, databases, and cache.

What Plitho Is

Plitho is a lightweight PaaS that deploys apps on a single VPS. It uses native Linux features — systemd services, cgroup resource limits, and nginx reverse proxying — instead of containers. Your apps run as regular Linux processes under dedicated system users.

Why this matters:

  • No container overhead — your apps run directly on the host
  • Direct filesystem access — no volume mounts or bind mounts
  • Standard Linux toolingjournalctl, systemctl, ssh all work
  • Lightweight — runs on a single VPS with minimal resource usage

How It Works

When you deploy an app, Plitho:

  1. Receives your code or binary
  2. Installs dependencies if needed (npm install, pip install)
  3. Runs any build or migration scripts you've configured
  4. Generates an nginx reverse proxy config for your app
  5. Creates a systemd service to manage your app process
  6. Sets up cgroup slices for CPU and memory limits
  7. Provisions an SSL certificate via Let's Encrypt (if you set a domain)
  8. Starts your app

Your app runs as a native Linux process under a dedicated system user (plitho-{appname}). No containers, no virtualization — just systemd keeping your app alive and nginx routing traffic to it.

Dashboard overview

Accessing the Dashboard

Your server administrator will give you a dashboard URL and login credentials. Open it in your browser.

Login page

From the dashboard you can:

  • Deploy and manage apps
  • Create databases and cache instances
  • Manage data services (NATS, MongoDB, RabbitMQ)
  • View logs and metrics
  • Manage SSH keys and users
  • Monitor resource usage

Deploying Your First App

There are multiple ways to deploy. Pick whichever fits your workflow.

Best for source code (Node.js, Python). Push your repo and Plitho builds it.

# One-time setup
git remote add plitho ssh://plitho@your-server:2222/myapp

# Deploy
git push plitho main

Note

The SSH username is always plitho. Your identity is determined by your SSH key, not the username in the URL.

Option 2: CLI Deploy

Best for compiled binaries (Go, Rust, C) and built static sites. Build locally, deploy the artifact.

# Build
go build -o server .

# Deploy
plitho deploy --at your-server -y ./server

Option 3: Template Deploy

Best for known apps (PocketBase, TrailBase, FileBrowser). One click in the dashboard — no plitho.yml needed.

  1. Go to Templates in the dashboard
  2. Click INSTALL
  3. Done

Option 4: Tar Deploy

Stream a tarball directly via SSH. For custom pipelines and automation.

tar -cf - plitho.yml | gzip | ssh -p 2222 your-server "tar-deploy myapp --stream"

All methods require your SSH key to be added to Plitho. See SSH Keys.

Your App's Filesystem

When you deploy, Plitho creates a dedicated Linux user for your app (plitho-{appname}). You can SSH into it to see what's going on:

ssh -p 2222 plitho@your-server

Then switch to the app user:

sudo su - plitho-myapp

You'll find these directories:

Directory What's there Survives deploys?
/app Your git checkout or deployed files No — reset on each deploy
/data Persistent storage (uploads, SQLite DBs, caches) Yes
/env Dependencies (node_modules/, Python virtualenv/) No — rebuilt on each deploy
/logs Process stdout/stderr output Yes

/app

Your code lives here. On each deploy, this is wiped and replaced with a fresh copy. Don't store anything here that you need to keep.

/data

Your persistent storage. This is yours — Plitho never touches it. Use it for:

  • Uploaded files
  • SQLite databases
  • Any state that should survive a redeploy

Access it in your code as the current working directory, or read/write files here directly.

/env

Dependencies are installed here automatically:

  • Node.js: node_modules/
  • Python: virtualenv/

This is recreated on each deploy. You don't manage it — Plitho handles it.

/logs

Process output from your app. You can also view these in the dashboard (Apps → your app → Logs) or via SSH:

ssh -p 2222 plitho@your-server log myapp

Logs survive redeployments — you can always see what your app outputted.

What's Next