🔥 Limited Time Offer!  ·  Get your VPS for £1 for the first month
Claim £1 VPS →
🚀 New: Enterprise hosting solutions — Visit UK Speed →

Press Esc to close · Enter to search

Odoo Hosting

How to Deploy Odoo 18 on a VPS with Nginx and PostgreSQL: Production-Ready 2026 Setup

How to Deploy Odoo 18 on a VPS with Nginx and PostgreSQL: Production-Ready 2026 Setup

Enterprise Resource Planning (ERP) software has become a critical component for modern businesses. Whether you’re managing sales, accounting, inventory, human resources, customer relationships, or project management, a centralized ERP platform can significantly improve operational efficiency. Among all open-source ERP solutions available today, Odoo continues to dominate the market thanks to its flexibility, extensive module ecosystem, and modern user interface. With the release of Odoo 18, businesses can benefit from improved performance, enhanced automation capabilities, better reporting tools, and a more streamlined user experience.

This guide explains how to deploy Odoo 18 on a VPS using PostgreSQL and Nginx in a production-ready configuration suitable for business environments in 2026.

Why Choose Odoo 18?

Odoo has evolved from a simple business management application into a complete ERP ecosystem. Today it supports:

  • CRM
  • Accounting
  • Inventory Management
  • Sales Automation
  • Human Resources
  • Manufacturing
  • Project Management
  • Helpdesk Systems
  • Ecommerce
  • Marketing Automation

Businesses can start small and gradually expand functionality without migrating to a different platform.

Why Host Odoo on Your Own VPS?

Many organizations choose self-hosted Odoo deployments because they offer:

  • Full control over data
  • Better privacy
  • Lower long-term costs
  • Custom integrations
  • Unlimited customization
  • Dedicated resources
  • Greater scalability

Unlike shared hosting environments, a VPS provides the performance and flexibility required by ERP applications.

Small Businesses

  • 2 vCPU
  • 4 GB RAM
  • 80 GB NVMe SSD

Growing Companies

  • 4 vCPU
  • 8 GB RAM
  • 160 GB NVMe SSD

Large Deployments

  • 8+ vCPU
  • 16+ GB RAM
  • Enterprise NVMe Storage

For optimal performance, AMD EPYC-powered VPS infrastructure provides excellent CPU efficiency and database performance.

Odoo 18 Architecture Overview

Our deployment consists of:

Internet
     │
     ▼
Nginx Reverse Proxy
     │
     ▼
Odoo 18 Application
     │
     ▼
PostgreSQL Database

This architecture provides:

  • Better security
  • SSL support
  • Load balancing capabilities
  • Reverse proxy protection
  • Simplified scaling

Step 1: Deploy Ubuntu Server

Recommended operating system:

Ubuntu 24.04 LTS

Update packages:

apt update
apt upgrade -y

Install essential tools:

apt install wget curl git unzip vim net-tools -y

Verify system updates:

reboot

Step 2: Configure Hostname

Set a hostname. Example:

hostnamectl set-hostname odoo18

Verify:

hostname

Output:

odoo18

Step 3: Install PostgreSQL

Odoo relies heavily on PostgreSQL. Install:

apt install postgresql postgresql-contrib -y

Verify:

systemctl status postgresql

Enable startup:

systemctl enable postgresql

Step 4: Create PostgreSQL User

Switch user:

su - postgres

Create Odoo database user:

createuser -s odoo18

Assign password:

psql

Inside PostgreSQL:

ALTER USER odoo18 WITH PASSWORD 'StrongPasswordHere';

Exit:

q

Step 5: Install Python Dependencies

Install required packages:

apt install python3-pip python3-dev python3-venv 
build-essential libxml2-dev libxslt1-dev 
libldap2-dev libsasl2-dev libjpeg-dev 
libpq-dev libffi-dev libssl-dev 
zlib1g-dev -y

These libraries are required for various Odoo modules.

Step 6: Create Odoo User

Create a dedicated service account.

adduser --system --home=/opt/odoo 
--group odoo

This improves security by isolating the application.

Step 7: Download Odoo 18

Switch to the Odoo directory:

mkdir /opt/odoo
cd /opt/odoo

Clone Odoo:

git clone https://www.github.com/odoo/odoo 
--depth 1 
--branch 18.0 
odoo-server

Verify:

ls

Step 8: Create Python Virtual Environment

Navigate:

cd /opt/odoo

Create environment:

python3 -m venv venv

Activate:

source venv/bin/activate

Install requirements:

pip install wheel
pip install -r 
/opt/odoo/odoo-server/requirements.txt

This may take several minutes.

Step 9: Install wkhtmltopdf

Odoo reporting depends on wkhtmltopdf. Install:

apt install wkhtmltopdf -y

Verify:

wkhtmltopdf --version

This component enables PDF report generation.

Step 10: Create Odoo Configuration File

Create:

nano /etc/odoo18.conf

Example configuration:

[options]
admin_passwd = StrongAdminPassword
db_host = False
db_port = False
db_user = odoo18
db_password = StrongPasswordHere

addons_path =
/opt/odoo/odoo-server/addons

logfile =
/var/log/odoo18.log

