Overview
This is a repackaged software product wherein additional charges apply for hardening, security configuration, and support.
WHAT IS ZITADEL
Zitadel is an open-source identity and access management platform: it authenticates your users and issues tokens for your own applications over the standards they already speak. It is a single statically linked Go binary that serves the API and the admin Console, paired with a hosted login UI, and this AMI bundles the PostgreSQL 17 event store it needs. Feature blocks include OpenID Connect 1.0, OAuth 2.0 with the device and token-exchange flows, SAML 2.0, SCIM 2.0 provisioning, passwords, passkeys/WebAuthn and time-based one-time codes, plus multiple organizations inside one instance for multi-tenant products. Zitadel is event-sourced - every change is appended to an immutable event log in PostgreSQL, so the audit trail is the storage model rather than an add-on, and ordinary PostgreSQL backup and replication tooling applies directly. AGPL-3.0 license, no vendor lock-in: the issuer is a hostname you control, so you can rebuild or move the deployment without every relying party re-integrating.
WHAT THIS AMI ADDS
Security hardening:
- No credentials are baked into the AMI - the administrator password, the PostgreSQL application and superuser passwords, and the encryption master key that protects every stored secret are all generated on the instance at first launch and written to /root/zitadel-credentials.txt
- Self-registration is disabled, so anonymous visitors cannot create their own accounts in your directory; it can be enabled from the Console when you want public sign-up
- A unique TLS certificate is generated on each instance at first launch, carrying that instance's address - no private key is shared between deployments
- TLS is terminated at the perimeter on 443 in front of the Console, the OIDC/OAuth2/SAML/SCIM endpoints and gRPC; the application ports are not reachable from the network
- Bundled PostgreSQL 17 bound to 127.0.0.1 only, SCRAM-SHA-256 authentication, no trust authentication anywhere, and blocked externally in the firewall
- Login and consent screens cannot be framed (X-Frame-Options DENY), which blocks the classic consent-clickjacking attack against an identity provider
- Usage reporting is switched off - nothing leaves the instance
- The encryption master key is stored root-only and the login service cannot read it, so a compromise of the login process does not expose stored secrets
- UFW firewall pre-configured - TCP 22, 80 and 443 open; the API port, the login service port and PostgreSQL blocked
- fail2ban, AppArmor
- CVE scan - every image is scanned for vulnerabilities before release
OS hardening (CIS Level 1):
- CIS Ubuntu 24.04 LTS Level 1 benchmark applied via ansible-lockdown, with a documented tailored profile
- auditd, SSH hardening (key-only, no password authentication), Kernel hardening, IMDSv2 enforced
Compliance artifacts:
- SBOM - CycloneDX 1.6 at /etc/lynxroute/sbom.json
- CIS Conformance Report at /etc/lynxroute/cis-report.html
- CIS Tailored Profile at /usr/share/doc/lynxroute/CIS_TAILORED_PROFILE.md
- AGPL-3.0 license text and the exact upstream revision this image was built from at /usr/share/doc/lynxroute/LICENSES.txt
Highlights
- Zitadel security baked in: every credential generated at first launch including the encryption master key, self-registration disabled by default, bundled PostgreSQL bound to 127.0.0.1 only, TLS terminated at the perimeter with a per-instance certificate, login and consent screens not framable, usage reporting switched off, UFW firewall pre-configured.
- CIS Level 1 hardened Ubuntu 24.04 LTS: auditd, fail2ban, AppArmor, SSH key-only, IMDSv2 enforced. CVE-scanned before every release. SBOM (CycloneDX) and CIS Conformance Report included.
- Own your identity layer: OpenID Connect, OAuth 2.0, SAML 2.0 and SCIM 2.0 for your own applications, with passkeys, one-time codes, multi-tenant organizations and an event-sourced audit trail in PostgreSQL. AGPL-3.0 license - fully auditable, no vendor lock-in.
Introducing multi-product solutions
You can now purchase comprehensive solutions tailored to use cases and industries.
Features and programs
Financing for AWS Marketplace purchases
Pricing
Free trial
Dimension | Cost/hour |
|---|---|
m6i.large Recommended | $0.05 |
t3.medium | $0.05 |
m6i.xlarge | $0.05 |
Vendor refund policy
We do not offer refunds for this product. AWS infrastructure charges (EC2, EBS, data transfer) are billed separately by AWS and are not refundable by us.
How can we make this page better?
Legal
Vendor terms and conditions
Content disclaimer
Delivery details
64-bit (x86) Amazon Machine Image (AMI)
Amazon Machine Image (AMI)
An AMI is a virtual image that provides the information required to launch an instance. Amazon EC2 (Elastic Compute Cloud) instances are virtual servers on which you can run your applications and workloads, offering varying combinations of CPU, memory, storage, and networking resources. You can launch as many instances from as many different AMIs as you need.
Version release notes
Zitadel 4.16.1 - Initial release (July 2026)
- Zitadel 4.16.1 on Ubuntu 24.04 LTS - identity and access management over OpenID Connect 1.0, OAuth 2.0, SAML 2.0 and SCIM 2.0, with passkeys/WebAuthn, one-time codes, multi-tenant organizations and an event-sourced audit trail
- Includes the hosted login UI served under /ui/v2/login on the same origin as the API
- Bundled PostgreSQL 17 - a complete self-contained deployment, no external database required
- CIS Level 1 hardening applied (ansible-lockdown/UBUNTU24-CIS)
- CVE-scanned before every release
- No credentials baked into the image - the administrator password, both PostgreSQL passwords and the encryption master key are generated on this instance at first launch and written to /root/zitadel-credentials.txt
- Self-registration is disabled, so anonymous visitors cannot create accounts; it can be enabled in the Console
- HTTPS perimeter on 443 in front of the console, the OIDC/OAuth2/SAML/SCIM endpoints and gRPC, with a per-instance certificate generated at first launch
- PostgreSQL bound to 127.0.0.1 only and blocked externally in the firewall
- Login and consent screens cannot be framed (X-Frame-Options DENY)
- Usage reporting switched off - nothing leaves the instance
- Certbot pre-installed for a trusted certificate in one command
- zitadel-set-domain moves the instance onto your own hostname so the OIDC issuer follows
- UFW firewall pre-configured (ports 22, 80, 443 only)
- fail2ban, auditd, AppArmor pre-configured
- SBOM (CycloneDX 1.6) at /etc/lynxroute/sbom.json
- CIS Conformance Report (OpenSCAP) at /etc/lynxroute/cis-report.html
- IMDSv2 enforced
Additional details
Usage instructions
- Launch instance (t3.large recommended)
- Open Security Group - allow TCP 22 and TCP 443 from your IP
- SSH: ssh -i key.pem ubuntu@<PUBLIC_IP>
- Read credentials: sudo cat /root/zitadel-credentials.txt
- Open https://<PUBLIC_IP>/ui/console in your browser - accept the self-signed certificate warning - and sign in with the administrator username and password from that file
- Change the administrator password and add a second factor before exposing the instance
- Register your application under Projects, then point it at https://<PUBLIC_IP>/.well-known/openid-configuration
First launch takes 2-5 minutes to initialise the database and create the instance; until it finishes, the address serves a "Starting up" page. All credentials are generated uniquely on this instance at first launch and saved to /root/zitadel-credentials.txt. Nothing is baked into the image. Self-registration is disabled, so anonymous visitors cannot create accounts. No mail provider is configured either, so invitation and password-reset mails cannot be sent yet: create users under Users -> New with an initial password you set, leave "Email verified" on, and pass the password on out of band. Configure SMTP under Settings -> Notification providers to switch to real invitations, or enable public sign-up under Settings -> Login Behaviour. The bundled PostgreSQL listens on 127.0.0.1 only and is not reachable from the network; administer it locally with sudo -u postgres psql zitadel. The encryption master key at /etc/zitadel/masterkey decrypts every secret in the database. Back it up somewhere other than this instance - a database dump alone is not restorable without it. For production, replace the self-signed certificate: sudo certbot --nginx -d yourdomain.com Moving to your own hostname: sudo zitadel-set-domain idp.example.com re-runs the setup phase so the OIDC issuer follows. Do this before registering applications, because the issuer is part of every token. Back up with ordinary PostgreSQL tooling: sudo -u postgres pg_dump -Fc zitadel > backup.dump
Resources
Vendor resources
Support
Vendor support
Visit us online: https://lynxroute.com
For Zitadel documentation:
AWS infrastructure support
AWS Support is a one-on-one, fast-response support channel that is staffed 24x7x365 with experienced and technical support engineers. The service helps customers of all sizes and technical abilities to successfully utilize the products and features provided by Amazon Web Services.