惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cyberwarzone
Cyberwarzone
F
Full Disclosure
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
J
Java Code Geeks
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
L
LINUX DO - 最新话题
T
Threatpost
S
SegmentFault 最新的问题
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
C
Cyber Attacks, Cyber Crime and Cyber Security
Google DeepMind News
Google DeepMind News
Know Your Adversary
Know Your Adversary
S
Schneier on Security
V
Vulnerabilities – Threatpost
D
DataBreaches.Net
G
GRAHAM CLULEY
Latest news
Latest news
P
Privacy International News Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Scott Helme
Scott Helme
L
Lohrmann on Cybersecurity
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
G
Google Developers Blog
L
LangChain Blog
MyScale Blog
MyScale Blog
Project Zero
Project Zero
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
N
News | PayPal Newsroom
www.infosecurity-magazine.com
www.infosecurity-magazine.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
SecWiki News
SecWiki News
T
Tor Project blog
C
Check Point Blog
Google Online Security Blog
Google Online Security Blog
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
WordPress大学
WordPress大学

NetBird - Networking Knowledge Hub - RSS Feed

NetBird Is Now on the Vultr Marketplace Native NetBird on the GL.iNet Comet Pro (GL-RM10) NetBird v0.71 - IPv6 Overlay Addressing NetBird Exit Nodes - Appear at Home, or Anywhere Else Reporting Bugs and Requesting Features in NetBird Setup and Use Local AdGuard Home Anywhere with NetBird DNS How to Set Up NetBird on PiKVM for Secure Remote KVM Access NetBird v0.69 - CrowdSec IP Reputation for the Reverse Proxy Cloudflare Mesh vs NetBird vs Tailscale: Performance Compared Self-Hosting Nextcloud with Docker and NetBird Implementing Zero Trust with NetBird NetBird v0.67 - Layer 4 Proxy Support for TCP, UDP, and TLS Solwr Enhances Remote Connectivity with NetBird Self-Hosting NetBird with Authentik Jellyfin Media Server - Self-Host Your Movies, TV, and Music Cloudflare Tunnels vs. NetBird Reverse Proxy INFITX Builds Zero-Touch Kubernetes Networking with NetBird NetBird v0.66 - Expose Local Services to the Internet from the CLI Pangolin vs. NetBird Home Assistant Setup Guide with EASY Remote Access NetBird v0.65 - Built-in Reverse Proxy with Custom Domains Docker for Beginners - Everything You Need to Get Started NetBird for SOC 2 Compliance NetBird v0.63 - Custom DNS Zones for Private Network Resolution Vibecode This in a Weekend and Take 5% of the Company NetBird v0.62 - Built-in Local Users with Optional IdP Integration NetBird v0.61.0 - Granular SSH Access Control and Automatic Updates Top 5 Alternatives to OpenVPN Top 5 Open Source Alternatives to Tailscale Top 5 Alternatives to ZeroTier How to Set Up ZeroByte and REST Server for Backups with NetBird How to Install n8n v2.0 with NPM and PM2 ZeroTier vs. NetBird NetBird as Your Help with ISO 27001 Compliance NetBird and Huntress - Secure Network Access for MSPs How to Access Windows Shares from Anywhere with NetBird netgo Relies on Modern ZTNA with NetBird Connect to Your Homelab from Anywhere with a Raspberry Pi NetBird SSH - A New, Identity-Aware Approach The AI Mega Mesh: How to Connect 30+ GPU Cloud Providers Connect Multiple Ollama GPUs to OpenWebUI with NetBird Top 5 Tailscale Alternatives SSH and RDP, now in your browser NetBird–Acronis Integration: Empowering MSPs for Advanced Ransomware and Threat Defense Introducing the Control Center - Remote Access, Beautifully Visualized NetBird at MSP Global 2025 Understanding Overlay Networks - The Basics NetBird and SentinelOne Singularity™ - Automate Threat Response NetBird and Microsoft Intune - Enforcing Device Compliance for Zero Trust Rethinking Zero Trust Security with NetBird and pfSense Improving Unidirectional Access Control Proxmox VE for Beginners Guide with NetBird LXC Stronger Security: NetBird + GitHub Secure Open Source Fund NetBird's MSP Partner Program Signicat Enhances Cross-Cloud Accessibility with NetBird SonicWall SSL VPN NetExtender vs. NetBird NetBird Is Embracing the AGPLv3 License NetBird Profiles Have Landed - Manage Multiple Accounts Effortlessly Rethinking Access Control to Secure Your On-Premises SharePoint Servers Sport Alliance Increases Efficiency with Zero Trust Networking at Scale Rethinking Network Access: qwertiko Goes Zero Trust with NetBird Optimizing Network Efficiency with NetBird's Lazy Connections Use Port Ranges in Access Control Policies Generic HTTP Endpoint for Network Events Streaming NetBird’s Response to Spear-Phishing Campaign Targeting Financial Executives Zero-Trust Access to Internal Resources Without Installing Agents Enhance Network Visibility with NetBird’s Traffic Events Logging TrueNAS Made Easy - Install, Set Up, and Access From Anywhere Top 5 Alternatives for WireGuard Jump Hosts. Gateways for Remote Access NetBird Network Routes and Exit Nodes Security for All - SSO and MFA for Free Enhancing Network Access Control with NetBird's Identity Provider Feature Twingate vs. NetBird Limit Network Access Based on Running Applications FortiClient ZTNA vs. NetBird OpenVPN vs. NetBird Tailscale vs. NetBird Getting Started with an Azure Site-to-Site VPN Getting Started with an On-premise-to-AWS Site-to-Site VPN Secure Remote Access to VPCs, LANs, and Offices regreSSHion - A New OpenSSH Server Remote Code Execution Vulnerability Evolve Bank & Trust Data Breach. What Happened? What Is a Site-to-Site VPN? IPSec Tunneling Demystified. Enhancing Data Security Across Networks Understanding IPSec Tunnel and Transport Modes Understanding the Differences Between IKEv1 and IKEv2 Understanding the IKEv1 Protocol in IPSec ZeroTier versus NetBird - Which Should You Choose? AWS Lambda Serverless Security. Mistakes, Oversights, and Potential Vulnerabilities Using NetBird for Kubernetes Access Serverless Security Vulnerabilities and Best Practices to Mitigate Them Security Best Practices for Serverless Azure Functions A Guide to Remote Access Security for SMEs IoT Security Essentials. How to Achieve Secure Remote Access Open Source Zero Trust Networking Using SSH for Secure Remote Access How We Integrated Rosenpass in NetBird The First Quantum-Resistant Mesh VPN Using eBPF and XDP to Share Default DNS Port Between Multiple Resolvers
The Ultimate Immich Guide - Ditch Google and Amazon Photos for Good
Written byBrandon Hopkins · 2025-12-12 · via NetBird - Networking Knowledge Hub - RSS Feed

