LogoLogo
DownloadBlog
  • Overview
  • Getting started
    • Meshnet explained
    • How to start using Meshnet
      • Using Meshnet on Windows
      • Using Meshnet on Android
      • Using Meshnet on iPhone/iPad
      • Using Meshnet on macOS
      • Using Meshnet on Linux
      • Using Meshnet on Android TV
    • How to use Meshnet securely
  • Features
    • Linking devices in Meshnet
      • Linking external Meshnet devices on Windows
      • Linking external Meshnet devices on Android
      • Linking external Meshnet devices on iPhone/iPad
      • Linking external Meshnet devices on macOS
      • Linking external Meshnet devices on Linux
      • Linking external Meshnet devices on Android TV
    • Explaining permissions
      • Remote access permissions
      • File sharing permissions
      • Traffic routing permissions
      • Local network permissions
    • Renaming devices in Meshnet
      • Renaming devices on Windows
      • Renaming devices on Android
      • Renaming devices on iPhone/iPad
      • Renaming devices on macOS
      • Renaming devices on Linux
    • Sharing files in Meshnet
      • Sharing files on Windows
      • Sharing files on Android
      • Sharing files on iPhone/iPad
      • Sharing files on macOS
      • Sharing files on Linux
      • Sharing files on Android TV
    • Routing traffic in Meshnet
      • Routing traffic from Windows
      • Routing traffic from Android
      • Routing traffic from iPhone/iPad
      • Routing traffic from macOS
      • Routing traffic from Linux
      • Routing traffic from Android TV
  • How-to guides
    • Gaming
      • How to set up a private Minecraft server with Meshnet
      • How to set up a private Stardew Valley server with Meshnet
      • How to play Quake 3 Arena over Meshnet
      • How to set up a private Team Fortress 2 server with Meshnet
      • How to set up a remote game-streaming server for Moonlight
      • How to set up a Palworld dedicated server
      • How to play Fallout: New Vegas multiplayer over Meshnet
      • How to set up a private Factorio server with Meshnet
    • Remote files and media access
      • How to set up and access shared folders
        • Configure and access shared folders on Windows
        • Configure and access shared folders on macOS
        • Configure and access shared folders on Linux
        • Access shared folders from Android
        • Access shared folders from iPhone/iPad
        • Access shared folders from Android TV
      • How to watch videos over Meshnet using Kodi
      • How to configure and access a Jellyfin media server remotely
      • How to set up a Plex media server and access it remotely
      • How to set up a remote NAS using OpenMediaVault and Meshnet
      • How to set up a remote picture library with LibrePhotos and Meshnet
      • How to use Syncthing for remote continuous file synchronization
      • How to set up a remote Airsonic music server
      • How to set up HTTP File Server for remote file access
      • How to set up a remote audiobook server
      • How to host a remote Kavita e-book server
      • How to set up and remotely access Immich using Meshnet
    • Remote device access
      • How to log in to your PC remotely over Meshnet
        • Connect to a Windows device
        • Connect to a macOS device
        • Connect to a Linux device
      • How to access remote systems over Meshnet using SSH
      • How to access your IP camera over Meshnet
      • How to use Home Assistant remotely over Meshnet
      • How to make secure macOS Time Machine backups from anywhere
      • How to use Ansible over Meshnet
      • How to access files in your NAS from anywhere without compromising its security
      • How to set up a phone as a security camera with remote access
      • How to assign custom host names to Meshnet services using Nginx proxy manager
      • How to use Proxmox VE remotely over Meshnet
      • How to set up a remotely controlled 3D printer
      • How to set up and remotely access a CasaOS server
    • Joint projects
      • How to set up an NGINX web server and remotely access it over Meshnet
      • How to use Nextcloud file syncing with Meshnet
      • How to set up pair programming using tmux
      • How to set up a Visual Studio Code server for remote development over Meshnet
      • How to host a Focalboard server for remote project management
      • How to use Meshnet for multi-screen Node.js development
      • How to use the Multi-user editing plugin in Unreal Engine over Meshnet
      • How to set up a private Mumble voice chat server
      • How to host a private Rocket.Chat server
    • Own VPN server setup
      • How to set up a VPN server through self-hosting or with DigitalOcean
      • How to create a VPN server with Microsoft Azure
      • How to create a VPN server with AWS
      • How to create a VPN server with Google Cloud
      • How to create a VPN server with Linode
      • How to create a VPN server with Hetzner
    • Network protection
      • How to set up your network protection with Pi-hole
      • How to set up your own DNS server
      • How to protect your network with AdGuard Home
      • How to use the self-hosted Whoogle search engine remotely
      • How to set up a VPN router using Meshnet
  • Troubleshooting
    • Common issues on Windows
    • Common issues on Android
    • Common issues on iPhone/iPad
    • Common issues on macOS
    • Common issues on Linux
