
Deploy Immich Takeout Import
Move a Google Photos Takeout into your own Immich
immich-server
Just deployed
/data
Just deployed
/var/lib/postgresql/data
Valkey
Just deployed
/data
immich-machine-learning
Just deployed
/cache
Deploy and Host self hosted Immich Takeout Import (Self-Hosted Photo Library Import) on Railway
This template gives you a self-hosted Immich stack on Railway, pitched at families and solo users leaving Google Photos.
About Hosting Immich Takeout Import open-source software on Railway (self hosted Google Photos Takeout import into self-hosted Immich template)
Your photos stay yours in this setup. Railway handles containers, networking, TLS and volumes.
Why Deploy Immich Takeout Import, the Google Photos alternative on Railway (Railway Free Trial)
Google Photos counts storage against your Google account, so more room means a paid Google One plan.
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying Immich Takeout Import on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Railway vs Other Hosting Providers and VPS for Immich Takeout Import self hosting
Here is how running this Immich stack on Railway compares with common VPS options for a Takeout import.
| Provider | What You Get with Railway | What You Get with the Other Provider |
|---|---|---|
| DigitalOcean | Four services from one template, with Postgres, Valkey and volumes wired up. | A droplet you size and secure yourself, with Compose files and firewall rules to manage. |
| AWS | Private networking between services without writing VPC or IAM config. | Fine-grained control over instances and storage, with a steeper setup for a family server. |
| Hetzner | A managed deploy with no server to patch and Immich env vars already set. | Low-cost RAM and CPU for big libraries, but you run the OS and updates yourself. |
Railway trades some price-per-core for less setup, which suits most families leaving Google Photos.
Common Use Cases for hosted Immich Takeout Import
- Moving a decade of Google Photos archives: A family with years of Takeout zips can point immich-go at the whole batch and end up with one family-owned library instead of a folder mess.
- Keeping albums and location data after leaving Google Photos: immich-go matches each photo to its JSON sidecar, so albums, descriptions and GPS coordinates come across with the files rather than getting stripped.
- Importing a plain folder of camera files: If your originals are just folders on disk, the official Immich CLI with --recursive and --album will build albums from folder names.
- Previewing a large upload before committing: Run the official CLI with --dry-run first so you can see what would be uploaded before any asset lands in the library.
- Consolidating duplicate exports from several batches: Takeout often repeats photos across batches, so importing them together and letting Immich flag duplicates keeps the library tidy.
Dependencies for Immich Takeout Import Docker hosted on Railway
This template runs four services in one Railway project: the Immich server, a machine learning service, Postgres and Valkey.
Deployment Dependencies for Managed Immich Takeout Import Service (Photo Management)
- immich-server: ghcr.io/immich-app/immich-server:v3.3.3, public domain on port 2283, health check at /api/server/ping, volume at /data.
- immich-machine-learning: ghcr.io/immich-app/immich-machine-learning:v3.3.3 CPU image, private on port 3003, volume at /cache.
- Postgres: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0, private, with its own volume.
- Valkey 9.1.2: Redis-compatible job queue, private, volume at /data, password required.
Implementation Details for Immich Takeout Import (Using Immich official docker image)
Set PORT and IMMICH_PORT to 2283 on immich-server, plus the DB_ and REDIS_ variables pointing at Postgres and Valkey, and IMMICH_MACHINE_LEARNING_URL set to the private ML domain on port 3003.
How does Immich Takeout Import compare against other ways to move photos into a self-hosted Immich library
Immich Takeout Import vs Google Photos (Google Photos Alternative)
- Where it wins: Your library lives on your own Immich server, so you own the files, albums and location data.
- Where Google wins: Google Photos needs no server, so you never touch a database, a volume or an upgrade.
- Migration cost: immich-go matches each photo with its JSON sidecar to keep albums intact, but you need a Takeout export in hand.
Immich Takeout Import vs iCloud Photos (iCloud Photos Alternative)
- Where it wins: Immich runs in any browser and has a mobile app, so you are not tied to the Apple ecosystem.
- Where iCloud wins: It is built into every Apple device and syncs with almost no setup.
- Import path: Takeout comes from Google, so iCloud users need a different export step before importing.
Immich Takeout Import vs PhotoPrism (PhotoPrism Alternative)
- Where it wins: Immich's mobile app handles automatic phone backup, which PhotoPrism is weaker at.
- Where PhotoPrism wins: It is strong on browsing and AI tagging, which suits a large archive better.
- Feature access: Some PhotoPrism features sit in paid tiers, while Immich is free and open source under AGPL-3.0.
Immich Takeout Import vs Ente (Ente Alternative)
- Where it wins: Ente is end-to-end encrypted and needs no server, so it is simpler if hosted privacy is your top priority.
- Where Immich wins: The library sits on infrastructure you control rather than a third party's.
- Operating effort: Ente asks almost nothing of you, while this stack means watching Postgres, Valkey and machine learning services and keeping backups off-site.
How to use Immich Takeout Import (the OSS photo management app)?
- Open the Immich web UI on your Railway domain and create the first admin account, which becomes admin.
- In user settings, generate an API key and restrict its permissions.
- Download immich-go from its GitHub releases page. It is a single binary, so no Node.js or Docker is needed.
- Run the Takeout import with your Railway domain as the server. Port 2283 is the documented port, so confirm the exact URL form against your domain.
immich-go upload from-google-photos --server=https://your-immich-domain --api-key=your-api-key /path/to/takeout-*.zip
- For a plain folder instead, install the official CLI on Node.js 22 or above and run:
npm i -g @immich/cli
immich login https://your-immich-domain/api your-api-key
immich upload --recursive --dry-run directory/
immich upload --recursive directory/ --album
- Check the dry run counts, then drop
--dry-runto upload for real.
How to self host Immich Takeout Import on other VPS Services (Immich self hosting guide)
Running Immich on your own VPS takes more setup than the Railway template, but the stack is the same.
Clone the Repository
Make a fresh directory and download the compose file and example env from the latest Immich release.
mkdir immich-app && cd immich-app
wget https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget https://github.com/immich-app/immich/releases/latest/download/example.env
Install Dependencies
You need Docker with the compose plugin. Install Node.js 22 or newer only if you want the official CLI.
Configure Environment Variables
Copy the example env to .env, then set the paths, an alphanumeric database password and your timezone.
mv example.env .env
# edit .env: UPLOAD_LOCATION, DB_DATA_LOCATION, DB_PASSWORD, TZ
Keep DB_DATA_LOCATION on a local SSD, never a network share.
Start the Immich Takeout Import Application
Bring the stack up, then open port 2283 to create the admin account and generate an API key.
docker compose up -d
Railway handles the compose wiring, private networking and volumes for you, so none of this file editing is needed there.
Official Pricing of Immich Takeout Import (Immich pricing)
Immich is free and open source under AGPL-3.0, with no paid tier and no hosted cloud from the project itself. Check Railway's current pricing page for exact rates, since they change.
Immich Takeout Import cloud vs self hosted comparison (Pricing, features, costs, and more)
Self-hosting Immich trades a subscription for a server bill, and that bill depends mostly on library size and how hard the machine learning features run.
Monthly cost of self hosting Immich Takeout Import on Railway
Railway bills compute by usage, and for this four-service stack at light family use expect roughly $20-40 a month, about 4 GB of RAM spread across the services.
System Requirements for Hosting Immich Takeout Import on a VPS
Upstream Immich asks for at least 6 GB of RAM and 2 CPU cores, with 8 GB and 4 cores recommended.
Frequently Asked Questions (FAQs)
Do I need the Google Photos app still installed?
No. Keep the zips until you have checked the result.
Why are some files skipped, and how do the default ban patterns affect that?
immich-go ships default ban patterns such as .DS_Store, @eaDir/ and Recently Deleted/, so junk files and system folders are skipped on purpose.
How are albums and sidecar metadata preserved?
immich-go matches each photo with its JSON sidecar, so dates, descriptions, locations and album membership come across with the file.
Do I need Node.js or Docker for immich-go?
No. immich-go is a single binary from its GitHub releases page. The official Immich CLI is different and needs Node.js 22 or above.
How do I back up the library after import?
Immich writes nightly database dumps to /data/backups on the library volume, but a volume is not a backup by itself.
Will the import run on a small Railway plan?
It will run, but slowly.
Template Content
immich-server
ghcr.io/immich-app/immich-server:v3.3.3Valkey
valkey/valkey:9.1.2immich-machine-learning
ghcr.io/immich-app/immich-machine-learning:v3.3.3