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 Setup Guide

Every step of the setup checklist you see after logging in to your agency panel, in the order to do them. Your clients can sign up and log in once every required step is complete.

Last updated: October 17, 2026

How the Checklist Works

When you log in to your agency panel, a setup checklist opens automatically, and a notice stays at the top of every page until the required steps are done. Click Open setup checklist on that notice any time to see where you are.

  • Progress updates automatically. Each step is checked against your real settings - there's nothing to tick by hand. Finish a step and the checklist reflects it on the next page you open.
  • Required steps gate your clients. Until every required step is complete, your client login page shows a "We're getting ready" message instead of the login and sign-up forms, and client logins are refused.
  • Optional steps never block anything. They're recommended extras you can add whenever you're ready.
Work through the required steps in order. Several depend on the one before: a server needs a domain from Cloudflare, a hosting plan needs a database server, and GitHub/Google sign-in use your panel domain in their callback URLs.

1. Add Your Full Billing Address

Your business details are used on the invoices and payments between you and the platform.

  1. Open My Account > Billing address (click your name at the top right, then Billing address).
  2. Fill in Phone, Address line 1, City, State, Postal code and Country - all six are required.
  3. Add a Company name and Address line 2 if they apply. The company name appears on your invoices.
  4. Click Save.

Done when: all six required fields are saved.

2. Brand Your Panel & Set Your Panel Domain

This turns the panel into your own product. Clients see your name, logo, colors and domain - on the dashboard, the login page, invoices and every email.

Branding

Open Agency Branding in the sidebar and set:

  • Sidebar Logo - PNG, JPG, GIF, WEBP or SVG.
  • Favicon - the browser tab icon (ICO, PNG, SVG, GIF, JPG or WEBP).
  • Panel Name - replaces "NextaPanel" in browser tab titles.
  • Login Page Background - the image behind your login and sign-up pages.
  • Home URL - your own website; the login page links back to it.
  • Brand Colors - primary, secondary and sidebar background. The live preview updates as you change them.

Panel domain

  1. Choose a subdomain of your own domain, for example panel.yourcompany.com, and enter it as the Panel Domain on the same page.
  2. In your domain's DNS, add a CNAME record for that subdomain pointing to panel.nextapanel.com.
  3. If the domain is on Cloudflare, keep the record DNS only (grey cloud), not proxied. The panel is a live dashboard; if a proxy caches its pages, you and your clients will see outdated data.
  4. Once DNS has updated (usually a few minutes), open your panel domain. You and your clients now use it for everything.
If the record must stay proxied, set Cloudflare's Caching > Configuration > Browser Cache TTL to Respect Existing Headers so it doesn't override the panel's no-cache headers.

Done when: your branding has been saved and a panel domain is set.

3. Connect Cloudflare

The panel uses your Cloudflare account to create DNS records, issue SSL and manage caching for your servers and your clients' domains.

  1. Add your main domain to Cloudflare and change its nameservers at your registrar to the two Cloudflare gives you. Wait until Cloudflare shows the domain as Active.
  2. In Cloudflare, open My Profile > API Tokens, click Create Token, then choose Create Custom Token at the bottom (not a template).
  3. Name it (for example "Panel - Agency") and under Permissions add each of these rows:
ScopeResourceAccess
ZoneDNSEdit
ZoneZoneRead
ZoneZone SettingsEdit
ZoneCache RulesEdit
ZoneCache PurgePurge
ZoneFirewall ServicesEdit
AccountZoneEdit
  1. Under Zone Resources choose Include > All zones from an account and pick your account, so domains you add later work without a new token. Under Account Resources choose Include > your account.
  2. Click Continue to summary, then Create Token, and copy it - Cloudflare shows it only once.
  3. In the panel, open Cloudflare, click Connect Cloudflare, paste the token and click Connect.
  4. Click Add Domain to add the domain you'll use for your servers.

Done when: your Cloudflare account is connected.

4. Add a Server

Servers are where your clients' sites run. You need at least one before clients can create a site.

Before you start

  • A VPS or dedicated server from any provider, running Ubuntu 22.04 or newer, freshly installed.
  • A public IPv4 address and root SSH access by password or SSH key.

