<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: OTWL</title>
    <description>The latest articles on DEV Community by OTWL (@otwl).</description>
    <link>https://dev.to/otwl</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3769662%2Ff6f6a730-7315-4fbc-bdc3-0717c2a49e0a.jpeg</url>
      <title>DEV Community: OTWL</title>
      <link>https://dev.to/otwl</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/otwl"/>
    <language>en</language>
    <item>
      <title>Transforming Your Old Laptop Into Your New Self Hosted Google Photos Alternative</title>
      <dc:creator>OTWL</dc:creator>
      <pubDate>Mon, 06 Apr 2026 13:51:56 +0000</pubDate>
      <link>https://dev.to/otwl/transforming-your-old-laptop-into-your-new-self-hosted-google-photos-alternative-4k7n</link>
      <guid>https://dev.to/otwl/transforming-your-old-laptop-into-your-new-self-hosted-google-photos-alternative-4k7n</guid>
      <description>&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What is Immich&lt;/li&gt;
&lt;li&gt;My machine&lt;/li&gt;
&lt;li&gt;Preparing the machine&lt;/li&gt;
&lt;li&gt;Setting the device up&lt;/li&gt;
&lt;li&gt;Installing Docker&lt;/li&gt;
&lt;li&gt;Installing and configuring Immich&lt;/li&gt;
&lt;li&gt;Post installation&lt;/li&gt;
&lt;li&gt;Keeping the laptop alive&lt;/li&gt;
&lt;li&gt;Advanced Setup&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What is Immich
&lt;/h2&gt;

&lt;p&gt;Immich is a free, open source, self-hosted photo and video management solution allowing you to easily back up, organize and manage your photos and videos on your server without sacrificing your privacy. &lt;/p&gt;

&lt;p&gt;You can find their website &lt;a href="https://immich.app/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My machine
&lt;/h2&gt;

&lt;p&gt;This incredible piece of technology can be used to resurrect old devices, like an IdeaPad S145, from the grave to act as a server for photos and videos.&lt;/p&gt;

&lt;p&gt;The noble IdeaPad S145 packs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;8Gb RAM &lt;/li&gt;
&lt;li&gt;AMD A9-9425 dual core @ 3.1GHz&lt;/li&gt;
&lt;li&gt;256GB NVMe Solid State Drives (SSD)&lt;/li&gt;
&lt;li&gt;1TB Hard Disk Drive (HDD)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These specs are nothing to write home about, but it creates the perfect playground for Immich.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preparing the machine for its new purpose
&lt;/h2&gt;

&lt;p&gt;The first thing that had to be done was installing Ubuntu Linux onto the machine.&lt;/p&gt;

&lt;p&gt;To do this you must have: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;12GB (or more) USB flash drive&lt;/li&gt;
&lt;li&gt;An internet connection &lt;/li&gt;
&lt;li&gt;BalenaEtcher (Rufus could also be used).&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://ubuntu.com/download/desktop" rel="noopener noreferrer"&gt;Ubuntu.com&lt;/a&gt; and download the ISO file&lt;/li&gt;
&lt;li&gt;Download &lt;a href="https://etcher.balena.io/#download-etcher" rel="noopener noreferrer"&gt;balenaEtcher&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Open balenaEtcher and select your USB stick, your ISO file and Hit flash!. &lt;/li&gt;
&lt;/ol&gt;


&lt;div class="crayons-card c-embed"&gt;

  

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This will format the USB stick, which will delete all the data on it!&lt;br&gt;

&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;




&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42mgcooyt96a9d0097qm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F42mgcooyt96a9d0097qm.png" alt="balenaEtcher interface before flashing the drive" width="800" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now that a bootable USB drive has been made, plug it into the target machine. Reboot the machine with the USB drive in it and press the boot menu key (F12, F2, F10, Esc, and F8) for my Lenovo machine it was F12.&lt;/p&gt;

&lt;p&gt;In the menu select your USB stick and press enter.&lt;br&gt;
Hopefully everything worked and you are now seeing the home screen of your soon to be new operating system (OS).&lt;/p&gt;

