Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

You can turn a home server, NAS, or rented machine into a private image host by combining a photo application, storage for originals and generated files, any database that application requires, and an HTTPS-protected web endpoint. The right software depends on the job: Immich is designed for phone backup and photo search, Piwigo is a conventional web gallery, and Nextcloud combines image previews with general file sharing.

For a reliable setup, keep the image library and database on storage you control, plan capacity for thumbnails and video transcodes, expose the service only through a VPN or a hardened HTTPS reverse proxy, and back up the media and database separately. The steps below cover the architecture, sizing, installation choices, public-access risks, and recovery procedures.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What a self-hosted image host actually contains

A self-hosted image host is not just a folder exposed over the internet. It is a small application stack with four parts:

  • Image application: The web and mobile interface that uploads, organizes, searches, previews, and shares pictures. Immich, Piwigo, and Nextcloud take different approaches.
  • Media storage: The original photos and videos, plus thumbnails, resized copies, previews, and sometimes transcoded videos.
  • Database: Metadata such as albums, users, permissions, search indexes, and recognition data. Immich uses PostgreSQL; Piwigo uses MySQL or MariaDB; a Nextcloud installation also uses a supported database.
  • Web endpoint: A local address, VPN address, or public domain protected with HTTPS. A reverse proxy commonly terminates TLS and forwards traffic to the application.

Keeping these roles separate makes failures easier to diagnose. A full disk can stop uploads even when the application is healthy; a damaged database can hide otherwise intact files; and an incorrectly configured proxy can make a working service appear offline.

#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter | 4Pack Type C Female to A Male Cable Converter for Apple Duo 17 16 15 14 Plus,iWatch Watch 12 11 10,iPad 9 8 Air,Airpods 5 4
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.

Choose the application before buying hardware

Pick the workflow you will use every day rather than choosing on feature count alone.

Application Best fit Deployment model Important planning points
Immich Automatic phone backup, a Google Photos-style timeline, albums, and photo/video search Docker Compose stack Current guidance calls for at least 6 GB RAM and 2 CPU cores; 8 GB RAM and 4 cores are recommended. It needs dependable local storage for PostgreSQL and the library.
Piwigo A traditional browser gallery with categories, albums, and web-oriented administration Nginx or Apache, PHP, MySQL/MariaDB, and an image-processing library Requires PHP 8.2+ on the current maintained path, MySQL 5.6+ or MariaDB 10.1+, ImageMagick or GD, and space for cached image sizes.
Nextcloud Photos that live alongside documents, shared folders, and broader collaboration General-purpose web application with database and preview generation Preview generation and HTTPS hardening are administration tasks; resource use depends on the other files and apps on the instance.

When Immich is the practical choice

Choose Immich when the central requirement is replacing a phone-photo service. Its workflow is built around uploading from mobile devices, browsing a timeline, creating albums, and searching a growing library. Docker Compose keeps the application components together, but you must understand where the upload directory and database data live before starting.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

When Piwigo is a better match

Piwigo suits a managed gallery on conventional hosting. It expects the administrator to provide a web server, PHP, a MySQL-compatible database, an image library, and a way to upload files, commonly FTP. It is a good fit when you want a clear website-style gallery rather than a background phone-backup service.

Rank #2
Sale
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter | USB C Dongle with 90W Max Power Delivery, 3×5Gbps USB A Data Ports, for MacBook, Dell, and More (Charger Not Included)
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.

When Nextcloud makes sense

Use Nextcloud when images are one part of a shared file platform. It can generate image previews while providing accounts, folders, and collaboration features. That breadth is useful for a household or team already using Nextcloud, but it can be more administration than a dedicated photo application requires.

Size storage, memory, and CPU realistically

Start with the originals you expect to keep, then add room for generated data and growth. Immich’s current requirements documentation says thumbnails and transcoded video increase a photo library by 10–20% on average. That is an average, not a guaranteed ceiling: a video-heavy library or multiple preview sizes can require more.