A vast majority of people with a smartphone are, by default, uploading their most personal pictures to Google, Apple, Amazon, whoever. Personally, I firmly believe companies like this don't need my photos. You can keep that data yourself, and Immich makes it genuinely easy to do so.

We're going through the entire Docker Compose stack using Portainer, enabling hardware acceleration for machine learning, configuring all the settings I actually recommend changing, and setting up secure remote access so you can back up photos from anywhere.

Why Immich Over the Alternatives

Two things make Immich stand out from other self-hosted photo solutions. First is the feature set, it's remarkably close to what you get from the big cloud providers. You've got a world map with photo locations, a timeline view, face recognition that actually works, albums, sharing capabilities, video transcoding, and smart search. It's incredibly feature-rich software.

Immich features

Second is the mobile app. Most of those features are accessible right from your phone, and the automatic backup from your camera roll works great. Combining it with NetBird makes backing up your images quick and secure with WireGuard working for us in the background.

Immich hit stable v2.0 back in October 2025, so the days of "it's still in beta" warnings are behind us. The development pace remains aggressive with updates rolling out regularly, but the core is solid.

Hardware Considerations

I'm not going to spend too much time on hardware specifics because setups vary wildly. For some of the machine learning features, you might want a GPU or at least an Intel processor with Quick Sync. But honestly, those features aren't strictly necessary. For most of us CPU transcoding will be fine.

The main consideration is storage. How much media are you actually going to put on this thing? In my setup, all my personal media sits around 300GB, but with additional family members on the server, everything totals just about a terabyte. And with that we need room to grow so plan accordingly.