&lt;p&gt;You will now be presented with many options and things to select so I would recommend you follow the official Ubuntu installation documentation to ensure you install the OS correctly. The documentation can be found &lt;a href="https://ubuntu.com/tutorials/install-ubuntu-desktop#4-boot-from-usb-flash-drive" rel="noopener noreferrer"&gt;here&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;One thing I would recommend is, if you have both an SSD and an HDD, installing Linux onto the SSD instead of an HDD, as it improves launch time and allows for greater storage for videos and photos on your HDD.&lt;/p&gt;
&lt;h2&gt;
  
  
  Mounting the HDD
&lt;/h2&gt;

&lt;p&gt;Now that Linux is installed onto the machine we have to mount the HDD.&lt;/p&gt;

&lt;p&gt;If you are planning on storing your Immich files on the same drive that Linux is installed on you can skip this part.&lt;/p&gt;

&lt;p&gt;Run these commands to format the disk and mount it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsblk                       &lt;span class="c"&gt;# check device names&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;fdisk /dev/sda         &lt;span class="c"&gt;# create one partition (sda1)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;mkfs.ext4 /dev/sda1    &lt;span class="c"&gt;# format partition&lt;/span&gt;
&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /mnt/photos   &lt;span class="c"&gt;# create mount point&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;mount /dev/sda1 /mnt/photos  &lt;span class="c"&gt;# mount partition&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;We also need to add the drive to /etc/fstab with its UUID to ensure it stays mounted after reboot, to do so run:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;blkid /dev/sda1        &lt;span class="c"&gt;# get UUID&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/fstab
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;In this file add this line at the bottom so that the HDD auto-mounts on reboot:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;UUID=YOUR-DISK-UUID /mnt/photos ext4 defaults,nofail 0 2&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now you won't go debugging at 2am wondering why your Immich Docker won't start.&lt;/p&gt;
&lt;h2&gt;
  
  
  Installing Docker
&lt;/h2&gt;

&lt;p&gt;Immich runs in Docker and therefore we have to install it in order for this to work.&lt;/p&gt;

&lt;p&gt;We need to uninstall all old versions that might have ended up on our machine, to do this we run this command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next, let's set up the Docker repository:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Add Docker's official GPG key:&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;ca-certificates curl
&lt;span class="nb"&gt;sudo install&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; 0755 &lt;span class="nt"&gt;-d&lt;/span&gt; /etc/apt/keyrings
&lt;span class="nb"&gt;sudo &lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://download.docker.com/linux/ubuntu/gpg &lt;span class="nt"&gt;-o&lt;/span&gt; /etc/apt/keyrings/docker.asc
&lt;span class="nb"&gt;sudo chmod &lt;/span&gt;a+r /etc/apt/keyrings/docker.asc

&lt;span class="c"&gt;# Add the repository to Apt sources&lt;/span&gt;

Run these commands to add the repository to Apt sources:

&lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/sources.list.d/docker.sources &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; /etc/os-release &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;UBUNTU_CODENAME&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;$VERSION_CODENAME&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;
Components: stable
Architectures: &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;dpkg &lt;span class="nt"&gt;--print-architecture&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;
Signed-By: /etc/apt/keyrings/docker.asc
&lt;/span&gt;&lt;span class="no"&gt;EOF

&lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now, install the Docker packages:&lt;br&gt;
&lt;code&gt;sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To verify that it is running use:&lt;br&gt;
&lt;code&gt;sudo systemctl status docker&lt;/code&gt;&lt;br&gt;
If that is not working it might be disabled by your system and requires a manual start:&lt;br&gt;
&lt;code&gt;sudo systemctl start docker&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To verify that the installation is correct run:&lt;br&gt;
&lt;code&gt;sudo docker run hello-world&lt;/code&gt;&lt;/p&gt;


&lt;div class="crayons-card c-embed"&gt;

  

