n8n
Self-hosted workflow automation.
Self-hosted n8n workflow automation with PostgreSQL and automatic HTTPS on Ubuntu 24.04. Your owner account is created on first boot; no per-execution fees.
Opens the Odinex console with n8n selected. No licence fee: you pay for the server only.
- Base image
- Ubuntu 24.04 LTS
- Minimum
- 2 GB RAM · 20 GB disk
- Recommended plan
- S2 (2 vCPU · 4 GB RAM · 60 GB NVMe)
- Ready after boot
- 3 to 10 minutes (the first start runs database migrations)
- Image slug
n8n
About n8n
n8n is a workflow automation tool that connects APIs, databases, SaaS products and AI models with a visual editor, and lets you drop into JavaScript or Python when you need to. Self-hosting means unlimited workflows and executions for the price of the server, and credentials that never leave it.
This image runs n8n with a PostgreSQL 16 database behind Caddy, which serves it over HTTPS. On first boot the server generates its own encryption key and database password and creates the owner account, so the public setup page is never left open.
What’s included
Software installed on the image and the ports it uses.
| Component | Version |
|---|---|
| Ubuntu | 24.04 LTS |
| n8n | Latest release at image build time (official image) |
| PostgreSQL | 16 |
| Caddy | 2 (automatic HTTPS) |
| Docker Engine and Compose | From Docker's repository |
| Port | Protocol | Used for |
|---|---|---|
| 22 | TCP | SSH |
| 80 | TCP | HTTP (redirects to HTTPS, certificate validation) |
| 443 | TCP + UDP | HTTPS: editor, API and webhooks |
Who it’s for
- Operations and growth teams automating work between SaaS tools
- Developers building integrations, webhooks and internal tools
- Teams building AI agents and LLM pipelines that must keep data in the EU
Use cases
Business process automation
Sync CRMs, spreadsheets, ticketing and billing systems on a schedule or on events.
AI agents and LLM pipelines
Chain model calls, vector stores and tools with n8n's AI nodes, with credentials stored on your server.
Webhooks and API integrations
Receive webhooks at
https://<your-host>/webhook/...and turn them into actions in other systems.
Resources
n8n needs at least 2 GB of RAM and a 20 GB disk. Every plan includes an NVMe disk and 20 TB of traffic.
Smallest plan
S1
- 1 vCPU (shared)
- 2 GB RAM
- 40 GB NVMe disk
The smallest plan that meets the minimum.
Recommended
S2
- 2 vCPU (shared)
- 4 GB RAM
- 60 GB NVMe disk
A comfortable size for regular use.
S1 handles light workflows. Choose S2 for regular production use, and more RAM if workflows process large files or many items at once. You can resize the server later. See current prices.
Getting started after deploy
Wait for the first start
On first boot n8n migrates its database before it accepts requests, which takes a few minutes on a small server. The server's log is in
/var/log/nexoran-app.log.Find your address and password
The address, user name and password are written to
/root/APP-INFO.txtand printed when you log in over SSH as root. If you created the server with a root password and it meets n8n's policy (8 or more characters with an upper-case letter and a digit), the app uses that same password, so you can sign in with what the console showed you at creation. If you used an SSH key (or the password does not meet the policy), a strong password is generated for this server and written to/root/APP-INFO.txt.ssh [email protected] cat /root/APP-INFO.txtSign in
Open the address and sign in with the email
admin@<your-host>and your password. Until you add your own domain, the app is served athttps://<your-ip-with-dashes>.sslip.io(for examplehttps://203-0-113-10.sslip.io), a public wildcard DNS name that resolves to your server, with a Let's Encrypt certificate obtained automatically. Opening the bare IP address redirects there. Change the email to your own under Settings → Personal.Use your own domain
Create an A record for your domain that points to the server's IPv4 address and wait until it resolves. Then run the domain helper as root: it switches the app to the new name and obtains a new certificate.
nexoran-app-domain app.example.comUpdate webhook URLs
Webhook URLs follow the server's host name. After you change the domain, update any webhooks you registered with outside services.
Security notes
- n8n listens only on localhost; Caddy is the only service reachable from the internet.
- The encryption key for stored credentials (
N8N_ENCRYPTION_KEY) and the database password are generated per server in/opt/nexoran-app/.env. Keep a copy of the key: without it, stored credentials cannot be decrypted after a restore. - A server without a firewall accepts all inbound traffic. Create an Odinex firewall that allows only SSH (22), HTTP (80) and HTTPS (443) and apply it to the server. Odinex firewalls filter traffic before it reaches the server, so Docker's own iptables rules cannot bypass them.
- Turn on two-factor authentication for your n8n account in its personal settings.
- Take a snapshot before every upgrade, and turn on daily backups (20% of the server price) for anything you would not want to rebuild by hand.
n8n questions
Clear answers about location, infrastructure and billing.
Is this the full n8n?
How do I update n8n?
docker compose pull && docker compose up -d in /opt/nexoran-app. The image tracks the latest n8n release, so read the n8n release notes before a major upgrade.Which time zone do workflows use?
GENERIC_TIMEZONE in /opt/nexoran-app/docker-compose.yml.Can I use my own domain?
nexoran-app-domain n8n.example.com; the certificate and webhook base URL follow the new name.Documentation
More from the marketplace
Deploy n8n in Frankfurt
Your own server with full root access, NVMe storage and 20 TB of traffic, billed by the hour.



