Skip to content

Use cloud servers for web hosting

A cloud server is a virtualized computer (called a virtual machine or VM) running in a data center at a cloud provider. Just like any other computer, a cloud server runs an operating system. The most popular operating system for cloud servers is Ubuntu.

Connect a server to ServerPilot

When you connect a server, ServerPilot configures your server for hosting, keeps the server’s software updated, and provides a dashboard where you can safely and easily make changes to your server.

Server requirements

To use ServerPilot, a server must meet the following requirements.

  • Operating system — Ubuntu LTS 24.04, 22.04, 20.04, or 18.04
  • Architecture — x64 (x86-64, AMD64, Intel 64)
  • Minimum memory — 256 MB

Use a new cloud server created from a standard Ubuntu server image.

Apps and system users

Apps are websites and web applications. For every site you want to host on your server, you use ServerPilot’s dashboard to create an app.

Every app belongs to a system user. You can SSH or SFTP into your server as a system user to modify an app’s files.

Monitoring

Server resource usage and other metrics can be viewed through the monitoring dashboards.

Log files

To a server’s log files:

  1. Go to the Servers page in the dashboard and click on the name of the server.
  2. Click on Logs.
  3. Select the log file to view.

Server settings

Server name

The server name is the display name for the server in ServerPilot. Changing the server name does not reconfigure any services on the server.

To change a server’s name:

  1. In the dashboard, click on Servers and then click on the name of the server.
  2. Click on Settings.
  3. Enter a new Server name and then click Update Settings.

Automatic security updates

Default: Enabled

When enabled, the server’s packages will be updated daily.

To enable or disable automatic package updates:

  1. In the dashboard, click on Servers and then click on the name of the server.
  2. Click on Settings.
  3. Enable or disable Automatic Security Updates and then click Update Settings.

Firewall

Default: Enabled

When enabled, the server’s firewall is configured to allow the following inbound ports (all other inbound ports are blocked, no outbound ports are blocked):

  • TCP port 22 (SSH)
  • TCP port 80 (HTTP)
  • TCP port 443 (HTTPS)
  • UDP port 443 (HTTP/3: HTTPS over QUIC)

When disabled, the firewall configured by ServerPilot is removed and no traffic is restricted.

To enable or disable a server’s firewall:

  1. In the dashboard, click on Servers and then click on the name of the server.
  2. Click on Settings.
  3. Enable or disable Firewall and then click Update Settings.

Deny requests for unknown domains

Default: Enabled

When enabled, your server will reject requests for domains that do not belong to any app on the server.

When disabled, requests for unknown domains will be routed to the app on the server whose app name is alphabetically first (the default app).

To enable or disable denying requests for unknown domains:

  1. In the dashboard, click on Servers and then click on the name of the server.
  2. Click on Settings.
  3. Enable or disable Deny requests for unknown domains and then click Update Settings.

HTTP/3

Default: Disabled

To enable or disable HTTP/3:

  1. In the dashboard, click on Servers and then click on the name of the server.
  2. Click on Settings.
  3. Enable or disable HTTP/3 and then click Update Settings.

When enabled, HTTP/3 is available for all SSL-enabled apps on the server.

You can verify HTTP/3 is working using your browser or the command line.

Change plan

To change a server’s pricing plan:

  1. Go to the Servers page in the dashboard and click on the name of the server.
  2. Click on Plan.
  3. Select the desired plan.
  4. Click on Update Plan.

Transfer server ownership

To initiate the transfer of a server to a different ServerPilot account:

  1. Go to the Servers page in the dashboard and click on the name of the server.
  2. Click on Owner.
  3. Enter the email address of the recipient ServerPilot account. The recipient ServerPilot account must already exist.
  4. Click on Transfer Server.

After initiating a server transfer, the owner of the recipient account must log into ServerPilot to accept the transfer.

Request handling

Your server is configured to only answer requests for domains that belong to your apps. When a request is received, the request is directed to the correct app based on the Host header of the request.

ServerPilot configures Nginx as the public-facing web server and Apache as the internal web server.

Nginx is used as a reverse proxy due to its security and efficiency as a public-facing server. Nginx’s asynchronous, event-driven design allows it to handle tens of thousands of simultaneous client connections, reduces resource consumption due to requests from slow clients such as mobile devices, and provides protection against Slowloris attacks.

Apache is used as the internal web server due to its flexibility and safe, per-app and per-directory configuration with .htaccess files. Using .htaccess files allows web server configuration directives to be stored alongside your app’s code. Changes to .htaccess files don’t require administrative privileges or reloading the server configuration. Additionally, errors in an app’s .htaccess file can’t bring down the server or impact other apps.

Request for static files

Web browser → Nginx → Apache
Web browser ← Nginx

Every request made by a web browser to your server first goes to Nginx. Nginx proxies the request through to Apache. Apache then processes your application’s .htaccess files and rewrite rules. If the request is for a static file, Apache serves the static file. The response goes back through Nginx and then to the browser.

Requests for dynamic content

For dynamically generated responses from apps written in PHP, Node.js, Python, or Go, Apache proxies requests to an application server. The response from the application is proxied back to the web browser that made the request.

For example, the PHP FastCGI Process Manager (PHP-FPM) handles requests for PHP scripts.

Web browser → Nginx → Apache → PHP-FPM
Web browser ← Nginx ← Apache

Delete a server

When you delete a server, the server is removed from ServerPilot and can no longer be managed through ServerPilot.

To delete a server:

  1. Go to the Servers page in the dashboard and click on the name of the server.
  2. Click on Delete.
  3. Click on Delete Server.
  4. Click on Confirm Delete Server.