Powered by GitBook

© 2025 Nord Security. All Rights Reserved.

On this page
  • What is Immich?
  • Before you begin
  • Run Immich using Docker
  • Prepare the Immich directory
  • Modify environmental variables
  • Start the Immich containers
  • Configure your Immich access
  • Set up the administrator user
  • Create a new user account
  • Add Meshnet address as an external domain
  • Access Immich over Meshnet
  • Method 1: Using the Immich mobile app
  • Method 2: Using an internet browser
  • Upload your media
  • Organize and share your media
  • Create a new album
  • Share an album between users
  • Generate a sharing URL
  • (Advanced) Import an external library
  • Modify the Compose file
  • Create a library
  • Turn on periodic scanning

Was this helpful?

  1. How-to guides
  2. Remote files and media access

How to set up and remotely access Immich using Meshnet

Discover how you can configure and remotely access Immich with Meshnet.

PreviousHow to host a remote Kavita e-book serverNextRemote device access

Last updated 14 days ago

Was this helpful?

What is Immich?

is a self-hosted and open-source tool for backing up and managing your images and videos. It offers an intuitive solution with a wide range of features, including multi-user support, asset sharing, and . Unlike other self-hosted picture libraries, such as , Immich is primarily focused on backup functionality, allowing you to easily upload pictures from desktop and mobile platforms.

By supplementing your Immich setup with , you can enable secure content backup and remote access over an encrypted tunnel. This configuration does not require or experience with . Even if you are on the other side of the globe, simply turn on Meshnet and connect to your Immich server as if you were on the same (LAN).

This guide will walk you through the process of setting up a personal Immich instance and showcase how Meshnet can be integrated to allow for seamless remote connections to the server.

Before you begin

Make sure that you have and installed on your device. You can find instructions on how to download and install these tools on the Docker website:

Note

Docker Compose comes pre-installed with Docker Desktop.

Run Immich using Docker

Immich operates as a multi-container app, comprising Docker containers for the server, database, and machine learning, all working together seamlessly. The Docker Compose tool is used to manage the preparation, deployment, and operation of these interconnected containers.

Prepare the Immich directory

To start, you need to prepare a folder that will hold all files and data required to run Immich.

  1. Open PowerShell.

  2. In your preferred directory, create a new immich folder and navigate to it using the following command:

    mkdir immich; cd immich

  3. Invoke-WebRequest https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml -OutFile docker-compose.yml 
    Invoke-WebRequest https://github.com/immich-app/immich/releases/latest/download/example.env -OutFile .env

  4. Use the ls command to check if both files have downloaded successfully.

  1. Open Terminal.

  2. In your preferred directory, create a new immich folder and navigate to it using the following command:

    mkdir immich && cd immich

  3. wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml 
    wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

  4. Use the ls -a command to check if both files have downloaded successfully.

Modify environmental variables

Next, you need to alter some of the default values provided in the downloaded files to fit your setup.

Note

  1. In PowerShell, run the following command to create a new volume that will be used for database storage.

    docker volume create pgdata

  2. Open the .env file using Notepad with the command below:

    notepad .env

  3. Make the following changes to the environmental file:

    • Set the value of UPLOAD_LOCATION to the path where you want the uploaded pictures and videos to be saved, as shown:

      If the path contains spaces, enclose it with single quotation marks.

    • Change the DB_DATA_LOCATION location value to postgres to ensure the database uses the Docker volume.

  4. Press Ctrl + S to save changes and then exit Notepad.

  5. Open the docker-compose.yml file using Notepad using the command provided below:

    notepad docker-compose.yml

  6. At the end of the file, under the volumes, append a new pgdata: line, to map the Docker volume to the container.

  7. Press Ctrl + S to save changes and then exit Notepad.

  1. From the terminal, open the .env file using the Nano text editor with the following command:

    nano .env

  2. Set the value of UPLOAD_LOCATION to the path where you want the uploaded pictures and videos to be saved, as shown:

    If the path contains spaces, enclose it with single quotation marks.

  3. Press Ctrl + X, Y, and Enter to save changes and exit the text editor.

Start the Immich containers

While in the immich directory, execute the following command in the command line to deploy your Immich instance:

docker compose up -d

Verify the containers' status

Run the docker ps command to check the state of the containers. In the output, under STATUS, you should see Up and the duration indicating how long the containers have been active.

Configure your Immich access