For reference, my VM runs with 4 cores and 8GB of RAM. The database needs to live on an SSD, this isn't optional. Network shares for the PostgreSQL database will cause corruption and data loss. Your actual photos can live on spinning rust or a NAS share, but keep that database on local SSD storage.

Setting Up Ubuntu Server

I'm doing this on Ubuntu Server running as a VM on Unraid . You don't have to use Unraid, as TrueNAS , Proxmox , and other solutions work great, or you can install Ubuntu directly on hardware. The process is close to the same regardless.

If you're installing fresh, grab the Ubuntu Server ISO and flash it with Etcher or Rufus depending on your OS. During installation, I typically skip the LVM group option and go with standard partition schemes. There's documentation on LVM if you want to read more about it, but I've never found it necessary for this use case.

The one thing you absolutely want to enable during setup is the OpenSSH server. Skip all the snap packages, we don't need them.

Once you're booted in, set a static IP through your router. Check your current IP with:


Then navigate to your router's admin panel and assign a fixed IP to this machine or VM. How you do this varies by router, so check your manual if needed. I set mine to  for convenience.

First order of business on any fresh Linux install is to update everything:


Installing Docker

Docker's official documentation has a convenience script that handles everything. SSH into your server and run:


This installs Docker, Docker Compose, and all the dependencies. Next, add your user to the docker group so you don't need sudo for every command:


Installing Portainer

Note: Using Portainer is optional, it's a nice GUI that helps manage Docker containers. If you prefer using Docker Compose from the command line or other installation methods, check out the Immich docs for alternative approaches.

Portainer provides a web-based interface for managing Docker containers, which makes setting up and managing Immich much easier. First let's create our volume for the Portainer data.


Spin up Portainer Community Edition:


Once Portainer is running, access the web interface at . You'll be prompted to create an admin account on first login. The self-signed certificate warning is normal, just proceed.

Portainer Docker PS

That's the bulk of the prerequisites handled.

The Docker Compose Setup

Immich recommends Docker Compose as the installation method, and I agree. We'll use Portainer's Stack feature to deploy Immich, which makes the process much more visual and easier to manage.

  1. In Portainer, go to Stacks in the left sidebar.
  2. Click on Add stack.
  3. Give the stack a name (i.e., ), and select Web Editor as the build method.
  4. We need to get the file. Open a terminal and download it from the Immich releases page :

  1. Copy the entire contents of the file and paste it into Portainer's Web Editor.

  2. Important: In Portainer, you need to replace with for all containers that reference environment variables. Search for in the editor and replace it with .

  3. Now we need to set up the environment variables. Click on Advanced Mode in the Environment Variables section.

  4. Download the example environment file from the Immich releases page :


  1. Copy the entire contents of the file and paste it into Portainer's environment variables editor or upload it directly.

  2. Switch back to Simple Mode and update the key variables:

Immich stack.env

The key variables to change:

  • DB_PASSWORD: Change this to something secure (alphanumeric only)
  • DB_DATA_LOCATION: Set to an absolute path where the database will be saved (e.g., ). This MUST be on SSD storage.
  • UPLOAD_LOCATION: Set to an absolute path where your photos will be stored (e.g., )
  • TZ: Set your timezone (e.g., )
  • IMMICH_VERSION: Set to for the latest stable version

For my setup, the upload location points to an Unraid share where my storage array lives. The database stays on local SSD storage. Adjust these paths for your environment.

Enabling Hardware Acceleration

If you have Intel Quick Sync, an NVIDIA GPU, or AMD graphics, you can offload transcoding from the CPU. You'll need to download the hardware acceleration configs and merge them into your Portainer stack.

First, download the hardware acceleration files:


For transcoding acceleration, you'll need to edit the section in your Portainer stack. Find the service and add the extends block. For Intel Quick Sync:


However, since Portainer uses a single compose file, you'll need to either:

  1. Copy the relevant device mappings and environment variables from directly into your stack, or
  2. Use Portainer's file-based compose method if you have the files on disk

For machine learning acceleration with Intel, update the service image to use the OpenVINO variant:


And add the device mappings from for the service directly into the stack.

If you're on Proxmox, make sure Quick Sync is passed through in your VM's hardware options. You can verify the device is available with:


