Overview
This is a repackaged software product wherein additional charges apply for hardening, security configuration, and support.
WHAT IS IMMICH
Immich is an open-source self-hosted photo and video backup platform - a private, no-trust-required alternative to Google Photos and iCloud. The stack runs as four docker containers: a Node and Python server that exposes the REST API and web UI on TCP 2283, a Python machine-learning container running CLIP for natural-language smart search and a face-detection model for grouping people, a PostgreSQL 14 database with the VectorChord and pgvecto.rs extensions for embedding-based queries, and a Redis-compatible cache (Valkey 9) for session and queue state. The mobile apps for iOS and Android perform background auto-upload of new photos and videos, full original-quality with EXIF and GPS metadata preserved. Operators get shared albums, public links, multi-user libraries with quotas, partner sharing, external libraries pointing at existing on-disk folders, RAW support, and HEIC and HEVC transcoding. AGPL-3.0 license, no vendor lock-in. The core differentiator vs. SaaS alternatives is sovereignty: photos, embeddings, face data, and the ML inference all stay on your own AWS account - none of it transits a third-party cloud.
WHAT THIS AMI ADDS
Security hardening:
- No pre-seeded admin account - on first visit the Immich web UI prompts you to register the first user, who becomes the admin. Immich locks admin sign-up automatically once the users table is non-empty, so subsequent attempts are rejected without operator action
- Postgres password (32 chars, random) generated at first boot and written into /opt/immich/.env - never baked into the AMI
- All four containers reachable only via the docker bridge - the host port 2283 is bound to 127.0.0.1 only, the only public-facing endpoint is Nginx on TCP 443
- Nginx reverse proxy with self-signed TLS, HTTP-to-HTTPS redirect, WebSocket support for live sync, security headers, and a 50 GB client_max_body_size for RAW and 4K video uploads
- All four container images pre-pulled at build time so first-launch is fast and not dependent on upstream registry availability
- Docker daemon log rotation pre-configured to prevent json-file logs from filling the root volume
- UFW firewall pre-configured - only TCP 22, 80, 443 are exposed
- 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
- auditd, SSH hardening, 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
Highlights
- Security baked in: no shared default credentials - you create the first admin on first visit and Immich auto-locks sign-up; per-instance Postgres password, web UI on 127.0.0.1 behind Nginx TLS, Postgres on the docker bridge only - unlike bare Immich AMIs that ship on 0.0.0.0:2283 with no TLS, exposed Postgres on 5432, and the ML container omitted.
- 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.
- Full ML stack on by default: CLIP smart search and face recognition work out of the box - all four container images (immich-server, immich-machine-learning, postgres with VectorChord and pgvecto.rs, valkey) are pre-pulled into the AMI so first launch is fast and self-contained. AGPL-3.0 license, no vendor lock-in.
Details
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 |
|---|---|
t3.large Recommended | $0.03 |
t3.medium | $0.02 |
m6i.xlarge | $0.05 |
m6i.large | $0.03 |
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
Version 2.7.5 - Initial release (May 2026)
- Immich 2.7.5 (full docker-compose stack: server, machine-learning, postgres, valkey) on Ubuntu 24.04 LTS
- CIS Level 1 hardening applied (ansible-lockdown/UBUNTU24-CIS)
- CVE-scanned before every release
- No pre-seeded admin: customer registers the first admin via the Immich web UI; Immich auto-locks admin sign-up after the first registration
- Postgres password (32 chars random) generated at first boot
- Web UI and Postgres reachable only through Nginx on TCP 443 (TLS) - host port 2283 bound to 127.0.0.1 only
- Full ML stack (CLIP smart search, face detection) on by default
- All four container images pre-pulled into the AMI for fast first launch
- Docker daemon log rotation pre-configured
- UFW firewall pre-configured (TCP 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 for typical home use, t3.medium minimum)
- Open Security Group - allow TCP 443 ONLY from YOUR IP/32 until you have registered the admin (see step 6). Allow TCP 80 if you want Let's Encrypt
- SSH: ssh -i key.pem ubuntu@<PUBLIC_IP>
- Read connection details: sudo cat /root/immich-credentials.txt - web UI URL, mobile-app endpoint, PostgreSQL password, stack-management commands
- Open https://<PUBLIC_IP>/ in your browser - accept the self-signed certificate warning
- Click "Get Started" / "Sign up" - register with YOUR real email. The first registered user becomes the admin. Immich locks admin sign-up automatically after the first signup, so a second attempt is rejected without operator action
- Widen the Security Group on TCP 443 once you have registered, if you intend to share the gallery
- Install the Immich app on iOS or Android, set Server URL to https://<PUBLIC_IP>/api, accept the self-signed certificate, log in with the account you just registered, enable Background Backup
IMPORTANT: keep TCP 443 restricted to YOUR IP/32 until you have registered. Anyone reaching the URL before you can claim the admin role.
First boot takes 1-2 minutes while Postgres initialises and the ML models warm. The web UI shows a Starting Up page and refreshes automatically. The photo library lives at /opt/immich/library and Postgres data at /opt/immich/postgres - mount an EBS volume there if you expect to store more than the root disk fits. Replace the self-signed TLS certificate with a CA-signed certificate for production: sudo certbot --nginx -d YOUR_DOMAIN.
Resources
Vendor resources
Support
Vendor support
Visit us online: https://lynxroute.com
For Immich documentation: https://docs.immich.app For Immich upstream issues: https://github.com/immich-app/immich/issues For AWS infrastructure issues:
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.