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:
- Go to the Servers page in the dashboard and click on the name of the server.
- Click on Logs.
- 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:
- In the dashboard, click on Servers and then click on the name of the server.
- Click on Settings.
- 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:
- In the dashboard, click on Servers and then click on the name of the server.
- Click on Settings.
- 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:
- In the dashboard, click on Servers and then click on the name of the server.
- Click on Settings.
- 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:
- In the dashboard, click on Servers and then click on the name of the server.
- Click on Settings.
- Enable or disable Deny requests for unknown domains and then click Update Settings.
HTTP/3
Default: Disabled
To enable or disable HTTP/3:
- In the dashboard, click on Servers and then click on the name of the server.
- Click on Settings.
- 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:
- Go to the Servers page in the dashboard and click on the name of the server.
- Click on Plan.
- Select the desired plan.
- Click on Update Plan.
Transfer server ownership
To initiate the transfer of a server to a different ServerPilot account:
- Go to the Servers page in the dashboard and click on the name of the server.
- Click on Owner.
- Enter the email address of the recipient ServerPilot account. The recipient ServerPilot account must already exist.
- 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:
- Go to the Servers page in the dashboard and click on the name of the server.
- Click on Delete.
- Click on Delete Server.
- Click on Confirm Delete Server.