Skip to Content

Gomworx Hosting Architecture

Hosting Architecture


Overall Architecture


Your Odoo environment runs on its own virtual server in a Hetzner datacenter. The ISO 27001 / SOC 2 infrastructure is hardened by default with automatic updates, brute-force protection, backed by a 99.9% uptime guarantee. It is upported by a management platform, code version control and backup storage, with active monitoring as an optional add-on. Each component is described below with its location, purpose and access model.

Runtime flow
Users
Browser, mobile, integrations
HTTPS
TLS / DNS
DNS, Let's Encrypt certificate, optional Cloudflare or own firewall in front
Hetzner Dedicated Server
Germany (Falkenstein, Nuremberg) or Finland (Helsinki), depending on availability and/or preference. One VM per customer.
Odoo application PostgreSQL Odoo Filestore Host firewall Monitor agent (optional)
Management, deployment and backup
GitHub Repositories
Private, Gomworx Repo, 2FA
read-only deploy key
Cloudpepper Management Platform
Provisioning, updates, module deployments, backup schedules, logs, audit trail
manages the server, runs daily backups
Encrypted Backup Storage (EU)
Cloudpepper Managed Backup Storage at OVH France. Optional second copy to your own S3 / SFTP
Gomworx Odoo Monitor optional
Optional add-on. Central monitor on a separate Gomworx server plus a light agent on your server that sends metrics and log lines outbound (HTTPS, revocable per-server token). Checks availability, cron, mail queue, errors, SSL and more.


Storage


Provider

Hetzner, a German infrastructure provider. Your Odoo environment runs on a shared or dedicated virtual server in one of its datacenters.

Purpose

Runs the Odoo application server and the PostgreSQL database for your environment(s): production and, if wanted, a staging copy. One dedicated VM per customer: no other customers on the same server, no shared database or filestore.

Characteristics

Location

Germany (Falkenstein or Nuremberg)
Finland (Helsinki)
depending on availability and/or preference

Security

Host firewall (UFW), managed by the management platform, only allows 80/443 (web) and SSH. The database port is not reachable from outside. All traffic runs over HTTPS.

Access Security

Server access only via SSH with keys; password login is disabled. Odoo access via personal user accounts with roles and rights per user; two-factor authentication available. Integrations with external systems use API keys per integration user, never personal passwords.

Full Access

Gomworx administrators (SSH key)

Read Access

Customer (per Odoo user through Odoo database)


Management Platform


Provider

Cloudpepper, a SaaS Odoo DevOps platform that connects to your Hetzner server.

Purpose

Provisioning, OS and Odoo updates, module deployments from Git, backup schedules, logs and restarts. Every user-initiated operation (deploy, update, restart, backup, restore, login) is logged in an audit trail with timestamp, user and resource.

Characteristics

Location

SaaS platform, connected to your Hetzner server

Security

Connects to the server with a unique SSH management key per server, never shared between servers or workspaces. Every user-initiated operation is logged in an audit trail. Details below.

Access Security

Gomworx administrator account with two-factor authentication (active). Cloudpepper connects only from two fixed source IPs, which are allowlisted on the server firewall. Customers get no access by default; all changes go through Gomworx.

Full Access

Gomworx administrators (2FA)

Read Access

None

How Cloudpepper secures its access to your server

The points below come directly from Cloudpepper and describe how the platform handles the keys and connections it uses to manage your server.

Management keys

Cloudpepper generates a unique SSH management key for each connected server. Keys are not shared between servers or across a workspace.

Rotation and revocation

There is currently no self-service rotation option in the dashboard or API, and keys are not rotated on a fixed schedule. If compromise is suspected, the affected key is removed from the server immediately and Cloudpepper support coordinates the replacement; a one-time reconnect may be required if access has already been revoked.

Source IPs

Cloudpepper connects from two fixed IPv4 addresses. The authoritative list is published at api.cloudpepper.io/ip-list.txt and has remained stable since January 2025; there is no formal advance-notice SLA for changes. Gomworx allowlists these addresses on port 22 and checks the list at every server setup.

Key storage

Private keys are encrypted before storage in tenant-scoped backend storage and decrypted only when required for an authorised server operation. Access is restricted to the platform service and authorised Cloudpepper administrators for operational or support purposes. This is application-level encrypted storage, not HSM custody.

Audit trail

Workspace administrators can retrieve the audit trail in JSON. It records timestamp, user, action and affected resource for user-initiated operations; it does not record every automated SSH connection, command or scheduled job as a separate session entry. Technical and security logs are retained for up to 1 month, longer where required for an investigation. Cloudpepper support can provide an extract for a specific incident period.