Add it

  1. Open My Servers and click + New Server.
  2. Enter a Name, pick the Domain you added in Cloudflare, and set a Server Subdomain (for example s1). The panel creates the DNS records for it. Optionally enter the Server Price to track profit in Revenue Reports.
  3. Enter the SSH details: Host (IPv4), Port (usually 22), SSH User and either the password or the SSH key (plus its passphrase, if it has one).
  4. Leave Reserved for System (10%) and Per-Site Safety Buffer (1024 MB) at their defaults unless you have a reason to change them.
  5. Click Add Server.

The panel installs Docker, Nginx, monitoring and auto-healing over SSH. This takes several minutes and runs in the background - you'll get an email when it finishes.

Done when: the server shows as Active. For more, see Connecting a Server.

5. Install a Database Server

Client sites keep their databases here, and a hosting plan can't be created until an active database server exists.

  1. Open DB Servers.
  2. Click Add MySQL - WordPress and most PHP sites need it. Add PostgreSQL or MongoDB later only if clients ask for them.
  3. Pick the Server you just added and a Version.
  4. Keep the default Port (3306), set a Memory Limit (0 for unlimited, minimum 256 MB) and a strong DB Password.
  5. Leave Shared with Sites by default ticked so new sites use it automatically, then click Add MySQL Server.

Done when: the database server shows as Active. See Database Servers for managing it afterwards.

6. Create a Hosting Plan

Plans are what your clients subscribe to. They appear on your client sign-up page.

  1. Open Site Plans and click + Add Site Plan.
  2. Set a Title, the No. Of Sites and No. Email Accounts included.
  3. Set the Storage Limit. It covers everything in the package together - site files, system files, databases (staging included) and email. When it's full, the package's sites become read-only until space is freed.
  4. Set the Price, and optionally a discounted price, trial days and payment terms.
  5. Under Allowed Site Types, tick what clients may create: WordPress, Laravel, PHP Site, Node.js.
  6. Make sure Status is active, then click Add Site Plan.

Done when: at least one active plan exists. Every field is explained in Site Plans.

7. Enable a Payment Method

Lets clients pay for plans and invoices, with the money going straight to your own account.

  1. Open Payment methods (under Billing) and go to the Available tab.
  2. Turn on one or more methods and fill in their details:
    • Stripe - your Publishable key and Secret key, from the Stripe Dashboard under Developers > API keys.
    • PayPal - in the PayPal Developer Dashboard, open Apps & Credentials, click Create App, and copy the Client ID and Secret. Pick Live mode for real payments.
    • Offline Payment - a title (for example "Bank Transfer"), your account or bank details, optional instructions and a QR code, and an email address where payment receipts are sent.
  3. Set your billing currency on the same page and save each card.
Use live keys, not test keys, before taking real orders. Offline payments wait for your approval in the Pending Approvals tab.

Done when: at least one method is enabled. See Payment Methods for the full checkout flow.

8. Send Email From Your Own Address

Invoices, password resets and notices to your clients go out from your own address instead of the platform's.

  1. Open Email Settings.
  2. Enter your SMTP Host, Port (587 with TLS is typical), Encryption, SMTP Username and SMTP Password.
  3. Set the From Email (for example [email protected]) and From Name clients will see.
  4. Click Save changes, then use Send test email to confirm it works.
Use an address on your own domain with SPF and DKIM records in place - otherwise your emails are far more likely to land in spam. Any transactional email service (Amazon SES, Postmark, Mailgun, Brevo) or your own mail server works.

Done when: host, username and password are saved.

Optional: Install an Email Server

Only needed if you offer email hosting. It gives your clients mailboxes on their own domains, with forwarding, routing and mailing lists.

  1. You need an active MySQL database server first (step 5) - it stores the mail domains, mailboxes and aliases.
  2. Open Email Services and click Add Email Server.
  3. Pick the Server, choose the services to expose - sending, receiving, SMTP submission (587) and IMAP (143/993) - and select the MySQL Server.
  4. Click Add Email Server. Installation runs in the background; you'll get an email when it's done.
  5. Add the MX, A and SPF (TXT) records listed in that email - also under Email Services > DNS Records - so mail is delivered and accepted.

