Applications AWS

Odoo 19 Community on AWS User Guide

Odoo 19 Community on AWS User Guide

This guide covers deploying the cloudimg Odoo 19 Community Edition AMI, retrieving your automatically-generated credentials, accessing the Odoo web interface, and setting up HTTPS with Let's Encrypt.

Prerequisites

  • An AWS account with EC2 access
  • The Odoo 19 Community AMI launched (t3.medium or larger recommended; m5.large for production)
  • Security group with inbound TCP 22, 80, 443, and 8069 open
  • Your instance's public IP address or DNS hostname

Connecting to your instance

OS variant SSH login user
Ubuntu 24.04 ubuntu
ssh -i /path/to/your-key.pem ubuntu@<instance-public-ip>

Checking Odoo is running

After launch, cloud-init runs the first-boot service which initialises the database and rotates credentials. Wait approximately two minutes, then verify all services are active:

sudo systemctl status odoo.service postgresql.service nginx.service

Expected output:

● odoo.service - Odoo Open Source ERP and CRM
     Active: active (running) since Wed 2026-05-27 19:55:18 UTC; 28s ago
   Main PID: 9231 (/usr/bin/python3 /usr/bin/odoo)

● postgresql.service - PostgreSQL RDBMS
     Active: active (exited) since Wed 2026-05-27 19:47:44 UTC; 7min ago

● nginx.service - A high performance web server and a reverse proxy server
     Active: active (running) since Wed 2026-05-27 19:55:18 UTC; 28s ago

Check which ports are listening:

ss -tlnp | grep -E ':80|:8069'
LISTEN 0  511  0.0.0.0:80    0.0.0.0:*  users:(("nginx",pid=9235,fd=5))
LISTEN 0   16  0.0.0.0:8069  0.0.0.0:*  users:(("odoo",pid=9231,fd=6))

Verify the Odoo version:

odoo --version
Odoo Server 19.0-20260527

Retrieving your credentials

On first boot, a one-shot service generates unique credentials for your instance and writes them to a root-only file:

sudo cat /root/odoo-credentials.txt
# Odoo 19 Community - generated on first boot by odoo-firstboot.service
# These credentials are unique to this VM. Store them somewhere safe.

odoo.url=http://172.31.90.207/
odoo.database=cloudimg
odoo.admin.email=admin@example.com
odoo.admin.user=admin
odoo.admin.pass=<ODOO_ADMIN_PASSWORD>

odoo.master.pass=<master-password>

# To access Odoo, browse to http://<this-vm-public-ip>/ and sign in to the
# database 'cloudimg' as 'admin' with the password above.

Note the odoo.admin.pass value — you will use it to sign in to the web interface.

Accessing the Odoo web interface

Browse to your instance's public IP address in a web browser:

http://<instance-public-ip>/

Odoo redirects to the login page automatically:

Odoo 19 sign-in page

Sign in with: - Email / Username: admin - Password: the odoo.admin.pass value from /root/odoo-credentials.txt - Database: cloudimg (pre-selected)

After signing in you reach the Odoo application launcher:

Odoo 19 application dashboard

Installing modules

The image ships with the Odoo base framework and web modules. Install business modules from the Apps catalogue:

  1. Click the grid icon in the top-left corner and select Apps
  2. Browse or search for the module you want (Sales, CRM, Accounting, Inventory, etc.)
  3. Click Activate to install

The most commonly used modules are: - Sales — quotations and invoices - CRM — customer relationships and pipeline - Invoicing — billing and payments - Inventory — stock management and warehousing - Purchase — purchase orders and vendor management - Project — task and project management - Employees — HR and payroll

Disk layout

The instance has two dedicated EBS gp3 data volumes in addition to the OS root disk:

Mount point Purpose Default size
/var/lib/postgresql PostgreSQL 16 database data 20 GiB
/var/lib/odoo Odoo filestore, sessions, attachments 20 GiB

Verify the layout:

lsblk -o NAME,SIZE,MOUNTPOINT
NAME          SIZE MOUNTPOINT
nvme0n1         8G
├─nvme0n1p1     7G /
nvme1n1        20G /var/lib/postgresql
nvme2n1        20G /var/lib/odoo

You can resize either data volume independently in the AWS console without touching the OS disk.

Useful management commands

Check the Odoo service log:

sudo tail -f /var/log/odoo/odoo-server.log

Restart Odoo after a configuration change:

sudo systemctl restart odoo.service

Access the PostgreSQL database directly:

sudo -u postgres psql -d cloudimg

Enabling HTTPS with Let's Encrypt

To serve Odoo over HTTPS with a trusted certificate you need a domain name that resolves to your instance's public IP address.

Install Certbot:

sudo apt-get update && sudo apt-get install -y certbot python3-certbot-nginx

Obtain a certificate (replace your-domain.example.com with your actual domain):

sudo certbot --nginx -d your-domain.example.com

Certbot automatically updates the nginx configuration to serve port 443 and redirect HTTP to HTTPS. After obtaining the certificate, restart nginx:

sudo systemctl restart nginx.service

Certbot installs a systemd timer that renews the certificate automatically before it expires.

Firewall and security groups

To enable HTTPS traffic, add an inbound rule to your EC2 security group allowing TCP 443 from 0.0.0.0/0. Port 8069 provides direct access to the Odoo application server if you need it; you can restrict it to your own IP once nginx is handling public traffic.


Screenshots

Odoo 19 running on Ubuntu 24.04

Terminal showing Odoo 19 version and systemctl status for odoo, postgresql and nginx services all active and running.

Odoo 19 sign-in page

The Odoo 19 sign-in page served on port 80 via nginx, ready immediately on first boot.

Odoo 19 main dashboard

The Odoo 19 main application dashboard showing the module launcher for CRM, Sales, Accounting, Inventory and more.


Support

This image is provided by cloudimg with 24/7 technical support. For assistance with Odoo deployment, module configuration, upgrades, customisations, performance tuning or PostgreSQL administration, contact support at www.cloudimg.co.uk.