proxy_mode = True
xmlrpc_port = 8069

Save and exit.

Step 11: Create Log File

Create:

touch /var/log/odoo18.log

Set permissions:

chown odoo:odoo /var/log/odoo18.log

Logging is essential for troubleshooting.

Step 12: Create Systemd Service

Create:

nano /etc/systemd/system/odoo18.service

Example:

[Unit]
Description=Odoo18
After=postgresql.service

[Service]
Type=simple
User=odoo
Group=odoo

ExecStart=/opt/odoo/venv/bin/python3 
/opt/odoo/odoo-server/odoo-bin 
-c /etc/odoo18.conf

[Install]
WantedBy=multi-user.target

Reload:

systemctl daemon-reload

Enable:

systemctl enable odoo18

Start:

systemctl start odoo18

Check:

systemctl status odoo18

Step 13: Install Nginx

Install:

apt install nginx -y

Verify:

systemctl status nginx

Enable startup:

systemctl enable nginx

Step 14: Configure Nginx Reverse Proxy

Create:

nano /etc/nginx/sites-available/odoo18

Example:

server {

listen 80;

server_name
erp.yourdomain.com;

proxy_read_timeout 720s;
proxy_connect_timeout 720s;
proxy_send_timeout 720s;

location / {

proxy_pass
http://127.0.0.1:8069;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;

}
}

Enable site:

ln -s 
/etc/nginx/sites-available/odoo18 
/etc/nginx/sites-enabled/

Test:

nginx -t

Reload:

systemctl reload nginx

Step 15: Configure SSL

Install Certbot:

apt install certbot 
python3-certbot-nginx -y

Generate certificate:

certbot --nginx 
-d erp.yourdomain.com

Enable automatic renewal:

systemctl status certbot.timer

Now Odoo is accessible securely via HTTPS.

Step 16: Configure Firewall

Enable UFW:

ufw allow OpenSSH
ufw allow 80
ufw allow 443

ufw enable

Verify:

ufw status

Keep port 8069 private. Only Nginx should expose the application publicly.

Step 17: Secure PostgreSQL

Edit:

nano /etc/postgresql/*/main/postgresql.conf

Ensure:

listen_addresses = 'localhost'

This prevents external database access. Restart:

systemctl restart postgresql

Step 18: Optimize Odoo Performance

Edit:

/etc/odoo18.conf

Example worker configuration:

workers = 4
max_cron_threads = 2
limit_memory_soft = 2147483648
limit_memory_hard = 2684354560

Adjust values according to VPS resources.

Step 19: Configure Automated Backups

Database backup:

pg_dump

Example:

pg_dump -U odoo18 
database_name 
> backup.sql

Automate backups using cron jobs. Store copies:

  • Remote storage
  • Cloud backups
  • Backup VPS

Never rely on a single backup location.

Step 20: Monitor Odoo

Recommended monitoring:

  • CPU utilization
  • RAM usage
  • PostgreSQL performance
  • Disk I/O
  • Nginx logs
  • Odoo logs

Tools include:

  • Netdata
  • Grafana
  • Prometheus
  • Zabbix

Monitoring helps identify bottlenecks before users notice them.

Common Deployment Mistakes

Using Shared Hosting

Odoo requires dedicated resources.

Running Without Nginx

Reverse proxies improve security and SSL management.

Weak PostgreSQL Security

Always restrict database access.

Ignoring Backups

ERP systems contain mission-critical business data.

No SSL

Business applications should never operate without encryption.

Odoo 18 Performance Best Practices

For production environments:

  • Use NVMe storage
  • Enable PostgreSQL tuning
  • Optimize workers
  • Enable caching
  • Use HTTPS
  • Monitor continuously
  • Schedule backups
  • Keep modules updated

These practices significantly improve responsiveness and reliability.

Why VPS Hosting Is Ideal for Odoo

Odoo workloads involve:

  • Database operations
  • File storage
  • PDF generation
  • Background workers
  • User sessions

VPS infrastructure provides the resources necessary to handle these operations efficiently. Compared to shared hosting, a VPS offers:

  • Better performance
  • Greater security
  • Full administrative control
  • Easier scaling

Why UK Speed VPS Is Perfect for Odoo 18

UK Speed VPS solutions provide an excellent foundation for ERP deployments. Benefits include:

  • AMD EPYC processors
  • Enterprise NVMe storage
  • Low-latency connectivity
  • Full root access
  • Flexible resource upgrades
  • Advanced security controls
  • Reliable uptime

These features ensure that Odoo remains responsive as your business grows.

Final Thoughts

Deploying Odoo 18 on a VPS with PostgreSQL and Nginx provides a powerful, scalable, and secure ERP platform capable of supporting modern business operations. By following a production-ready deployment strategy that includes SSL encryption, database security, automated backups, monitoring, and performance optimization, organizations can build a reliable infrastructure that scales alongside their growth. In 2026, self-hosted Odoo deployments remain one of the most cost-effective ways to gain full control over business data while leveraging the flexibility and power of open-source ERP software.

Looking for fast, secure hosting?

Visit UK Speed for cloud servers, VPS NVMe, and dedicated hosting tailored for performance.

Share this article:
1
Powered by Joinchat