Set Up Your Own Photos Server Instead of Google Photos or Something Else by Using Immich and Tailscale
Published: Oct 20, 2025
Last updated: 03 Jan 2026
The solution is a free software called Immich https://immich.app and you can run it at your home (or in a rented server somewhere) on an old machine with some USB drives or set it up on fancy stuff with RAID etc.
There are four parts to it:
Setup Immich Server
- Go watch the awesome video that Tailscale folks have produced: https://www.youtube.com/watch?v=guHoZ68N3XM
Setup Immich Server URL with Tailscale
- This allows you to access your immich server with a URL that is only accessible to you as it using tailscale VPN.
- Tailscale to the rescue again. Watch the same video as above.
Upload your media (for a large amount)
- Download and install Immich-go, which allows you to upload large amounts of photos and videos to your Immich server with either your own local media or stuff you downloaded from Google Takeout.
- Download and install for your architecture: https://github.com/simulot/immich-go/releases/latest
- Basic commands - to upload from Google Takeout (download as zip):
./immich-go upload from-google-photos --server=https://your-immich-server-url --api-key=get-it-from-immich-portal /location-of-your-google-takeout-files - Basic commands - to upload from a folder in your system:
./immich-go upload from-folder --server=https://your-immich-server-url --api-key=get-it-from-immich-portal /path-to-photos-to-upload - For very large files and slow networks, you might want to keep the session longer so the files actually get uploaded. The switch to add to the above is:
--client-timeout=8h. Change the 8h (eight hours) to whatever suits you. - If you want to upload as another user (say a family member wants to upload ttheir google takeout), you can login as them and under settings, generate their own API key that you can use in the above commands so the bulk uploads go to their accounts.
Update your Immich server (installed via docker container)
- SSH to your server
- Find the the path to immich installation, say /appdata/immich/.
- run these commands in sequence to stop the docker container.
docker compose stop
docker compose pull
docker compose up -d
- Check using app or login to immich and see if the version information is correct.
Set up backup jobs to at least another disk (ideally three copies)
- Of course, back up your main data folder. Use rsync or if in a VM, you’ve got better tools.
Enjoy!
- Download the app to your phone, set up autobackups, tinker around
🐬