Once the Immich server container completes initialization, it will start a web interface that allows you to manage your Immich instance.

Set up the administrator user

Upon accessing the Immich web interface for the first time, you will be prompted to create an administrator user account.

  1. Open your internet browser and navigate to the Immich web interface.

    • If you’re accessing Immich from the same device that is hosting it, go to localhost:2283/.

    • Otherwise, swap the localhost part with the server’s local IP address. For example, 192.168.1.50:2283/.

  2. Click Getting started.

  3. Fill in the Admin registration form with the administrator user’s email address, password, and username. Then, click Sign up.

  4. On the login page, enter your email and password and select Login.

  5. Complete the onboarding process and click Done.

Now you should see the main page of the Immich app. This is where all the pictures you upload will be displayed.

Create a new user account

With the available user management features, you can create user accounts for friends or family members who will be joining your server. It is recommended to set up individual accounts for each user to ensure their uploaded assets remain private and secure.

  1. In the upper-right corner, click the user icon and choose Administration.

  2. Select Create user.

  3. Enter the email address, password, and username of the new user account. Example

  4. Click Create.

The new user account has been created and you can see its details under the User management table.

Note

To enhance account security, new users must change their password upon logging in for the first time. If you prefer to disable this feature, turn off the Require user to change password on first login toggle during account creation.

Add Meshnet address as an external domain

The external domain specified in the Immich settings is used to generate links for media sharing. While this setting is not mandatory for allowing remote connections over Meshnet, entering your Meshnet address as the external domain simplifies the item-sharing process between Meshnet peers.

  1. In the upper-right corner, click the user icon and choose Administration.

  2. From the menu on the left, select Settings, locate Server settings, and expand the dropdown.

  3. In the External domain field, enter http://<server>:2283, replacing the <server> placeholder with your server’s Nord name or Meshnet IP address. Example

  4. Click Save.

Access Immich over Meshnet

Depending on your device type, you can choose from two different methods to connect to your Immich server over Meshnet.

Note

Method 1: Using the Immich mobile app

The Immich mobile app is developed alongside the server software and includes additional features tailored specifically for mobile devices.

  1. Download and install the Immich app on your mobile device.

    • On Android, you can download Immich from any of the following sources:

  2. When requested, grant the Immich app access to your photo library.

  3. In the Server endpoint URL field, enter http://<server>:2283/api, where <server> is the Nord name or Meshnet IP address of your Immich server device. Then, tap Next. Example http://secret.meerkat-himalayas.nord:2283/api

  4. Enter the email and password of your Immich account and select Login.

Method 2: Using an internet browser

If you’re using a desktop device, you’ll need to access and use Immich through an internet browser.

  1. Copy the Nord name of the Immich server directly from the NordVPN app.

  2. Open your internet browser.

  3. Paste the copied Nord name followed by :2283 to the URL field and press Enter.

    Example secret.meerkat-himalayas.nord:2283/

  4. Type in the authentication details of your Immich account and click Login.

Upload your media

Once you have established a connection to your Immich instance, you can select and backup your photographs and recordings to your server.

  1. In the upper-right corner, tap the backup button.

  2. Tap Select to choose the media folders you want to back up on your Immich server.

  3. Return to the Backup screen and select Start backup to begin uploading items to Immich.

Your assets should immediately start being uploaded to Immich. The transfer statistics are displayed on the Backup screen and are updated in real time.

Tip

  1. Using your internet browser, open the Immich web interface.

  2. In the upper-right corner, select Upload.

  3. In the file explorer dialog, select the files you want to upload to Immich and click Open.

While uploading the media, a pop-up dialog will be displayed in the lower-right corner of the screen showcasing the upload progress.

Immich will notify you when the upload completes and inform you to refresh the page to view the content.

Organize and share your media

With all of the assets backed up on your Immich server, you can start organizing the media and sharing it with other users.

Create a new album

All uploaded media is sorted by date and displayed on a single page. You may want to improve upon this layout by grouping content into albums. To create an album:

  1. In Immich, select the items you want to include in your album by clicking the checkmark in the upper-left corner of the thumbnail.

  2. In the upper-right corner, click the Add to button.

  3. In the Search field, enter the name of your album and select New album.

A new album with your chosen title is now created. You can view and manage the album and its contents on the Albums page.

Share an album between users

To simplify file management and conserve storage space, you can upload assets from a single account, organize them into an album, and grant access to other Immich users, allowing them to view the album from their accounts.

  1. Open the Immich web interface.

  2. From the menu on the left, select Albums.

  3. Hover your cursor over the album you want to share and click the three-dot menu button.

  4. Choose Share.

  5. In the Invite to album dialog, select the user with whom you want to share the album.

  6. Click Add.

