Limited-time offer: get 6 months free when you register a new account. Sign Up Free →
Home
Features All Features Web Hosting AI Website Builder Database Hosting Email Hosting Domain & CDN Backups & Storage Firewall & Security WordPress Laravel
Servers Clients Pricing Log In Sign Up Free
← All Documentation

Agency Documentation

Everything involved in running NextaPanel as an agency - your servers, your clients, and the business side of it.

Connecting a Server

Go to Servers in the sidebar, then click + New Server. The form has three short steps:

Step 1 - Server details

  • Name - a label for your own reference.
  • Domain - pick from domains already added under Agency > Cloudflare.
  • Server Price - its recurring monthly cost, used later in Revenue Reports.

Step 2 - SSH connection

  • Host (IPv4) - the server's public IP address.
  • Port - its SSH port (defaults to 22).
  • SSH User - the SSH username.
  • Auth Type - SSH Key or Password.
  • SSH Key / Password - upload the key file, or enter the password.
  • SSH Key Password - optional, only if the key itself has a passphrase.
  • Allow site backups on this server - a checkbox.

Step 3 - Storage allocation

  • Reserved for System - a percentage held back from site allocation for OS and container growth (defaults to 10%).
  • Per-Site Safety Buffer - minimum free disk space required before a new site can be placed here (defaults to 1024 MB).
The Add Server form, showing Name, Domain and Server Price fields

Click Add Server. The panel checks the server is reachable and running Ubuntu 22.04 or newer, then provisions it automatically over SSH: Docker, Nginx with a self-signed certificate, a resource monitor, and a container auto-heal script. This usually takes a few minutes.

This works with a server from any provider. There's no cloud account to link - just SSH access to a machine you already have. Region is detected automatically and isn't something you set yourself.

Managing Servers

Once connected, a server's card on My Servers shows its live status and memory/storage usage over 1h, 5h, 10h and 24h windows. From there you can:

  • Reboot it remotely - the panel polls until it's back online and restarts any database containers automatically.
  • Clean up orphaned containers - find and remove anything left behind by a failed build.
  • Disconnect it - tears down every database and email container it hosts, releases its Cloudflare domain back to your pool, and removes the monitor. The physical server itself is untouched.

Database Servers

Go to DB Servers in the sidebar, click + Add, and choose an engine (MySQL, PostgreSQL, or MongoDB). The form has two steps:

Step 1 - Server & version

  • Server - which of your connected servers to install it on.
  • Version - the engine version, e.g. 9.7.

Step 2 - Configuration

  • Port - defaults to 3306 for MySQL (range 1024-65535).
  • Memory Limit (MB) - 0 for unlimited, minimum 256 MB for MySQL.
  • DB Password - the root/admin password for the new instance.
  • Shared with Sites by default - a checkbox that auto-assigns this database server to matching new sites.
The Add MySQL Server form, showing Server, Version and Port fields

Click Add MySQL Server (or the equivalent for your chosen engine). From the resulting card you can rotate the password live, toggle remote access on or off, and open phpMyAdmin (MySQL) or Adminer (Postgres/Mongo) in one click - both include a built-in terminal straight into the container.

Email Servers

From Email Services, add a mail server and pick which connected MySQL server backs it. Choose which protocols to expose - sending, receiving, secure submission, and IMAP - each a simple toggle. A TLS certificate for the mail server is generated automatically at build time.

Webmail is a single RoundCube install per agency account; opening a mailbox from any of your mail servers signs the client into the right backend automatically.

Domains & Cloudflare

Connect a Cloudflare account once - by API token or the full OAuth flow. From there you can add a new domain or import a zone you already manage, add or edit any DNS record type (A, AAAA, CNAME, MX, TXT, NS, SRV, CAA), and set IP access rules to allow, block or challenge by IP, range or country.

A domain doesn't need a site ready for it right away - hold it in your domain pool and assign it whenever you are.

Custom Domain Routing

Any server with a gateway installed runs its own private Nginx reverse-proxy container. From Gateway, add a route sending a domain to a container, a local target, or a remote one, over HTTP, HTTPS, TCP or WebSocket - with a path prefix, custom headers, a host-header override, a redirect, or maintenance mode.

Traffic can be spread across more than one backend (round robin, least-connections, IP-hash, weighted, or random), with backups that only activate if the primary goes down. A migration tool moves a site still on its own published port over to gateway routing safely, with a reachability check and rollback.

Backups & Storage

From Cloud Storage, add a connection - SFTP, FTP, Backblaze, or Hetzner - with a host, port, username, password and, for object storage, a bucket. The connection is tested immediately. Point a client's plan at it, and backups start landing there automatically on the schedule the plan already defines.

Server Firewall

From Firewall, add a rule scoped to a server: allow or block, one or more ports, one or more IPs. It's applied immediately as a real iptables rule over SSH and persisted so it survives a reboot.

This is separate from Cloudflare's own IP access rules. This firewall runs on the server itself; Cloudflare's runs at its edge, before traffic ever reaches you.