After making these changes in Portainer, click Update the stack to apply them.

First Boot and Initial Setup

Once you've configured all the environment variables in Portainer, click Deploy the stack. The first run pulls several gigabytes of container images, so give it time. You can monitor the progress in Portainer's Stacks view.

Immich stack Portainer

Once all containers show as "Running" in Portainer, access the web interface at .

The first user to register becomes the administrator, so create your account immediately. You'll run through an initial setup wizard covering theme preferences, privacy settings, and storage templates.

Storage Template Configuration

This is actually important. The storage template determines how Immich organizes files on disk. I use a custom template that creates year, month, and day folders:


Immich storage template

This gives me a folder structure like . I don't take a crazy amount of pictures, so daily folders work fine. Adjust this to your preferences, but think about it now-changing it later requires running a migration job.

Server Settings

Under Administration → Settings, there are a few things I always adjust or recommend taking a look at:

Immich generation settings

Image Settings: The default thumbnail format is WEBP. I change this to JPEG because I don't like WEBP for basically any situation as it's much harder to work with outside of the web browser.

Job Settings: These control background tasks like thumbnail generation and face detection. If you notice a specific job hammering your system, you can reduce its concurrency here.

Machine Learning: The default models work well. I've never changed them and haven't had problems. If you want to run the ML container on separate, beefier hardware, you can point to a different URL here.

Video Transcoding: This uses FFmpeg on the backend. The defaults are reasonable, but you can customize encoding options if you have specific preferences.

Remote Access with NetBird

For accessing Immich outside your home network, you have options. You can set up a traditional reverse proxy with something like Nginx or Caddy , but I use NetBird. No exposing ports or needing to setup a proxy.

You can add your Immich server as a peer:


Then in the NetBird dashboard, create an access policy that allows your devices to reach port 2283 on the Immich peer. Now you can access your instance from anywhere using the NetBird DNS name or peer IP.

Immich NetBird policy

Bulk Uploading with Immich-Go

Dragging and dropping files through the web UI works, but it's tedious for large libraries.  Immich-Go  handles bulk uploads much better.

First, generate an API key in Immich. Go to your profile → Account Settings → API Keys → New API Key. Give it full permissions and save the key somewhere.

Download Immich-Go for your system from the releases page, then run:


If you're migrating from Google Photos via Takeout, Immich-Go handles the metadata mess Google creates. For some reason, Takeout extracts metadata to separate JSON files instead of keeping it embedded in the images. Immich-Go reassociates everything properly:


Always do a dry run first with  to see what it's going to do before committing.

Mobile App Setup

Grab the Immich app from the App Store , Play Store , or F-Droid . Enter your server URL and login credentials. For remote access, use either your NetBird address or DNS name with the port.

To enable automatic backup, tap the cloud icon and select which albums to sync. Under settings, you can configure WiFi-only backup and charging-only backup to preserve battery and cellular data. The storage indicator feature shows a cloud icon on photos that have been synced, which helps you know what's backed up.

Immich mobile backup

iOS users should enable Background App Refresh and keep Low Power Mode disabled for reliable background uploads. Android handles this better out of the box but might need battery optimization disabled for the Immich app.

Backup Strategy

Immich stores your photos as files but tracks all the metadata, faces, albums, and relationships in PostgreSQL. You need to back up both components, losing either means losing your library.

The database dumps automatically to  daily at 2 AM. For manual backups:


Back up your database dumps and the  and  directories. You can skip  and  since Immich regenerates those.

For a proper 3-2-1 strategy, you want three copies of your data on two different media types with one copy offsite. I'll be doing a dedicated video on backup strategies, so subscribe if you want to catch that.

What's Next

This covers the core setup, but Immich has more depth worth exploring. External libraries let you index existing photo directories without copying files into Immich's storage. The machine learning models can be swapped for different accuracy/performance tradeoffs. Partner sharing lets family members see each other's photos without full account access.

The official documentation covers all of this in detail. For issues or questions, the community on Reddit and GitHub discussions is genuinely helpful.

Once you've got everything running, you can finally delete those cloud storage subscriptions. Your photos stay on hardware you control, no monthly fees, no storage limits, no training someone else's AI models with your personal memories.