Skip to content

Self Host Odoo on VPS or Dedicated Servers

Run Odoo entirely on your own infrastructure with the same managed experience as Odoo.sh — full control, full flexibility, lower cost.

Want to run Odoo entirely on your own infrastructure? This guide walks through deploying a self-hosted Odoo instance on on-premises hardware, bare metal, or any cloud VM. With Cloudpepper, you get the simplicity of a managed platform — provisioning, deployment, monitoring, backups, support — without giving up control of where the workload runs.

  • Full control over data, configuration and upgrades.
  • Compliance for strict data-residency or privacy requirements.
  • Performance tuning freedom — Postgres, caching, workers, kernel tuning.
  • Cost efficiency, especially at scale or on long-running workloads.
  • A Base, Pro, or Agency plan with Cloudpepper.
  • Any cloud provider you choose, or a dedicated / on-premises server you control.
  • Root access to that server — password or SSH key.
  • A clean Ubuntu or Debian Linux install (see OS notes below).

Before deploying Odoo, make sure you have a server ready. Cloudpepper works with any cloud provider worldwide as well as a local or on-prem server. You only need root access (password or SSH key) and a supported Linux distribution.

Use the Server Sizing Guide to pick the right specs for your expected number of users and modules. As a rule of thumb, plan for at least 1 vCPU and 2 GB RAM per few concurrent active Odoo users, plus headroom for Postgres and your filestore.

Your operating system must be a clean install of Ubuntu or Debian with nothing else running on it. Cloudpepper provisions and hardens the box; pre-existing web servers, mail servers, custom Postgres builds, or competing service managers will conflict with the standard configuration.

Step 2 — Connect your server to Cloudpepper

Section titled “Step 2 — Connect your server to Cloudpepper”

In your Cloudpepper dashboard, click Add a Server.

Add a Server button in the Cloudpepper dashboard

Select the option Other (SSH) to enter the details of your server.

Other (SSH) option in the connect-server dialog

Then enter the details:

  • Odoo version — the base Odoo version for this server.
  • Hostname — the public IPv4 address of your server.
  • Port — the SSH port (usually 22).
  • Username — a user with sudo rights (typically root, or a sudo user without a password prompt).
  • Password — the user’s password.

Server details input form

Click OK to start provisioning.

Server provisioning status in the Cloudpepper dashboard

Cloudpepper now sets up your server: applying updates, installing the required packages, hardening the system, and installing its own SSH key for ongoing secure management. The whole thing usually takes 10–20 minutes depending on your server’s performance — grab a coffee.

Server in connected status, ready for Odoo instances

Your server is now connected and ready. Go to the Instances page in your dashboard and click Add Instance to create your first Odoo deployment.

While provisioning, you may see this error:

sudo: a terminal is required to read the password; either use the -S option to read from standard input or configure an askpass helper. sudo: a password is required.

This happens when you connect as a non-root user whose sudo still asks for a password. Cloudpepper runs non-interactively, so the prompt fails.

Grant NOPASSWD sudo to that user (run as root, replacing <user> with the account you connect as):

root@server
printf '%s ALL=(ALL) NOPASSWD:ALL\n' '<user>' > /etc/sudoers.d/90-cloudpepper
chmod 440 /etc/sudoers.d/90-cloudpepper
visudo -cf /etc/sudoers.d/90-cloudpepper

A firewall on your cloud provider or server is most likely blocking SSH. Confirm the SSH port you specified is open and accepts inbound connections from Cloudpepper’s platform IPs.

In rare cases the server’s public IP may sit on a blocklist that Cloudpepper can’t bypass. If retries keep failing, ask your cloud provider to issue a fresh IP and try again.