Adding Clients

Go to Users in the sidebar, then click + Add User. The form has three steps:

Step 1 - Account details

  • Full Name - the client's name.
  • Email Address - where their verification email is sent.
  • Password - minimum 8 characters, stored encrypted.

Step 2 - Assigned plans

Tick one or more of your site plans, and set a Qty next to each - useful if a plan allows more than one unit per client.

Step 3 - Status

Set the account to Active or another status. New accounts are created with the "user" role, a verification email goes out automatically, and the client must verify it before they can log in.

The Add User form, showing Full Name, Email Address and Password fields

Click Add User. The panel places their sites on whichever of your servers currently has the most free capacity. You can resend their verification email or mark them verified yourself later from the same page. Removing a client is a soft delete - every real site, container and database they own is torn down properly, while their invoice history is kept for your own records.

Site Plans

Go to Site Plans in the sidebar, then click + Add Site Plan. The form has several short sections:

Plan details

  • Title - e.g. "Basic Plan".
  • No. Of Sites - how many sites a client on this plan may run.
  • No. Email Accounts - mailboxes included.

Resources & pricing

  • Memory Limit and Storage Limit (GB) - 0 means unlimited; once storage is exceeded, the site becomes read-only until it's freed up.
  • Max Database Size (GB) - 0 means unlimited; once exceeded, write access to the database is automatically revoked.
  • Price, Discounted Price and Discounted Price End At - a base price plus an optional time-limited discount.

Billing rules

  • Cancel Within Days, Trial Days, Payment Terms (Days) - how long a subscriber has to pay an invoice (0 falls back to 5 days).
  • Plan Type (Monthly), Backup Option, Status, and Max Manual Backups - 0 means unlimited manual backups (separate from the automatic schedule).

Options & allowed site types

Email Sending Enable and Staging Site Allowed are simple checkboxes. Under Allowed Site Types, tick which of WordPress, Laravel, PHP Site and Node.js a client on this plan is allowed to create.

The Add Site Plan form, showing Title, No. Of Sites and No. Email Accounts fields

Click Add Site Plan. None of these limits are cosmetic - periodic checks lock a site's files or revoke database privileges the moment a client goes over what their plan allows.

Payment Methods

From Billing > Payment Methods, connect a real way to collect payment from your clients instead of the honor-system default (where you mark invoices paid by hand). Three methods, each independent:

  • PayPal - Client ID and Secret from your own PayPal app, plus Sandbox or Live mode.
  • Stripe - your own Publishable Key and Secret Key.
  • Offline Payment - a title (e.g. "Bank Transfer") and an email address - a client uploads a receipt and reference instead of paying through a gateway.

Turn a method on and its fields appear; save just that one card without affecting the others. Once saved, a credential is shown masked - click Change to replace it, or leave it alone to keep what's already saved.

With at least one method enabled, your clients get a real checkout - at signup, when subscribing to a new plan, and when paying an invoice - instead of the free/instant flow. PayPal and Stripe activate automatically the moment payment completes; an Offline submission needs your review first, from the Pending Approvals tab on the same page - approve it to activate the subscription or mark the invoice paid, or reject it with a reason the client will see.

An admin can restrict which countries a given method is available to sellers in. If a method you'd expect to see isn't offered, that's most likely why - see Contact Us if you're unsure.

Invoices

From Invoices, generate invoices for a billing period across every active client plan at once, or handle one client's invoice from their own page. Mark invoices paid as payments arrive, and filter by paid, unpaid or overdue. Your own server costs are tracked as a separate set of invoices (Server Invoices), kept apart from client revenue.

Payments

Server Invoices are what you owe for hosting your own servers on the platform - billed to you the same way you bill your clients. If the platform has a payment method enabled, an unpaid Server Invoice gets a Pay Now button (on the invoice list, and again inside the invoice itself) offering whichever of PayPal, Stripe or Offline Payment are currently available.

PayPal and Stripe mark the invoice paid the moment payment completes. An Offline submission is reviewed by the platform before it's marked paid - you'll see its status update once that happens. Either way, a paid invoice shows exactly how it was paid and its transaction ID, right on the invoice itself.

Revenue Reports

From Revenues, see income by date, by client and by server - with each server's cost estimated from the monthly price you set when you added it, so you can see real profit per server, not just revenue. Defaults to the current month, with a custom range available.

Tickets & Live Chat

Tickets gives you one inbox spanning both your own account's tickets and every ticket raised by your subscribers. Live Chat is a real-time queue shared between you and your support team for talking to clients directly.

Support Team

Once you're past handling support yourself, add staff accounts from Support Team - scoped to tickets and chat, without full access to your servers or billing.

API Access

From API, generate a Bearer token - named, and optionally set to expire. Anything you'd normally do by hand (creating a subscriber, checking a site's status, triggering an SSO login) can be done through the same endpoints - this very site's own signup and login pages use exactly this API.