Immich
An Open Source, self-hosted photo storage solution - a Privacy Tool to live by. Interface is very similar to Google Photos and Apple Photos, but with more customization and complete privacy, at the expense of having to self-host.
The features are just as extensive as any commercial product. It has facial recognition software, automatic uploads, backups, albums, and more. A particularly useful feature is the ability to create shareable album links where anyone with the link can download the original images with no compression.
The mobile app (available on F-Droid) provides full access to both user and admin dashboards, making it easy to manage your photo library from anywhere.
Random Troubleshoots
Password Reset Procedure
If you lose access to Immich accounts, reset passwords directly via the PostgreSQL database:
# 1. Generate bcrypt hash for new password (use single quotes to avoid bash issues)
python3 -c 'import bcrypt; print(bcrypt.hashpw(b"YourNewPassword", bcrypt.gensalt(rounds=10)).decode())'
# 2. Update password in database (CRITICAL: use single quotes and '\'' for embedded quotes to prevent $ expansion)
docker exec -it immich_postgres psql -U postgres -d immich -c 'UPDATE "user" SET password = '\''PASTE_HASH_HERE'\'', "shouldChangePassword" = false WHERE email = '\''user@example.com'\'';'
# 3. Verify the password was set correctly (should show full hash starting with $2b$10$)
docker exec -it immich_postgres psql -U postgres -d immich -c 'SELECT email, password FROM "user" WHERE email = '\''user@example.com'\'';'
# 4. Restart Immich
docker restart immich_server
Important Notes:
- The
'\''syntax is required to embed single quotes within single-quoted strings - Using double quotes will cause bash to interpret
$signs and corrupt the bcrypt hash - The password field must contain the full hash starting with
$2b$10$ - Set
shouldChangePasswordtofalseto avoid forced password change on login - The
oauthIdfield must be empty string'', not NULL
Troubleshooting
Admin UI Freezing Browser
Symptom: Web UI becomes unresponsive when logged in as admin, browser tab freezes
Cause: Frontend JavaScript bug in older Immich versions (confirmed in v2.2.3)
Solution: Update Immich to latest version
cd /path/to/immich/
docker compose pull
docker compose up -d
Note: This was a known bug fixed in v2.4.1. The backend was healthy - logs showed no errors. The issue was purely in the admin dashboard frontend code causing an infinite loop or memory leak in the browser.
Workaround (if update not possible): Use regular user account with admin privileges, or access admin functions via API directly.