&lt;blockquote&gt;
&lt;p&gt;If this command does not work on the first try, don't panic, run it again! I had to run it again before it started to work.&lt;br&gt;

&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;


&lt;br&gt;


&lt;h2&gt;
  
  
  Installing and configuring Immich
&lt;/h2&gt;

&lt;p&gt;Create a directory of your choice to hold all the needed files. In this case the directory will be called immich-app.&lt;br&gt;
&lt;code&gt;mkdir ./immich-app&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Move to the new directory we created, with this command:&lt;br&gt;
&lt;code&gt;cd ./immich-app&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Download the required files
&lt;/h3&gt;

&lt;p&gt;We need to get the docker-compose.yml, to do this run this command in our new directory that we created:&lt;br&gt;
&lt;code&gt;wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now, get the .env files:&lt;br&gt;
&lt;code&gt;wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env&lt;/code&gt; &lt;/p&gt;
&lt;h2&gt;
  
  
  Configure the .env file
&lt;/h2&gt;

&lt;p&gt;Now that all the files are installed we need to configure the .env file.&lt;/p&gt;

&lt;p&gt;In the Immich directory open up the .env file with the following command:&lt;br&gt;
&lt;code&gt;nano .env&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If the previous steps were correctly followed you should see this:&lt;br&gt;

  Click to see the .env configuration
  &lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# You can find documentation for all the supported env variables at https://docs.immich.app/install/environment-variables&lt;/span&gt;

&lt;span class="c"&gt;# The location where your uploaded files are stored&lt;/span&gt;
&lt;span class="nv"&gt;UPLOAD_LOCATION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;./library

&lt;span class="c"&gt;# The location where your database files are stored. Network shares are not supported for the database&lt;/span&gt;
&lt;span class="nv"&gt;DB_DATA_LOCATION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;./postgres

&lt;span class="c"&gt;# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List&lt;/span&gt;
&lt;span class="c"&gt;# TZ=Etc/UTC&lt;/span&gt;

&lt;span class="c"&gt;# The Immich version to use. You can pin this to a specific version like "v2.1.0"&lt;/span&gt;
&lt;span class="nv"&gt;IMMICH_VERSION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;v2

&lt;span class="c"&gt;# Connection secret for postgres. You should change it to a random password&lt;/span&gt;
&lt;span class="c"&gt;# Please use only the characters `A-Za-z0-9`, without special characters or spaces&lt;/span&gt;
&lt;span class="nv"&gt;DB_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;postgres

&lt;span class="c"&gt;# The values below this line do not need to be changed&lt;/span&gt;
&lt;span class="c"&gt;###################################################################################&lt;/span&gt;
&lt;span class="nv"&gt;DB_USERNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;postgres
&lt;span class="nv"&gt;DB_DATABASE_NAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;immich
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;br&gt;
Update your UPLOAD_LOCATION to the mounting point we created:&lt;br&gt;
&lt;code&gt;UPLOAD_LOCATION=/mnt/photos&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Change Etc/UTC to your region's TZ code which can be found &lt;a href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones" rel="noopener noreferrer"&gt;here&lt;/a&gt; Remember to remove the #&lt;/p&gt;

&lt;p&gt;Lastly, change your DB_PASSWORD:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Please use only the characters `A-Za-z0-9`, without special characters or spaces&lt;/span&gt;
&lt;span class="nv"&gt;DB_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;postgres
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This password will only be used locally but to avoid issues with Docker only use A-Za-z0-9.&lt;/p&gt;

&lt;p&gt;To save these changes press ctrl+O then press enter and then finally press ctrl+X&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting the containers
&lt;/h2&gt;

&lt;p&gt;To start the containers we need to ensure we are in our directory that we made (in my case it is immich-app).&lt;/p&gt;

&lt;p&gt;Once you are sure you are in the correct directory run the following command to run Immich as a background service:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker compose up -d&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Congratulations you have just brought your Immich server to life!&lt;/p&gt;

&lt;h2&gt;
  
  
  Post installation
