Blazor Server Hosting on UpCloud Linux for Small Production Applications

Last Update 29/01/2026
Software Stack Blazor Server · VS 2026 · .NET 10 · TablerForNet

Host a production-ready Blazor Server app on UpCloud Linux for about the cost of a coffee. This guide covers essential SEO basics: stable URLs, HTTPS by default, structured data, and reliable performance on a approx. £2/month VPS.

You’ll need an UpCloud account, a domain or subdomain with DNS configured, and SSH access. Below is the complete Blazor Server setup: creating the approx. £2 plan, securing Ubuntu, publishing your app, and running Nginx with Certbot for SEO-friendly HTTPS.

UpCloud offer: you and we each get £21 in credits. Your monthly fee remains the same.

Deploying Blazor Server on UpCloud Linux with Nginx as a reverse proxy and HTTPS termination
Setting up a production Blazor Server on UpCloud with Linux, Nginx, systemd, and TLS

Requirements before you begin

A domain is essential for SEO and HTTPS. Search engines favour stable hostnames, and Let’s Encrypt certificates need DNS. Ensure these are ready before setting up your UpCloud server:

  • A domain or subdomain already pointing to your server (e.g., app.example.com) with A/AAAA records.
  • An UpCloud account with the approx. £2/month General Purpose plan available in your area. View the UpCloud pricing page
  • SSH key set up for passwordless access; disable password login after initial boot for security.
  • Local .NET 8 SDK to publish your Blazor Server app before uploading to the VM.

Why UpCloud suits a approx. £2/month Blazor launch

UpCloud’s entry plan remains fast for users and search bots while keeping costs predictable. Each point below relates directly to SEO and uptime:

  • Stable approx. £2/month pricing with ample bandwidth keeps staging and small production sites affordable.
  • NVMe storage and worldwide data centres reduce Time to First Byte—one of the key SEO factors.
  • Native IPv4/IPv6 and floating IPs simplify blue/green deployments, allowing updates without downtime.
  • Built-in firewall and snapshots enable quick recovery, safeguarding your crawl budget from downtime.

Set up your approx. £2/month plan on UpCloud

Configure the VM once, keeping it minimal. Each step below prevents issues during certificate setup and future deployments:

  1. Register at UpCloud, confirm billing, and select the smallest General Purpose instance in the closest data centre.
  2. Choose Ubuntu 22.04 or 24.04, add your SSH key, and include a floating IP for zero-downtime swaps later.
  3. Permit only SSH (22), HTTP (80), and HTTPS (443) in the UpCloud firewall; all else remains closed by default.
  4. Take an initial snapshot before deploying so you can revert if a publish fails.
UpCloud registration and plan selection steps
Step-by-step guide to setting up the approx. £2/month UpCloud plan.

Bookmark the UpCloud control panel to rebuild swiftly if deployment fails; relaunching retains the approx. £2/month price.

Prefer the CLI? Use the UpCloud API or CLI to script rebuilds and snapshots, ensuring your Blazor stack is reproducible.

  • Consistent costs with a fixed low-spec VM footprint.
  • Rapid recovery through snapshots rather than manual debugging.
  • Consistent Blazor infrastructure achieved through scripted rebuilds.

Prepare Ubuntu and secure the environment

Update the base system, set UTC for consistent logs, and install only necessary tools. Security patches reduce vulnerabilities and keep TLS handshakes quick for crawlers.

Shell
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget unzip apt-transport-https ca-certificates gnupg
sudo timedatectl set-timezone UTC

Add a basic firewall allowing only the reverse proxy and SSH. Blocking all else prevents noisy bots from wasting CPU and keeps response times steady for SEO.

Shell
sudo apt install -y ufw fail2ban
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
sudo systemctl enable --now fail2ban

Install .NET 8 runtime and SDK

Using Microsoft’s package feed ensures automatic security updates. Install the SDK only if publishing directly on the server.

Shell
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt update
sudo apt install -y aspnetcore-runtime-8.0 dotnet-sdk-8.0

Publish and upload your Blazor app

Build locally in Release mode so the server runs trimmed binaries. Use rsync to keep permissions and speed transfers; SSH keys secure the process.

Shell
# Build locally
 dotnet publish -c Release -o publish

# Copy to UpCloud (replace user@host)
 rsync -avz publish/ user@YOUR_UPCLOUD_IP:/var/www/blazor-app/

# On the server, set ownership
 sudo useradd -m -s /bin/bash blazorapp || true
 sudo chown -R blazorapp:blazorapp /var/www/blazor-app

Run Kestrel managed by systemd

Bind Kestrel to localhost so only Nginx can access it. systemd auto-restarts the service and centralises logs for swift SEO troubleshooting if issues arise.

systemd

Serve the app via Nginx with HTTPS

Nginx handles TLS termination, serves HTTP/2, and forwards clean traffic to Kestrel. Certbot automates TLS certificates to keep pages secure and indexable.

nginx

Shell
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d app.example.com --redirect --agree-tos -m [email protected]
sudo certbot renew --dry-run

SEO checklist for a swift Blazor launch

  • Enforce HTTPS and HTTP/2, set strict caching headers for static files, and enable Brotli to reduce payload sizes.
  • Use clear slugs and culture segments where appropriate; consistent URLs help crawlers avoid duplicates.
  • Output JSON-LD (Article + FAQ) for each guide to enable rich results on Google and Bing.
  • Include Open Graph and Twitter cards in your metadata so previews display correctly on social media.
  • Monitor Core Web Vitals; lazy-load hero images and optimise JS to reduce interaction delays.

Monitor, scale, and control costs

  • Monitor journalctl and Nginx logs; failed deployments shouldn’t waste crawl budget or display outdated schema markup.
  • Maintain UFW allowlists and fail2ban to block brute-force attacks that hinder genuine visitors.
  • Plan monthly snapshots and off-site backups to enable quick rollbacks without upgrading your plan.
  • As traffic increases, clone the snapshot to a larger plan or add a second node behind a load balancer.

Ready to scale? Deploy another approx. £2/month node on UpCloud using the same image and route traffic through Nginx or a load balancer. Open UpCloud and clone the server.

Frequently asked questions

Answers on Blazor Server hosting on UpCloud for approx. £2/month