Deploy Odoo 19 | ERP That Starts Without SMTP, Admin Password Set, DB Manager Off

Self-host Odoo 19 on Railway — no SMTP needed, admin password set.

Deploy Odoo 19 | ERP That Starts Without SMTP, Admin Password Set, DB Manager Off

Just deployed

/var/lib/postgresql/data

/var/lib/odoo

Deploy and Host Odoo on Railway

Odoo 19 Community, the open-source ERP, on Postgres. It starts without mail settings, creates its database with a generated administrator password instead of admin / admin, and keeps the web database manager switched off.

Nothing to fill in. Open the domain and sign in as admin with the ODOO_ADMIN_PASSWORD from the Odoo service's variables.

About Hosting Odoo

Two services:

  • Odoo 19, built from ak40u/odoo-railway-starter on the official image, with a volume for attachments and sessions (public)
  • Postgres 17: the Odoo database, on its own volume and on the private network only

Install the apps you need, CRM, Sales, Inventory, Invoicing, Website and the rest, from the Apps menu after signing in.

Common Use Cases

  • A CRM and sales pipeline with quotes and invoices for a small company.
  • Inventory and purchasing across warehouses.
  • A company website and shop connected to the same stock and accounting.

Dependencies for Odoo Hosting

Deployment Dependencies

  • Odoo odoo:19.0 (Community Edition, LGPL-3.0), wrapped by the starter repository's start script
  • Postgres postgres:17.11-alpine

Implementation Details

  • It starts without SMTP. The common Odoo template passes --smtp-port="${ODOO_SMTP_PORT_NUMBER}" to Odoo; left empty, Odoo stops at once with ValueError: invalid literal for int() with base 10: ''. Here mail is configured inside Odoo, under Settings → Technical → Outgoing Mail Servers.
  • No admin / admin. Started against a database that does not exist yet, Odoo creates it on its own with the login admin and the password admin, on a public domain. Here the start script creates the database with odoo db init and the generated ODOO_ADMIN_PASSWORD, and refuses to start without that password. Checked: on a fresh database admin / admin is rejected and the generated password signs in.
  • The database manager is off. Odoo's /web/database/manager otherwise offers the first visitor a freshly generated master password, enough to drop or download the database. --no-database-list and a filter to the one database switch the manager off.
  • No --init=all. The common template asks Odoo to install every available module on every start. Here Odoo starts with the base modules and you install apps from its Apps menu.
  • The database settings are flags. The stock image's entrypoint reads the database port from PORT, the variable Railway uses for HTTP, so the start script passes host, port, user and password as flags instead.
  • A readiness check. Railway waits for /web/login, which answers only once the database exists and Odoo is ready.

Configuration

The administrator password and the Postgres password are generated; change the administrator password after the first sign-in. Odoo runs threaded, which suits a small team; for more users, add --workers and --max-cron-threads in start.sh.

Verification

Deployed from this template into an empty project, both services starting at once: live in a little over two minutes, the start script created the database, /web/login answers 200 and /web/database/manager reports that it has been disabled. Locally, on the same image: a fresh database rejects admin / admin and accepts the generated password, a restart keeps the database and the password, and Odoo used about 80 MB.

Why Deploy Odoo on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying Odoo on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


Template Content

More templates in this category

View Template
Rocky Linux
Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
47
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51