The chosen user can now view the album you shared by navigating to their account’s Albums page.

Note

By default, the invitees are granted editing permissions in the album. If you wish to share the album as view-only, in the Invite to album dialog, instead of Editor, select Viewer.

Generate a sharing URL

If you want to share some content with a peer who doesn’t use Immich, you can use the integrated link-sharing feature.

  1. Open the Immich web interface.

  2. Select the items you want to share by clicking the checkmark in the upper-left corner of the thumbnail.

  3. In the upper-right corner, select Share.

  4. Optionally, enter a description for the items you are sharing.

  5. Click Create link.

  6. Highlight the generated URL, right-click it, and choose Copy.

Since you set the server’s Meshnet address as its external domain earlier, Immich will generate links using this address. This means that the receiving Meshnet peer can simply paste the link to their browser to view the shared content without needing to modify the link.

Note

When accessing Immich over HTTP, the integrated button for copying generated links is disabled. As a result, sharing links must be copied manually.

  1. Open the Immich web interface.

  2. Navigate to the Albums page.

  3. Hover your cursor over the album you want to share and click the three-dot menu button.

  4. Choose Share and select Create link.

  5. Optionally, enter a description for the content you are sharing.

  6. Click Create link.

  7. Highlight the generated URL, right-click it, and choose Copy.

Since you set the server’s Meshnet address as its external domain earlier, Immich will generate links using this address. This means that the receiving Meshnet peer can simply paste the link to their browser to view the shared content without needing to modify the link.

Note

When accessing Immich over HTTP, the integrated button for copying generated links is disabled. As a result, sharing links must be copied manually.

(Advanced) Import an external library

Modify the Compose file

First, you must update the Docker Compose file with the path of the library you want to import.

  1. Using a text editor, open the docker-compose.yml file of your Immich instance.

  2. Under the volumes section, append a new line using this format:

    - <library/host/path>:/mnt/media/<directory>:ro

    Where:

    • <path/to/library> is the path to the media folder you want to import.

    • <directory> is a custom name of the folder where the library will be mounted inside the Immich container. Example

      - /Users/secretmeerkat/Documents/Videos:/mnt/media/external-videos:ro

  3. Save changes and close the docker-compose.yml file.

  4. Open PowerShell (on Windows) or Terminal (on macOS and Linux) and navigate to your Immich directory using the cd command.

  5. Run the command below to recreate the Immich server container with the updated Compose file.

    docker compose up -d

Once the container restarts, the newly mounted volume will be available for importing in Immich.

Note

The :ro parameter at the end of the volume line assigns read-only permissions to the container for the specific folder, ensuring that the data cannot be modified or deleted.

Create a library

On your Immich web interface, take the following steps to create a new external library:

  1. In the upper-right corner, click the user icon and choose Administration.

  2. From the menu on the left, select External libraries and click Create library.

  3. Choose the owner of the library and select Create.

  4. Next to your new external library, click the three-dot menu icon, choose Edit import paths, and click Add path.

  5. In the Path field, enter the mounting path of the new volume you added in the Compose file. Example

  6. Click Add and then Save.

  7. From the three-dot menu next to your library, choose Scan to index the items stored in the imported folder.

You should now see all of the media placed in the folder of the external library on the Photos page.

Rename the library

All new external libraries are assigned the same default name. For more convenient management, it is recommended to assign a unique and identifiable name to each library.

  1. Next to the external library, click the three-dot menu button and choose Rename.

  2. In the Name field, enter a unique name for the library.

  3. Click Save.

Turn on periodic scanning

Lastly, to ensure that new files from the external library are detected and indexed in Immich, you should turn on the periodic library scanning feature.

  1. In the upper-right corner, click the user icon and choose Administration.

  2. From the menu on the left, select Settings, locate External library, and expand the dropdown.

  3. Under Periodic scanning, ensure that the Enable periodic library scanning toggle is turned on.

  4. Optionally, select a custom scanning time interval by adjusting the values in the Cron expression field.

  5. Click Save.

Note

With the version v1.94.0, Immich introduced a Library watching feature that can be used instead of periodic scanning. The feature automatically imports new files when the server’s operating system detects changes in the external library folder. However, as of version v.1.24.2, the feature is still experimental and should be used with caution.

Run the two commands below to download the Docker Compose and the environmental variable files from the :

Run the two commands below to download the Docker Compose and the environmental variable files from the :

Immich relies on a , which is incompatible with or file systems used by Windows. To overcome this limitation, the database folder must be mapped as a rather than a standard system directory.