Done when: the email server is active.

Optional: Connect Backup Storage

Recommended if your plans include automatic backups. Off-server storage keeps your clients' backups safe if a hosting server fails.

  1. Open Cloud Storage and click Add Storage.
  2. Enter a Storage Name and choose the Storage Type: SFTP, FTP, Backblaze B2, Hetzner Storage Box, or Google Drive.
  3. For SFTP, FTP, Backblaze or Hetzner, fill in Host / Endpoint, Port (SFTP 22, FTP 21, Backblaze 443, Hetzner 23), Username and Password, plus the Bucket / Remote Path. For Backblaze, use the Application Key ID as the username and the Application Key as the password.
  4. For Google Drive, click Connect with Google Drive and approve access. You can give a Drive folder ID, or leave it empty to use the root.
  5. Optionally set Storage Space (GB).
  6. Under Servers backed up here, tick the servers whose sites should back up to this storage (servers without a storage yet are ticked for you), then click Add Storage. The connection is tested straight away.
Choose storage in a different location from your hosting servers, with room for your clients' backups to grow.

Done when: an active storage connection has at least one server ticked. Backups are only available on servers that have a backup storage.

Optional: Add an AI Agent to Live Chat

An AI assistant answers chats from your clients and your website visitors instantly, at any hour. It knows your plans, your payment methods and the client's own sites, tells people honestly when a human is needed, and your team can take over any conversation.

  1. Get an API key from one of the supported providers: Google Gemini (Google AI Studio), Anthropic Claude (Claude Console), OpenAI (OpenAI Platform), OpenRouter or OpenCode Zen.
  2. Open Live Chat and click Config AI Chat Agents.
  3. Connect the provider with your API key and choose a model. If you connect more than one, pick which is the default.
  4. Turn on Enable AI Chat Bot.

Done when: an AI account is connected and the chat bot is enabled.

Optional: Set Up GitHub Apps

Two separate GitHub OAuth Apps, each optional on its own:

  • Login app - shows "Log in with GitHub" on your client login page and lets clients connect GitHub to their account.
  • Push-to-deploy app - adds the GitHub menu and each site's Git tab, so clients can deploy a site straight from a repository. It asks for repository access, which is why it's a separate app.

Create each app

  1. Set your panel domain first (step 2) - the callback URLs are built from it.
  2. On GitHub go to Settings > Developer settings > OAuth Apps > New OAuth App. You can create it under an organization to keep it with your business.
  3. Enter an Application name your clients will recognize (they see it on GitHub's approval screen).
  4. Open Login & GitHub Apps in your panel and copy the Homepage URL and Authorization callback URL shown for that app into GitHub, exactly.
  5. Click Register application, then Generate a new client secret.
  6. Paste the Client ID and Client Secret into the matching section in the panel and save.

The callback URLs look like this, on your own panel domain:

Login app: https://panel.yourcompany.com/site/oauth/githubcallback Push-to-deploy app: https://panel.yourcompany.com/client/github/oauthCallback

Done when: both apps are saved. Either one works on its own.

Optional: Set Up Google Sign-in

Shows "Log in with Google" on your client login page and lets clients connect Google to their account.

  1. Set your panel domain first (step 2).
  2. In Google Cloud Console, create a project (or pick one) for your business.
  3. Open APIs & Services > OAuth consent screen. Choose External, then enter your app name, support email and logo - this is what clients see when they sign in. The scopes needed are only openid, email and profile.
  4. Open APIs & Services > Credentials > Create credentials > OAuth client ID and choose Web application.
  5. Under Authorized redirect URIs, add the URI shown on Login & GitHub Apps in your panel, exactly - for example https://panel.yourcompany.com/site/oauth/googlecallback.
  6. Click Create and paste the Client ID and Client Secret into the Google section in the panel.
  7. Back on the consent screen, click Publish app to move it out of Testing - otherwise only test users you've listed can sign in.

Done when: the Google client ID and secret are saved.

Need a Hand?

If a step won't complete, check the error shown in the panel first - most problems are a DNS record that hasn't updated yet or a credential copied with a stray space. Still stuck? Contact us and we'll help you finish setup.