VPS control panel

Turn your VPS into a complete application server.

auraPanel installs on a fresh Debian or Ubuntu VPS from any provider and gives you sites, runtimes, databases, HTTPS, backups and server operations in one panel. One licence per server. Unlimited sites.

1 commandfrom a fresh Debian or Ubuntu VPS to a running panel
6 site typesPHP, Node.js, Python, static, reverse proxy, Docker Compose
2 enginesPostgreSQL and MariaDB, with auraDB in the browser
∞ sitesper licence — one licence covers the whole server

Who it is for

You rent a VPS from Hetzner, DigitalOcean, Vultr, Hostinger, AWS, Google Cloud, Azure or anyone else who will give you a Debian or Ubuntu image and a public IPv4 address. You want to run real applications on it — WordPress for a client, a Laravel or Node.js product, a Python service, a container stack — without spending the evening on nginx configuration, PHP-FPM pools, certificates and backup scripts, and without handing the machine to a hosting company.

auraPanel is a control panel you install on that server. It is not a hosting service and it does not run on our infrastructure: the panel, your sites and your data stay on the VPS you pay for.

From fresh VPS to running application

This is the whole path, as the documentation describes it. On a small VPS the panel is answering within a couple of minutes of running the installer.

  1. Create the VPS. Debian 12 or 13, or Ubuntu 22.04, 24.04 or 26.04 LTS; 2 GB of RAM is comfortable (the panel is designed for 1 GB); allow ports 22, 80, 443 and 8443 in the provider firewall.
  2. Run the installer over SSH: curl -fsSL https://aurapanel.net/installer.sh | bash. It verifies the release signature, installs nginx, the runtimes and engines you tick, enables UFW and fail2ban, and prints the panel address. Install guide →
  3. Create the administrator in the browser, set the server time zone, and register a passkey or TOTP.
  4. Point a domain at the server, and give the panel itself a domain so it gets a Let's Encrypt certificate.
  5. Add a site. Pick WordPress or another one-click application, or PHP, Node.js, Python, static, reverse proxy or Docker Compose. The panel creates a Linux user, the directory, the nginx server block and the runtime, and requests HTTPS in the background. Sites →
  6. Deploy your code over SFTP, git or the File Browser, or let the one-click installer do it. Add a PostgreSQL or MariaDB database from the site and open it in auraDB.
  7. Schedule backups — databases and files, hourly to weekly, with retention — and optionally copy them off the VPS to S3, B2, Google Drive, Dropbox, SFTP or Swift.

Applications and domains

Each site is its own Linux user with its own directory, server block and, where the type needs one, its own runtime process. One-click installers set up WordPress, Drupal, Joomla, Moodle, Laravel, Symfony, TYPO3, Matomo, Nextcloud, Gitea and others with their database, administrator and configuration; assisted installers prepare the site and hand you the application's own setup. Redirects map old hostnames or paths onto sites, each with its own certificate.

  • One Linux user per site
  • One-click and assisted installers
  • Redirects with HTTPS
  • Basic auth per site
  • Document root override

Runtimes

PHP 8.1 to 8.5 install side by side; every PHP site has its own PHP-FPM pool on the version it chooses and switches versions without touching the others. Node.js versions come from nodejs.org and are pinned per site; the panel works out the start command from package.json, injects PORT and runs the app as a systemd service with restart back-off. Python sites run your WSGI application under gunicorn the same way. Docker Compose sites put a container stack behind the same nginx and HTTPS.

  • PHP 8.1–8.5 per site
  • Node.js 18–24 per site
  • Python via gunicorn
  • Docker Compose stacks
  • Redis object cache

Databases

Create PostgreSQL or MariaDB databases per site, bound to that site and reachable only from the server. auraDB, built into the panel, is where you browse schemas, run SQL with EXPLAIN, edit rows and manage privileges — every statement checked against your role and recorded in a hash-chained audit file. Import and export dumps from the command line with apcli db. Databases →

HTTPS and Cloudflare

Certificates are issued by a built-in ACME client as soon as DNS points at the VPS and renewed every 12 hours if they are within 30 days of expiry. Wildcards and Cloudflare-proxied domains use DNS-01 through a Cloudflare API token stored encrypted on the server. For a Cloudflare-proxied site, the edge shield locks the origin so only Cloudflare's address ranges can reach it. HTTPS →

Backups and snapshots

Site backups capture databases and files together on a schedule you set, kept for a number of days with a minimum count, and copied off the server through rclone. Restore over the same site or into a new one; WordPress, WooCommerce and Moodle restores re-home their database credentials so a copy never points at the original. Whole-server snapshots run on a schedule for Hetzner, DigitalOcean, Vultr and Hostinger with in-panel restore, and for AWS, Google Cloud and Azure with restore in the provider console. Backups →

Logs and server resources