&lt;/h2&gt;

&lt;p&gt;Now that Immich is up and running we have some things we need to take care of.&lt;/p&gt;

&lt;h3&gt;
  
  
  Register an admin user
&lt;/h3&gt;

&lt;p&gt;To register an admin user we need to head to the web application, to do this we need to get the machine IP.&lt;/p&gt;

&lt;p&gt;To get the machine IP run the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;hostname -I&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The first IP address will most likely be the one that we will use to access Immich via the web browser.&lt;/p&gt;

&lt;p&gt;Now that we have the IP address open up your web browser and head to:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;http://&amp;lt;machine-ip-address&amp;gt;:2283&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Click on Getting Started!"&lt;/strong&gt;, follow the prompts to register as the admin user and then log in to the application.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy723kda843jvh5f21dk6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy723kda843jvh5f21dk6.png" alt="Immich Web Dashboard" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;
The Immich administration dashboard after a successful setup.



&lt;h3&gt;
  
  
  Add an additional user
&lt;/h3&gt;

&lt;p&gt;If you want to add an additional user you can go to Administration &amp;gt; Users then you can click on the Create user button where you will be presented with a dialog to create another account. For more info please refer to the &lt;a href="https://docs.immich.app/install/post-install" rel="noopener noreferrer"&gt;docs&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Download the mobile app
&lt;/h3&gt;

&lt;p&gt;Immich has a mobile app available to install from the following sources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Play Store&lt;/li&gt;
&lt;li&gt;Apple App Store&lt;/li&gt;
&lt;li&gt;F-Droid&lt;/li&gt;
&lt;li&gt;GitHub Releases (apk) &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Login to the Mobile App
&lt;/h3&gt;

&lt;p&gt;Once you have opened the mobile app you must enter a server endpoint URL.&lt;br&gt;
This endpoint is the same as the endpoint we use to access Immich on our web browser.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;http://&amp;lt;machine-ip-address&amp;gt;:2283&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Upload Your Library
&lt;/h3&gt;

&lt;p&gt;Press on the cloud icon on the top right.&lt;br&gt;
You can then select which albums you want to upload.&lt;/p&gt;

&lt;p&gt;For more info consult the &lt;a href="https://docs.immich.app/install/post-install#step-6---upload-your-library" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Keeping the laptop alive
&lt;/h2&gt;

&lt;p&gt;To ensure the laptop will never shutdown or go to sleep we have to make some changes to it.&lt;/p&gt;
&lt;h3&gt;
  
  
  Closing the lid
&lt;/h3&gt;

&lt;p&gt;To change what closing the lid does run this command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo nano /etc/systemd/logind.conf&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then uncomment and change these 3 values to &lt;em&gt;&lt;strong&gt;'ignore'&lt;/strong&gt;&lt;/em&gt; to ensure that closing the lid will not put the laptop to sleep (when plugged in or on battery).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight systemd"&gt;&lt;code&gt;&lt;span class="nt"&gt;HandleLidSwitch&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;ignore
&lt;span class="nt"&gt;HandleLidSwitchExternalPower&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;ignore
&lt;span class="nt"&gt;HandleLidSwitchDocked&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;ignore
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now run the following command to restart the system login:&lt;br&gt;
&lt;code&gt;systemctl restart systemd-logind&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Docker auto start
&lt;/h3&gt;

&lt;p&gt;To enable Docker auto start run:&lt;br&gt;
&lt;code&gt;sudo systemctl enable docker&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Congrats you did it Immich should be up and running now with your server always up. To ensure everything is up and running run: &lt;br&gt;
&lt;code&gt;docker ps&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now, keep it somewhere plugged in on its side (or upside down) to increase airflow!&lt;/p&gt;
&lt;h2&gt;
  
  
  Advanced Setup
&lt;/h2&gt;

&lt;p&gt;The following things that will be mentioned will be completely optional but recommended to do to ensure the best experience with Immich&lt;/p&gt;
&lt;h3&gt;
  
  
  Unattended security upgrades
