You can install Discourse on Hostinger, but only on a Hostinger VPS plan, because Discourse runs inside Docker and needs root access to a Linux server. Hostinger’s shared, cloud and WordPress hosting plans do not give you Docker or root, so a forum will never work there. On a KVM VPS the process is the same official install that Discourse documents for any cloud provider: point a domain at the server, run the installer, answer the SMTP questions, and let Let’s Encrypt handle the certificate.
wget -qO- https://raw.githubusercontent.com/discourse/discourse_docker/main/install-discourse | sudo bash. Enter your hostname, admin email and SMTP credentials when prompted, wait for the build, then open the site to finish the admin wizard.This guide assumes you have never run Docker but can paste commands into a terminal. It covers plan selection, DNS and email, the installer, TLS, backups and upgrades. If you have done this before, our Discourse on DigitalOcean tutorial follows the same shape; only the first two sections here are Hostinger specific.
Why shared hosting does not work and which VPS plan to pick
Discourse ships as a Docker container built from the discourse_docker repository, running Ruby on Rails, PostgreSQL, Redis, Nginx and Sidekiq inside it. There is no PHP or cPanel installer, and the project supports no install path other than Docker. Shared hosting gives you a PHP runtime and a file manager, which is the wrong tool entirely.
At the time of writing, Hostinger’s VPS lineup on its VPS hosting page consists of four KVM plans. The Discourse project’s published minimums are 1 GB of RAM with swap, 1 CPU core and 10 GB of disk, with 2 GB of RAM and 2 cores recommended, so every plan in the table clears the bar, but the cheapest one leaves little room once your forum grows.
| Hostinger plan | vCPU | RAM | NVMe storage | Fit for Discourse |
|---|---|---|---|---|
| KVM 1 | 1 | 4 GB | 50 GB | Works for a small private community; rebuilds are slow on one core |
| KVM 2 | 2 | 8 GB | 100 GB | Best default for most public forums |
| KVM 4 | 4 | 16 GB | 200 GB | Busy forums, heavy uploads, or Discourse plus other containers |
| KVM 8 | 8 | 32 GB | 400 GB | Large communities or separate data and web containers |
Prices change with promotions and term length, so check the page for the current number. All four plans include free weekly backups, which we will use as a second safety net later.
Step 1: Deploy the VPS with Ubuntu
In hPanel, open VPS, pick your server, and choose Operating system in the left menu. Select Ubuntu 24.04 LTS (plain, not a template), set a strong root password, and confirm. The reinstall takes a couple of minutes. While you wait, note the server’s public IPv4 address from the Overview tab.
Add your SSH key under Settings then SSH keys so you are not typing the root password every time. Then connect and update the base system:
ssh root@YOUR_SERVER_IP
apt update && apt full-upgrade -y
timedatectl set-timezone America/New_York
rebootHostinger’s VPS firewall (in hPanel under Firewall) is off by default. If you enable it, allow inbound TCP 22, 80 and 443 before you continue, because the installer will fail the Let’s Encrypt step if port 80 is blocked.
Step 2: Point DNS at the server
Discourse needs a real hostname before you install, because the certificate is issued during the build. Decide on the forum address now, for example forum.example.com. In whatever DNS provider manages example.com (Hostinger’s DNS zone editor if the domain is with them), add an A record with the name forum pointing to the VPS IPv4 address and a low TTL. If Hostinger assigned you an IPv6 address, add a matching AAAA record too, or leave IPv6 out entirely; a mismatched AAAA record is a common cause of certificate failures.
Confirm propagation from the server itself before moving on:
apt install -y dnsutils
dig +short forum.example.com AThe output must be your VPS IP. If it is empty or shows an old value, wait and try again. Do not start the installer until this resolves correctly.
Step 3: Get SMTP credentials
Discourse sends every account activation, password reset and notification by email, so a forum without working outbound mail is unusable. Do not try to use the VPS as its own mail server; Hostinger, like most providers, restricts outbound port 25 and your mail would land in spam anyway. Use a transactional email service such as Amazon SES, Mailgun, SendGrid, Postmark or Brevo, verify your sending domain there, and collect four values: SMTP host, port (587 is the safe choice), username and password.
The current installer lets you skip SMTP and rely on social logins, but that only delays the problem. Set it up now, along with the SPF and DKIM records your provider gives you.
Step 4: Run the Discourse installer
The official cloud install guide now provides a single bootstrap script that installs Docker, clones the launcher into /var/discourse and starts the setup wizard. Run it as root:
wget -qO- https://raw.githubusercontent.com/discourse/discourse_docker/main/install-discourse | sudo bashIf you prefer to see each step, the classic manual route still works and ends in the same place:
apt install -y docker.io git
git clone https://github.com/discourse/discourse_docker.git /var/discourse
cd /var/discourse
chmod 700 containers
./discourse-setupThe wizard asks for the hostname (forum.example.com), the admin email address (this account becomes the first administrator), the SMTP host, port, username and password, and an optional Let’s Encrypt notification address. It writes those answers into /var/discourse/containers/app.yml, then bootstraps the container. On a KVM 2 the bootstrap typically takes several minutes because it compiles assets and initializes PostgreSQL; on KVM 1 expect it to take noticeably longer. Do not interrupt it.
When it finishes, browse to https://forum.example.com. You should see the Discourse landing page with a valid certificate and a prompt to register the admin account using the email you entered. Complete that, confirm the activation email (which also proves SMTP is working), and step through the setup wizard for the forum name, logo and default settings.
app.yml. To change SMTP details, add plugins, or adjust memory tuning later, edit that file with nano /var/discourse/containers/app.yml and run ./launcher rebuild app. The rebuild takes the forum offline for a few minutes, so do it during quiet hours.Step 5: Verify TLS and tune the server
The installer requests a Let’s Encrypt certificate automatically and renews it from inside the container, so there is nothing to schedule. Verify it with curl -I https://forum.example.com and confirm you get a 200 or 302 with no certificate warning. If you see a self signed certificate, DNS was not resolving at build time; fix the record and rebuild.
The setup script checks for swap and offers to create it on small instances. On KVM 1 accept that offer; on KVM 2 and above it is still cheap insurance against an out of memory kill during a rebuild:
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile && swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstabThe installer sizes UNICORN_WORKERS and db_shared_buffers in app.yml based on the RAM it detects, so you rarely need to touch those by hand. If you later resize the VPS, rerun ./discourse-setup to have it recalculate.
Step 6: Backups
You have two layers. Discourse’s own backups (Admin, then Backups) dump the database and uploads to a tarball inside /var/discourse/shared/standalone/backups. Turn on automatic backups in Admin, Settings, Backups, set a daily frequency, and point them at an S3 compatible bucket so the archive is not sitting on the same disk as the forum. Hostinger’s weekly VPS snapshots are the second layer and will restore the whole machine, but they are weekly, so treat them as disaster recovery rather than your primary backup.
Test a restore once on a temporary VPS. A backup you have never restored is a hope, not a plan. It is the same approach we recommend in our guide to installing Grafana on Hostinger: keep application level exports off box and treat provider snapshots as a bonus.
Upgrading Discourse
Discourse expects to be updated often. Minor updates happen from the browser at https://forum.example.com/admin/upgrade: click Upgrade on the Discourse row and watch the log. Roughly every few months you should also refresh the launcher and rebuild from the shell, which pulls the newest base image and applies Docker and PostgreSQL changes that the web upgrader cannot:
cd /var/discourse
git pull
./launcher rebuild appKeep Ubuntu current too with apt update && apt full-upgrade -y; Docker restarts the container automatically after a reboot.
Troubleshooting
The build stops at “Let’s Encrypt” or the site shows a certificate error
Port 80 was unreachable or DNS did not point at this server when the container started. Check the hPanel firewall, run dig +short forum.example.com from the VPS, remove any stale AAAA record, then ./launcher rebuild app.
Activation email never arrives
Start with ./launcher logs app | grep -i smtp to see the actual error. Most failures are a wrong port, an unverified sending domain at the email provider, or a password with special characters that needs quoting in app.yml. Also confirm SPF and DKIM records exist.
Rebuild fails with an out of memory error
Add the swap file from Step 5, or temporarily lower UNICORN_WORKERS in app.yml to 2, then rebuild. On KVM 1 this is the most common failure.
“Port 80 is already in use”
Something else, usually Apache or Nginx from a template image, is bound to the port. Run ss -tlnp | grep ':80 ', stop and disable that service (systemctl disable --now nginx), and rerun the setup. Starting from a plain Ubuntu image avoids this entirely, which is one reason to skip the template and the reason this guide differs from our CyberPanel on Hostinger walkthrough, where a web server on port 80 is the point.
Disk fills up over time
Old Docker images and local backups accumulate. Run ./launcher cleanup to remove unused images, and set the backup retention count in Admin, Settings, Backups so old tarballs are pruned once they are safely in your bucket.
Frequently asked questions
Can I install Discourse on Hostinger shared or WordPress hosting?
No. Discourse requires Docker and root access to a Linux server, and Hostinger’s shared, cloud and managed WordPress plans do not provide either. You need one of the KVM VPS plans. If you already pay for shared hosting, you can keep your main site there and run only the forum on the VPS.
Which Hostinger VPS plan is best for Discourse?
KVM 2, with 2 vCPU and 8 GB of RAM, is the sensible default and matches the Discourse project’s recommended specs with room to grow. KVM 1 works for a small or private forum if you add swap. Move to KVM 4 when you host large uploads, many concurrent users, or extra containers.
Do I need a separate domain for the forum?
No. A subdomain such as forum.yourdomain.com is the normal setup and is what the installer expects. Create an A record pointing at the VPS before you run the installer, because the Let’s Encrypt certificate is requested during the initial build and needs the hostname to resolve.
Can I use Hostinger’s email plan for Discourse SMTP?
Technically you can enter any SMTP server, but mailbox style plans are built for a person sending a few messages, not an application sending notifications to every member. A transactional provider with a verified domain gives you better deliverability, proper bounce handling and DKIM signing, which Discourse relies on to keep mail out of spam.
The bottom line
Installing Discourse on Hostinger comes down to one decision and one command. The decision is to buy a KVM VPS instead of shared hosting; the command is the official installer, which handles Docker, the container build and the certificate for you. Everything else in this guide is preparation (DNS and SMTP) and housekeeping (backups and upgrades).
Get DNS resolving before you start, use a transactional email provider rather than a mailbox, and schedule off box backups on day one. Do that and a KVM 2 will run a healthy community forum for years with a monthly git pull and rebuild as the only maintenance.