For more information, see the “Special requirements for Windows users” section of the .

Uncomment the TZ line by removing the hash (#) symbol at the start. Then, replace the default Etc/UTC value with your current . Example

Uncomment the TZ line by removing the hash (#) symbol at the start. Then, replace the default Etc/UTC value with your current . Example

Docker will and dependencies required for Immich and create the necessary containers.

If you're hosting Immich on a Linux device, you must grant the for the devices accessing it. For more information, see .

On iPhone and iPad, you can get it from the .

Launch Immich .

You can configure the Immich mobile app to automatically upload media from the selected locations to the server. For further details and instructions, see the “Automatic backup” page of .

The enables you to import a folder pre-filled with content, eliminating the need to upload everything manually. This is especially useful for individuals who already store their footage in a centralized location but want to take advantage of the management features that Immich provides.

Immich GitHub repository
Immich GitHub repository
PostgreSQL database
NTFS
FAT
Docker volume
Immich requirements page
time zone
time zone
pull the resources
Google Play Store
F-droid app catalog
Immich GitHub repository
App Store
Immich documentation
external libraries feature
Immich
facial recognition
LibrePhotos
Meshnet
NordLynx
port forwarding
firewalls
local area network
Docker
Docker Compose
Docker Desktop instructions for Windows
Docker Desktop instructions for macOS
Docker Desktop Instructions for Linux
Docker Engine instructions for Linux (CLI only)
Docker Compose instructions for Linux (CLI only)
local network permission
Common issues on Linux
Output of the "ls" command with ".env" and "docker-compose.yml" file names highlighted.
Output of the "ls -a" command with ".env" and "docker-compose.yml" file names highlighted.
Output of the "ls -a" command with ".env" and "docker-compose.yml" file names highlighted.
Command line output of the "docker volume create pgdata" command.
File path next to "UPLOAD_LOCATION" highlighted.
File path next to "UPLOAD_LOCATION" highlighted.
"pgdata" entered next to "DB_DATA_LOCATION".
"pgdata" entered next to "DB_DATA_LOCATION".
Time zone identifier highlighted.
Time zone identifier highlighted.
"pgdata:" highlighted under the "volumes" section.
"pgdata:" highlighted under the "volumes" section.
File path next to "UPLOAD_LOCATION" highlighted.
File path next to "UPLOAD_LOCATION" highlighted.
Time zone identifier highlighted.
Time zone identifier highlighted.
Command line output of the "docker ps" command with the "STATUS" column highlighted.
Email address, password, and the username for the administrator user typed in and the sign up button highlighted.
Email address, password, and the username for the administrator user typed in and the sign up button highlighted.
Logging in to the administrator user account.
Logging in to the administrator user account.
Arrow pointing to the user icon and selecting the "Administration" button.
Arrow pointing to the user icon and selecting the "Administration" button.
Filling in the new user account details.
Filling in the new user account details.
New user account visible in the "User management" table.
New user account visible in the "User management" table.
Nord name with port 2283 entered in the "External domain" field.
Nord name with port 2283 entered in the "External domain" field.
Logging in to Immich on the mobile app.
Logging in to Immich on the mobile app.
Logging in to Immich via an internet browser.
Logging in to Immich via an internet browser.
Cloud button highlighted in the upper-right corner of the Immich app.
Cloud button highlighted in the upper-right corner of the Immich app.
"Start backup" button highlighted.
"Start backup" button highlighted.
"Upload" button highlighted.
"Upload" button highlighted.
File upload progress dialog.
File upload progress dialog.
Images selected and the plus button highlighted.
Images selected and the plus button highlighted.
"New album" button highlighted under the album name.
"New album" button highlighted under the album name.
Albums page open in Immich.
Albums page open in Immich.
Arrow pointing to the three-dot menu.
Arrow pointing to the three-dot menu.
"Add" button highlighted.
"Add" button highlighted.
Pictures selected and the share button is highlighted.
Pictures selected and the share button is highlighted.
Arrow pointing to the three-dot menu.
Arrow pointing to the three-dot menu.
New volume line highlighted in the docker-compose.yml file.
New volume line highlighted in the docker-compose.yml file.
Arrow pointing to the user icon and selecting the "Administration" button.
Arrow pointing to the user icon and selecting the "Administration" button.
Arrow pointing to "External libraries" and the "Create library" button is highlighted.
Arrow pointing to "External libraries" and the "Create library" button is highlighted.
Container path of the external library folder highlighted.
Container path of the external library folder highlighted.
"Enable periodic library scanning" toggle set to the on position.
"Enable periodic library scanning" toggle set to the on position.