What Gomworx does with this

Audit-log exports are taken on the day an incident is reported, not afterwards, because of the 1-month retention. Server-side SSH, sudo and firewall logs are kept for 90 days by Gomworx independently of Cloudpepper, so platform sessions remain traceable on the server itself.

Latest version: September 21, 2026


Source Code


Provider

GitHub (Microsoft). All custom modules live in a private repository on the Gomworx account.

Purpose

Version control for all custom modules, with full version history. Code only, never your data or databases. The server pulls the code through the Cloudpepper deployment automation.

Characteristics

Location

United States (GitHub, Microsoft). Source code only, no business data.

Security

Private repository, visible only to explicitly invited collaborators.

Access Security

The server pulls code with a read-only deploy key; no personal credentials are stored on the server.

Full Access

Gomworx (2FA)

Read Access

Customer technical contact on request (read rights on own repository)


Backup


Provider

Cloudpepper Managed Backup Storage, hosted in OVH datacenters in France.

Purpose

Daily backup of database and filestore, physically and operationally separate from the production server. Default retention (same cadence as Odoo.sh): 7 daily, 4 weekly and 3 monthly backups (3 months of history), each with database dump and filestore. Frequency configurable from hourly to monthly; 


Optional
(1) Longer retention or a shorter RPO is possible at extra cost.

(2) Second encrypted copy to your own S3 bucket or SFTP server (for example a Hetzner Storage Box), so you hold your data independently of Gomworx and Cloudpepper.

Characteristics

Location

OVH datacenters, France (EU). 
Optional second target of your choice (S3 / SFTP).

Security

Encrypted in transit (TLS) and at rest. Geographically and operationally separated from the production server.

Access Security

Storage credentials exist only in the management platform, not on the Odoo server, so a compromised server cannot delete the backups.

Full Access

Gomworx, via the management platform (2FA)

Read Access

Customer, via optional second copy to own S3 / SFTP


Monitoring


Provider optional

Gomworx Odoo Monitor: a central monitoring server operated by Gomworx at Hetzner (odoomonitor.gomworx.net) combined with a light monitoring agent on your Odoo server.

Purpose

Monitors availability, cron jobs, mail queue, errors, SSL expiry and backup freshness. Alerts by e-mail to Gomworx Administrator. 

Optional
(1) SIEM integration: a light log forwarder (Vector, Filebeat or rsyslog) on the server sends Odoo, nginx and system logs outbound over syslog-TLS or HTTPS to your collector, with local buffering when the collector is unreachable and optional field masking before transmission.

Characteristics

Location

Central monitor on a separate Gomworx server at Hetzner
Agent on your Odoo server

Security

Two channels: the central monitor reads Odoo through the standard XML-RPC API with a separate read-only monitoring user and API key, and the agent on your server sends metrics and log lines outbound only (HTTPS) with a per-server token that can be revoked individually. No inbound connection, no SSH or other server access from the monitor.

Access Security

Dashboard behind its own login. Each customer gets a status page with own login or access code that shows only their instance.

Full Access

Gomworx (admin)

Read Access

Customer (own status page)
Monitoring account (read-only API user in Odoo)


TLS / DNS


Provider

Let's Encrypt certificate on the server. DNS at your own registrar or managed by Gomworx.

Purpose

All traffic runs over HTTPS.


Optional

Network integrations:

(1) e.g. Cloudflare in front

(2) Your own virtual firewall 
(appliance by customer)

Characteristics

Location

Certificate on the server; DNS at your registrar or at Gomworx

Security

HTTPS only; Let's Encrypt certificate. The monitor alerts on SSL expiry.

Access Security

DNS changes via your registrar account or via Gomworx. Optional Cloudflare Access or VPN-only access for the backoffice.

Full Access

Gomworx (Certificate); Customer or Gomworx (DNS)

Read Access

None


Intellectual Property

Gomworx remains the copyright holder of the custom modules built for you. After payment you receive an exclusive, perpetual and non-transferable right of use for your own Odoo environment(s).

On request you get read access to the repository or a full export, and you are not tied to Gomworx: the code can be deployed for that environment on any Odoo hosting.

Reselling, transferring to third parties or using the code in other databases or companies falls outside the right of use. These terms are laid down in the agreement.

Standard Odoo modules remain under their own licence (LGPL/AGPL).


Version

Last edited: September 21, 2026