Ubuntu VPS Server
Choose the right environment, then take a fresh Ubuntu 24.04 LTS server from SSH access to a working HTTPS website. Follow the checks and keep a record of what is ready.
Start with a server you can operate.
- Your environmentUbuntu image, CPU architecture and software requirements
- Your accessSSH keys, an administrator and a recovery console
- Your running costCompute, network, backups and any licences
On this page
Choose an Ubuntu VPS server for your project
An Ubuntu VPS gives you a virtual machine running Ubuntu, with the resources and access included in your plan. With a self-managed server, you install and maintain your software. If you need someone else to operate it, confirm the scope of a managed service before buying.
Use the Ubuntu VPS Hosting comparison for checked configurations and running costs. This page takes the next step: choosing a deployment route and verifying a first website.
| Decision | What to confirm | Why it matters |
|---|---|---|
| Image and architecture | Confirm the Ubuntu release, x86-64 or ARM64 image, and every required application or panel. | An Ubuntu label alone does not prove binary or panel compatibility. |
| CPU, RAM and disk | Budget for the OS, application, database, logs and updates; check CPU allocation and resize rules. | A minimum installation requirement is not measured application capacity. |
| Region and network | Choose the region near your users and dependencies. Check public IPs, transfer allowances and permitted ports. | A region name or port speed does not establish application latency. |
| Access and recovery | Confirm the initial SSH username, key injection, console or rescue access and reinstallation process. | You need a way back in if a key, firewall rule or boot change fails. |
| Bill and cancellation | Include the billing period, backup retention, licences, IP charges, taxes and stopped-server charges. | A stopped machine can remain billable; deletion can remove data. |
| Administration and backups | Assign software updates and incident response; choose independent copies and a restore procedure. | A support contact or stored snapshot alone does not prove application recovery. |
Compare published requirements and total costs →
Choose the environment before installing
Review the available image, region and resources on the order page.
Choose an Ubuntu image for your application
Compare a plain Ubuntu installation with the application images published by VDSina . Check the base OS and first setup steps before choosing resources. Catalogue and provider help reviewed on .
Application labels below follow the catalogue: “Ubuntu 22” and “Ubuntu 24” are provider labels. Confirm the exact release and software version in your order. A listed image is not a measured capacity recommendation.
Plain Ubuntu26.04, 24.04, 22.04 or 20.04
Provider information: These releases appear in the public image catalogue. Listing an image does not establish support for your chosen application.
Your next step: For the static website walkthrough below, choose a fresh Ubuntu 24.04 LTS image. For other releases, check application support before installing.
Recovery planning: Your website files, service configuration and any application data you add.
Docker PortainerUbuntu 22
Provider information: The public catalogue lists Docker Portainer on Ubuntu 22. It does not specify the installed Docker or Portainer version or a minimum plan.
Your next step: Confirm the template version and resources, then plan your containers, persistent storage and published ports. Do not apply the host-only Nginx recipe as a complete container setup.
Recovery planning: Compose files, environment configuration and persistent volumes; databases need a consistent backup.
FASTPANELUbuntu 22
Provider information: The provider describes a free panel with website, PHP, database, firewall, certificate and backup controls. Its guide places access details in Support → Tickets and the account email.
Your next step: Choose the application image when ordering. Use the supplied panel access, accept its licence, add your website and configure the domain. Manage the web stack through the panel.
Recovery planning: Website files, database exports, panel settings and the information needed to recreate each site.
See one observed FASTPANEL server →
HestiaCPUbuntu 22
Provider information: The provider lists a HestiaCP template and recommends HestiaCP or FASTPANEL as free website management panels. Its catalogue label is Ubuntu 22.
Your next step: Confirm the supplied Hestia version and template requirements before ordering. Follow the panel setup route; do not install the separate Nginx walkthrough over a panel image.
Recovery planning: Panel configuration, website files, databases and mail data if you use mail hosting.
OpenClawUbuntu 24
Provider information: The provider’s guide describes Ubuntu 24.04 with Node.js, OpenClaw and PM2. Its OpenAI + Telegram example requires an API key, a Telegram bot token and the allowed user ID.
Your next step: Prepare the accounts and credentials for your chosen integration. Budget separately for model/API usage. Keep agent access restricted to the users and permissions you intend.
Recovery planning: Agent configuration, workspace and required credentials in a protected backup.
TeleportUbuntu 24
Provider information: Teleport on Ubuntu 24 is listed. The public catalogue does not identify its version, edition, licensing terms or minimum resources.
Your next step: Confirm the edition, login method, certificate setup and charges for the functionality you need before ordering.
Recovery planning: Access configuration, identity settings and the recovery material required by the selected edition.
Cockpit Web consoleUbuntu 24
Provider information: The catalogue includes an Ubuntu 24 option for Cockpit Web console, alongside images based on other Linux distributions.
Your next step: Select the Ubuntu variant and confirm its login address, authentication and access restrictions. A web console still needs an operating-system maintenance plan.
Recovery planning: The configuration and data of services managed through the console.
Gnome Desktop + RDPUbuntu 24
Provider information: The catalogue lists Gnome Desktop + RDP on Ubuntu 24. It does not publish a supported number of desktop users or a workload capacity figure.
Your next step: Confirm the desktop template’s RAM/disk requirement and how RDP access is delivered. Choose resources for the applications you will run inside the desktop.
Recovery planning: User home directories, application data and desktop settings.
WireGuard VPNUbuntu 24 Web or Ubuntu 22
Provider information: The catalogue lists both variants. The web-panel guide describes creating a client, then downloading its configuration or displaying a QR code; it recommends a separate client for each device.
Your next step: For the web interface, confirm the Web variant in the order form. Use the delivered login details and add the configuration to your device’s VPN client.
Recovery planning: Server settings, client configurations and keys; protect exported files and QR codes.
OpenVPNUbuntu 22 Web
Provider information: The provider describes a pre-installed web panel. Its guide creates a certificate in the Certificates section and downloads an .ovpn file for the client.
Your next step: Use the supplied panel access, create a client certificate and import the downloaded configuration into the client. Confirm how administrative access will be protected.
Recovery planning: Server settings, certificates, keys and client profiles.
Outline VPNUbuntu 22
Provider information: The provider’s guide stores the management connection information in /root/outline_apiUrl.conf and uses it to connect Outline Manager to the pre-installed server.
Your next step: Retrieve your own management information securely, connect Outline Manager, then create a client access key. Keep management credentials private.
Recovery planning: Management connection information, access keys and the server configuration.
3X-UI VPNUbuntu 22 Web
Provider information: The provider describes a web panel for VPN and proxy configuration and says panel access is delivered after ordering the template.
Your next step: Use the supplied panel details, then configure the intended protocol and clients. Confirm the template’s current version and required resources.
Recovery planning: Panel settings, configured connections and credentials.
IPsec VPNUbuntu 22
Provider information: IPsec VPN on Ubuntu 22 is listed. The public catalogue does not specify an application version, minimum plan or supported client count.
Your next step: Confirm the authentication method, client compatibility and configuration delivery before ordering.
Recovery planning: VPN configuration, keys or certificates and client settings.
3proxyUbuntu 22
Provider information: 3proxy on Ubuntu 22 is listed. The public catalogue does not specify the supplied version, authentication defaults or application capacity.
Your next step: Confirm the proxy protocols, authentication and access controls required for your use case.
Recovery planning: Proxy configuration and authentication data.
MTProxyUbuntu 24
Provider information: MTProxy on Ubuntu 24 is listed. The catalogue does not publish minimum resources or the number of concurrent connections it can serve.
Your next step: Confirm the supplied version, connection details and resource requirements before ordering.
Recovery planning: Proxy configuration and connection secrets.
WordPress or another web applicationNo separate WordPress template listed in the reviewed catalogue
Provider information: The reviewed public catalogue lists website panels but does not list WordPress as its own pre-installed image. The FASTPANEL guide explains adding a website and database before installing a CMS or transferring a site.
Your next step: Choose a suitable panel or a plain Ubuntu image, then verify your application’s runtime, database and extension requirements. A panel template is not confirmation that your application is already installed.
Recovery planning: Application files, uploads, a consistent database export and configuration.
Confirm the resources before choosing a plan
The reviewed catalogue does not give per-application minimum vCPU, RAM or disk requirements. Check those limits, the software version and availability for your chosen region in the order form. For an unknown application requirement, keep the result unconfirmed.
Use the requirements and budget comparison once you know your resource needs. It covers checked 2, 4 and 8 GB-class plans; it does not validate these templates or predict users, requests per second or database performance.
The download includes your selected image, next steps and items still to confirm. Use the comparison link to carry your selection into the budget checker.
Observed 1 GB FASTPANEL server
We read the system information and current resource counters of one existing Ubuntu server on . The account lists the FASTPANEL (Ubuntu 22) image. This is an existing installation with its own services and stored data; it does not represent a fresh image.
| Item | Observed value |
|---|---|
| Account allocation | 1 core / 1 GB RAM / 10 GB storage; Amsterdam 1, Netherlands. |
| Guest system | Ubuntu 22.04.5 LTS; x86_64; 1 logical CPU. |
| Memory visible to Ubuntu | 957.3 MiB total; 321.5 MiB available. |
| Memory: total minus available | 635.8 MiB. This includes the operating system and existing services, not just FASTPANEL. |
| Swap | 0.0 MiB configured. |
| Root filesystem | 9.76 GiB total; 6.25 GiB used; 3.05 GiB available to an unprivileged user. |
| Brief CPU observation | 18.0% non-idle excluding I/O wait, over 2.002 seconds. This includes 0.5% steal; I/O wait was 8.0%. |
| Load average | 0.08 / 0.03 / 0.01 over 1 / 5 / 15 minutes. |
| Active services | FASTPANEL, Nginx, Apache, MySQL and PHP 8.1 FPM. Service-manager status only; individual websites and database queries were not tested. |
What this establishes: this particular 1 GB-class server has Ubuntu 22.04.5 and the listed services running. This initial read-only snapshot did not measure traffic or application capacity. The separate HTTP test below checks static HTML delivery on this installation. These results do not establish a minimum plan for FASTPANEL or any other template, or current availability when ordering.
Installed package versions and observation method
| Package | Installed version |
|---|---|
fastpanel2 | 1.11-ubuntu22.04p97 |
fastpanel2-nginx | 1.10-ubuntu22.04p11 |
nginx | 1.28.1-1~jammy |
apache2 | 2.4.52-1ubuntu4.18 |
mysql-server | 8.0.44-0ubuntu0.22.04.2 |
php8.1-fpm | 8.1.2-1ubuntu2.23 |
python3 | 3.10.6-1~22.04.1 |
The account provides the advertised allocation and location. Guest readings came from /etc/os-release, the machine architecture, /proc/meminfo, /proc/stat, load averages and statvfs for the root filesystem. Package and service checks used dpkg-query and systemctl is-active.
MiB and GiB are binary units; the account uses GB labels. Available memory is MemAvailable, which includes memory the kernel expects it can reclaim. The subtraction shown above is not a per-application measurement. Filesystem available space excludes reserved blocks, so used plus available need not equal total.
CPU percentages use two counter readings 2.002 seconds apart; guest counters already included in user/nice time are not counted twice. The non-idle figure excludes idle and I/O-wait time and includes steal time. A short sample can change quickly and is not a long-term utilization average. No software was installed, services restarted or synthetic traffic generated for this observation.
The FASTPANEL plan and budget comparison covers 2, 4 and 8 GB-class offers. Its compatibility status remains unconfirmed until the actual template requirements and chosen offer are verified.
Measured static-site HTTP load
On , we tested the existing 1-core, 1 GB-class server above with an external HTTPS client. Nginx returned one 40,864-byte static HTML document directly from the origin, bypassing Cloudflare. We checked the HTTP status and complete response body on every request.
Final 100 req/s send window: 3,000 correct HTTP 200 responses and no errors. Including the time to finish outstanding responses, the completed rate was 98.84 req/s. The 95th-percentile response time was 343 ms: 95% of requests finished within that time on this client-to-server connection.
| Target and send window | Observed result |
|---|---|
| 5 req/s · 20 s First run; up to 32 connections | 4.96 completed req/s; 100 responses; 0 errors. p50 / p95: 341 / 347 ms. Mean CPU: 1.1%; minimum available RAM: 332.9 MiB. |
| 20 req/s · 20 s First run; up to 32 connections | 19.70 completed req/s; 400 responses; 0 errors. p50 / p95: 340 / 342 ms. Mean CPU: 2.3%; minimum available RAM: 333.0 MiB. |
| 50 req/s · 20 s First run; up to 32 connections | 49.13 completed req/s; 1,000 responses; 0 errors. p50 / p95: 339 / 342 ms. Mean CPU: 12.1%; minimum available RAM: 332.6 MiB. |
| 100 req/s · 20 s First run; up to 32 connections | 89.86 completed req/s; 1,829 responses; 0 errors. p50 / p95: 339 / 341 ms. Mean CPU: 8.8%; minimum available RAM: 331.8 MiB. |
| 100 req/s · 30 s Confirmation; up to 64 connections | 98.84 completed req/s; 3,000 responses; 0 errors. p50 / p95: 334 / 343 ms. Mean CPU: 9.9%; minimum available RAM: 332.1 MiB. |
The two runs returned 6,479 verified responses including warm-up, with zero request errors. Available memory stayed at or above 331.8 MiB; the kernel OOM-kill counter did not increase. After each run, the page still matched its original body and FASTPANEL, Nginx, Apache, MySQL and PHP-FPM remained active.
Test method, generator limit and CPU spike
The first run sent at targets of 5, 20, 50 and 100 requests per second for 20 seconds each, using up to 32 persistent connections. At the 100 req/s target, the generator skipped 171 scheduled requests because all connection slots were occupied. Those requests were never sent and are not counted as successful responses or server errors. That run achieved 89.86 completed req/s.
We repeated only the upper target with up to 64 connections and a 30-second send window. All 3,000 scheduled requests were sent and completed. Each run had a 15-second warm-up at 5 req/s and 10-second idle periods before and after. Warm-up is excluded from the result rows. Completed req/s divides completed requests by elapsed time including the final responses; it therefore differs slightly from the send target.
A Windows client outside the VPS used HTTP/1.1 over HTTPS, with hostname and certificate verification, keep-alive connections and no response compression. Its physical location was not independently verified. Warm-up includes connection setup; the measured rows reused established connections. Latency covers the request through reading the full HTML response, including the network path. The test fetched no images, stylesheets or scripts and ran no browser rendering.
Server counters were sampled approximately once per second. CPU figures cover the whole guest, including existing services and monitoring; they exclude idle and I/O-wait time and include steal time. Means use fully contained sampling intervals. In the first 50 req/s phase, one CPU sample reached 100%; the phase mean was 12.1%. CPU also briefly reached 100% during the second warm-up. We did not isolate the process responsible, so these spikes are not attributed to Nginx. In the confirmation phase, mean CPU was 9.9% and the highest sample was 14.7%. RAM uses the kernel’s MemAvailable estimate, not per-application memory.
The client enforced request, duration and transfer limits, with stop conditions for an increased OOM counter, less than 160 MiB available RAM, more than 85% busy CPU for five consecutive samples, repeated failed requests or lost server telemetry. No stop condition fired. No software was installed, service restarted or server configuration changed.
What this supports: short static-HTML delivery at the measured rates on this specific installation. It does not establish maximum sustainable throughput, concurrent visitor capacity, full-page Core Web Vitals, PHP or database performance, or the capacity of another application image.
Check the order, access and recovery options
Use these published conditions alongside the image you choose. They describe the provider’s service; application setup and capacity still depend on your project.
Standard plans: published compute prices
| vCPU / RAM / disk | Transfer per calendar month | Daily | 30 days | 31 days |
|---|---|---|---|---|
| 1 / 1 GB / 10 GB | 1 TB | $0.07 | $2.10 | $2.17 |
| 1 / 2 GB / 40 GB | 32 TB | $0.50 | $15.00 | $15.50 |
| 2 / 4 GB / 80 GB | 32 TB | $0.67 | $20.10 | $20.77 |
| 4 / 8 GB / 160 GB | 32 TB | $1.34 | $40.20 | $41.54 |
The Standard page advertises a 10 Gbit/s network port and $2.25 per TB above the transfer allowance. Port speed is not measured application throughput. The 30- and 31-day amounts are daily-rate calculations; backups, applicable tax and optional services are separate. The 1 GB entry is a published plan, not an application recommendation.
- Location and trial
- The reviewed Standard offer is in the Netherlands. The provider offers daily billing and says there is no free trial. Confirm the selected data centre and amount due in the order form.
- Initial login and recovery console
- Provider help says access messages are available under Support → Tickets. For VNC, open My Servers, select the server, then Access → VNC. Confirm this recovery route before changing SSH or firewall settings.
- Your own installation image
- The ISO guide allows an upload, a download URL or an ISO-library image, with a maximum image size of 8 GB. It says uploaded images are not validated. Installation is completed through VNC; using your own ISO does not establish application compatibility.
- Administration and migration
- The published support article quotes $100 per hour for administration. It offers a site transfer without a labour charge when the work takes at most one hour and the balance has been funded for one month of the ordered plan. Request confirmation of scope through the account before relying on that offer.
- Snapshots and restore destination
- Provider snapshots are an additional paid service, with scheduled creation available. The snapshot guide requires a new restore destination to be in the same data centre as the copy and to have a disk quota at least as large as the snapshot. Network settings may need adjustment through VNC.
- Copies you can take with you
- The provider documents downloading a server backup as a compressed disk image. Keep an independent copy and test application and database recovery. A stored provider snapshot alone does not confirm a successful application restore.
Review backup retention, scaling and cancellation conditions →
Choose the image and review the order
Check the software version, region, resources and optional charges together.
Information checked and remaining questions
Provider publications checked on 12 October 2026: Standard and AMD EPYC image catalogues; employee help articles for website panels, FASTPANEL, OpenClaw, WireGuard Web, OpenVPN, Outline, 3X-UI, SSH/VNC, ISO installation, administration, snapshots and backup downloads. The catalogue establishes image availability as advertised; checkout determines whether that image is available with the selected plan and region.
The application notes labelled “Your next step” and “Recovery planning” are our deployment guidance. Exact template builds, per-image minimum resources, account-specific availability and the final payable total still need confirmation. We have not installed or tested the capacity of every application image. The separate observation and static-HTML HTTP test cover one existing FASTPANEL installation; they do not verify the current order template or the capacity of its panel, PHP, database or other applications.
Pick the right setup path
A new static website
Use the fresh-server steps below: SSH, a separate administrator, Nginx and HTTPS. No application runtime or database is installed.
Start the walkthrough →An application or control panel
Check its required OS and architecture first. A panel may manage Nginx and certificates itself; use its clean-image installer instead of combining recipes.
Check software requirements →An existing website
Prepare a separate destination, copy files and consistent database backups, test on a temporary hostname, then plan final synchronisation and DNS cutover. Keep the original service until validation is complete.
Prepare recovery →Does this walkthrough fit your server?
Choose what you know. Get a route with the steps to adapt before installing anything. This checks your answers against the walkthrough’s scope; it does not inspect or change your server.
Answers reset when you reload this page. Save a text copy to keep your route.
When the setup needs a different route
- An existing server: inventory its services and prepare recovery first. Use a separate destination for migration; do not install this fresh-server stack over a working site.
- An application or panel: follow its OS, architecture and installation requirements. A panel can manage its own web server, firewall and certificates. Hestia, for example, requires a fresh OS installation.
- Docker: plan port publishing and container networking separately. Published container ports can bypass UFW rules; this host-only Nginx recipe does not configure container isolation.
- Another Ubuntu release: check packages and software support for that release. These commands target 24.04; a different release is not automatically unsuitable for a VPS.
- OCI Ubuntu: skip the UFW recipe. Oracle’s platform images require their essential firewall rules to be preserved; changing them with UFW can prevent booting.
- Custom SSH port or no recovery access: confirm the actual port and a working console or rescue method before changing access rules. Keep the working SSH session open while testing a new one.
- No domain or a proxied domain: the first HTTP page can be checked without a domain using the example hostname. HTTPS needs a domain you control and working validation. For a proxy, plan edge and origin certificates and the validation method separately.
Prepare the server, domain and recovery access
Plan a fresh Ubuntu 24.04 VPS with a public IPv4 address, SSH on port 22, a sudo-capable initial account and a domain you control. Generate your SSH key in the next section before provisioning. If the empty server already exists, use the alternative key-installation path through your working access. Client commands use Bash on Linux, macOS or WSL; server commands run inside SSH. Stop if the example paths belong to an existing deployment.
Replace every 203.0.113.10 with your server address and every app.example.com with your hostname. Both are documentation examples. The initial username below is ubuntu; substitute the provider's account. Open the recovery console before changing access or firewall settings. Check the provider's firewall instructions for this image before using the UFW branch below; Oracle Cloud Ubuntu images require a different approach.
Create a key before provisioning, or add it through working access
On your computer, create a dedicated key and choose a passphrase. If the filename exists, choose another name throughout. The .pub file is public; keep the private file on your computer.
mkdir -p ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/ubuntu_vps
cat ~/.ssh/ubuntu_vps.pubFor a new VPS: now create the Ubuntu 24.04 server and supply this public key in the provider's SSH-key field. Confirm the initial username, then continue below with host-fingerprint verification. Skip the existing-server commands.
For an already-created, empty VPS: keep your working SSH session open. From another terminal on your computer, copy the new public key using the authentication that already works. Replace existing_vps_key with the filename of your current private key. If your established access uses a password or SSH agent, omit -i ~/.ssh/existing_vps_key; do not change the server's authentication policy.
scp -i ~/.ssh/existing_vps_key ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pubInside the existing server session, validate the uploaded public-key file and append it to the initial account's authorized_keys. The append preserves existing entries; the extra newline also handles a file whose final line had no newline. This is for your own initial account. If you have no working access, use the provider's recovery process before continuing.
if ssh-keygen -lf ~/ubuntu-vps-admin.pub; then
mkdir -p ~/.ssh
chmod 700 ~/.ssh
printf '\n' >> ~/.ssh/authorized_keys
cat ~/ubuntu-vps-admin.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
fiFor either path, before accepting a first connection compare its host-key fingerprint with the matching host public key in the trusted recovery console. For an Ed25519 host key, run this in that console:
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pubOn your computer, open a fresh connection using the new key. Keep any original access open until this succeeds.
ssh -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10From another terminal on your computer, copy the public key for the separate administrator created next. Recopying this temporary public-key file is fine if the existing-server path already uploaded it.
scp -i ~/.ssh/ubuntu_vps ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pubCreate an administrator and test it separately
On the server, check getent passwd deploy first. No account should be returned. If deploy already exists, choose an unused username and substitute it throughout before proceeding, including home paths and group names. This avoids replacing another user's key file.
Confirm the image and resources, review upgrades, then create the administrator. Set a strong password for its sudo prompts. The install commands give the account ownership of its key file with restricted permissions.
cat /etc/os-release
free -h
df -h /
sudo apt update
sudo apt upgrade
sudo adduser deploy
sudo usermod -aG sudo deploy
sudo install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
sudo install -m 600 -o deploy -g deploy ~/ubuntu-vps-admin.pub /home/deploy/.ssh/authorized_keysOpen another terminal on your computer and connect as the new administrator:
ssh -i ~/.ssh/ubuntu_vps deploy@203.0.113.10Inside that new server session, run sudo. It should print root after accepting deploy's password. Continue here when both checks work. Keep the original access available.
sudo whoamiInstall Nginx and use the firewall supported by your image
On the server, install Nginx first. Guest firewall settings and the provider's network firewall both affect access; keep the recovery console and working SSH session available while adjusting them.
sudo apt install nginx
sudo systemctl enable --now nginxIn the provider firewall, permit TCP 22 from your administration location and TCP 80/443 for website visitors. If SSH uses another port, preserve that rule. Network rules alone do not open ports blocked by the guest firewall.
Oracle Cloud Ubuntu images: skip the entire UFW block below. Oracle warns that using UFW can interfere with essential image firewall rules and prevent booting. Preserve the supplied iptables rules, including those protecting iSCSI boot and block volumes. Configure OCI security lists or network security groups and the documented guest-firewall rules for HTTP/HTTPS. Do not flush the existing rules or replace the image's firewall packages.
UFW branch for other fresh Ubuntu images: use these commands only when the provider supports UFW and the image does not require a different managed firewall setup. Permit the actual SSH port before enabling it; this example assumes port 22.
sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verboseAfter either firewall path, verify a fresh SSH login. An already-open session does not test a new connection. The external HTTP check in the next section must also succeed before requesting a certificate. Keep existing login methods available while diagnosing access problems.
Need a separate server for this setup?
Choose a fresh image and keep any existing production site separate.
Publish a page in its own Nginx site
On the server, create a new document root and configuration. Substitute your hostname inside the block. Keep the quoted EOF markers: they prevent the shell from expanding Nginx variables such as $uri.
sudo install -d -m 755 /var/www/first-site
printf '%s\n' '<!doctype html><html lang="en"><title>First deployment</title><h1>Ubuntu VPS is serving this page</h1></html>' | sudo tee /var/www/first-site/index.html
sudo tee /etc/nginx/sites-available/first-site >/dev/null <<'EOF'
server {
listen 80;
listen [::]:80;
server_name app.example.com;
root /var/www/first-site;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
EOF
sudo ln -s /etc/nginx/sites-available/first-site /etc/nginx/sites-enabled/first-site
sudo nginx -tOn the server, reload only if the configuration test succeeds:
sudo systemctl reload nginxFrom your computer, request this hostname at the server's address before changing DNS. Expect your heading, rather than the default Nginx welcome page.
curl --resolve app.example.com:80:203.0.113.10 http://app.example.com/Connect DNS and issue the HTTPS certificate
Create a DNS A record for the hostname pointing to the VPS IPv4 address. Publish an AAAA record only when IPv6 works on this server. A stale AAAA record can send visitors and certificate validation elsewhere. This example assumes DNS points directly to the VPS without a proxy.
On your computer, request http://app.example.com/ without --resolve. Continue when it returns your page. On the server, install the Ubuntu archive version of Certbot and its Nginx plugin. These packages require Ubuntu's Universe repository; resolve any package-not-found error before continuing.
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d app.example.com --redirect
sudo nginx -t
sudo certbot renew --dry-run
systemctl list-timers --all certbot.timerFollow the email and terms prompts. Certbot edits this site's configuration and enables an HTTP-to-HTTPS redirect. Confirm the renewal timer is scheduled; if inactive, enable it with sudo systemctl enable --now certbot.timer. Keep port 80 reachable for HTTP certificate validation and renewal.
Validate from outside and after reboot
On your computer, check the redirect, certificate and content. HTTP should redirect to HTTPS; HTTPS should succeed and display your heading. Do not add curl's -k option: it hides certificate validation failures.
curl -I http://app.example.com/
curl -I https://app.example.com/
curl -fsS https://app.example.com/While this is still a test deployment, run sudo reboot on the server. Reconnect as deploy when it returns, check systemctl is-active nginx, and repeat the external HTTPS request. Reboot deliberately closes SSH sessions; use the console if the machine fails to return.
Diagnose a failed check and preserve the deployment
Scroll sideways to see the full table
| Symptom | First checks |
|---|---|
| SSH times out | Address, provider and guest firewalls, recovery console |
| Permission denied (publickey) | Username, private key and authorized_keys permissions |
| Default Nginx page appears | DNS destination, server_name and enabled site |
| Certificate validation fails | Public A/AAAA records and port 80 reachability |
| Nginx fails after a change | sudo nginx -t and sudo journalctl -u nginx -n 50 --no-pager |
For a failed login, follow the SSH error diagnosis to separate network, service and key problems before changing access settings.
Keep site files, Nginx configuration, DNS records and rebuild steps outside the VPS. Restore them on a separate machine before relying on the process. Certificate private keys need protected storage if backed up. Add availability and certificate-expiry alerts; one successful check does not monitor tomorrow's renewal.
Start with the file backup and restore exercise for a static page and Nginx configuration. It checks an independent copy without overwriting your working site; full recovery also needs the remaining assets, certificates and service configuration.
This deployment serves static files. A database or application runtime needs its own service configuration and backup method. Use the hosting requirements and cost comparison when adding those components.
Keep your launch checklist
Run each check in the walkthrough, then mark what you have confirmed. Each item includes the expected result and where to look if it fails. These are your own checks; this page does not connect to your server.
0 of 9 checks marked complete. Work through the unchecked items.
Your checklist stays in this page session and resets on reload. Save a text copy to keep it. No server address, password or private key is requested.
What to maintain after the first launch
Assign an owner and a recovery procedure before real visitors depend on the server. A working first page is only the start.
- Updates: check the automatic-update configuration and logs on your actual image. Ubuntu’s unattended-upgrades configuration controls what is applied; application and third-party repositories need separate attention. Plan reboots when required.
- Disk and logs: watch free space, log growth and backup failures. Set useful alerts for your workload instead of relying on the server booting successfully.
- HTTPS: preserve the renewal schedule and required network access; check the hostname again after DNS or firewall changes.
- Recovery: repeat the relevant restore check after major application changes. A static-file restore does not validate a database, secrets or the whole operating system.
- Costs: review storage, traffic, retained copies and unused resources. Confirm what must be deleted to end billing before removing anything you still need.
For connection failures, use the SSH troubleshooting guide. For image changes, use the Ubuntu compatibility guide.
Ready to choose your next server?
Review the plan and image that fit your deployment requirements.
Ubuntu VPS server questions
What is an Ubuntu VPS server?
It is a virtual server running Ubuntu. You receive the resources and administrative access included in your hosting plan. Ubuntu is the operating system; the VPS subscription pays for the hosting resources. Applications, domain registration, backups and administration can have separate costs.
How much RAM and CPU do I need?
There is no universal size for an Ubuntu VPS. Add up your application, database, background jobs and management software requirements, then leave space for updates, logs and growth. The hosting requirements checker compares published specifications. It does not predict traffic capacity.
Which Ubuntu version does this setup use?
The commands below target a fresh Ubuntu 24.04 LTS server. This is a defined setup environment, not a claim that 24.04 is the newest release. Check your software, control panel and CPU architecture before choosing an image. See the Ubuntu image and compatibility guide.
Is a control panel or desktop required?
No. This walkthrough uses SSH and Nginx without a graphical desktop or hosting panel. A panel needs its own supported OS, installation procedure, resources and sometimes a paid licence. Start with its required clean image instead of installing it over this Nginx setup.
Is the server managed for me?
Only if the purchased service explicitly includes the tasks you need. Root access, an AI assistant and a support contact do not establish who installs application updates, investigates failures or restores a database. Confirm the administration scope before ordering.
Can I order Ubuntu with an application already installed?
The reviewed provider catalogue lists Ubuntu-based images for website panels, Docker Portainer, VPN tools, OpenClaw and other applications. Use the application image selector to check the published OS label and setup route. Confirm the exact software version, minimum resources and availability in the order form.
Is WordPress included in the listed panel images?
The reviewed catalogue does not list a separate WordPress template. The provider’s FASTPANEL guide describes creating a website and database before installing a CMS or transferring a site. Confirm what is installed before assuming your application is ready.
Can I run these commands on an existing website?
Use a separate test VPS first. The example creates files, enables a firewall and lets Certbot edit Nginx; an established server needs a review of its current sites, access rules and recovery process.
Does this install WordPress, Node.js or a database?
No. It produces a static HTTPS website. Keep that working baseline, then add the application runtime and test its startup, health checks and data recovery.
Does completing the checklist prove the server is production-ready?
It records checks you mark yourself. The page does not connect to your server. It covers the first static website setup, not application load capacity, a security certification, a high-availability design or a database restore. Keep application-specific acceptance checks separate.
Scope and verification
The command walkthrough targets a fresh Ubuntu 24.04 LTS server, SSH on port 22 and direct DNS for one static Nginx website. Oracle Cloud Ubuntu images use the separate firewall route described above. We have not run this recipe on every provider image or measured application capacity.
Documentation reviewed: Ubuntu Server OpenSSH, firewall, Nginx and automatic updates; Certbot user guide; Ubuntu Certbot package information; Oracle Cloud platform-image guidance; Docker Engine firewall limitations; Hestia installation requirements. Review date: 12 October 2026.
Written for a fresh Ubuntu 24.04 VPS with direct DNS and SSH on port 22. Follow the firewall branch supported by your provider; Oracle Cloud Ubuntu images must skip UFW. These are documentation-based examples; the complete procedure has not been tested on every provider image.