&lt;/h3&gt;

&lt;p&gt;To keep our system secure without manual intervention run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo apt install unattended-upgrades&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and then:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo dpkg-reconfigure unattended-upgrades&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Hit yes when prompted.&lt;/p&gt;
&lt;h3&gt;
  
  
  Tailscale
&lt;/h3&gt;

&lt;p&gt;Tailscale is an amazing piece of software which will allow you to access your digital library anywhere!&lt;/p&gt;

&lt;p&gt;To install tailscale run the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;curl -fsSL https://tailscale.com/install.sh | sudo sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;then run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo tailscale up&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The output will display a URL that you can use to authenticate to your Tailscale network. To confirm the device is connected, check if it appears in your 'Machines' page in Tailnet.&lt;/p&gt;

&lt;p&gt;Now install Tailscale on your mobile device and sign in with the same account you used to authenticate your account with in the previous step. &lt;/p&gt;

&lt;p&gt;Run: &lt;code&gt;tailscale ip&lt;/code&gt; and remember the IP address&lt;/p&gt;

&lt;p&gt;Now to access your Immich when not on your home network go to Profile &amp;gt; Settings &amp;gt; Networking. Enable Automatic URL switching. For Local network press on Use current network (if you are currently on your home network) and then for external network enter &lt;a href="http://IP_FROM_TAILSCALE:2283" rel="noopener noreferrer"&gt;http://IP_FROM_TAILSCALE:2283&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will now be able to have access to Immich away from your home network if you are connected to your laptop via tailscale.&lt;/p&gt;
&lt;h3&gt;
  
  
  SSH
&lt;/h3&gt;

&lt;p&gt;SSH allows you to manage your server remotely. SSH is a life saver for when you can't get to your machine and need to fix something or if you're just too lazy to grab your device from where you stowed it away.&lt;/p&gt;

&lt;p&gt;First we need to install openssh-server and enable ssh:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;openssh-server
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;ssh
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can now SSH into the device to do this run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ssh username@IP_ADDRESS&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and when away from your home network you can use tailscale to ssh into it, to do so run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ssh username@TAILSCALE_IPADDRESS&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Uptime Kuma
&lt;/h3&gt;

&lt;p&gt;Uptime Kuma is a lightweight self-hosted monitoring tool that alerts you when your Immich server is down. To implement this software run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; uptime-kuma &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--restart&lt;/span&gt; always &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 3001:3001 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt; uptime-kuma:/app/data &lt;span class="se"&gt;\&lt;/span&gt;
  louislam/uptime-kuma:1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you get a permission denied run this to add your user to the Docker:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo usermod -aG docker $USER&lt;/code&gt;&lt;br&gt;
and then run the Docker command again.&lt;/p&gt;

&lt;p&gt;To access Uptime kuma open your browser and head to:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;http://&amp;lt;machine-ip&amp;gt;:3001&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Add Immich as a monitor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click add new monitor&lt;/li&gt;
&lt;li&gt;Monitor type: HTTP(s)&lt;/li&gt;
&lt;li&gt;Friendly name can be anything you want it to be&lt;/li&gt;
&lt;li&gt;URL: &lt;a href="http://machine-ip:2283" rel="noopener noreferrer"&gt;http://machine-ip:2283&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Interval: Anything you want it to be (60 is recommended)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzjhsl2nsig10ojqn08un.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzjhsl2nsig10ojqn08un.png" alt="Uptime Kuma dashboard showing 76.47% uptime for the Immich service" width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;
Uptime being at 76.47% due to incorrect disk mounting which caused some issues



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;That is it! If all steps were followed correctly you should now have your server up and running, ready to store all your photos and videos. No more relying on Google Photos or paying for a Google One subscription. If you do want to have a cloud backup solution, Immich allows you to do so, the steps can be found &lt;a href="https://docs.immich.app/administration/backup-and-restore" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>linux</category>
      <category>networking</category>
      <category>nas</category>
    </item>
  </channel>
</rss>