Capacity item How to estimate it Why it matters
Original photos and videos Total the current library, then estimate new captures for at least two to three years Originals are the irreplaceable source files.
Thumbnails and resized images Add 10–20% to the original library as an Immich planning average These files make timelines and remote browsing responsive.
Video transcodes Allow extra headroom beyond the average when the library contains many videos Transcoding can create several versions of one recording.
Database and indexes Reserve free space rather than allocating the disk to media alone Metadata, search indexes, and temporary jobs need working room.
Backups Provide capacity for at least one independent copy of media and a database backup A mirrored disk is not a substitute for a recoverable backup.

Immich hardware baseline

Use the current Immich requirements rather than an older quick-start figure. The current baseline is 6 GB of RAM and 2 CPU cores; the recommendation is 8 GB of RAM and 4 CPU cores. An older quick-start page listed 4 GB RAM and 2 CPUs for that version, so do not size a new installation from that historical number.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter | 85W Max PD, 2 USB 3.0 & 1 USBC Data Ports, SD/TF Card Reader, for Laptops/Mac and Other Type C Devices (Charger Not Included)
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.

CPU and memory demand rises during thumbnail generation, facial or object analysis, and video transcoding. A small library can run on the minimum, but imports will take longer and concurrent users will have less headroom. If the server also runs virtual machines, file indexing, or other containers, count those workloads before deciding that 6 GB is sufficient.

Choose the right disks

Immich recommends local SSD storage for its PostgreSQL database. Its requirements documentation says network shares are not supported for that database location. Put the database on a reliable local filesystem with low latency, and use a Unix-compatible filesystem for the library so ownership and permission bits work as expected. Media can be placed on larger disks, but test the exact mount and permission behavior before importing a large collection.

Prepare the server and network

  1. Update the operating system and install the server’s supported container or web-stack packages. Apply security updates before exposing any service.
  2. Create dedicated storage paths for the media library, database data, and backups. Mount those paths before starting the application so a missing mount cannot silently fill the system disk.
  3. Record ownership and permissions. The account or container that writes uploads must be able to create files, while unrelated users should not have write access to the library or database.
  4. Reserve a private address. A DHCP reservation or static address prevents a VPN or reverse-proxy target from changing unexpectedly.
  5. Decide on access scope. For household use, keep the service on the LAN or behind a VPN. Public access should be a deliberate choice made only after HTTPS, firewalling, updates, and backups are ready.

Install Immich with Docker Compose

Immich’s official quick-start process creates an application directory, downloads its docker-compose.yml and environment template, sets storage and database variables, starts the stack, and then completes registration in the browser. Use the files that match the release you intend to run; do not mix a compose file from one release with an environment file from another.

Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray | Data transfer & Fast charging for MacBook, iPhone 17/16/15, iPad, Samsung Galaxy, Apple Watch
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
  1. Create and enter an application directory. For example, make a directory named immich-app on the server and change into it. Keep this directory on a system disk or another location included in your configuration backups; it contains deployment files, not necessarily the media itself.
  2. Download the current compose file and environment template from Immich’s Quick start documentation. Save both files in the application directory.
  3. Edit the environment file. Set UPLOAD_LOCATION to the mounted path that will contain originals and generated library data. Set the database variables required by the template, including the database location and credentials. Use long, unique passwords and do not reuse an administrator password.
  4. Check the paths and permissions. Confirm that the upload path exists, is mounted, and is writable by the containers. Confirm that the PostgreSQL data path is local storage rather than a network share.
  5. Start the stack. Run docker compose up -d from the directory containing the compose file. Docker will create the required containers and networks in the background.
  6. Open the web interface on the server’s local address and register the first administrator. Use a unique password and enable any available multi-factor protection before inviting other users.
  7. Upload one test picture and one short video. Verify that the files appear, thumbnails load, and the generated data is written to the intended volume. Only then begin a bulk import or connect every phone.

Immich explicitly warns that the files in UPLOAD_LOCATION must be backed up and that the application should not be the only place your photos and videos are stored. A successful container start is not evidence that your data is protected.

After the first Immich upload

  • Check free space on both the media volume and the database volume.
  • Confirm that a restart does not lose the library path or database connection.
  • Document the installed Immich version, compose files, environment values (excluding passwords), and mount points.
  • Set expectations for background processing; a large first import may continue generating thumbnails and transcodes after uploads finish.

