This product has charges associated with it for hardening, security configuration, and support.
Zitadel is an open-source identity and access management platform - a single static Go binary plus a hosted login UI, issuing identities for your own applications over OpenID Connect, OAuth 2.0, SAML 2.0 and SCIM 2.0, with a bundled PostgreSQL 17 event store. This Lynxroute build is hardened and ready out of the box: every credential generated uniquely at first launch, self-registration disabled, PostgreSQL bound to 127.0.0.1 only, TLS terminated at the perimeter with a per-instance certificate, usage reporting switched off, UFW firewall pre-configured, and a CIS Level 1 hardened Ubuntu 24.04 LTS base.
AGPL-3.0 license - fully auditable, no vendor lock-in.
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
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.
AWS Marketplace now accepts line of credit payments through the PNC Vendor Finance program. This program is available to select AWS customers in the US, excluding NV, NC, ND, TN, & VT.
Try this product free for 5 days according to the free trial terms set by the vendor. Usage-based pricing is in effect for usage beyond the free trial terms. Your free trial gets automatically converted to a paid subscription when the trial ends, but may be canceled any time before that.
Zitadel - Hardened Self-Hosted Identity and Access Management
You pay by the hour based on the AWS EC2 instance size you run. Four instance options are available: t3.medium, t3.large, m6i.large, and m6i.xlarge. All run the same self-hosted identity and access management software. The difference is the compute capacity behind each choice. The t3 options use burstable instances, while the m6i options use general-purpose instances with fixed performance. Larger instances handle more load. Your hourly rate scales with the instance you select, plus standard AWS infrastructure charges.
Top-of-mind questions for buyers
What am I paying for with each hourly instance rate?
You pay for the AWS EC2 instance running the software, billed per hour. One unit is one running instance of the size you select. The t3 sizes use burstable compute, while the m6i sizes use general-purpose compute with steady performance. Larger instances handle more identity and access traffic.
Am I charged the hourly software rate when the instance is stopped?
The hourly software charge applies only while the instance runs. A stopped instance stops accruing the software fee. Standard AWS storage charges for attached volumes may still apply while the instance is stopped. To avoid all charges, terminate the instance rather than just stopping it.
What is included in the software running on all four instance options?
Every instance runs the same self-hosted identity and access management software. It covers multi-factor authentication, single sign-on, multi-tenancy for business-to-business use, and an audit trail of events. You can also run custom code on events. The instance size affects only compute capacity, not features.
zitadel.com
Helpful?
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?
Tell us how we can improve this page, or report an issue with this product.
Give us feedbackReport a problem with this product or seller
Legal
Vendor terms and conditions
Upon subscribing to this product, you must acknowledge and agree to the terms and conditions outlined in the vendor's End User License Agreement (EULA).
Content disclaimer
Vendors are responsible for their product descriptions and other product content. AWS does not warrant that vendors' product descriptions or other product content are accurate, complete, reliable, current, or error-free.
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.17.1
Zitadel 4.17.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
Security fixes in this update: Login V2 authentication is now blocked for users in deactivated organizations, a permission check is enforced when issuing passkey enrollment codes, and the browser is prevented from requesting OTP codes where it should not
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
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
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
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.
Zitadel is an open-source identity platform with OIDC, OAuth 2.0, SAML, and passkey support, providing enterprise-grade auth and user management for multi-tenant SaaS applications.