The speed of your launch affects how many hypotheses your team can test. However, a fast launch should not turn into publishing an unverified template: errors in a form, analytics, DNS, or server configuration can lead to lost leads and wasted advertising budget.
In this guide, we will explain how to prepare a static landing page, host it on a VPS with Ubuntu and Nginx, connect a domain and HTTPS, and then test the page before launching paid traffic.
This article is intended for a media buyer or a small team that already has an HTML template, a domain, and access to a lead-processing service, CRM, or tracker. If your landing page uses PHP or another server-side language, installing Nginx alone will not be enough: you will also need to configure a runtime environment, such as PHP-FPM. This article covers a simpler and faster scenario with a static page.
In this article, we will cover:
- how to review and adapt a template;
- what to remove from the code before launch;
- how to set up forms and analytics;
- how to choose a server for a landing page;
- how to deploy a static page on Ubuntu and Nginx;
- how to connect a domain and HTTPS;
- what to check before buying traffic;
- how to organize payments for hosting, domains, and working services.
Step 1. Prepare the Landing Page
Start by analyzing pages in your niche. The goal is not to copy another website, but to understand which blocks, offers, visual solutions, and calls to action are used for a similar audience.
When analyzing pages, pay attention to:
- the order of blocks and the logic of the page;
- the headline, subheadline, and offer description;
- the lead or registration form;
- buttons and the user path to the target action;
- images and visual accents;
- mobile display;
- loading speed and the number of external scripts.
Use your own templates, licensed materials, or files that you have permission to use. Do not copy other people’s texts, images, logos, reviews, or commercial elements without permission from the owner: this creates legal and reputational risks.
If you already have a ready-made HTML template, proceed to the technical review.
Step 2. Check the Code, Forms, and Analytics
The archive you receive is only a starting point. Before launch, you need to unpack it, review it, and adapt it to your campaign.
For a static landing page, the main file is usually index.html. You can open it in Visual Studio Code, Notepad++, or another code editor.
If the main file in the archive is index.php and the form sends data to a local lead.php file, the project cannot be deployed as a regular static website. First, clarify the template requirements and configure PHP-FPM, or replace the local handler with a ready-made integration for a CRM, tracker, or affiliate network.
Remove Third-Party Trackers and External Connections
Look for Meta Pixel, Google Analytics, TikTok Pixel, Yandex Metrica, and other analytics integrations. Third-party trackers may send data about visits and user actions to the previous owner of the template.
Check:
- code in
and before the closingtag; - connected JavaScript files;
- external scripts and iframes;
- JavaScript redirects;
- links and requests to third-party domains;
- forms that may send data to someone else’s address.
Do not limit yourself to searching for the names of well-known trackers. Open the page locally and check the Network tab to see which domains it contacts. After cleaning it up, connect only your own analytics systems and the integrations you need.
Check Analytics Events
Connect your own pixels and configure key events: page view, form start, and successful lead submission.
Do not track conversions based only on a button click. The lead event should fire after a successful response from the handler or on the thank-you page. Otherwise, incomplete and failed submissions may appear in your advertising account.
To test Meta, you can use Meta Ads Data Advisor, an official extension previously known as Meta Pixel Helper. Additionally, check events in the Test Events section of Events Manager.
In DevTools, use:
- the Network tab for requests to analytics and the lead handler;
- the Console tab for JavaScript errors;
- the Application tab to check cookies and local storage, if they are used.
Step 3. Adapt the Content and Mobile Version
Even a high-quality template needs to be adapted to a specific offer and audience. A generic page does not always match user expectations, so the offer should be clear on the first screen.
Review and update:
- the headline and subheadline;
- the description of benefits;
- prices, terms, and limitations;
- images and banners;
- reviews, ratings, and other social proof;
- buttons and calls to action;
- error messages and form submission confirmation.
Use images of an appropriate size and format. WebP or AVIF with a fallback option is often suitable for photos, while SVG works well for simple illustrations. Do not upload an image several thousand pixels wide if it is displayed in a small block on the page.
Minimum Mobile Version Checklist
- text is readable without zooming;
- the main CTA is visible on the first screen or quickly accessible;
- the form is not covered by the on-screen keyboard;
- images do not break the layout;
- fields use the appropriate input type, such as
telfor a phone number; - there is no horizontal scrolling;
- interactive elements are not placed too close together;
- the page loads without noticeable delays on mobile internet.
For additional testing, use Google PageSpeed Insights. It shows lab data and, for pages with enough traffic, field data from the Chrome UX Report. Evaluate not only the final score but also the specific causes of slowdowns: heavy images, render-blocking resources, third-party scripts, and server response time.
Step 4. Choose Hosting for Your Task
For one simple static landing page, shared hosting may be enough. A VPS is useful when you need access to web server settings, multiple websites, custom routing rules, or additional services.
However, a VPS does not mean unlimited capacity. Before ordering, review the acceptable use policy, plan limitations, and backup terms. If you expect consistently high traffic or sudden spikes, discuss the expected load with the provider’s support team in advance. Larger projects may require a more powerful VPS, a CDN, load balancing, or a dedicated server.
VPS or Dedicated Server
| Criterion | VPS | Dedicated server |
|---|---|---|
| Resources | Virtual configuration within the selected plan | Resources of a separate physical machine |
| Cost | Usually lower | Usually higher |
| Management | Access to the OS and service settings | Maximum control over the configuration |
| Scaling | Often possible to change the plan or individual resources | Usually requires coordination or migration |
| Typical use cases | Landing pages, small websites, individual services | High sustained load and resource-intensive projects |
Do not choose a configuration based only on the number of landing pages. Static pages usually consume little CPU and RAM, but the load changes significantly if PHP, a database, a tracker, or background processes also run on the same server. Start with a suitable plan, enable monitoring, and increase resources based on actual usage.
When choosing a server, consider:
- location – a server closer to your audience usually reduces network latency; for multiple regions, you can use a CDN;
- disk – NVMe is useful for projects with intensive file and database usage, but it does not replace page optimization;
- network and traffic limits – check port speed, monthly bandwidth limits, and sustained load restrictions;
- IP address – clarify whether a dedicated IPv4 address is included in the plan and whether it can be replaced if technically necessary;
- backups – find out how often copies are created, how long they are stored, and how much restoration costs;
- support and SLA – check working hours, available types of assistance, and the procedure during an outage;
- upgrade options – find out in advance whether you can increase CPU, RAM, and disk space without a long migration.
For hosting landing pages, consider VPS from Hoster.Solutions and choose a location and configuration for your task. Before ordering, review the usage policy and the limitations of the specific plan.
If your project requires the resources of a separate physical machine, consider Hoster.Solutions dedicated servers.
Step 5. Deploy a Static Landing Page on Ubuntu and Nginx
To begin, prepare:
- a VPS with a supported Ubuntu LTS version;
- administrative SSH access;
- a domain;
- a ready folder containing
index.html, styles, scripts, and images; - the lead handler URL, if the form sends data to an external service.
Hoster.Solutions installs the selected operating system but does not provide its own DNS servers. DNS records can be configured with your domain registrar or an external DNS service.
1. Connect to the Server
Use the username provided by the provider:
ssh USER@SERVER_IPIf the provider gave you only root access, use it for the initial setup, then create a separate user with sudo and configure SSH key authentication. Constantly working as root increases the impact of an accidental mistake.
2. Install Nginx
sudo apt update
sudo apt install nginx -y
sudo systemctl status nginxAfter installation, open the server IP address in a browser. If Nginx is available, you will see the default welcome page.
3. Configure the Firewall
First, allow SSH so you do not lose access to the server, then open HTTP and HTTPS:
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw statusIf SSH runs on a non-standard port, add the corresponding rule before enabling the firewall.
4. Create the Website Directory
sudo mkdir -p /var/www/landing
sudo chown -R "$USER":"$USER" /var/www/landingOn your local computer, upload the contents of the landing page folder:
scp -r ./landing/. USER@SERVER_IP:/var/www/landing/The ./landing/. construction copies the entire contents of the directory, including hidden files.
5. Create the Nginx Configuration
Create the file /etc/nginx/sites-available/landing:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/landing;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}Replace example.com with your domain. If you do not use the www subdomain, remove it from server_name.
Enable the configuration and check the syntax:
sudo ln -s /etc/nginx/sites-available/landing /etc/nginx/sites-enabled/landing
sudo nginx -t
sudo systemctl reload nginxIf nginx -t shows an error, do not reload the configuration until you fix it.
6. Configure DNS
In your registrar’s or DNS service’s control panel, create:
- an A record for the main domain pointing to the server’s IPv4 address;
- an A record or CNAME for
www, if you use this subdomain; - an AAAA record only if IPv6 is actually configured on the server.
Activating a standard VPS from Hoster.Solutions usually takes a few minutes. DNS updates often take about an hour, but depending on the registrar and caching, they may take up to 24–48 hours.
7. Connect HTTPS
Certbot recommends that most users install it through snap:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbotBefore issuing a certificate, make sure the domain points to the server, Nginx responds over HTTP, and ports 80 and 443 are open.
Obtain the certificate:
sudo certbot --nginx -d example.com -d www.example.comSpecify www.example.com only if the corresponding DNS record exists.
After installation, check automatic renewal:
sudo certbot renew --dry-runOpen the website using https:// and make sure the HTTP version redirects users to the secure connection.
Step 6. Organize Payments for Working Services
When launching and maintaining projects, you regularly need to pay for hosting, domains, trackers, analytics, advertising accounts, and work subscriptions. If all expenses go through one card, it becomes harder for the team to control budgets and identify the reason for a failed renewal.
Pay2.House offers virtual cards with BINs from different countries and regions for paying for advertising and online services. Whether a specific service can be paid for depends on its rules, the card parameters, and the transaction itself, so check the available cards and terms before issuing one.
To organize expenses, you can use:
- separate cards for hosting, domains, advertising, and subscriptions;
- spending limits and transaction control;
- cards and roles for team members;
- transaction history in a single interface;
- bulk card issuance and API-based automation, if available on the selected plan.
For example, a separate card for hosting and domains helps keep infrastructure payments separate from advertising expenses. Before launch, check the balance, the next renewal date, and automatic payment settings for each service.
How Long Preparation Takes
If the template, domain, server, and lead handler are already prepared, the technical part can be completed in a few hours. Below is an approximate timeline for a simple static landing page:
| Stage | Estimated time |
|---|---|
| Template adaptation | 30–90 minutes |
| Code, form, and analytics review | 30–60 minutes |
| Nginx installation and configuration | 30–60 minutes |
| File upload and configuration check | 15–30 minutes |
| HTTPS setup | 15–30 minutes after DNS updates |
| Final testing | 20–40 minutes |
These estimates do not include waiting for a non-standard server configuration to activate, DNS propagation, fixing template errors, or setting up PHP or another server-side application.
What to Check Before Launching Traffic
| What to check | What to pay attention to |
|---|---|
| Domain and HTTPS | The domain points to the correct server, the certificate is valid, and HTTP redirects to HTTPS |
| Nginx | The configuration passes nginx -t, and the website uses the correct directory and domain |
| Files | There are no 404 errors, broken images, or requests to unnecessary third-party domains |
| JavaScript | There are no Console errors that break the form or interface |
| Analytics | Only your own trackers are connected, and test events appear in analytics systems |
| Conversion | The lead event fires after a successful submission, not on a button click |
| Forms | The lead appears once in the CRM, tracker, or affiliate network with all required fields |
| UTM and click ID | Parameters are preserved during navigation and passed with the lead |
| Mobile version | The page works correctly on several screen sizes and in different browsers |
| Speed | Images are optimized, and there are no unnecessary heavy scripts or slow requests |
| Load | The plan and provider rules match the expected traffic volume |
| Backups | It is clear what is backed up, how often, and how to restore the website |
| Server access | SSH keys are used, and only the necessary ports are open |
| Updates | The latest Ubuntu and Nginx security updates are installed |
| Payments | Hosting, domain, and working services are paid for, and renewals do not depend on one shared card |
Before the main campaign, send a small amount of test traffic. Check the entire path: ad click → page load → form submission → lead creation → analytics event. This test reveals errors that are difficult to notice during a regular review of the landing page.
Conclusion
Preparing a landing page for launch is not just uploading files to a server. You need to remove third-party trackers from the template, set up your own analytics, test the form and parameter transfer, configure Nginx, DNS, and HTTPS, and then complete the entire user journey until the lead appears in your working system.
A VPS gives you control over the configuration, but it requires independent setup and compliance with the provider’s restrictions. For a static landing page, start with a simple configuration, monitor actual load, and increase resources as needed.
The more thoroughly you test the page, server, analytics, and payments before launch, the less time your team will spend solving technical problems after traffic starts.
Be the first to share your opinion!
We value your feedback — share your thoughts.