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
Management, deployment and backup
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) |
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). |
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 |
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) |
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