# Activity
Source: https://docs.areawp.com/administration/overview
Platform-wide audit trail — every user action and system event logged with full attribution.
**Path:** Administration → Activity (`/activity`) — Admin only
The Activity page is the platform audit trail, showing every significant action taken by users and the system.
## What is Logged
### User Actions
| Category | Events |
| ------------------ | ----------------------------------------------------------------------------- |
| **Authentication** | Login, logout, failed logins, 2FA events, password resets |
| **Sites** | Site created, deleted, deployed, cloned, backed up, restored |
| **Users** | User created, deleted, role changed, impersonation sessions |
| **Billing** | Subscriptions created/updated/canceled, payments received, invoices generated |
| **Settings** | Any admin setting changed — records old and new value |
| **License** | Validation, suspension detected, key changed |
### System Events
| Category | Events |
| ---------------- | ----------------------------------------------------------- |
| **Backups** | Started, completed, failed |
| **Certificates** | SSL issued, renewed, failed |
| **Cron** | Jobs executed, succeeded, failed |
| **Agents** | Connected, disconnected, commands executed |
| **Security** | IP banned, login thresholds breached, firewall rule changes |
***
## Activity Feed
The page is rendered by the **ActivityTab** component, showing a real-time feed of events:
| Column | Description |
| -------------- | ----------------------------------------------- |
| **Time** | When the event occurred (relative and absolute) |
| **User** | Account that performed the action, or "System" |
| **Action** | What happened |
| **Resource** | What was affected (site name, user email, etc.) |
| **IP Address** | Origin IP address |
| **Details** | Expandable full event payload |
Click any row to expand the full details, including request parameters with sensitive values masked.
***
## Audit Trail Properties
* **Immutable** — entries cannot be edited or deleted from the UI
* **Complete** — every state-changing action is recorded
* **Timestamped** — all events use UTC timestamps
* **Attributed** — every action linked to a user account or the system process
* **Retained** — logs kept for 365 days by default (configurable in Settings)
***
## Common Investigation Queries
Use the built-in filters to narrow down activity:
```
Failed logins in last 24h → Action: auth.login.failed, Date: Last 24 hours
All actions by a user → User: user@example.com
Admin settings changes → Category: settings
Site deletions this month → Action: site.deleted, Date: This month
```
Set up Slack or email alerts in **Settings → Notifications** to be notified immediately when suspicious events occur — multiple failed logins, admin role changes, or site deletions.
# Payment Gateways
Source: https://docs.areawp.com/administration/payment-gateways
Configure Stripe, PayPal, Tap, and Bank Transfer to accept client payments and automate subscription renewals.
**Path:** Administration → Payment Gateways (`/payment-gateways`) — Admin only
The page shows four collapsible gateway cards. Enable any gateway by toggling it on and entering the required credentials, then click **Save**.
## Supported Gateways
| Gateway | Type | Auto-Renew |
| ----------------- | ----------------------------------- | ------------------ |
| **Stripe** | Online — card | ✅ Automatic |
| **PayPal** | Online — PayPal account | ✅ Automatic |
| **Tap** | Online — Middle East card processor | ✅ Automatic |
| **Bank Transfer** | Manual — wire transfer | ⚠️ Manual approval |
***
## Bank Transfer
Simple setup — no API key required.
1. Toggle **Enable Bank Transfer**
2. Paste your bank account instructions in the **Payment Instructions** textarea:
```
Bank: First National Bank
Account: Your Company Ltd
IBAN: GB00 XXXX 0000 0000 0000 00
BIC: XXXXXXXX
Reference: [Invoice Number]
```
3. Click **Save**
When a client chooses Bank Transfer at checkout, they see these instructions and their subscription stays **Pending** until you manually approve the transaction in **Administration → Transactions**.
***
## PayPal
| Field | Description |
| ----------------- | ------------------------------------------------ |
| **Webhook URL** | Auto-generated — copy to PayPal developer portal |
| **Sandbox Mode** | Toggle for testing |
| **Client ID** | From PayPal developer app |
| **Client Secret** | From PayPal developer app |
| **Webhook ID** | From PayPal webhook configuration |
***
## Stripe
| Field | Description |
| ------------------- | ---------------------------------------------------- |
| **Webhook URL** | Auto-generated — copy to Stripe dashboard |
| **Sandbox Mode** | Toggle test mode (uses `pk_test_` / `sk_test_` keys) |
| **Publishable Key** | `pk_live_...` from Stripe API keys |
| **Secret Key** | `sk_live_...` from Stripe API keys |
| **Webhook Secret** | Signing secret from Stripe webhook endpoint |
### Setting Up Stripe Webhooks
1. Copy the **Webhook URL** shown in the Stripe card
2. In the Stripe dashboard → **Developers → Webhooks → Add Endpoint**
3. Paste the URL and select events:
* `checkout.session.completed`
4. Copy the **Signing Secret** back into AreaWP
### Stripe Test Cards
| Card Number | Behavior |
| --------------------- | ------------------ |
| `4242 4242 4242 4242` | Always succeeds |
| `4000 0000 0000 0002` | Always declined |
| `4000 0025 0000 3155` | Requires 3D Secure |
***
## Tap
| Field | Description |
| --------------------- | ---------------------------- |
| **Merchant ID** | Your Tap merchant identifier |
| **Environment** | Test or Live toggle |
| **Public Key (Test)** | Test mode publishable key |
| **Secret Key (Test)** | Test mode secret key |
| **Public Key (Live)** | Live mode publishable key |
| **Secret Key (Live)** | Live mode secret key |
***
## Save
After configuring any gateway, click the **Save** button at the bottom of the page. All gateway settings are saved together in a single request.
You can enable multiple payment gateways simultaneously. Clients choose their preferred method at checkout.
# Pricing Plans
Source: https://docs.areawp.com/administration/pricing
Create and manage hosting plans that define features, resource limits, and pricing for your clients.
**Path:** Administration → Pricing Plans (`/pricing`) — Admin only
Pricing Plans define what clients get when they subscribe. The PricingPlansTab component handles the full plan management UI.
## What Plans Control
Monthly and yearly prices, trial period days
Max sites, databases, storage
Backups, staging, SSL, custom domains
***
## Plan Configuration
### Basic Information
| Field | Description |
| ------------------- | ----------------------------------------------- |
| **Name** | Plan display name (e.g. Starter, Pro, Business) |
| **Description** | Short description shown on the pricing page |
| **Price (monthly)** | Monthly billing price |
| **Price (yearly)** | Yearly billing price (typically \~16% discount) |
| **Trial Days** | Free trial period — `0` disables trial |
| **Featured** | Highlights this plan on the public pricing page |
| **Active** | Whether new subscribers can choose this plan |
### Resource Limits
| Limit | Description |
| --------------------- | ---------------------------------------- |
| **Max Sites** | Maximum deployable sites (0 = unlimited) |
| **Max Databases** | Across all sites |
| **Storage (GB)** | Total disk space |
| **Bandwidth (GB/mo)** | Monthly transfer limit (0 = unlimited) |
### Features
| Feature | Description |
| --------------------------- | ------------------------------------------ |
| **Manual Backup** | Allow clients to trigger backups on demand |
| **Automatic Backup** | Schedule: daily, weekly, or none |
| **Backup Retention (days)** | How long backup history is kept |
| **Staging Sites** | Allow creating staging copies |
| **Custom Domains** | Number of custom domains allowed |
| **Auto SSL** | Provision Let's Encrypt certificates |
| **Priority Support** | Flag for elevated support response time |
| **Template Access** | Which service templates clients can deploy |
***
## Plan Visibility States
| State | Description |
| ------------ | ---------------------------------------------------------- |
| **Active** | Available for new subscriptions |
| **Featured** | Highlighted on the pricing page |
| **Hidden** | Not shown to new users; existing subscribers keep the plan |
| **Archived** | Retired — no new subscriptions |
***
## Plan Changes Impact
| Change | Effect on Current Subscribers |
| --------------- | ---------------------------------- |
| Increase limits | Immediate — users gain access |
| Decrease limits | At next renewal — users notified |
| Price change | At next renewal — users notified |
| Feature removal | At next renewal — feature disabled |
Removing a feature from an active plan affects all current subscribers at their next renewal. Send advance notice before making breaking changes.
***
## Default Plan
Set a default plan that new registrations are automatically assigned to (without going through checkout) in **Settings → Billing → Default Plan**.
***
## Free Plan
Create a plan with price `$0` for limited-access or demo accounts. Pair with tight resource limits (1 site, 1 GB, no backups) to encourage upgrades.
# Settings
Source: https://docs.areawp.com/administration/settings
Platform-wide configuration hub with 17 categories — profile, security, appearance, white-label, email, integrations, licensing, and more.
**Path:** Administration → Settings (`/settings`) — Admin only
Settings uses a left sidebar navigation to switch between categories. Changes in most tabs take effect immediately on save.
## Settings Categories
| Category | What You Configure |
| ------------------ | ------------------------------------------------ |
| **Profile** | Account name, email, password |
| **Security** | 2FA, session timeout, login policy, allowed IPs |
| **Appearance** | Dashboard theme, colors |
| **Languages** | UI language, timezone, date format |
| **Sidebar** | Default sidebar preset for all users |
| **White Label** | Brand name, logo, favicon, primary color |
| **Notifications** | Email/Slack/webhook alert routing |
| **Site Settings** | Default domain, registration, platform mode |
| **Integrations** | Cloud provider API keys, third-party connections |
| **Email** | SMTP configuration and email templates |
| **Privacy / GDPR** | Cookie policy, data retention, privacy settings |
| **SSO** | OAuth/SAML single sign-on providers |
| **API** | API key management for external integrations |
| **Migration** | Import/export history and tools |
| **System Info** | Server specs, versions, environment details |
| **Licensing** | License key validation and status |
***
## White Label
Make the platform your own:
| Setting | Description |
| --------------------- | ------------------------------------------------------------- |
| **Brand Name** | Replaces "AreaWP" throughout the UI |
| **Logo (light mode)** | SVG or PNG, recommended 200×50px |
| **Logo (dark mode)** | Dark-mode variant |
| **Favicon** | 32×32 ICO or PNG |
| **Mode** | `Text only` — replace text; `Full logo` — replace logo + text |
| **Primary Color** | Main accent color (hex) |
| **Support URL** | Link shown in the sidebar support link |
| **Hide Version** | Remove version numbers from the footer |
***
## Email (SMTP)
| Field | Description |
| -------------- | ----------------------------- |
| **SMTP Host** | Mail server hostname |
| **SMTP Port** | 587 (STARTTLS) or 465 (SMTPS) |
| **Username** | SMTP auth username |
| **Password** | SMTP auth password |
| **From Email** | Sender address |
| **From Name** | Sender display name |
Click **Send Test Email** after saving to verify the configuration.
### Email Templates
Customize the content and branding of platform emails — welcome, verification, password reset, invoice, renewal reminder, payment failed, cancellation, backup complete/failed.
***
## Security
| Setting | Default |
| -------------------------- | ------------------ |
| **Enforce 2FA for Admins** | Off |
| **Session Timeout** | 120 minutes |
| **Max Login Attempts** | 5 |
| **Password Policy** | Medium |
| **API Rate Limit** | 100 req/min per IP |
| **Allowed IP Ranges** | Any |
***
## Licensing
| Field | Description |
| --------------- | ---------------------------------- |
| **License Key** | Your AreaWP license key |
| **Status** | Active / Suspended / Expired |
| **Domain** | Registered domain for this license |
| **Plan** | License tier |
| **Max Sites** | Site limit from your license |
| **Expires** | License expiry date |
Click **Validate License** to force a fresh check against the license server. Useful after purchase, renewal, or domain change.
License validation runs automatically every 6 hours. If the server is offline, the cached result is valid for up to 14 days.
***
## Integrations
Connect cloud providers to enable VPS provisioning from **Servers → Cloud**:
| Provider | Credential |
| ------------ | --------------------- |
| DigitalOcean | Personal Access Token |
| Hetzner | API Token |
| Vultr | API Key |
| Linode | Personal Access Token |
***
## SSO
Configure single sign-on for admin and user accounts:
* **OAuth providers** — GitHub, Google, Microsoft
* **SAML** — enterprise identity providers
Each provider requires a client ID, client secret, and callback URL configuration on the provider side.
# Subscriptions
Source: https://docs.areawp.com/administration/subscriptions
Full subscription lifecycle management — create, approve, extend, suspend, reject, and cancel client subscriptions.
**Path:** Administration → Subscriptions (`/subscriptions`) — Admin only
## Subscription List
The page shows all subscriptions with search and filter controls:
| Filter | Options |
| ------------------ | --------------------------------------- |
| **Search** | User name or email |
| **Status** | Active / Pending / Cancelled / Past Due |
| **Plan** | Filter by pricing plan |
| **Payment Method** | Stripe / PayPal / Tap / Bank Transfer |
**Table columns:**
| Column | Description |
| ----------- | ------------------------------------ |
| **User** | Client name and email |
| **Plan** | Pricing plan name and billing period |
| **Status** | Status badge |
| **Payment** | Payment method badge |
| **Started** | Subscription start date |
| **Expires** | Current period end date |
***
## Subscription Statuses
| Status | Description |
| ---------------- | --------------------------------------- |
| 🟢 **Active** | Paid and current |
| 🔵 **Pending** | Awaiting admin approval (Bank Transfer) |
| 🟡 **Past Due** | Payment failed — grace period |
| 🔴 **Cancelled** | Canceled by user or admin |
| ⚫ **Expired** | Period ended without renewal |
***
## Creating a Subscription
Click **Create Subscription** to open a 2-step modal:
1. **Select User** — search and pick the client account
2. **Choose Plan** — select pricing plan and billing period
***
## Managing a Subscription
Click any row to open the detail view. Available actions:
### Approve
For **Pending** subscriptions (Bank Transfer payments waiting for manual confirmation). Clicking **Approve** activates the subscription immediately.
### Reject
Reject a pending subscription with a mandatory reason field. The user is notified.
### Extend
Add days to the current billing period without charging:
* Input number of days to add
* Optional reason field (shown in the user's billing history)
Useful for compensating for outages or providing goodwill extensions.
### Change Status
Manually set the subscription status (active, suspended, cancelled, etc.) with a reason.
### Delete
Permanently remove the subscription record. Use with caution — this removes billing history.
***
## Modals Summary
| Modal | Purpose |
| ----------------------- | --------------------------------- |
| **Create Subscription** | 2-step: select user → choose plan |
| **Extend** | Add days + reason |
| **Delete Confirmation** | Confirm permanent deletion |
| **Status Change** | Set status manually |
| **Reject** | Reject with reason |
***
## Bulk Operations
Select multiple subscriptions from the list for bulk actions:
* Send renewal reminder emails
* Suspend multiple accounts
* Export as CSV for accounting
# Transactions
Source: https://docs.areawp.com/administration/transactions
Complete payment history — view, approve, decline, and refund transactions across all payment methods.
**Path:** Administration → Transactions (`/transactions`) — Admin only
## Transactions List
Search and filter all payment events:
| Filter | Options |
| -------------- | --------------------------------------- |
| **Search** | User name, email, or transaction ID |
| **Status** | Completed / Pending / Failed / Refunded |
| **Date Range** | Custom from/to date pickers |
**Table columns:**
| Column | Description |
| ------------------ | --------------------------------------------- |
| **Transaction ID** | Unique identifier |
| **User** | Client avatar, name |
| **Amount** | Formatted charge amount with currency |
| **Type** | Payment / Renewal / Refund badge |
| **Status** | Completed / Pending / Failed / Refunded badge |
| **Method** | Stripe / PayPal / Tap / Bank Transfer badge |
| **Date** | Transaction timestamp |
***
## Transaction Statuses
| Status | Meaning |
| --------------- | --------------------------------------- |
| ✅ **Completed** | Payment received and confirmed |
| ⏳ **Pending** | Awaiting payment or manual confirmation |
| ❌ **Failed** | Payment attempt rejected |
| 🔄 **Refunded** | Full or partial refund issued |
***
## Transaction Actions
### View Details
Click any row to see the full transaction record including line items and any notes.
### Approve
For **Pending** transactions (typically Bank Transfer payments waiting for manual confirmation). Marks the transaction as completed and activates the associated subscription.
### Decline
Decline a pending transaction with a required reason field. The reason is stored on the transaction and visible in the user's billing history.
### Refund
For **Completed** Stripe transactions:
1. Click the transaction row
2. Click **Refund**
3. Confirm in the refund modal — the full amount is refunded via Stripe API
Refunds appear on the client's statement within 5–10 business days.
### Delete
Permanently remove a transaction record. Admin only. Opens a confirmation modal.
***
## Modals
| Modal | Trigger |
| ----------------------- | ------------------------------------------------------- |
| **Decline** | Reject a pending transaction — requires reason textarea |
| **Refund Confirmation** | Confirm Stripe refund |
| **Delete Confirmation** | Confirm permanent deletion |
***
## Exporting Transactions
Use the **Search** and **Date Range** filters to narrow down the dataset, then export as **CSV** for reconciliation with your accounting software or bank statement.
# Users
Source: https://docs.areawp.com/administration/users
Create and manage all user accounts, roles, subscriptions, activity, and security settings.
**Path:** Administration → Users (`/users`) — Admin only
## User Roles
| Role | Access |
| --------- | ----------------------------------------------------- |
| **Admin** | Full platform access — servers, settings, all clients |
| **User** | Client access — own sites, billing, and support only |
***
## User List
The Users page is rendered by **UsersTab** which shows all accounts with the ability to search, filter, and manage them.
**Per-user quick actions:**
* View full profile
* Reset password
* Impersonate (log in as that user)
* Change role
* Suspend / Activate
* Delete
***
## User Detail Page
Click any user to open their full profile with these sections:
Name, email, phone, address, timezone. Admins can update any field.
All sites owned by this user. Admins can link/unlink sites and transfer ownership.
Current plan, status, billing period, and expiry. Admins can manually change the plan, extend the period, or cancel.
Full payment history — invoice numbers, amounts, and payment methods.
Recent actions taken by this user on the platform.
Reset password, revoke all sessions, enable/disable 2FA, view login history and IP addresses.
***
## Creating a User
### Admin-Created Account
From the Users page, click **New User**:
1. Enter name, email, and role (Admin or User)
2. Set a password or trigger a password reset email
3. Optionally assign a subscription plan immediately
4. Click **Create**
### Invitation
Click **Invite User**, enter the email address, set the intended role, and optionally pre-assign a pricing plan. The user receives an email with a time-limited registration link.
### Self-Service Registration
If public registration is enabled in **Settings → General**, users sign up at `/register`.
***
## User Actions
| Action | Description |
| ------------------ | ---------------------------------------------------------------- |
| **Suspend** | Block login — data and sites preserved |
| **Activate** | Re-enable a suspended account |
| **Impersonate** | Log in as the user to troubleshoot (logged in the Activity feed) |
| **Reset Password** | Send a password reset email |
| **Change Role** | Promote to admin or demote to user |
| **Assign Plan** | Manually set or change the pricing plan |
| **Delete** | Permanently remove the account |
***
## Two-Factor Authentication
Admins can see each user's 2FA status and reset it if they lose access to their authenticator app:
1. Open the user detail → **Security** tab
2. Click **Reset 2FA** — disables 2FA and forces re-enrollment on next login
Enable "Enforce 2FA for Admins" in **Settings → Security** to require all admin accounts to use 2FA.
# Introduction
Source: https://docs.areawp.com/index
AreaWP — a modern server control panel for managing websites, Docker containers, databases, and security on VPS and dedicated servers.
**AreaWP** is a server control panel for developers, agencies, and hosting providers. Manage WordPress sites, Docker apps, databases, billing, and clients — all from one dashboard. Available as a **self-hosted** installation on your own server, or as a fully **managed hosted** solution where the AreaWP team handles the infrastructure for you.
## What AreaWP Does
AreaWP runs on your Linux server and connects to remote servers via a lightweight agent. From the dashboard you can deploy apps, manage databases, configure firewalls, handle client subscriptions, and monitor everything in real time.
Connect unlimited servers and manage them all from one panel
Deploy WordPress sites and containerized apps in seconds
Stripe, PayPal, Tap, and Bank Transfer with full subscription management
***
## Platform Modes
**Sell hosting as a service**
Clients sign up, choose a plan, and manage their own sites through a self-service portal.
* ✅ Client self-service portal and billing dashboard
* ✅ Pricing plans with resource limits (sites, storage, backups)
* ✅ Stripe, PayPal, Tap, and Bank Transfer
* ✅ White-label branding (logo, colors, brand name)
* ✅ Built-in support ticket system
**WordPress as a Service**
Everything in SaaS, optimized for WordPress hosting at scale with a client-facing marketplace.
* ✅ Plugin and theme marketplace with licensing
* ✅ Bulk WordPress management across all client sites
* ✅ Site templates for one-click WordPress deployments
* ✅ Gitea-powered CI/CD pipeline
***
## Core Features
Deploy the AreaWP binary agent on any Linux server and manage your entire fleet from one dashboard. Monitor health with heatmaps, compare metrics, detect anomalies, forecast capacity, and run staged or canary upgrades. **Available on the Hosted plan only.**
Deploy WordPress sites from templates with domain validation, auto-SSL, and isolated Docker containers. Manage sites in a grid or table view, with direct WP Admin auto-login links.
Full Docker lifecycle: start/stop containers, tail logs, open an in-browser terminal, manage Compose stacks, images, volumes, and networks. Live CPU and RAM per container.
Create MySQL, PostgreSQL, and SQLite databases. Browse tables, run SQL queries, manage users and privileges, and create or restore backups — all from the browser.
UFW firewall, fail2ban, SSH keys, IP lists, malware scanner, file integrity monitor, vulnerability scanner, and security audit — across 13 dedicated tabs.
Full billing: pricing plans, client subscriptions, invoices, and 4 payment gateways. Admins approve or reject payments; clients renew or cancel from their Billing page.
Built-in Gitea server. Browse repositories, configure webhooks, trigger deployments with pre/post-deploy scripts, and roll back from full deployment logs.
Manage Postfix, Dovecot, OpenDKIM, SpamAssassin, and Roundcube webmail. Add domains, create accounts, configure aliases, forwarding rules, and DNS records (DKIM/SPF/DMARC).
***
## Architecture
| Component | Stack | Role |
| --------- | -------------------- | -------------------------------------------------------- |
| **Panel** | Flask + React (Vite) | Dashboard, API, billing, user management |
| **Agent** | Go binary | Installed per server, executes commands, streams metrics |
```
Browser → Nginx (80/443) → Flask API (5000)
↕ WebSocket
Agent on managed Server 1
Agent on managed Server 2
```
***
## Getting Started
Review server prerequisites before installing.
[Requirements →](/requirements)
Run the one-line installer on your Linux VPS.
[Installation →](/installation)
Connect your first server and deploy your first site in under 10 minutes.
[Quick Start →](/quick-start)
Configure pricing plans and payment gateways to onboard clients.
[Payment Gateways →](/administration/payment-gateways)
***
Server and software prerequisites
Step-by-step install guide
Learn the dashboard layout
Contact the support team
# Databases
Source: https://docs.areawp.com/infrastructure/databases
Create and manage MySQL, PostgreSQL, and SQLite databases with a built-in query runner, table browser, user management, and backups.
**Path:** Databases (`/databases`) — Admin only
Manage databases across your connected servers — organized by engine type across four tabs.
## MySQL & PostgreSQL Tabs
Both tabs follow the same layout.
### Databases View
Lists all databases on the server with name, size, and type. Three actions per database:
| Action | Description |
| --------------- | --------------------------------- |
| **View Tables** | Opens the Database Explorer modal |
| **Backup** | Creates a dump of the database |
| **Drop** | Permanently deletes the database |
### Users View
Switch to the Users view (toggle button next to the Databases button) to see all database users with their username and host. Drop any user with the **Drop** action.
### Creating a Database
Click **Create Database** to open the creation modal:
| Field | Options |
| ------------- | ---------------------------------------- |
| Database name | Lowercase alphanumeric |
| Charset | utf8mb4 (default), latin1, etc. |
| Collation | utf8mb4\_unicode\_ci (default) |
| Create user | Checkbox — auto-creates a dedicated user |
| Password | Auto-generated or manual |
| Field | Options |
| ------------- | ---------------------------------------- |
| Database name | Lowercase alphanumeric |
| Encoding | UTF8 (default), LATIN1, SQL\_ASCII |
| Create user | Checkbox — auto-creates a dedicated user |
| Password | Auto-generated or manual |
***
## Database Explorer
The explorer opens as a modal when you click **View Tables** on any database.
Searchable list of all tables with row counts. Click any table to load its schema and data.
Run any SQL query directly — supports Ctrl+Enter. Results appear in the table below.
### Columns View
Shows each column's name, data type, and constraint badges:
* **PK** — Primary Key
* **NN** — Not Null
### Data View
Editable table showing the rows in the selected table. Admins can edit cell values inline and delete rows. A separate **Edit** modal provides a form view for all columns of a selected row.
***
## Docker Apps Tab
Lists Docker apps that have an associated database. Shows the app status and port, and provides a **View Databases** button that opens a modal with the database connection string.
***
## Backups Tab
Backup list for all databases. Filter by type (All / MySQL / PostgreSQL).
| Column | Description |
| ------------ | ------------------------- |
| **Database** | Database name |
| **Filename** | Backup file name |
| **Size** | File size |
| **Created** | Backup timestamp |
| **Type** | MySQL or PostgreSQL badge |
Delete any backup from the list.
***
## SQLite Tab
Scans the server filesystem for SQLite database files. Shows the database name, file path, and size. Click **Tables** to browse the schema and data using the same Explorer interface.
***
## Creating a Database User
From the Users view, click **Create User** to add a new user:
* **MySQL:** username, password (with auto-generate), host (`localhost` / `%` / `127.0.0.1`), and optional grant to an existing database
* **PostgreSQL:** username, password, and optional grant to an existing database
# Docker
Source: https://docs.areawp.com/infrastructure/docker
Manage containers, images, volumes, networks, and Compose stacks across all connected servers.
**Path:** Docker (`/docker`) — Admin only
Full Docker lifecycle management across your server fleet. Select a server from the dropdown to switch context.
## Stats Overview
Four cards at the top update in real time for the selected server:
| Card | Shows |
| -------------- | -------------------------------- |
| **Containers** | Total / running / stopped counts |
| **Images** | Total count and disk usage |
| **Volumes** | Total count |
| **Networks** | Total count |
***
## Containers Tab
The containers list shows every Docker container on the selected server.
| Column | Description |
| ------------- | --------------------------------- |
| **Name / ID** | Container name and short image ID |
| **Image** | Image repository and tag |
| **Status** | Running or Exited pill |
| **Ports** | Host-to-container port bindings |
| **CPU %** | Live CPU usage bar |
| **RAM %** | Live memory usage bar |
### Container Actions
| Action | Available When |
| ------------ | ------------------------------------------------ |
| **Logs** | Always — opens log viewer |
| **Terminal** | Running containers only — opens in-browser shell |
| **Restart** | Running containers |
| **Stop** | Running containers |
| **Start** | Stopped containers |
| **Delete** | Stopped containers |
Use the **Show Stopped** toggle to include exited containers in the list.
### Run a New Container
Click **Run Container** to launch the creation modal:
| Field | Description |
| ------------------ | ------------------------------------------ |
| **Image** | Docker image and tag (e.g. `nginx:latest`) |
| **Name** | Container name |
| **Ports** | Host:container port mappings |
| **Volumes** | Host:container volume mounts |
| **Environment** | Key=value environment variables |
| **Restart Policy** | always / unless-stopped / on-failure |
### Container Logs
Tail options: 50 / 100 / 200 / 500 / 1000 lines. Log output updates in real time.
### Container Terminal
Full interactive shell inside the container with command history (arrow keys supported).
***
## Images Tab
| Column | Description |
| -------------- | --------------- |
| **Repository** | Image name |
| **Tag** | Version tag |
| **Image ID** | Short hash |
| **Size** | Disk space used |
| **Created** | Pull/build date |
Actions: **Delete** (removes image from the server). Pull a new image with the **Pull Image** button.
***
## Networks Tab
All Docker networks with Name, ID, Driver, and Scope. Delete button is disabled for built-in system networks (`bridge`, `host`, `none`).
Create a custom network with the **Create Network** button — choose bridge, overlay, or macvlan driver.
***
## Volumes Tab
Named volumes with Name, Driver, and Mount Point. Delete any unused volume (data is permanently lost — no recovery).
***
## Compose Tab
Manage Docker Compose projects as a unit.
| Column | Description |
| ---------------- | ---------------------------- |
| **Project Name** | Compose project name |
| **Status** | Running with container count |
| **Config File** | Path to docker-compose.yml |
**Actions:** View logs, restart/start, stop, pull latest images.
**Compose logs** support service filtering and tail line options.
# Domains
Source: https://docs.areawp.com/infrastructure/domains
Manage local app domains, SSL certificates, DNS zones, and domain registrations — including Dynadot integration.
**Path:** Domains (`/domains`)
The Domains section manages two types of domains: local domains attached to your apps, and registered domains synced from your domain registrar (Dynadot integration). Sub-pages: DNS Zones (`/dns`) and SSL Certificates (`/ssl`).
## Domains List
The main page shows all domains in two groups:
### Local Domains
Domains added to deployed applications on your servers.
| Column | Description |
| ----------------- | ------------------------------------------------------------ |
| **Domain** | Domain name with Primary badge if it's the app's main domain |
| **Connected App** | Which application this domain serves |
| **SSL Status** | Active or inactive indicator |
**Actions per domain:**
* **Visit** — open in a new tab
* **Verify DNS** — check DNS propagation
* **Enable SSL** — provision a certificate (opens SSL modal with email input)
* **Renew SSL** — force certificate renewal
* **Delete** — remove domain from the app
### Registered Domains (Dynadot)
Domains registered through the Dynadot integration, synced from your registrar account.
| Column | Description |
| -------------------- | ----------------------------------------- |
| **Domain** | Domain name with "Dynadot" provider badge |
| **Lifecycle Status** | Active, pending, expired, etc. |
| **Expiration Date** | Registration expiry |
| **Auto-Renew** | Status indicator |
**Actions:** Manage (opens detail modal), Renew, Delete.
### Domain Detail Modal
Full registration details: registration date, expiration, auto-renew toggle, lifecycle status. Edit nameservers and DNS records directly from this modal.
***
## Registering a New Domain
Click **Register Domain** (admin, requires Dynadot configured in Settings) to search for available domains:
1. Enter the domain name to search
2. See availability results with pricing for `.com`, `.net`, `.io`, etc.
3. View alternative suggestions
4. Click **Register** to purchase
### SSL Alerts
If **Certbot** is not installed on the server, a warning banner appears at the top. The page also shows a count of active certificates.
***
## DNS Zones
**Path:** `/dns`
Two-panel layout for managing DNS zones.
### Left Panel — Zones List
All configured DNS zones, each showing the domain, DNS provider, and record count. A **Check** button triggers a propagation status check.
**Creating a Zone:** Click the **+** button and choose a provider:
| Provider | Required Fields |
| ---------------- | --------------------------------------- |
| **Manual** | Domain name only |
| **Cloudflare** | Zone ID, API Token |
| **Route53** | Zone ID, Access Key, Secret Key, Region |
| **DigitalOcean** | Zone ID, API Token |
### Right Panel — Records
Select a zone to see its DNS records.
| Column | Description |
| ------------ | --------------------------------------------- |
| **Type** | A, AAAA, CNAME, MX, TXT, SRV, CAA, NS (badge) |
| **Name** | Record name |
| **Value** | Record content (monospace) |
| **TTL** | Time to live in seconds |
| **Priority** | For MX and SRV records |
**Add a record** from the panel. **Export** exports the full zone file.
### DNS Propagation Check
Click **Check** on any zone to see which nameservers have propagated the records — shows each nameserver with a status dot and the IP it returns.
***
## SSL Certificates
**Path:** `/ssl`
All SSL certificates on the server with live expiry status.
| Column | Description |
| ------------------ | ------------------------------------------------- |
| **Domain** | Domain name |
| **Type** | Panel (self-signed), acme.sh, or Custom |
| **Auto-Renew** | Badge indicating auto-renewal is active |
| **Expiry** | Expiry date with color coding |
| **Days Remaining** | Red (under 7), orange (under 30), green (over 30) |
**Actions per certificate:**
* **Force Renew** — trigger immediate renewal
* **Re-provision** — recreate the certificate from scratch (not available for Panel type)
### Expiry Alert
A banner at the top of the page lists any domain expiring within 30 days.
# Git
Source: https://docs.areawp.com/infrastructure/git
Built-in Gitea server — browse repositories, manage webhooks, trigger deployments, and view full deployment logs.
**Path:** Git (`/git`) — Admin only
AreaWP includes a built-in Gitea Git server. Install it once on your server, then manage repositories, webhooks, and deployments from the panel.
## Installation
If Gitea is not installed, the page shows an empty state with resource requirements. Click **Install** to open the setup modal:
* Set the Gitea admin username and password
* AreaWP installs and configures Gitea as a system service
**Header actions after install:** Open Gitea (external link), Start, Stop.
***
## Status Cards
Once installed, four cards show the current state:
| Card | Shows |
| ----------------- | ------------------------------ |
| **Server Status** | Running / stopped with version |
| **URL Path** | HTTP access URL |
| **SSH Port** | Git-over-SSH port |
| **Version** | Installed Gitea version |
***
## Tabs
### Overview
Server info panel with HTTP and SSH access URLs (with copy buttons) and quick-action shortcuts.
### Repositories
Two modes:
**Repository List** — all repositories with owner, name, forks, stars, and description.
**Repository Detail** (click any repo) — full file browser:
* Folder and file navigation with sizes
* **Commits** tab — commit log with author, date, and message
* **Branches** tab — all branches with switch button
### Access
HTTP and SSH access configuration for this Gitea instance, with copy buttons for each URL format.
### Webhooks
All configured deployment webhooks:
| Column | Description |
| ------------- | --------------------------- |
| **Name** | Webhook display name |
| **Source** | Repository URL and branch |
| **URL** | Deployment target URL |
| **Last Sync** | Most recent webhook trigger |
**Add Webhook** button opens a full configuration modal:
* Name, source repo URL, branch to watch
* Deployment settings (target server, path)
* Pre-deploy and post-deploy shell scripts
* Secret token for webhook verification
**Actions per webhook:** Test, Toggle (enable/disable), Delete.
### Deployments
Full deployment history across all webhooks:
| Column | Description |
| ------------- | ------------------------------------ |
| **Status** | Success / Failed / In Progress badge |
| **Commit** | Short hash and message |
| **Branch** | Source branch |
| **Duration** | How long the deployment took |
| **Triggered** | Timestamp |
Click **View Logs** to open the deployment log modal showing pre-deploy, deploy, and post-deploy output separately. Click **Rollback** to redeploy a previous successful run.
### Settings
Start, stop, and uninstall Gitea from the panel. Uninstalling removes the service but preserves repository data.
***
## Webhook Configuration
A webhook fires on every push to the configured branch. The deployment process:
1. **Pre-deploy script** — runs before files are updated (e.g. put site in maintenance mode)
2. **Deploy** — pulls the latest commit to the target path
3. **Post-deploy script** — runs after update (e.g. `php artisan migrate`, `wp cache flush`)
If any step fails, the deployment is marked as Failed and subsequent steps are skipped.
# Servers
Source: https://docs.areawp.com/infrastructure/servers
Manage your entire server fleet — connect agents, monitor health, provision cloud servers, and apply configuration templates.
Multi-server management via the binary agent is **exclusively available on the Hosted plan**. On the self-hosted version, AreaWP manages the single server it is installed on — the Agent Fleet, Fleet Monitor, Cloud Servers, and Server Templates features are not available.
**Path:** Servers (`/servers`) — Admin only
The Servers section is the hub for multi-server management. It contains four sub-sections: Agent Fleet, Fleet Monitor, Cloud Servers, and Server Templates.
Register and manage all connected servers
Real-time metrics heatmap and alerts across all servers
Provision new VPS instances on cloud providers
Define and enforce server configurations fleet-wide
***
## Agent Fleet
**Path:** `/fleet`
### Fleet Health Summary
Four stat cards at a glance:
| Card | Shows |
| ---------------- | ---------------------------------------- |
| **Total Agents** | All registered servers |
| **Online** | Currently connected agents |
| **Offline** | Unreachable agents |
| **Success Rate** | Percentage of agents responding normally |
Below the cards: uptime %, heartbeat latency, and queued command count. A **Version Distribution** card shows what percentage of your fleet is on each agent version.
### Fleet Tabs
Health overview with uptime graphs, latency metrics, and version distribution across the fleet.
All agent versions in the fleet — version number, release channel, published date, compatibility status, edit/delete actions.
Trigger fleet-wide agent upgrades. Choose a strategy:
* **All at once** — upgrade all agents simultaneously
* **Staged** — upgrade in batches with configurable delay
* **Canary** — upgrade a small percentage first, then roll out
Monitor rollout progress (processed / total / failed) and cancel any in-progress rollout.
Commands queued for offline agents. Retry any queued command manually.
Scan the local network for new agents. Discovered servers appear as cards with hostname, IP, OS, and version. Add to the fleet with one click.
Approve or reject pending agent registration requests.
### Connecting a New Server
```bash theme={null}
curl -fsSL https://your-panel.com/install.sh | sudo bash -s -- \
--token "sk_reg_YOUR_TOKEN" \
--server "https://your-panel.com"
```
The agent installs as a systemd service, connects via WebSocket, and appears in the **Approvals** tab (or the fleet list directly if auto-approve is on).
Click any agent to open the diagnostics modal — connection status, latency, command stats, recent sessions.
***
## Fleet Monitor
**Path:** `/fleet-monitor`
Real-time monitoring across all connected servers simultaneously.
| Tab | Content |
| ------------------------ | --------------------------------------------------------------------------- |
| **Overview** | Color-coded heatmap — CPU, memory, disk, container count, status per server |
| **Comparison** | Select servers + metric + period → area chart with CSV export |
| **Alerts** | Active/acknowledged/resolved alerts + threshold configuration |
| **Anomalies & Forecast** | Z-score anomaly detection; capacity forecasting to 90%/100% |
| **Fleet Search** | Search across servers, containers, and tags |
### Heatmap Color Scale
| Color | Usage |
| --------- | ------- |
| 🟢 Green | 0–50% |
| 🟡 Yellow | 50–75% |
| 🟠 Orange | 75–90% |
| 🔴 Red | 90–100% |
***
## Cloud Servers
**Path:** `/cloud`
Provision cloud VPS instances directly from AreaWP (requires provider API key in Settings):
* DigitalOcean, Hetzner, Vultr, Linode
After provisioning, the agent is automatically installed on the new server.
***
## Server Templates
**Path:** `/server-templates`
Define configuration templates and enforce them fleet-wide.
### Compliance Bar
Shows at the top of the Templates page:
* ✅ **Compliant** — servers matching the template
* ⚠️ **Drifted** — servers that have diverged from the template
* ❓ **Unknown** — servers not yet checked
Enable **auto-remediate** on a template to re-apply it automatically when drift is detected.
### Template Library
Pre-built templates (LEMP stack, WordPress server, Docker host, etc.) in the **Library** tab. Click **Use** to create a customizable copy.
# Services & Templates
Source: https://docs.areawp.com/infrastructure/services
Browse and deploy application templates — the self-service catalog for client WordPress and app deployments.
**Path:** Services (`/services`) → Templates (`/templates`) — Admin only; visible to users in SaaS/WaaS mode based on plan
Services is the catalog of deployable application templates. In WaaS mode, it also powers the client-facing marketplace.
## Template Catalog
The Templates page shows all available app templates as a browsable grid. Each template card displays:
* Screenshot or icon
* Type and category badges
* Name and author
* Short description
* Version
* Price (free or paid)
* **Install** / **Buy** / **Renew** button
### Template Categories
Filter templates by type:
Pre-configured WordPress with plugins, themes, and starter content
WooCommerce or similar stacks ready to deploy
Laravel, Symfony, or plain PHP apps
HTML/CSS/JS sites served via Nginx
***
## Browse vs. Installed Tabs
**Browse** — full template catalog with search and category filter.
**Installed** — two sections:
* **Pending** — extensions awaiting approval with their approval status
* **Active** — installed extensions showing price, renewal type, expiry date, and action buttons
***
## Installing a Template
1. Find the template in the Browse tab
2. Click **Install** (free) or **Buy** (paid)
3. For paid templates, a **Payment Modal** opens — select payment method and (if it's a WordPress plugin/theme) the target site
4. After payment, the extension appears in the **Installed** tab
***
## Managing Installed Templates
From the **Installed** tab:
| Action | Description |
| ----------------------- | ----------------------------------------------- |
| **Reinstall** | Re-install a free extension |
| **Uninstall** | Remove the extension |
| **Renew** | Renew a subscription-based extension |
| **Cancel subscription** | Stop monthly billing (revocable before renewal) |
***
## Admin — Submitting a Template
Admins can add custom templates to the catalog:
1. Click **Submit Plugin/Theme** (top right)
2. Fill in name, description, category, version, price
3. Upload the ZIP file
4. Set visibility (public / private)
5. Submit — the template appears in the Browse tab immediately
Use **Edit** and **Delete** to update or remove your custom templates.
***
## Platform Mode Notes
Templates visible to users are controlled per pricing plan. Admins can restrict which templates each plan can access under **Administration → Pricing Plans → Features**.
The full template marketplace is available to clients. They deploy templates directly from their portal as part of their subscription.
# WordPress
Source: https://docs.areawp.com/infrastructure/wordpress
Deploy and manage WordPress sites — grid or table view, one-click WP Admin login, domain validation, and site templates.
**Path:** WordPress (`/wordpress`)
The WordPress page lists all deployed sites and is the starting point for creating new ones. Sub-section: WP Pipeline (`/wordpress/projects`) — available when a Git integration is configured.
## Site List
Sites are displayed in your choice of layout:
Cards showing site name, URL, a color-coded status dot, WordPress version, environment count, and (for admins) the owning user. Quick-access buttons: **Visit Site** and **WordPress Admin**.
Same data in rows — useful for scanning many sites. Columns: Name, Domain, Status, WP Version, Environments, Owner (admin), Actions.
### Status Indicator
| Status | Meaning |
| ---------- | ------------------------------------ |
| 🟢 Running | Container is up and serving requests |
| 🔴 Stopped | Container is stopped |
***
## Creating a Site
Click the **Create Site** button to open the creation modal.
| Field | Description |
| --------------- | ------------------------------------------------------ |
| **Site Name** | Display name for the site |
| **Domain** | Primary domain — checked for availability in real time |
| **Admin Email** | WordPress admin account email |
| **User** | Assign the site to a specific client (admin only) |
### Domain Validation
As you type the domain, AreaWP checks availability and shows:
* 🔄 Checking...
* ✅ Available
* ❌ Already taken
* ⚠️ Invalid format
If a default domain is configured, a subdomain is auto-suggested based on the site name.
### License & Plan Checks
If the user has no active subscription, has reached their plan's site limit, or there's a license issue, a contextual alert appears before the creation form — with a direct link to fix the underlying problem.
***
## Site Actions
From the grid or table, each site has two quick-action buttons:
| Button | Action |
| ------------------- | -------------------------------------------------------------------------- |
| **Visit Site** | Opens the live domain in a new tab |
| **WordPress Admin** | Opens the WP Admin dashboard with auto-login (disabled if site is stopped) |
***
## WP Pipeline
**Path:** `/wordpress/projects`
WP Pipeline is available when the built-in Gitea integration is configured (see [Git](/infrastructure/git)).
The WP Pipeline provides a Git-based deployment workflow for WordPress projects:
* Connect a repository to a WordPress site
* Define environments (staging, production)
* Push to a branch to trigger an automatic deployment
* Configure pre and post-deploy hooks (WP-CLI commands, cache flush, etc.)
* View deployment history and roll back with one click
# Workflow Builder
Source: https://docs.areawp.com/infrastructure/workflow
Visual node-based automation builder — automate deployments, scripts, notifications, and conditional logic without code.
**Path:** Workflow (`/workflow`) — Admin only
The Workflow Builder is a visual drag-and-drop automation tool built on React Flow. Create, save, and execute workflows that chain triggers, scripts, notifications, and conditional logic.
## Toolbar
At the top of the builder:
| Control | Description |
| -------------------- | ---------------------------------------------- |
| **Workflow name** | Editable input for the current workflow |
| **Saved View** badge | Appears when the workflow has been saved |
| **New** | Start a blank workflow |
| **Load** | Open a previously saved workflow |
| **Execute** | Run the workflow (disabled if unsaved) |
| **History** | View execution history |
| **Save** | Save the current workflow with status feedback |
***
## Node Palette
The left sidebar contains draggable nodes organized into three sections:
### Triggers
Start a workflow in response to an event:
| Node | Description |
| ------------------- | --------------------------------------------------------------- |
| **Manual Trigger** | Run on demand from the UI |
| **Scheduled Task** | Cron expression — run on a schedule |
| **Webhook Trigger** | Fires when an HTTP request is received |
| **Event Listener** | Responds to platform events (site deployed, user created, etc.) |
### Actions
Execute work:
| Node | Description |
| --------------------- | ------------------------------------- |
| **Run Script** | Execute a shell command on a server |
| **Send Notification** | Send email, webhook, or Slack message |
### Flow Control
Control the execution path:
| Node | Description |
| ----------- | ------------------------------------------------------- |
| **If/Else** | Branch based on a condition (exit code, variable value) |
***
## Canvas
The main canvas is a React Flow editor with:
* **Background grid** for alignment
* **Zoom / pan** controls
* **Mini-map** for overview navigation
### Node Color Coding
| Color | Node Type |
| ------ | ------------------- |
| Blue | Docker App, Trigger |
| Amber | Database |
| Green | Domain |
| Indigo | Service |
| Gray | Run Script |
| Purple | Send Notification |
| Orange | If/Else Logic |
***
## Server Overview (Auto-Load)
When you open the Workflow Builder, it automatically loads your infrastructure as read-only nodes on the canvas — apps, domains, and databases positioned in a grid with connection lines showing relationships. Use this as a reference while building your automation, or as a live infrastructure map.
***
## Saving and Executing
1. Connect nodes by dragging from one node's output handle to another's input
2. Configure each node (double-click to open settings)
3. Click **Save** — the "Saved View" badge appears
4. Click **Execute** to run the workflow immediately
### Execution Progress Modal
Shows the result of each node step as the workflow runs — success/failure status and output for every action.
***
## Execution History
Click **History** to see all past runs:
| Column | Description |
| ------------ | ----------------------------- |
| **Started** | Timestamp |
| **Duration** | How long the workflow took |
| **Status** | Success / Failed / Partial |
| **Details** | Expand to see per-node output |
Workflows that fail 3 times in a row are automatically paused. Check the history to diagnose before re-enabling.
# Installation
Source: https://docs.areawp.com/installation
Install AreaWP on your Linux server with a single command.
This page applies to the **self-hosted** version of AreaWP only. If you are on the **hosted** plan, the server is fully managed by the AreaWP team — your panel is ready to use without any installation steps.
## One-Line Installer
Run this on your Linux server (Ubuntu 20.04+, Debian 11+, or Fedora 35+) as root:
```bash theme={null}
curl -fsSL https://areawp.com/install.sh | sudo bash
```
The installer:
1. Detects your OS and installs system dependencies
2. Sets up Python 3.11+, Node.js 20, PostgreSQL, Nginx, Docker
3. Downloads and configures the AreaWP panel
4. Builds the frontend and starts all services
5. Displays the panel URL and default admin credentials
Installation typically takes **3–8 minutes** depending on server speed and network connection.
***
## What Gets Installed
Flask API running as a **systemd service** (`areawp`) via Gunicorn with GeventWebSocket workers, listening on `0.0.0.0:5000`.
```bash theme={null}
systemctl status areawp
systemctl restart areawp
journalctl -u areawp -f
```
React frontend served by an **Nginx Docker container** on port 3847, proxied by host Nginx on port 80/443.
```bash theme={null}
docker compose --project-directory /opt/areawp ps
docker compose --project-directory /opt/areawp logs -f frontend
```
PostgreSQL installed on the host with a dedicated `areawp` database and user. Connection string stored in `/opt/areawp/.env`.
Nginx configured as reverse proxy, handling SSL termination and routing. Config at `/etc/nginx/sites-available/areawp.conf`.
***
## File Locations
| Path | Contents |
| ---------------------------------------- | --------------------------------- |
| `/opt/areawp/` | Main installation directory |
| `/opt/areawp/.env` | Environment variables and secrets |
| `/opt/areawp/backend/` | Flask application |
| `/opt/areawp/frontend/dist/` | Built React assets |
| `/opt/areawp/venv/` | Python virtual environment |
| `/etc/systemd/system/areawp.service` | Systemd unit file |
| `/etc/nginx/sites-available/areawp.conf` | Nginx configuration |
***
## Setup Wizard
After installation, open the panel at `http://your-server-ip`. The setup wizard guides you through:
Enter your license key from [account.areawp.com](https://account.areawp.com). Validated against your domain.
Create the first admin user — email and password.
Set the primary domain for the panel. Nginx updates automatically.
Provision a free Let's Encrypt certificate for HTTPS access.
***
## Updating
Run the following command **as root on the server** via SSH to check if a new version is available:
```bash theme={null}
areawp update
```
If an update is available, the command displays the new version and prompts for confirmation before proceeding. No data is lost during updates.
You can also see whether an update is available from **Settings → Licensing** inside the panel — however, the actual update must always be run via SSH as root using the command above.
***
## Troubleshooting
Backend not reachable. Verify it's listening on all interfaces:
```bash theme={null}
ss -tlnp | grep 5000
# Should show: 0.0.0.0:5000
```
If it shows `127.0.0.1:5000`:
```bash theme={null}
sed -i 's/127.0.0.1:5000/0.0.0.0:5000/' /etc/systemd/system/areawp.service
systemctl daemon-reload && systemctl restart areawp
```
```bash theme={null}
docker logs areawp-frontend --tail=30
curl http://127.0.0.1:5000/api/v1/system/health
```
```bash theme={null}
systemctl status postgresql
grep DATABASE_URL /opt/areawp/.env
```
Ensure port 80 is open and the domain resolves to your server IP. Retry from **Settings → Site Settings → SSL**.
# Backups
Source: https://docs.areawp.com/operations/backups
Create, schedule, and restore backups for applications, databases, and files — stored locally or on S3-compatible cloud storage.
**Path:** Backups (`/backups`) — Admin only
## Stats Overview
| Card | Shows |
| -------------------- | -------------------------------------- |
| **Total Backups** | All backups across all types |
| **Local Size** | Total disk space used by local backups |
| **Active Schedules** | Running backup schedules |
| **Remote Synced** | Backups uploaded to remote storage |
***
## Tabs
### Backups (Manual)
Lists all existing backups. Filter by:
* **Type pills:** All / Application / Database / Files / WordPress
* **Website dropdown:** Show backups for a specific site
* **Name search:** Filter by backup name
**Backup list columns:**
| Column | Description |
| ---------- | ------------------------------------------------ |
| **Name** | Backup display name |
| **Site** | Application or site this backup belongs to |
| **Type** | Application / Database / Files / WordPress badge |
| **Synced** | Whether it has been uploaded to remote storage |
| **Size** | Backup file size |
| **Date** | Creation timestamp |
**Per-backup actions:** Restore, Upload to Remote, Delete.
#### Creating a Backup
Click **Create Backup** to open the modal:
* Choose type: Application, Database, WordPress, or Files
* Select the target app, WordPress site, or directory path
* Optionally provide database credentials if needed
### Schedules
Automated backup schedules with individual website and name filters.
**Schedule list** — expandable rows showing:
* Type, frequency, scheduled time
* Storage location (Local / Remote)
* Last run status (success/error badge)
* Next run time
**Per-schedule actions:** Run Now, Enable/Disable, Delete.
For WordPress backup schedules, expand the row to see **individual backup records** for each scheduled run.
#### Adding a Schedule
Click **Add Schedule** to configure:
| Field | Options |
| ----------------- | ------------------------------------------ |
| **Name** | Display name |
| **Type** | Application / WordPress / Files / Database |
| **Target** | Which site, app, or path |
| **Frequency** | Hourly / Daily / Weekly / Monthly |
| **Time** | Hour of day to run |
| **Remote Upload** | Automatically sync to remote storage |
### Storage
Configure where backups are stored.
**Provider cards** — select one:
| Provider | Protocol |
| ---------------- | ------------------------ |
| **Local** | Filesystem on the server |
| **Amazon S3** | S3 API |
| **Backblaze B2** | S3-compatible |
**Per-provider fields:**
* Bucket/container name
* Endpoint URL (for S3-compatible)
* Access key and secret key
* Region
**Remote options** (if not Local):
* **Auto Upload** — push backups to remote storage automatically
* **Keep Local Copy** — retain a local copy after upload
**Retention** — slider from 1 to 365 days. Backups older than the retention period are automatically deleted.
**Test Connection** — verifies credentials before saving.
***
## Restoring a Backup
1. Find the backup in the **Backups** tab
2. Click **Restore**
3. Confirm in the dialog — review the backup name and creation date
4. The restore runs in the background; the site is briefly in maintenance mode
Restoring overwrites the current site files and database. There is no undo — create a fresh backup of the current state before restoring an older one.
# Cron Jobs
Source: https://docs.areawp.com/operations/cron
View scheduled platform jobs, run them on demand, and browse the full execution log with status filtering.
**Path:** Cron Jobs (`/cron`) — Admin only
The Cron Jobs page manages AreaWP's internal scheduler. It is read-only — you can view jobs, run them manually, and browse logs, but schedule configuration happens within the features that own each job (Backups, Monitoring, etc.).
## Scheduler Status Card
Shows the current state of the AreaWP scheduler:
| Field | Description |
| ------------------ | ------------------------------------------ |
| **Running** | Whether the scheduler service is active |
| **Scheduler Type** | `areawp_scheduler` |
| **Last Activity** | Timestamp of the most recent job execution |
***
## Tabs
### Scheduled Jobs
All jobs registered in the platform scheduler.
| Column | Description |
| --------------- | ------------------------------------------- |
| **Job Name** | Display name and optional description |
| **Schedule** | Cron expression (e.g. `0 2 * * *`) |
| **Last Run** | Relative time ("2m ago", "1h ago") |
| **Last Status** | Success / Warning / Error / Never Run badge |
| **Next Run** | Relative time ("in 5m", "in 2h") |
**Run Now** button per row — triggers the job immediately with a loading indicator. Each job runs independently; triggering one does not affect others.
Paginated — navigate with controls at the bottom.
### Executed Logs
Full history of every job execution.
**Filters:**
* **Search** — filter by job name
* **Status dropdown** — All / Success / Warning / Error
| Column | Description |
| ---------------- | ---------------------------------------- |
| **Job Name** | Which job ran |
| **Status** | Icon + badge (Success / Warning / Error) |
| **Started** | Absolute timestamp |
| **Duration** | How long the job took |
| **Triggered By** | Scheduled / Manual |
| **Message** | Output message or error description |
Paginated. Useful for diagnosing recurring failures or verifying critical jobs ran on schedule.
***
## Common Jobs
| Job | Default Schedule | Purpose |
| ----------------- | ------------------- | -------------------------------- |
| License check | Every 6 hours | Validate license with the server |
| SSL renewal check | Daily at 2am | Renew expiring certificates |
| Backup jobs | Per schedule config | Run configured backup schedules |
| Uptime checks | Per monitor config | Ping monitored services |
| System cleanup | Daily at 3am | Remove temp files and old logs |
# Email Server
Source: https://docs.areawp.com/operations/email
Full Postfix + Dovecot management — domains, accounts, aliases, DKIM/SPF/DMARC, SpamAssassin, Roundcube webmail, and mail queue.
This feature is **not yet available**. Email server management is currently under development and will be integrated in a future release.
**Path:** Email Server (`/email`) — Admin only
Manage a complete mail server stack (Postfix, Dovecot, OpenDKIM, SpamAssassin, Roundcube) directly from the panel.
## Service Status Cards
The top of the page shows a card for each email service:
| Service | Role |
| ---------------- | ---------------------------- |
| **Postfix** | SMTP server (sending) |
| **Dovecot** | IMAP/POP3 server (receiving) |
| **OpenDKIM** | DKIM signing |
| **SpamAssassin** | Spam filtering |
| **Roundcube** | Webmail interface |
Each card shows the service version, running status badge, and **Start / Stop / Restart** buttons.
***
## Tabs
### Status
Overview grid of all five service cards — the quickest way to see what's running and control services.
### Domains
Domain cards showing name, active status, account count, alias count, and DNS record verification badges:
* **DKIM** — verified / not verified
* **SPF** — verified / not verified
* **DMARC** — verified / not verified
**Actions per domain:** Verify DNS, Deploy DNS, Delete.
**Add Domain** form at the top — enter a domain name to add it.
### Accounts
Create and manage email mailboxes per domain.
* **Domain Selector** — switch between configured domains
* **Create Account** — username, password, quota (in MB)
* **Account cards** — email address, quota, active status, actions
**Per-account actions:** Change Password, Delete.
### Aliases
Create email aliases (source → destination mappings) per domain.
* **Domain Selector**
* **Create Alias** — source address, destination address
* **Alias cards** — shows the mapping with delete button
### Forwarding
Forward emails from an account to another address.
* **Account Selector** — choose which mailbox to set up forwarding for
* **Create Rule** — destination email, "Keep local copy" checkbox
* **Rule cards** — shows `account@domain → destination`, active status, keep-copy status
### DNS Providers
Connect DNS providers to automatically deploy DNS records (DKIM, SPF, DMARC, MX):
| Provider | Configuration |
| ------------ | ------------------------ |
| Cloudflare | Name, API Key |
| Route53 | Name, Access Key, Secret |
| DigitalOcean | Name, API Token |
**Per-provider actions:** Test connection, List Zones, Delete.
After testing, click **List Zones** to see available DNS zones from the provider. Use **Deploy DNS** on a domain card to push all required records automatically.
### Spam
SpamAssassin configuration:
| Setting | Description |
| ------------------- | -------------------------------------------------- |
| **Required Score** | Minimum score to flag as spam (default 5.0) |
| **Rewrite Subject** | Prefix added to spam emails (e.g. `[SPAM]`) |
| **Bayes Filter** | Enable Bayesian spam learning |
| **Auto-Learn** | Automatically train the filter from confirmed spam |
Buttons: **Update Rules** (fetch latest SA rules), **Save**.
### Webmail
Roundcube webmail management:
* Install, Start, Stop, Restart Roundcube
* Configure the proxy domain (the URL Roundcube is served on)
* Direct link to open Roundcube once configured
### Queue & Logs
**Mail Queue** — messages waiting to be delivered:
* Queue ID, sender, recipient, size, arrival time
* **Delete** per item, **Flush Queue** to force delivery of all queued messages
**Mail Logs** — raw server log output with line count selector (50 / 100 / 500 lines).
# Files & FTP
Source: https://docs.areawp.com/operations/files
Browser-based file manager with disk analysis and FTP/SFTP server management for client access.
**Path:** Files (`/files`) → FTP Server (`/ftp`) — Admin only
## File Manager
A full filesystem explorer running in your browser — no SSH client needed.
### File List
| Column | Description |
| --------------- | ----------------------------- |
| **Name** | File or folder with type icon |
| **Size** | Human-readable file size |
| **Modified** | Last modification date |
| **Permissions** | Unix permission string |
| **Actions** | Rename, chmod, delete |
Navigate with the breadcrumb path at the top.
### Actions
| Action | Description |
| ------------------------ | ---------------------------------------------- |
| **Create file / folder** | Toolbar buttons |
| **Upload** | Drag-and-drop or picker with live progress bar |
| **Rename** | Opens rename modal |
| **Change permissions** | Octal chmod input |
| **Delete** | Permanent — no trash |
| **Download** | Single-file download |
| **Show hidden files** | Toggle to include dotfiles |
| **Search** | Search box with file-type icons in results |
### File Editor
Click any text file to open the right-side preview panel:
* File info: size, owner, group, MIME type
* Toggle between **Read** and **Edit** mode
* Inline save/cancel
Supported formats: PHP, HTML, CSS, JS, YAML, JSON, Nginx config, shell scripts.
***
## Disk Usage Sidebar
Collapsible panel with three sections:
**Partitions** — all mounted filesystems with a percentage bar, device name, and used/total size.
**Directory Analysis** — toggle between:
* **Top Directories** — largest subdirectories with percentage bars
* **Largest Files** — top 10 files by size
**File Type Breakdown** — donut chart showing disk usage by category (images, video, code, archives, etc.).
***
## FTP Server
**Path:** `/ftp`
### Status Cards
| Card | Shows |
| ----------------- | ----------------------- |
| **Status** | Running / Stopped |
| **Active Server** | vsftpd or ProFTPD |
| **Users** | Total FTP accounts |
| **Connections** | Live active connections |
Install by clicking **Install** and choosing vsftpd or ProFTPD.
### Tabs
Configuration display — port, anonymous access, local users, write permission, chroot, SSL/TLS — and a connection info grid.
All FTP accounts with username, home directory, and status. **Create User** opens a modal: username, password (with auto-generate), home directory.
Per-user actions: **Change Password**, **Enable/Disable**, **Delete**.
Live connections — local/remote addresses, state, and a **Disconnect** button. Auto-refreshes.
Raw FTP server log output. Refresh button to reload.
FTP users are chrooted to their home directory and cannot access other server paths. Share credentials with clients so they can upload files to their site root without needing SSH.
# Monitoring
Source: https://docs.areawp.com/operations/monitoring
System-wide resource monitoring with configurable thresholds, alert history, email/webhook notifications, and public status pages.
This feature is **available on the Hosted plan only**. On the self-hosted version, server monitoring is managed directly on the server without this interface.
**Path:** Monitoring (`/monitoring`) → Status Pages (`/status-pages`) — Admin only
## Stats Overview
Four cards at the top of the Monitoring page:
| Card | Shows |
| ------------------------ | -------------------------------------------- |
| **Monitoring Status** | Active or Inactive |
| **Recent Alerts** | Count of alerts in the last 24 hours |
| **Check Interval** | How often the system polls metrics (seconds) |
| **Notification Methods** | Email and/or webhook configured |
Below the cards: current threshold values for CPU, memory, disk, and load average.
***
## Tabs
### Overview
High-level health summary: stat cards, current threshold display, and a preview of the 5 most recent alerts (with severity icons).
### Alert History
Full alert log with severity filter buttons:
| Filter | Shows |
| ------------ | ------------------------------------- |
| **All** | Every alert |
| **Critical** | Thresholds exceeded at critical level |
| **Warning** | Thresholds exceeded at warning level |
| **Info** | Informational events |
**Alert table columns:** Severity icon/badge, Alert type, Message, Current value, Threshold, Timestamp.
### Configuration
| Setting | Description |
| --------------------- | --------------------------------------------- |
| **Enable monitoring** | Toggle to start/stop the monitoring agent |
| **Check interval** | Polling frequency (10–3600 seconds) |
| **Email** | Auto-synced to your account email — read-only |
| **Webhook URL** | HTTP endpoint to receive alert POSTs |
**Test buttons** for both email and webhook let you verify delivery before going live.
If SMTP is not configured in Settings, the email notification field shows a warning. Set up SMTP under **Settings → Email** first.
### Thresholds
Set warning and critical thresholds using dual-range sliders for:
* **CPU usage** (%)
* **Memory usage** (%)
* **Disk usage** (%)
* **Load average**
Changes save on form submit. Current values are shown as a reference display in the Overview tab.
***
## Status Pages
**Path:** `/status-pages`
Create public-facing status pages to communicate uptime and incidents to clients.
### Creating a Status Page
1. Go to **Monitoring → Status Pages → New Status Page**
2. Set a name, slug (URL), and optional custom domain
3. Add components — each component maps to a service or uptime check
4. Configure visibility (public or link-only)
5. Customize branding (logo, colors)
### Component Statuses
| Status | Color |
| -------------------- | ------ |
| ✅ Operational | Green |
| ⚠️ Degraded | Yellow |
| 🔴 Partial Outage | Orange |
| ❌ Major Outage | Red |
| 🔧 Under Maintenance | Blue |
### Incidents
Create an incident to communicate an ongoing issue:
* Choose affected components and severity
* Write an update message
* Subscribers are notified immediately by email
Post follow-up updates as the incident progresses. Mark **Resolved** when fixed.
# Security
Source: https://docs.areawp.com/operations/security
Comprehensive security suite — firewall, fail2ban, SSH keys, IP lists, malware scanner, file integrity, vulnerability scanner, and audit across 13 tabs.
**Path:** Security (`/security`) — Admin only
The Security page is the central hub for all server security management. It uses a horizontal tab navigation with 13 dedicated sections.
## Security Tabs
Status display showing the overall security posture of the selected server. Includes a refresh button to pull the latest state.
Manage UFW firewall rules:
* View all current rules (port, protocol, action, source)
* Add inbound/outbound ALLOW or DENY rules
* Delete rules
* Enable/disable the firewall
Default rules: ports 22, 80, 443 allowed; all others denied.
Intrusion prevention configuration:
* View active jails (SSH, Nginx, AreaWP auth, WordPress)
* See currently banned IPs with ban time and reason
* **Unban** an IP immediately
* **Permanent Ban** — add to the permanent blocklist
* Adjust thresholds: max retries, find time, ban duration
* Add IPs to the ignore list (whitelist)
Manage authorized SSH keys for the server:
* View all public keys with name and fingerprint
* Add a new SSH key (paste public key)
* Delete any key
* Generate a new keypair from the panel
Manage allowlists and blocklists:
* **Allowlist** — IPs always permitted regardless of other rules
* **Blocklist** — IPs permanently denied at the firewall level
* Add single IPs or CIDR ranges to either list
Malware and file scanner — scans the server filesystem for:
* Known malware signatures
* Suspicious file patterns
* PHP shell indicators
* Results show affected files with severity and recommended action
Files flagged by the scanner appear here. Quarantine moves suspicious files to an isolated location without deleting them. Review and restore or permanently delete quarantined files.
File integrity monitoring — detects unauthorized changes to critical system files and web app files:
* Set a baseline snapshot
* Compare current state against baseline
* Shows modified, added, and deleted files with timestamps
Security audit runner — checks for common vulnerabilities and misconfigurations:
* Open ports and unexpected services
* Packages with outstanding security patches
* World-writable files
* Weak SSH configuration
* Results are scored with actionable recommendations
CVE and package vulnerability scanner — checks installed packages against known vulnerability databases. Shows CVE IDs, severity, and available patch versions.
Auto-updates configuration — enable automatic security patch installation for:
* OS packages (apt/dnf security updates)
* AreaWP panel
* Agent binary
* Set maintenance window (day and time)
Security event log — real-time feed of security-relevant system events:
* Login successes and failures
* sudo commands executed
* Firewall rule hits
* Fail2ban bans and unbans
* File system changes (if integrity monitoring active)
Security configuration options:
* Enable/disable individual security features
* Set notification preferences for security events
* Configure scan schedules
* Security hardening presets (apply recommended settings)
# Terminal & Logs
Source: https://docs.areawp.com/operations/terminal
Log file viewer, systemd journal, process manager, and service control — all in the browser without SSH.
**Path:** Terminal (`/terminal`) — Admin only
The Terminal page provides four tools for inspecting and managing running systems: log files, systemd journal, process list, and service control.
## Log Files Tab
Browse and view any log file on the server.
**Left sidebar** — clickable list of log files showing path and size. Click any file to load it in the main viewer.
**Viewer controls:**
| Control | Description |
| ------------------ | -------------------------------------- |
| **Search pattern** | Filter log lines by text or regex |
| **Line count** | Load 50 / 100 / 200 / 500 / 1000 lines |
| **Auto-refresh** | Toggle live updates |
**Actions:**
* **Refresh** — reload the log content
* **Download** — save the log file to your computer
* **Clear log** — truncate the log file (admin only)
Log output is displayed in a monospace, scrollable view.
***
## Journal Tab
Read systemd journal output for any service.
| Control | Description |
| ------------------- | ---------------------------------------------------------------------------------- |
| **Unit / Service** | Type a service name, or pick from quick-select chips (nginx, apache2, mysql, etc.) |
| **Line count** | 50 / 100 / 200 / 500 lines |
| **Priority filter** | Emergency / Alert / Critical / Error / Warning / Notice / Info / Debug |
Click **Load Logs** to fetch the journal output. If journalctl is not available, the fallback source is shown in an info notice.
***
## Processes Tab
Live process list for the selected server.
**Controls:**
* **Search** — filter by process name, command, or PID
* **Sort** — CPU / Memory / PID / Name
* **Limit** — show 25 / 50 / 100 processes
**Refresh** button reloads the list.
**Table columns:**
| Column | Description |
| ------------ | --------------------------------- |
| **PID** | Process ID |
| **Name** | Process name |
| **User** | System user running the process |
| **CPU %** | Current CPU usage |
| **Memory %** | Memory usage as a percentage |
| **Memory** | Human-readable memory size |
| **Status** | Running / Sleeping / Zombie badge |
Click any row to expand a **details panel** showing: full command line, thread count, created time, and open file count.
**Kill options per process:**
* **Kill** — send SIGTERM (graceful)
* **Force Kill** — send SIGKILL (immediate)
***
## Services Tab
All systemd services on the server displayed as a grid of cards.
**Each service card shows:**
* Status dot (green = running, red = stopped)
* Service name and description
* Status badge
* PID and memory usage (if running)
**Per-service actions:**
* **Start / Restart / Stop** — lifecycle control
* **Logs** — opens a modal with the last 100 lines from the service journal
**Refresh** button reloads all service statuses.
Common services you'll manage here: `areawp` (panel backend), `nginx`, `postgresql`, `docker`, `fail2ban`, `postfix`, `dovecot`.
# Dashboard
Source: https://docs.areawp.com/overview/dashboard
Real-time overview of your servers, sites, subscriptions, and platform health — role-aware for admins and clients.
**Path:** Dashboard (`/`) — visible to all users
The dashboard is the first page after login. What you see depends on your role — admins see full server metrics and infrastructure controls, clients see their subscription, sites, and support links.
## Admin Dashboard
### Top Bar
The admin header shows live server information for the currently selected server:
| Element | Description |
| ------------------- | ----------------------------------------------- |
| **Hostname** | Server name with a live connection status dot |
| **IP Address** | Public IP of the selected server |
| **Kernel** | Linux kernel version |
| **Uptime** | Time since last reboot |
| **Server Selector** | Switch between local and remote managed servers |
| **Clock** | Current time and timezone |
| **Auto-refresh** | Polling interval: Off / 5s / 10s / 30s / 1m |
### Setup Warnings
If configuration is incomplete, alert banners appear at the top:
* **Domain not configured** — panel domain not set
* **Invalid license** — license key missing or suspended
* **Mail not configured** — SMTP not set up
Click any banner to jump directly to the relevant settings page.
### Metric Widgets
The admin dashboard shows a customizable grid of metric tiles:
Usage percentage and core count, live
Used / total memory with cached memory breakdown
Bytes sent and received per second
Usage percentage, used and free space
Additional widgets:
* **Chart Panel** — Historical metrics graph with selectable time ranges
* **Quick Actions** — Shortcut buttons for Servers, Docker, and Terminal; hardware specs display
* **Applications Table** — All deployed apps with ID, name, type, status badge, and primary domain
***
## Client Dashboard
When a regular (non-admin) user logs in, the dashboard shows:
### Welcome Section
Personalized greeting with a prominent **New Site** button.
### Stats Cards
Three counters at a glance:
| Card | Shows |
| ---------------- | -------------------------------- |
| **Applications** | Total WordPress / app count |
| **Live Domains** | Number of active domains |
| **Running** | Count of currently running sites |
### Subscription Widget
Shows the client's current plan at a glance:
* Plan name and trial/expiry status
* Resource specs: CPU, RAM, Disk
* Site usage tracker with progress bar
* **Manage** button to open the Billing page
### Sites Grid
The 6 most recently deployed sites displayed as cards:
* Site name and URL
* Running / stopped status indicator
* WordPress version
* Environment count
### Support Links
Configurable quick-access links to your support center, pulled from the appearance settings.
***
## Navigation & Sidebar
The left sidebar groups all features by category. Use the **sidebar presets** (from the user menu at the bottom) to show only the tools you need:
| Preset | Best For |
| ------------------- | --------------------------------- |
| **Full** | Access everything |
| **Web Hosting** | Domains, SSL, databases |
| **Email Admin** | Email server, DNS, security |
| **Docker / DevOps** | Docker, Git, monitoring |
| **Minimal** | Dashboard, servers, terminal only |
# Billing
Source: https://docs.areawp.com/platform/billing
Client self-service billing portal — view your current plan, manage payment methods, renew or cancel, and download invoices.
**Path:** Billing (`/billing`) — Client users only
The Billing page is the self-service portal for clients. Admins manage billing from **Administration → Subscriptions** and **Administration → Transactions** instead.
## Subscription Summary
The top section shows the current subscription at a glance.
### Suspension Warning
If the subscription is expired or suspended, a prominent warning banner appears at the top with instructions to renew or contact support.
### Subscription Card
| Field | Description |
| --------------------- | -------------------------------------------- |
| **Plan Name** | Current pricing plan |
| **Status** | Active / Trial / Suspended / Cancelled badge |
| **Price** | Amount with tax breakdown |
| **Billing Period** | Monthly or yearly |
| **Payment Method** | How the subscription is charged |
| **Next Renewal Date** | When the next charge is scheduled |
| **Features** | List of included plan features |
### Actions
* **Renew** — opens the **Renew Plan Modal** to select payment method and confirm
* **Change Plan** — opens the plan selector to upgrade or downgrade
* **Cancel Subscription** — opens the **Cancel Dialog** with scheduling options
* **Undo Cancellation** — reverses a pending cancellation before it takes effect
***
## Renew Plan Modal
Allows the client to renew before the current period ends:
1. Select payment method
2. If **Bank Transfer** is selected — bank account instructions are shown
3. Confirm — for card/PayPal/Tap, redirected to payment gateway; for Bank Transfer, subscription stays Pending until admin approval
***
## Billing History
Table of all invoices:
| Column | Description |
| ------------------ | ----------------------------- |
| **Invoice Number** | Unique identifier |
| **Date** | Issue date |
| **Description** | Plan name and period |
| **Amount** | Charged amount |
| **Method** | Payment method used |
| **Status** | Paid / Pending / Failed badge |
**Per-invoice actions:**
* **View** — opens the invoice as a PDF in an iframe viewer
* **Download** — save the PDF to your computer
***
## Payment Return Screen
When returning from an external payment gateway (PayPal, Stripe redirect flow), the Billing page briefly shows a confirmation screen before returning to the normal billing view.
***
## Help
Check that your card is valid and has sufficient funds. Update your payment method and click **Renew** to retry immediately.
Add a valid payment method and renew. Your sites and data are preserved during suspension.
Contact support with your invoice number. Stripe refunds process in 5–10 business days.
Ensure your company name and VAT number are set in your account profile. Future invoices will include them automatically.
# Marketplace
Source: https://docs.areawp.com/platform/marketplace
Browse, install, and manage WordPress plugins, themes, and AreaWP extensions — with licensing, purchasing, and renewal workflows.
**Path:** Marketplace (`/marketplace`) — WaaS mode. Admins always have access; regular users see it based on their pricing plan.
## Browsing the Catalog
The top of the page shows type toggle buttons: **All**, **Plugins**, **Themes**.
Two tabs:
### Browse Tab
Grid of extension cards. Each card shows:
| Element | Description |
| ------------------ | ------------------------------- |
| **Screenshot** | Plugin/theme preview image |
| **Type badge** | Plugin or Theme |
| **Category badge** | e-commerce, SEO, security, etc. |
| **Name & Author** | Display name and developer |
| **Description** | Short summary |
| **Version** | Current version number |
| **Price** | Free or paid amount |
| **Action button** | Install / Buy / Renew |
**Search bar** and **category filter** narrow results.
### Installed Tab
Two sections:
**Pending** — extensions awaiting approval (submitted but not yet approved by platform admin), with approval status indicator.
**Active** — installed extensions showing:
* Price and renewal type (one-time / monthly / yearly)
* Expiry label
* Action buttons: Reinstall, Uninstall, Renew, Cancel Subscription, Revoke Cancellation
***
## Installing an Extension
**Free extensions:** Click **Install** → select the target WordPress site in the **Site Select Modal** → confirm.
**Paid extensions:** Click **Buy** → **Payment Modal** opens:
1. Select payment method (Stripe, PayPal, Bank Transfer, etc.)
2. Select the target WordPress site
3. Complete payment — for card payments, processed immediately; for Bank Transfer, marked pending
After successful purchase, the extension appears in the **Installed → Active** section.
***
## Subscription-Based Extensions
Some extensions use monthly or yearly subscription pricing:
* **Renew** — extend the subscription before it expires
* **Cancel Subscription** — stop auto-renewal (access continues until expiry)
* **Revoke Cancellation** — undo a pending cancellation before the period ends
***
## Admin — Submitting Templates
Click **Submit Plugin/Theme** (top-right, admin only) to add a custom extension to the catalog:
* Name, description, category, version, and price
* Upload a ZIP file
* Set visibility: public (visible to all users) or private (admin-only)
Use **Edit** and **Delete** to manage your submitted extensions.
***
## Payment Return
When returning from an external payment gateway (PayPal, Stripe redirect), the Marketplace shows a **Payment Return** screen confirming the purchase status before returning to the catalog.
# Support
Source: https://docs.areawp.com/platform/support
Built-in support ticket system — clients submit tickets, admins manage them with status, priority, assignment, and internal notes.
**Path:** Support (`/support`)
The support center must be enabled in **Settings → General → Support Center**. Both clients and admins use the same page, with different views based on role.
## Status Counts Bar
Below the page header, clickable badge counters filter the ticket list:
| Badge | Count |
| ---------------- | ----------------------------------- |
| **Open** | New tickets awaiting first response |
| **In Progress** | Tickets being actively worked on |
| **Waiting User** | Awaiting client reply |
| **Resolved** | Marked as resolved |
| **Closed** | Fully closed tickets |
Click any badge to filter the list to that status.
***
## Ticket List
Search and filter controls:
* **Search** — by subject or ticket number
* **Priority** — Low / Normal / High / Urgent
* **Category** — Billing / Technical / Account / General
**Ticket cards show:**
| Field | Description |
| ------------------ | ----------------------------------------- |
| **Ticket Number** | Unique identifier |
| **Priority Badge** | Color-coded urgency level |
| **Subject** | Ticket title |
| **Category** | Issue category |
| **Related App** | Site or app this ticket is about (if set) |
| **User** | Submitting client (admin view) |
| **Date** | Submission timestamp |
| **Status** | Current state badge |
***
## Creating a Ticket
Click **Create Ticket** to open the creation form:
| Field | Description |
| --------------- | --------------------------------------- |
| **Subject** | Brief description |
| **Category** | Billing / Technical / Account / General |
| **Priority** | Low / Normal / High / Urgent |
| **Description** | Full details of the issue |
| **Attachments** | Screenshots, logs, or other files |
Click **Submit** — you receive an email confirmation with the ticket number.
***
## Ticket Detail View
Click any ticket to open the full conversation thread.
### For Clients
* Read the full conversation
* Add a reply
* Reopen a closed ticket (within 7 days)
### For Admins (additional controls)
* **Assign** — assign the ticket to a support agent
* **Change Status** — Open / In Progress / Waiting User / Resolved / Closed
* **Change Priority** — Low / Normal / High / Urgent
* **Change Category** — update the topic category
* **Internal Note** — add a note visible only to admins (not the client)
* **Close / Reopen** — finalize or re-open the ticket
* **Delete** — permanently remove (confirmation required)
***
## Admin Settings
Click the **Settings** button (admin only) to configure:
* Notification email for new tickets
* Auto-close rules (e.g. close resolved tickets after 7 days)
* Agent assignment defaults
***
## Ticket Statuses
| Status | Color | Meaning |
| ---------------- | ------ | ----------------------------------- |
| **Open** | Blue | Submitted, waiting for support |
| **In Progress** | Yellow | Support team is working on it |
| **Waiting User** | Orange | Support replied, waiting for client |
| **Resolved** | Green | Issue resolved |
| **Closed** | Gray | Fully closed |
Closed tickets can be reopened within **7 days** by adding a reply.
If you use an external helpdesk (Zendesk, Freshdesk, Intercom), set a **Support URL** in **Settings → General**. The Support sidebar link will open your external tool instead of the built-in system.
# Quick Start
Source: https://docs.areawp.com/quick-start
Deploy a WordPress template, configure your platform settings, and set up email in a few steps.
This guide assumes you've installed AreaWP and completed the setup wizard. If not, start with the [Installation Guide](/installation).
## Step 1 — Deploy a WordPress Template
Templates (Blueprints) let you package a full WordPress setup and make it available for deployment. Go to **Services → Templates** (`/templates`) → **Manage** → **Add Blueprint**.
In the sidebar, navigate to **Services** → **Templates**, then click the **Manage** button and select **Add Blueprint**.
Provide the template contents. Two options:
| Option | What to upload |
| -------------- | ------------------------------------------- |
| **wp-content** | A `wp-content.zip` + a `.sql` database dump |
| **Full site** | A full site `.zip` + a `.sql` database dump |
Fill in the template name, description, category, and version.
Click **Save**. The template is now available in the catalog for clients to deploy from their portal.
***
## Step 2 — Configure Site Settings
Go to **Settings → Site Settings** to configure platform-wide options for your installation.
### Platform Mode
Choose how the platform operates:
| Mode | Description |
| -------- | ---------------------------------------------------------------------------------- |
| **SaaS** | General hosting — clients subscribe and manage their own sites |
| **WaaS** | WordPress-as-a-Service — optimized for WordPress site deployments with marketplace |
### General Toggles
| Setting | Description |
| ------------------ | ------------------------------------------------------ |
| **Registration** | Allow new users to register publicly at `/register` |
| **Dev Mode** | Enable development-only features in the sidebar |
| **Support Center** | Show the built-in support ticket system in the sidebar |
### Site Configuration
| Field | Description |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| **Default Domain** | The primary domain for the panel (e.g. `panel.yourcompany.com`). Changing this redirects you to the new address after saving. |
| **Default Language** | UI language for new users |
| **Session Timeout** | Auto-logout after inactivity (minutes) |
### SSL Certificate
SSL is provisioned during the initial setup wizard. This section only needs revisiting if you change the panel domain or need to redeploy the certificate for a new domain. The **Force WWW Redirect** toggle redirects `www.yourdomain.com` to the apex domain (or vice versa) automatically.
### Company Info
Used on invoices and billing documents:
| Field | Description |
| --------------------------------------- | ------------------------------------------ |
| **Currency** | Billing currency (USD, EUR, GBP, and more) |
| **Company Name** | Your business name |
| **Email** | Company contact email |
| **Phone** | Company phone number |
| **Address, City, Postal Code, Country** | Full billing address |
| **VAT ID** | Tax registration number |
### Tax Management
Enable the **Tax** toggle to add tax to all invoices:
* **Tax Name** — label shown on invoices (e.g. VAT, GST)
* **Tax Amount** — percentage rate (e.g. `20` for 20%)
### Support Center Links
When the Support Center is enabled, add quick-access links shown on the client dashboard — each link has a label, description, and URL. Useful for pointing clients to your knowledge base, community forum, or external support portal.
***
## Step 3 — Set Up Email
Outgoing email is required for registration confirmations, password resets, billing invoices, and renewal reminders. Without it, clients receive nothing from the platform.
Navigate to **Settings** and select **Email** from the sidebar.
| Field | Example |
| -------------- | --------------------------------- |
| **SMTP Host** | `smtp.sendgrid.net` |
| **SMTP Port** | `587` (STARTTLS) or `465` (SMTPS) |
| **Username** | Your SMTP account username |
| **Password** | Your SMTP account password |
| **From Email** | `noreply@yourplatform.com` |
| **From Name** | Your platform or brand name |
Popular providers: **SendGrid**, **Mailgun**, **Amazon SES**, **Postmark**, or your own Postfix server.
Click **Send Test Email**. AreaWP sends a verification message to the admin address. Check your inbox to confirm delivery before going live.
Scroll to **Email Templates** to customize the content and branding of transactional emails — welcome, invoices, renewal reminders, and more.
Without a working SMTP configuration, clients will not receive registration emails, password resets, or billing notifications. Configure this before inviting your first user.
***
## Step 4 — Set Up Billing
Go to **Administration → Pricing Plans** → **New Plan**. Set name, price, billing period, and resource limits.
Go to **Administration → Payment Gateways**. Enable **Stripe**, **PayPal**, **Tap**, or **Bank Transfer** and enter credentials.
Go to **Administration → Users** → **Invite User**. The client receives an email registration link and can subscribe to a plan from their portal.
***
## Step 5 — White-Label the Platform
Go to **Settings** and find the **White Label** category.
Enter your brand name, upload your logo (light and dark variants), and choose your primary color.
Changes take effect immediately across the entire UI for all users.
***
## What's Next?
Agent Fleet, fleet monitor, cloud provisioning (Hosted plan only)
Thresholds, alerts, and public status pages
Automated schedules and S3 storage
Containers, Compose stacks, and live metrics
# Requirements
Source: https://docs.areawp.com/requirements
Server and software requirements for the AreaWP panel and managed servers.
This page applies to the **self-hosted** version of AreaWP only. If you are on the **hosted** plan, the server is fully managed by the AreaWP team — no installation or server configuration is required on your end.
## Panel Server Requirements
The AreaWP panel (the control dashboard) runs on a dedicated Linux server or VPS.
1 vCPU · 1 GB RAM · 20 GB disk
2 vCPU · 2 GB RAM · 40 GB disk
### Supported Operating Systems
| OS | Version | Status |
| ------ | --------- | ----------------- |
| Ubuntu | 22.04 LTS | ✅ Fully supported |
| Ubuntu | 20.04 LTS | ✅ Supported |
| Debian | 11 / 12 | ✅ Supported |
| Fedora | 35+ | ✅ Supported |
AreaWP is **Linux only** and requires a **fresh, clean OS installation**. Installing on a server that already has other software running (web servers, databases, control panels) may cause conflicts and is not supported.
### Software (installed automatically by the installer)
| Dependency | Version | Purpose |
| -------------- | ----------- | ---------------------- |
| Python | 3.11 – 3.12 | Flask backend |
| Node.js | 20.x | Frontend build |
| PostgreSQL | 14+ | Panel database |
| Nginx | Latest | Reverse proxy |
| Docker | 24+ | App container runtime |
| Docker Compose | v2 | Multi-container stacks |
| Gunicorn | 23+ | WSGI server |
***
## Multi-Server Requirements
Connecting additional servers via the binary agent is **exclusive to the Hosted plan**. Self-hosted installations manage only the server AreaWP is installed on.
Each additional server you connect to AreaWP needs only the lightweight agent binary installed.
| Requirement | Value |
| ------------- | --------------------------------------- |
| OS | Ubuntu 20.04+, Debian 11+, Fedora 35+ |
| RAM | 256 MB free |
| Disk | 1 GB free |
| Outbound port | 443 (to panel) |
| Docker | Optional — required for app deployments |
The agent is a single static Go binary (\~15 MB) with no runtime dependencies. It runs as a systemd service.
***
## Network Requirements
### Panel Server Ports
| Port | Purpose |
| ---- | ---------------------------- |
| 80 | HTTP (redirects to HTTPS) |
| 443 | HTTPS — panel access |
| 5000 | Backend API (localhost only) |
### Managed Server Ports
| Port | Purpose |
| --------- | ----------------------------------- |
| 22 | SSH — for initial agent install |
| 443 | Agent WebSocket (outbound to panel) |
| 80, 443 | Hosted websites |
| 8001–8999 | Docker app containers (internal) |
The agent connects **outbound** to the panel. No inbound rules need to be opened on managed servers for the agent.
***
## License
AreaWP requires a valid license key validated against your registered domain.
View plans and purchase
Set up your key in Settings