Install Piwigo on a conventional web stack

Piwigo’s maintained path requires a web server such as Nginx or Apache, MySQL 5.6 or later or MariaDB 10.1 or later, PHP 8.2 or later, and ImageMagick or GD. The project also identifies an FTP client as part of the installation workflow and recommends FileZilla. Confirm the versions supplied by your operating system or hosting provider before uploading the application.

  1. Provision the web server, PHP, database, and image library. Enable the PHP extensions listed by the Piwigo release you install, and keep the database bound to a private interface rather than exposing its port to the internet.
  2. Create a dedicated database and user. Grant that user access only to the Piwigo database. Choose a long password and record it in a password manager.
  3. Upload the Piwigo files with FTP or another supported transfer method. Place them in the document root or a dedicated virtual host, not in a directory shared with unrelated applications.
  4. Open the installer in a browser. Enter the database host, database name, user, and password, then create the first administrator account.
  5. Configure the image library and upload a small test album. Verify that ImageMagick or GD can create thumbnails and that the web server can write the required cache directories.
  6. Plan capacity for cached sizes. Piwigo requires space for uploaded pictures plus multiple cached or resized versions. Monitor the cache directory as the gallery grows.

Piwigo’s file-oriented workflow makes regular filesystem backups straightforward, but the database still contains gallery structure, users, and metadata. Back up both rather than treating the uploaded image directory as a complete copy of the installation.

Best Value
Sale
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display | 85W Max PD, 1 Powered USB-C 5Gbps & 2 Powered USB-A 3.0 5Gbps Data Ports, for MacBook Pro, MacBook Air, Dell and More (Black)
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Use Nextcloud for photos plus shared files

Nextcloud is appropriate when the image collection belongs in a broader file-sharing service. Install it using the supported web server, PHP, database, and storage combination for your release, then enable image previews in the administration settings. The exact preview controls and hardening directives vary with the web server and deployment method.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Create the data directory on persistent storage and keep it outside a publicly served document root.
  2. Complete the web installer with a dedicated database and administrator account.
  3. Set preview limits deliberately. Preview generation consumes CPU, memory, and disk; choose which image and video types should receive previews rather than enabling every possible format on a small server.
  4. Test uploads and sharing with a non-administrator account. Confirm that shared links reveal only the files intended for public access.
  5. Apply the hardening guidance in Nextcloud’s administration manual, including HTTPS configuration and preview-generation controls appropriate to your web server.

Expose the image host safely

LAN-only access

If only people on your home or office network need the gallery, keep it on a private address and block inbound connections from the internet. For remote use, a VPN gives authenticated users access without publishing the photo application itself. This is usually the smallest attack surface.

Public access through a reverse proxy

Public access requires a domain name, an HTTPS certificate, and a reverse proxy such as Nginx. Immich’s remote-access guidance identifies Let’s Encrypt as a free certificate source. The proxy should forward only the intended hostname to the application and should not expose the database or internal container ports.

  1. Point the domain’s DNS record to the public address, or to the gateway that forwards traffic to the server.
  2. Obtain and renew an HTTPS certificate. Test renewal before the first certificate expires.
  3. Forward HTTPS traffic through the proxy to the application’s internal address. Set the application’s front-facing URL to the public HTTPS address so generated links and callbacks use the correct scheme and hostname.
  4. Allow large request bodies. The proxy’s default upload limit may reject large photos or videos before the application sees them.
  5. Enable WebSockets where required. Without the correct upgrade headers, live progress, notifications, or other real-time functions may fail even though ordinary pages load.
  6. Forward only necessary ports through the firewall. Keep SSH, database ports, and administration interfaces restricted to a management network or VPN.

Immich cautions that an internet-facing instance carries security risk because the project is under active development. Treat every public deployment as an exposed service: use strong credentials, update promptly, review release notes, and watch authentication and proxy logs.

