{"id":134,"date":"2026-08-09T10:18:14","date_gmt":"2026-08-09T17:18:14","guid":{"rendered":"https:\/\/jake-springer.com\/?p=134"},"modified":"2026-08-09T10:43:35","modified_gmt":"2026-08-09T17:43:35","slug":"immich-server","status":"publish","type":"post","link":"https:\/\/jake-springer.com\/?p=134","title":{"rendered":"immich server"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Big shocker, I&#8217;m not a huge fan of cloud-storage solutions for keeping my photos. And I&#8217;ve been trying to take a <em>lot <\/em>of photos. I think there&#8217;s a lot of good reasons for self-hosting your own image server. Privacy, cost-to-storage ratio, accessibility, etc. All of my pictures, from what I take on my phone and ripped from digital cameras, get uploaded to this server. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is a basic outline of my immich server and how this all runs in the background. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">notable features<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Automatic upload from mobile devices with the immich app <\/li>\n\n\n\n<li>Facial recognition (&#8220;In this picture: Kevbot&#8221;)<\/li>\n\n\n\n<li>Auto sorts uploads into local files <\/li>\n\n\n\n<li>&#8220;On this day&#8221; memories kinda deal<\/li>\n\n\n\n<li>Multi-user support<\/li>\n\n\n\n<li>Map view<\/li>\n\n\n\n<li>Locked folders<\/li>\n\n\n\n<li>Free software <\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">List can go on. I&#8217;ve never been an avid user of the iCloud\/Google Photo platform, but I think you&#8217;d be hard-pressed to find any major features that don&#8217;t cross over. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">infrastructure<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"451\" src=\"https:\/\/jake-springer.com\/wp-content\/uploads\/2026\/08\/immich-proxmox-1024x451.png\" alt=\"\" class=\"wp-image-138\" srcset=\"https:\/\/jake-springer.com\/wp-content\/uploads\/2026\/08\/immich-proxmox-1024x451.png 1024w, https:\/\/jake-springer.com\/wp-content\/uploads\/2026\/08\/immich-proxmox-300x132.png 300w, https:\/\/jake-springer.com\/wp-content\/uploads\/2026\/08\/immich-proxmox-768x338.png 768w, https:\/\/jake-springer.com\/wp-content\/uploads\/2026\/08\/immich-proxmox-1536x676.png 1536w, https:\/\/jake-springer.com\/wp-content\/uploads\/2026\/08\/immich-proxmox.png 1617w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Like everything else in the lab, it&#8217;s hosted on my Dell PowerEdge as a Proxmox VM. It&#8217;s heavy, I won&#8217;t lie, but pretty feature complete. The biggest advantage, in my opinion, is that this just acts as a very fancy front-end for a locally stored image library. Everything added to immich lives in a single directory tree on the server. This means that everything, at any time, can be freely backed up and moved around. I have backups laying all over, both local and off-site. The risk of major data loss is essentially zero, and I&#8217;d argue that it&#8217;s lower than using a typical cloud service for storing photos. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">installation <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Installing immich is mad easy. I spun up an Ubuntu box and installed the immich packages from their github. Once you get the service started, everything can be configured from the webui. Stupid simple stuff. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">cost <\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Now, immich is free. The kind of &#8220;free if you don&#8217;t value you your time&#8221; kind of free. Meaning there&#8217;s no software license or subscription. But, I think it&#8217;d be pretty dishonest of me to imply that it costs <em>nothing <\/em>to setup and run. Yes, you could probably get a decently capable setup with a moderate amount of storage going with an old laptop and $50 external drive. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My girlfriend could probably fill a 2TB HDD with her snapchat memories alone. With the size of modern digital photos and the absolute bonkers amount of images some people store, it&#8217;s very likely that you wouldn&#8217;t be able to make this a feasible solution without some upfront cost. But I would <em>still <\/em>argue this is a cheaper solution than an ongoing iCloud\/Google Photos subscription. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"339\" height=\"245\" src=\"https:\/\/jake-springer.com\/wp-content\/uploads\/2026\/08\/icloud-pricing.png\" alt=\"\" class=\"wp-image-140\" srcset=\"https:\/\/jake-springer.com\/wp-content\/uploads\/2026\/08\/icloud-pricing.png 339w, https:\/\/jake-springer.com\/wp-content\/uploads\/2026\/08\/icloud-pricing-300x217.png 300w\" sizes=\"auto, (max-width: 339px) 100vw, 339px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Shown is the iCloud monthly pricing tiers. 2TB for $10 a month. $120\/year. Cheaper than I expected, honestly. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"278\" src=\"https:\/\/jake-springer.com\/wp-content\/uploads\/2026\/08\/external-2tb-amazon-listing-1-1024x278.png\" alt=\"\" class=\"wp-image-141\" srcset=\"https:\/\/jake-springer.com\/wp-content\/uploads\/2026\/08\/external-2tb-amazon-listing-1-1024x278.png 1024w, https:\/\/jake-springer.com\/wp-content\/uploads\/2026\/08\/external-2tb-amazon-listing-1-300x81.png 300w, https:\/\/jake-springer.com\/wp-content\/uploads\/2026\/08\/external-2tb-amazon-listing-1-768x208.png 768w, https:\/\/jake-springer.com\/wp-content\/uploads\/2026\/08\/external-2tb-amazon-listing-1.png 1235w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">2TB External Drive Listing (Amazon)<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">So in a little over a year, you&#8217;re paying more than the cost of a basic external 2TB drive. For computing, you can run immich on any old machine laying around, or even have it as a background service on your main PC. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;m not going to fully dive into the cloud-vs-hosted conversation, but from a pure pricing standpoint, I think you see what I&#8217;m getting at. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">links <\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/immich.app\/\">immich website<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.immich.app\/overview\/quick-start\/\">immich quick-start docs<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>self-hosting photo storage<\/p>\n","protected":false},"author":1,"featured_media":135,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-134","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-homelab"],"_links":{"self":[{"href":"https:\/\/jake-springer.com\/index.php?rest_route=\/wp\/v2\/posts\/134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jake-springer.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jake-springer.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jake-springer.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jake-springer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=134"}],"version-history":[{"count":3,"href":"https:\/\/jake-springer.com\/index.php?rest_route=\/wp\/v2\/posts\/134\/revisions"}],"predecessor-version":[{"id":142,"href":"https:\/\/jake-springer.com\/index.php?rest_route=\/wp\/v2\/posts\/134\/revisions\/142"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/jake-springer.com\/index.php?rest_route=\/wp\/v2\/media\/135"}],"wp:attachment":[{"href":"https:\/\/jake-springer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jake-springer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jake-springer.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}