Every site has its own access and error logs, rotated daily, readable in the panel with filters, day stepping and live tail. Node.js, Python and Docker services log to the journal under a predictable unit name. The Resources screen keeps six months of one-minute CPU, memory, disk and network samples, attributes usage to sites, and a watchdog throttles crash-looping services before they take the VPS down. Logs and monitoring →

Security and ownership

Passkeys or TOTP for panel sign-in, roles that limit users to the sites they are granted, an audit log of every action, encrypted secrets, security headers on every site, and Ed25519-signed updates that roll back automatically if the new version does not come up. The installer enables UFW and fail2ban; firewall rules beyond that, SSH hardening and operating-system updates stay yours, as does the server itself. Standard paths, distribution packages from vendor repositories, plain nginx and systemd: nothing that stops you from running the server without the panel one day. Security →

Frequently asked

Which VPS providers work?

Any that offers a Debian 12/13 or Ubuntu 22.04–26.04 image with a public IPv4 address, on x86-64 or ARM64. The panel also reads the metadata services of AWS, Google Cloud, Hetzner and DigitalOcean to show the public IP, and takes snapshots on seven providers.

How big a VPS do I need?

The panel is designed for 1 vCPU, 1 GB of RAM and 10 GB of disk; 2 GB is comfortable once MariaDB and PHP are running. With 2 GB or less the installer adds a swap file.

Can I manage several VPSes from one panel?

No. auraPanel runs one panel per server; each server has its own licence, and the customer portal lists them. A multi-server dashboard is not a feature today.

Do I need to know Linux?

You need to be able to SSH in and paste one command. After that the panel does the day-to-day work, and apcli is there when you want a shell. The Linux server page explains what is automated and what stays with you.

What does it cost?

One licence per server, unlimited sites, every feature included; 30 days free with no card. Pricing →

Try the live demo

A real auraPanel on a real server, shared with everyone. Sign in with the demo account and click around.

Email
demo@goaura.one
Password
demo1234
Open the demo panel ↗

Shared public demo, so please don’t put anything personal in it. More about the demo →

Talk to us

Tell us what you need and how to reach you. A person reads this, not a queue.

We use these details only to reply to you. Privacy

Recent updates

What shipped in the last releases. With automatic updates on, each lands on your server the moment it is published.

  1. v1.21.3
    Framework sites were undetectable, and a restore could silently point the copy at the original's live database.

    DetectApp looked for each application's signature relative to the docroot — but every PHP framework in the registry serves from a subdirectory (DocrootSub: public, webroot, web, pub, docroot) and keeps the file that identifies it one level *above* that. So the Laravel signature searched <project>/public/artisan,…

  2. v1.21.2
    Restarting nginx now blocks the panel and reconnects, instead of showing a notice.

    v1.21.1 stopped the false "HTTP 520" but only put up a toast — and a toast is the wrong affordance when the panel itself is about to go away: the page sat there looking broken while every request failed underneath it.

  3. v1.21.1
    Restarting nginx from Services no longer reports a false failure.

    It showed "Restart failed — HTTP 520". The panel is reverse-proxied *by* nginx, so the request deadlocked against itself: the handler blocked waiting for the restart to finish, while nginx's graceful stop waited for that very request to drain. Neither could proceed until nginx's stop-retry timeout force-killed it,…

  4. v1.21.0
    Per-site X-Frame-Options, fixing page builders that couldn't load their preview.

    Elementor's editor failed with *"Multiple 'X-Frame-Options' headers with conflicting values ('DENY, SAMEORIGIN')"*. The cause is that nginx's add_header appends rather than replaces: when the application also sets the header — a WordPress security plugin, or a CDN transform — the browser received two values,…

  5. v1.20.6
    The multi-database restore refusal now says what is in the backup and what still works.

    It read only "Restoring a multi-database site isn't supported yet", which is a dead end: it named neither the databases involved, nor why one of them is the limit, nor any route forward.

  6. v1.20.5
    Services: cards in a row now match heights.

    Like the settings grid before it, the Services grid pinned each card to its own content height, so a row often showed one card noticeably shorter than the card beside it. Each row now takes the taller card's height and both fill it, and it re-balances as content changes — a runtime installed, a longer service list.

  7. v1.20.4
    Settings: paired cards now match heights.

    Organisation / Panel Domain and auraPanel Updates / Session timeout each sat at their own content height, so a row showed one card visibly shorter than its neighbour. Each row now takes the taller card's height and both fill it — driven by content, not a fixed value, so it still adapts as a card grows (a validation…

  8. v1.20.3
    Settings: Organisation and Panel Domain now share a row too.

    They were full-width blocks stacked above the rest of the page; they now sit side by side in the same two-column grid as the Updates / Session timeout pair, so the top of Settings reads as two tidy rows instead of four stacked bands. Both cards shrink cleanly — the logo drop zone is a fixed 44×44 and the name field…

All releases on GitHub ↗