Security controls that matter most

  • Administrator protection: Use a unique password, enable multi-factor authentication when available, and create ordinary user accounts for daily use.
  • HTTPS everywhere outside a trusted LAN: Never send credentials or private image links over plain HTTP.
  • Firewalling: Publish only the reverse proxy ports. Do not publish PostgreSQL, MySQL, MariaDB, or container-management ports.
  • Least-privilege permissions: Give the application write access only to its own media, cache, and database paths.
  • Updates: Keep the operating system, web server, PHP, database, containers, and image application current. Test updates on a copy when the library is important.
  • Share-link discipline: Treat an unguessable link as a convenience, not authentication. Revoke links that no longer need to work.
  • Resource limits: Put sensible limits on preview and transcode jobs so one import cannot exhaust RAM or fill the system disk.

Back up media and the database independently

A photo application can be rebuilt; an unbacked-up original cannot. Back up the media tree and the database as separate assets because they fail differently and often require different restore procedures.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Back up the original media and generated files from the application’s storage path. Preserve timestamps, ownership, and permissions where the filesystem supports them.
  2. Export the database using the database tools recommended for your application and release. Store the dump outside the live database volume.
  3. Keep at least one copy on different storage. A second disk in the same server protects against a failed drive but not theft, fire, ransomware, or an accidental deletion propagated to both copies.
  4. Protect backup access. Encrypt portable or off-site copies and restrict the account that can delete them.
  5. Rehearse a restore. Restore a sample or a complete test instance periodically, verify that albums and metadata are present, and record how long recovery takes.
  6. Match instructions to the installed release. Immich’s backup documentation notes that procedures changed in version 2.5.0. Follow the procedure for your installed version rather than copying an older command from a forum post.

Troubleshoot the problems you are most likely to see

Uploads fail immediately

  • Check the reverse proxy’s request-body limit and timeout.
  • Confirm that UPLOAD_LOCATION or the equivalent media path is mounted and writable.
  • Check free space on both the media and database volumes.
  • For a public deployment, verify that the request reaches the correct HTTPS virtual host rather than a default site.

Photos upload but thumbnails are missing

  • Inspect the application logs for image-library, permission, or worker errors.
  • Verify that ImageMagick or GD is installed for Piwigo, and that preview generation is enabled and appropriately limited in Nextcloud.
  • Allow background jobs to finish after a large import; thumbnail generation may continue after the upload request has completed.

The application cannot connect to its database

  • Confirm that the database container or service is running and that the configured hostname matches the deployment network.
  • Check the database credentials in the environment file and avoid changing them in only one place.
  • For Immich, move PostgreSQL data off an unsupported network share and onto local SSD-backed storage.
  • Restore the database from a known-good dump only after preserving the current failed state for diagnosis.

The site works locally but not remotely

  • Check DNS resolution, router forwarding, and the host firewall.
  • Confirm that the certificate covers the exact hostname being used.
  • Review proxy headers, WebSocket upgrade handling, and the application’s configured front-facing URL.
  • Test from a mobile connection rather than from inside the same LAN, where hairpin routing can hide a forwarding error.

The server runs out of disk space

  • Measure originals, thumbnails, previews, transcodes, database files, logs, and backups separately.
  • Do not delete generated data blindly; some applications will regenerate it, while deleting originals is irreversible.
  • Set monitoring alerts before the volume reaches capacity and expand storage with the 10–20% Immich average treated as a starting point, not a maximum.

A practical decision checklist

  • Choose Immich if automatic phone backup and photo/video search are the priority and you can run Docker with at least 6 GB RAM and 2 CPU cores.
  • Choose Piwigo if you prefer a conventional PHP/MySQL-style gallery and are comfortable maintaining a web server, database, image library, FTP uploads, and cache storage.
  • Choose Nextcloud if photographs must share accounts, folders, and collaboration features with other files.
  • Reserve storage for originals, generated derivatives, database working space, and an independent backup.
  • Keep the database on reliable local storage, especially PostgreSQL for Immich, and use a filesystem that preserves ownership and permissions.
  • Use a LAN or VPN by default. If you publish the service, put it behind a domain, HTTPS, firewall rules, and a correctly configured reverse proxy.
  • Back up media and database data separately and perform a real restore test before trusting the server with your only copy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.