mirror of
https://github.com/immich-app/immich.git
synced 2026-07-16 05:34:30 +03:00
[Feature] Unraid Community / All-Inclusive Image #32
Closed
opened 2026-02-04 16:41:05 +03:00 by OVERLORD
·
90 comments
No Branch/Tag Specified
main
chore/translations
renovate/typescript-projects
fix/29853-thumbnail-decode-size
custom-app-logo
fix/server-heif-security-limit
fix/live-photo-library-task-joining
renovate/machine-learning
chore/security-txt-ghsa
renovate/mobile
refactor/auto-trash-sync
fix/failed-sync-blocks-resume
renovate/pigeon-27.x
fix/slideshow-motion
renovate/typescript-7.x
renovate/eslint-plugin-unicorn-71.x
fix/ws-reconnect-battery
renovate/node
chore/pump-flutter
feat/ml-hwaccel-testing
chore/face-cluster-abstraction
feat/workflow-logs
fix/moved-files-not-backed-up
renovate/java-25.x
renovate/@immichui
renovate/node-24.x
renovate/terragrunt-1.x
renovate/opentofu-1.x
renovate/cloudflare-4.x
renovate/java-21.x
renovate/prom-prometheus
fix/ios-extension
feat/server-chunked-uploads
feat/native-core
feat/upload-action
fix-29727
feat/download-tag-action
feat/share-action
refactor/action-secondary-handler
feat/edit-button-action
feat/delete-action
feat/album-actions
chore/deprecate-ios-14
fix/android-cr3-save
fix/library-map-live-bounds-updates
fix/mobile-add-to-album-error
feat/browser-profile-action
feat/cast-slideshow-action
chore/update-maplibre-0.26.2
feat/locked-folder-action
fix/unauthorized-memory-creation
feat/workflow-exif-filter
renovate/eslint-plugin-unicorn-70.x
fix/android-locked-folder-delete
fix/library-map-loading-flash
feat/context-actions
renovate/grafana-monorepo
fix/mobile-scroll-velocity-placeholders
renovate/sharp
refactor/action-class
feat/memories-view
refactor/asset-action-filter
feat/undo-archive
feat/archive-action
feat/stack-action
feat/more-favorite-action
feat/restore-action
refactor/feedback-repository
refactor/asset-service-update
refactor/owned-iterator
fix/birthday-picker-locale-order
fix/viewer-double-close-anim
feat/mobile-hls-player
refactor/stack-actions
renovate/permission_handler-12.x
fix/kebab-action-color
feat/workflow-asset-tags
fix/viewer-long-image-aspect
fix/ios-memory-widget-local-date
fix/timeline-drag-select-stops
fix/ios-ethernet-unmetered
fix/featured-photo-thumbnail-cache
feat/yucca-integration
fix/album-timeline-date-ordering
chore/cancel-native-op-on-lifecycle
chore/album-remove-assets
feat/partner-table-permissions
fix/ocr-after-edit
fix/re-enable-pruning
refactor/delete-restore-actions
apk-build-deployment
renovate/pypi-pydantic-settings-vulnerability
edit-photo-stacking
fix/mise-lockfile
fix/android-local-album-date
feat/web-hls-hover
chore/pump-drift
refactor/android-background-worker
refactor/store-cleanup
fix/hash-mismatch
debug/throttle-timeline
refactor/app-metadata
refactor/advanced-settings
refactor/current-user
fix/dedupe-integrity-missing-paths
chore/albums-select
feat/album-assets-event
fix/fdroid-meta
refactor/per-asset-backup-flag
fix/av1-threads
fix/pass-secrets
fix/download-progress-stuck
fix/negative-backup-remainder
feat/map-asset-number
feat/custom-date-range
renovate/pep621-lock-file-maintenance-machine-learning
refactor/session-repository
test-bump-prerelease
fix/handle-unlinking-motion-photos
refactor/cached-key-value-repo
fix/date-range-formatting
fix/map-unresponsive
fix/mobile-album-action-msg
refactor/search-v3/pr-1
chore/v7.23.0-openapi-generator
asset-add-to-album-trigger
refactor/face-editor-decoupling
feat/zoom-aware-face-editing
refactor/adaptive-image-dimensions
fix-face-editor-video-preview
fix-stack-face-tag-selection
fix/face-boxes-edit-panel
workflow-webhook-step
feat/hero_view_transitions
fix/map-sidepanel-queries
feat/dart-openapi-generator
claude/share-quality-5d7Gn
drag-drop-ghost-target
refactor/workflow-page
refactor/mobile-upload
fix-scroll-flicker-2
test/2.7.5-new-sign
update-mise-lock-file
feat/kysely-0.29
feature/load-previews
release-candidate-flow-1
fix/mobile-22522-sqlite-2067
fix/job-lock
release-candidate-flow-3
release-candidate-flow-2
show-in-timeline-toggle
fix/mise-windows
fix/mobile-album-sync-stale-cache
plan-local-image-display
fix/remote-thumbnail-fallback
bugfix/live-photo-stuck
chore/riverpod-update
album-order-per-user
fix/web-timeline-dom-node-retention
chore/svelte-enable-state-referenced-locally
feat/favorite-albums
feat/patch-release-from-branch
fix/oauth-linking
feat/timeline_scroll_buffer
panorama-face-overlay
push-txxyuusptoru
push-zpwsovysllvn
chore/queue-endpoint-migration
fix/remove-from-album
chore/thumbnail-histogram
fix/video-thumbnail-bindthis-regression
fix/scrubber-drag-edge-cases
fix/timeline_layout_row_height
refactor-cancellable-task
uhthomas/fix-mobile-use-timer
uhthomas/fix-mobile-video-controls-key
uhthomas/chore-mobile-search-declarative
owner-role-album-user
feat/livephoto-editing
favorite-albums
uhthomas/fix-mobile-isolate-auth
fix/library-watcher-excludes
chore/library-e2e-to-medium
push-ynllunsvrpxy
fix/dont-delete-offline-library-files
push-zvwwxmvkrspv
push-kywsnvvkwzts
push-xxnxokokzrou
push-voozlrlkxsnu
view-in-timeline-transition
push-uymvmlknxpmx
push-qslzsplnusoz
fix/mobile-video-stall
uhthomas/draft-mobile-image-cache-cancel
push-yquostpqnkxp
feat/vitest-4
claude/offload-icloud-hashing-bI3GZ
midzelis/wip
uhthomas/fix-server-fsync-all
feat/mobile-widget-shared-client
push-lnyuzsutzkqq
push-vqqqxxvkunru
push-wvnmqoswptww
push-nwxlpmyzkyrl
fix/map-webgl-error
fix/mobile-player-fit
feat/panorama-tiles
csp-policy
push-rsywxvptwxuv
refactor/restores-file-interceptor
postgres-socketio
claude/auto-screenshot-web-changes-Y7efI
visual-review/pr-26535
push-lvyturrtwkrq
feat/library-offline-count
fix/mobile-video-aspect-ratio
uhthomas/fix-mobile-search-results
uhthomas/feat-sort-smart-search
uhthomas/chore-mobile-maplibre
uhthomas/mobile-fix-asset-details-album-pop
feat/crawl-wrapper
push-skvzqoozqkpl
feat/edit-filters
feat/pg-queue
refactor/asset-upload
better-project-structure
uhthomas/mobile-feat-asset-viewer-details
fix/ml-rocm-build
feat/asset-file-apis
feature/bottom-buttons-order
sqlite_thumbs
fix-keep-correct-ios-shared-album-asset
push-vpxwmwwxwnvw
fix-migration-width-height
shared-deep-link-handler
feat/thumbnail-native-clients
feat/platform-clients
fix/foreground-cloud-sync
filter-by-person
refactor/sidebar
fix/merged-edited-assets
feat/create-job-with-dto
feat/ios-fastlane-match
match-signing
fix-update-time-update-timeline
feat/modal-routes
feature/mobile-view-asset-owner
feat/system-settings
feature/show-activity-count
feat/location-favorites
feature/rearrange-buttons-2
fix/download-storage-template
chore/originals-in-asset-files
ben/tree-a11y
new-search-filter-ui
refactor/expectSelectedReadonly
refactor/mobile-grdb
feat/mobile-native-local-sync
refactor/timeline_ops
fix/scrubber_end
refactor/virtualsegment
refactor/rename_daymonth_groups
fix-remote-sync-clean-up
debug/cf-chunked-uploads
feat/search-filter-album/web
feat/session-permissions
feat/mobile-dynamic-thumbnails
refactor/extract_photostream
refactor/rename_load_api
refactor/timeline2
refactor/timeline3
feat-no-thumbhash-cache
feat/mobile-hdr-images
feat/beta-background-upload
fix/beta-timeline-memories-setting
fix/failed-uploads-not-removed
feat/groups
drift-map-page
feat/add-to-album-action
track-livephotos
feat/maintenance-worker
refactor/server-side-dedupe
feat/integrity-checks
dev/recognition-eval
lighter_buckets_test
perf/postgres-queue
tmp/demo-snapshot-preview
fix/server-migration-file-extension
rknn-toolkit-lite2
feature/Add-rocm-support-for-machine-learning
chore/async-hash-file
feat/shared-link-view-count
feat/graphql
no-video-player
fix/server-qsv-output-format
chore/server-geodata-tweaks
mobile/native-video-player-no-hero
feat/local-tileserver
feat/ml-armnn-conversion
chore/handle-output_dims
feat/capacitor-mobile-app-poc
feat/server-nvenc-hw-decoding
web/automation-ui
object-storage
ml/tflite
feat/ml-export-cli
v3.0.3
v3.0.2
v3.0.1
v3.0.0
v3.0.0-rc.4
v3.0.0-rc.3
v3.0.0-rc.2
v3.0.0-rc.1
v3.0.0-rc.0
v2.7.5
v2.7.4
v2.7.3
v2.7.2
v2.7.1
v2.7.0
v2.6.3
v2.6.2
v2.6.1
v2.6.0
v2.5.6
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.1
v2.4.0
v2.3.1
v2.3.0
v2.2.3
v2.2.2
v2.2.1
v2.2.0
v2.1.0
v2.0.1
v2.0.0
v1.144.1
v1.144.0
v1.143.1
v1.143.0
v1.142.1
v1.142.0
v1.141.1
v1.141.0
v1.140.1
v1.140.0
v1.139.4
v1.139.3
v1.139.2
v1.139.1
v1.139.0
v1.138.1
v1.138.0
v1.137.3
v1.137.2
v1.137.1
v1.137.0
v1.136.0
v1.135.3
v1.135.2
v1.135.1
v1.135.0
v1.134.0
v1.133.1
v1.133.0
v1.132.3
v1.132.2
v1.132.1
v1.132.0
v1.131.3
v1.131.2
v1.131.1
v1.131.0
v1.130.3
v1.130.2
v1.130.1
v1.130.0
v1.129.0
v1.128.0
v1.127.0
v1.126.1
v1.126.0
v1.125.7
v1.125.6
v1.125.5
v1.125.4
v1.125.3
v1.125.2
v1.125.1
v1.125.0
v1.124.2
v1.124.1
v1.124.0
v1.123.0
v1.122.3
v1.122.2
v1.122.1
v1.122.0
v1.121.0
v1.120.2
v1.120.1
v1.120.0
v1.119.1
v1.119.0
v1.118.2
v1.118.1
v1.118.0
v1.117.0
v1.116.2
v1.116.1
v1.116.0
v1.115.0
v1.114.0
v1.113.1
v1.113.0
v1.112.1
v1.112.0
v1.111.0
v1.110.0
v1.109.2
v1.109.1
v1.109.0
v1.108.0
v1.107.2
v1.107.1
v1.107.0
v1.106.4
v1.106.3
v1.106.2
v1.106.1
v1.106.0
v1.105.1
v1.105.0
v1.104.0
v1.103.1
v1.103.0
v1.102.3
v1.102.2
v1.102.1
v1.102.0
v1.101.0
v1.100.0
v1.99.0
v1.98.2
v1.98.1
v1.98.0
v1.97.0
v1.96.0
v1.95.1
v1.95.0
v1.94.1
v1.94.0
v1.93.3
v1.93.2
v1.93.1
v1.93.0
v1.92.1
v1.92.0
v1.91.4
v1.91.3
v1.91.2
v1.91.1
v1.91.0
v1.90.2
v1.90.1
v1.90.0
v1.89.0
v1.88.2
v1.88.1
v1.88.0
v1.87.0
v1.86.0
v1.85.0
v1.84.0
v1.83.0
v1.82.1
v1.82.0
v1.81.1
v1.81.0
v1.80.0
v1.79.1
v1.79.0
v1.78.1
v1.78.0
v1.77.0
v1.76.1
v1.76.0
v1.75.2
v1.75.1
v1.75.0
v1.74.0
v1.73.0
v1.72.2
v1.72.1
v1.72.0
v1.71.0
v1.70.0
v1.69.0
v1.68.0
v1.67.2
v1.67.1
v1.67.0
v1.66.1
v1.66.0
v1.65.0
v1.64.0
v1.63.2
v1.63.1
v1.63.0
v1.62.1
v1.62.0
v1.61.0
v1.60.0
v1.59.1
v1.59.0
v1.58.0
v1.57.1
v1.57.0
v1.56.2
v1.56.1
v1.56.0
v1.55.1
v1.55.0
v1.54.1
v1.54.0
v1.53.0
v1.52.1
v1.52.0
v1.51.2
v1.51.1
v1.51.0
v1.50.1
v1.50.0
v1.49.0
v1.48.1
v1.48.0
v1.47.3
v1.47.2
v1.47.1
v1.47.0
v1.46.1
v1.46.0
v1.45.0
v1.44.0
v1.43.1
v1.43.0
v1.42.0_65-dev
v1.41.1_64-dev
v1.41.0_64-dev
v1.40.1_63-dev
v1.40.0_63-dev
v1.39.0_61-dev
v1.38.2_60-dev
v1.38.1_60-dev
v1.38.0_60-dev
v1.37.0_58-dev
v1.36.2_56-dev
v1.36.1_55-dev
v1.36.0_55-dev
v1.35.0_54-dev
v1.34.0_53-dev
v1.33.1_52-dev
v1.33.0_52-dev
v1.32.1_51-dev
v1.32.0_50-dev
v1.31.1_49-dev
v1.31.0_49-dev
v1.30.2_48-dev
v1.30.0_46-dev
v1.29.6_45-dev
v1.29.6_44-dev
v1.29.5_44-dev
v1.29.4_44-dev
v1.29.3_43-dev
v1.29.2_43-dev
v1.29.1_43-dev
v1.29.0_42-dev
v1.28.4_41-dev
v1.28.4_42-dev
v1.28.3_41-dev
v1.28.2_40-dev
v1.28.1_39-dev
v1.28.0_38-dev
v1.27.0_37-dev
v1.26.0_36-dev
v1.25.0_35-dev
v1.24.0_34-dev
v1.23.0_33-dev
v1.22.0_32-dev
v1.21.1_31-dev
v1.21.0_31-dev
v1.20.3_30-dev
v1.20.2_30-dev
v1.20.1_30-dev
v1.20.0_30-dev
v1.19.1_29-dev
v1.19.0_29-dev
v1.18.0_27-dev
v1.17.0_25-dev
v1.16.0_23-dev
v1.15.1_21-dev
v1.15.0_21-dev
v1.14.0_21-dev
v1.13.0_20-dev
v1.12.0_18-dev
v1.11.0_17-dev
v1.10.0_15-dev
v1.9.1_14-dev
v1.9.0_13-dev
v1.8.0_12-dev
v1.7.0_11-dev
v1.6.0_10-dev
v1.5.1+9-dev
v1.5.0+8-dev
v1.4.0+7-dev
v1.4.0+6-dev
v1.4.0-dev
v1.3.0-dev
v1.3.1-dev
v0.6-dev
v0.5-dev
v0.4-dev
v0.3-dev
v0.2-dev
first-android-release
Labels
Clear labels
accessibility
changelog:enhancement
changelog:security
changelog:skip
changelog:translation
cli
date-time
dependencies
documentation
external-library
format
good first issue
mobile-beta
mobile-beta
mobile-beta
needs-answer
nice to have
pull-request
sharing
tech-debt
📱mobile
🖥️web
🗄️server
🧠machine-learning
Mirrored from GitHub Pull Request
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: immich-app/immich#32
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @alextran1502 on GitHub (Mar 29, 2022).
Feature Details:
Follow the guide here for steps to create the required XML files for unraid.
@JamesTeague commented on GitHub (Mar 30, 2022):
Is there an existing Docker image on Docker Hub already or would one need to get it into a registry?
@JamesTeague commented on GitHub (Mar 30, 2022):
Also there seems to be a dependency on Postgres running in port 5432. Did I read that right? If so, that port should probably be configurable defaulting to 5432.
@alextran1502 commented on GitHub (Mar 30, 2022):
@JamesTeague There is no image that contains the whole application yet. I am working on the branch
deployment/containerize-app-into-single-dockerfileto accomplish that goal.It is correct that the Postgres port is 5432. You can access it on your local machine as well as throughout your local network with the VM IPV4
@JamesTeague commented on GitHub (Mar 30, 2022):
@alextran1502 Regarding the port that is true, but there will be people running Postgres in a container not using port 5432. It's generally not a good assumption that the database will be exposed on that port. So in the case of Unraid it would help users to know that this template requires their own postées instance but it shouldn't also dictate the port they have to expose on the container. Or if for some reason they are running multiple instances of the database, 1 has to be running on a different port.
Once the container is in the registry though I wouldn't mind helping get the template set up and tested. Or trying to contribute on other things as well.
@Kjeldgaard commented on GitHub (May 21, 2022):
Isn't the immich image sufficient if using an existing database?
@alextran1502 commented on GitHub (May 21, 2022):
There is a message queue that utilizes Redis for passing the message across the background processes, so you would need Redis as well.
Now that I am adding a web interface that is using SvelteKit, which has its own built-in Nodejs server, this adds an additional complexity to the process of putting everything into a single Docker image.
@Kjeldgaard commented on GitHub (May 21, 2022):
I actually already have Redis up and running, but how should that be configured? According to 'Step 1' from https://github.com/alextran1502/immich, there is only the database configuration.
@JamesTeague commented on GitHub (May 22, 2022):
I think so, most people probably want to decouple that and Redis anyway.
@martabal commented on GitHub (Jul 22, 2022):
The branch doesn't exist anymore. It would be very nice to have a single container to deploy. I already have postgres and redis dockers running and don't want to deploy other instances.
@zackpollard commented on GitHub (Jul 22, 2022):
You can use environment variables to point your Immich services at your existing redis and postgres containers, check the .env file
@martabal commented on GitHub (Jul 31, 2022):
Is it possible to get rid of the .env file and to use only the environment variables ? It would allow to run the services with docker run
@bo0tzz commented on GitHub (Aug 1, 2022):
Sure, you can skip the .env file and pass the variables in any other way you like.
@martabal commented on GitHub (Aug 8, 2022):
For now Immich works with Unraid with the docker-compose plugin but in my understanding to run with the
docker runcommand, it would be easier to integrate the entrypoint in the Dockerfile. Is there any particular reason to put it outside the file?@Nonobis commented on GitHub (Aug 8, 2022):
yes the custom entrypoint is the main problem .. in my case, even in advanced docker mode in unraid i don't see where to put the custom entrypoint for each image.
@martabal commented on GitHub (Aug 8, 2022):
There is the
--entrypointargument but it is for overwriting the default entrypoint of the image. But there is no entrypoint by default in the images. So it is currently impossible to run Immich images withdocker run@bo0tzz commented on GitHub (Aug 8, 2022):
The images are built on top of the node base image, so there is a default entrypoint defined that you can override. A command like
docker run --entrypoint /bin/sh altran1502/immich-server:release ./start-server.shworks just fine (it doesn't have the necessary config, but it will start the right executable). That said, I agree that having entrypoints defined in the images is nicer, and I've suggested it to the team.@martabal commented on GitHub (Aug 8, 2022):
For a release on Unraid, it would be a lot better to avoid arguments other than path, device, port or environment variable. Other arguments has to be passed with the extra-parameters field which is not very user-friendly.
And of course to have only one image.
@guim31 commented on GitHub (Aug 9, 2022):
Sorry for my useless message but I have to say I would really love ab easy unraid install !!!
@martabal commented on GitHub (Aug 14, 2022):
I managed to install
altran1502/immich-server:releaseon Unraid without docker-compose. But for now there is too many images to publish it for Unraid community. Another thing I noticed with my install is that I created a specific user on Postgres to Immich but it didn't work, I had to pass the default postgres user to work.@guim31 commented on GitHub (Aug 16, 2022):
Thanks @martabal for your feedback.
I hope someone with some Docker skills could merge all those images in one !
@martabal commented on GitHub (Aug 17, 2022):
No problem, I will try to merge the images next week
@blaine07 commented on GitHub (Aug 21, 2022):
You’d be a hero here. Looking forward to this! :-)
@dsfsdbvxc commented on GitHub (Aug 24, 2022):
Yea thanks, keen to give this a go :)
@dhruvinsh commented on GitHub (Sep 2, 2022):
@martabal how did manage to override the entrypoint? unraid webpage Extra Parameters doesn't seems to help
Edit:
Nevermind I got it working, I needed to use "Post Argument" commnad
@ark- commented on GitHub (Sep 3, 2022):
Would we need to install a bunch of individual "apps" (containers) one by one to get this working on unraid without docker-compose? It looks like there's 7 containers, is that right?
I'm hesitant to use compose on unraid as it doesn't play well with their Web UI and that is my primary interface to the server.
@bo0tzz commented on GitHub (Sep 3, 2022):
Currently, yes, you would need to set up the individual containers manually. For Redis and Postgres you could use templates, and the machine-learning container is not required (but you would miss out on object detection/tagging).
@ark- commented on GitHub (Sep 8, 2022):
I got this working by installing the unraid plugin for docker-compose. This is an OK workaround for now, but it makes a bunch of unmanaged containers in the main docker window.
docker/docker-compose.ymland save changesdocker/.env, editing to suit your environment and save changesEnjoy
@martabal commented on GitHub (Sep 8, 2022):
Yeah, It works but is not ideal for many unraid users.
@guim31 commented on GitHub (Sep 8, 2022):
Maybe we should also post here : https://discourse.linuxserver.io/t/request-immich/4482/2
Linuxserver's team would be a BIG step for Immich integration on Unraid and it would offer a really big visibility IMO.
@martabal commented on GitHub (Sep 8, 2022):
Yeah Linuxserver's work is amazing, I hope they will create an Immich image. Btw, this issue doesn't appear in the Kanban. Hope this isn't a bad thing.
@InsanePirate commented on GitHub (Sep 17, 2022):
I'm sorry could you share your .env and .yaml files? For the life of me, I can't get it working on unraid.
@MattFaz commented on GitHub (Sep 22, 2022):
I got it working the other day so quickly put a rough guide online to help others: https://mfaz.dev/posts/immich-unraid/
@alextran1502 commented on GitHub (Sep 22, 2022):
@Mattyfaz Thank you so much for posting the guide!! Do you want to post it on Reddit or I can include the link in the next monthly update?
@MattFaz commented on GitHub (Sep 22, 2022):
@alextran1502 Feel free to post wherever/include in your update 😊
@guim31 commented on GitHub (Sep 22, 2022):
Thanks a lot @Mattyfaz for your guide 👍
I have to admit that this screenshot :

Is the reason why people hope someone would achieve to merge all the images together ! ;)
Personnaly I'll wait for this moment as I always have the feeling that it would make my unraid server a mess
EDIT : typo
@dsfsdbvxc commented on GitHub (Sep 23, 2022):
Agreed, it would be nice to have all in one container to simplify things. However, docker folders is pretty useful to put all the current containers together, can always collapse the folder to make it look more tidy.
@sohail579 commented on GitHub (Oct 10, 2022):
awesome write up but I also think i will wait for a unified image. is there a view on how long this will take?
@alextran1502 commented on GitHub (Oct 10, 2022):
@sohail579 We don't have any concrete plan when to put resource into this yet. Right now it is heavily depend on the community to provide support for a single Docker image.
@guim31 commented on GitHub (Oct 17, 2022):
Here is the answer from a LSIO moderator :
https://discourse.linuxserver.io/t/request-immich/4482/5?u=guilhem
I hope the immich contributors will make it possible :)
@martabal commented on GitHub (Oct 17, 2022):
I have successfully created an image bundling, web, machine-learning, nginx and server images. It works but I have some bugs with machine-learning. I tested it on Unraid and it works. However, this is just a draft, I don't plan to update this image frequently. You can try the container by pulling martabal/immich:latest, and you can give a look to the Dockerfile here
It uses almost 1 gb of RAM 😧 (but all official images combined use 1 gb of RAM)
@bo0tzz commented on GitHub (Oct 17, 2022):
Nice work! It's good to have an initial approach (even if just a draft) to drive discussion further - for example, it just made me realise that doing this fully will be dependent on #647, since all the services will only be reachable on localhost.
@sohail579 commented on GitHub (Oct 21, 2022):
@Mattyfaz Thankyou for this awesome write up I had it up and running in minuets. I have a question though. I endered my location for the media upload folder but normally on unraid i would expect to see a folder in the appdata with all of the appdata.. where is this all now? where are all the thumbnails saved? am i just filling up my docker image now?
@bo0tzz commented on GitHub (Oct 21, 2022):
Thumbnails and such are saved in your library folder. The database data is (by default) stored in a docker volume, which probably is ending up in your docker img right now. That shouldn't be that much data though.
@sohail579 commented on GitHub (Oct 21, 2022):
@bo0tzz your are everywhere :) and your advise and help is appreciated and awesome.. should my database in that case not be in my app data so that i am never going to loose it? or wlll the database rebuild itself from the media folder if needed ever?
@martabal commented on GitHub (Oct 21, 2022):
Quick update, the container runs very well, finally no bug observed. It uses between 800 and 900 mb of RAM. I pushed a version for arm64 for everyone using a raspberry pi. I will do my best to keep them up to date.
@bo0tzz In the long term do you plan to merge images or keep them sperated?
@MattFaz commented on GitHub (Oct 21, 2022):
@sohail579
In your upload location - If you followed my guide you can see I set the upload location as
mnt/user/images/immich.Within that directory you can see a folder with a uuid, and inside that is 3 folders:
encoded-video,original, andthumb. :)@sohail579 commented on GitHub (Oct 21, 2022):
thanks @Mattyfaz - on the other note I ubderstand that the database is stored in the docker image. shouldn't this be in the app data?
@MattFaz commented on GitHub (Oct 21, 2022):
@sohail579
Ideally - I've just tried and managed to get it working with an existing Postgres container separate from Immich so all data will be in my appdata now. Here is what I did.
.Env File
Update the database values to match your postgres container.
Compose file:
You'll need to comment out all reference of database in this file.
Comment out the whole database service:
Then for each other service remove the dependency on databse:
Finally remove the volume at the bottom:
Doing this I've successfully got it running.

@bo0tzz commented on GitHub (Oct 21, 2022):
We had some discussions with the contributor team and did a few experiments ourselves with merging images. For now, we have decided not to build an all-in-one image.
Running multiple services inside one docker image is an unusual way of doing things, and would come with some issues (especially if including the Redis and Postgres dependencies). Merging the current images into one would also take time and energy away from developing other Immich features, as would providing support for the resulting mega-image.
In addition, the current images work just fine, also on Unraid (especially with @Mattyfaz's great guide). At the moment, the only reason for creating an all-in-one image would be to have it work with Unraid's Docker templates, but docker-compose fills a similar role to those already.
@blaine07 commented on GitHub (Oct 21, 2022):
So I have been using a different app on my phone to upload photos to Unraid forever. What is going to happen if I follow Immich guide and point it at a directory already full of existing photos and media?
@bo0tzz commented on GitHub (Oct 21, 2022):
Nothing, you need to give Immich an empty directory to work with and upload files via the API. There is an open issue for what you're looking for: #34. If you need to do a bulk import you can use the CLI https://github.com/immich-app/cli
@MattFaz commented on GitHub (Oct 21, 2022):
@blaine07
It won't pick them up (someone please correct me if I am wrong), if you'd rather not re-upload via your mobile an alternative is to copy the images from Unraid to your PC and upload via the WebUI as shown in the image below.
@sohail579 commented on GitHub (Oct 21, 2022):
not sure I got this.. you still havent said anywhere to use a file location in appdata, isnt is as simple as replacing pgdata with a location in the appdata folder?
@bo0tzz commented on GitHub (Oct 21, 2022):
That should also work, yes.
@sohail579 commented on GitHub (Oct 21, 2022):
would that need to be everywhere where it says pgdata or do you just create it as a variable in the env file?
@bo0tzz commented on GitHub (Oct 21, 2022):
Just this line, you would replace it with something like
- /mnt/user/appdata/immich:/var/lib/postgresql/data.@sohail579 commented on GitHub (Oct 21, 2022):
what about the last 2 lins? it also makes a reference to pgdata there wouldnt that also need to be the same?
@bo0tzz commented on GitHub (Oct 21, 2022):
The
instructs Docker to create the pgdata volume. If you're not using it, you can remove that part, but leaving it won't do any harm.
@sohail579 commented on GitHub (Oct 21, 2022):
got you thanks I thought it was trying to mount the volume :)
@blaine07 commented on GitHub (Oct 23, 2022):
Pardon my idiocracy, but how do I update everything once it's setup? I do have it working but... curious?
Thanks
@blaine07 commented on GitHub (Oct 23, 2022):
Also, with docker compose plugin installed on Unraid is it normal for it to say this at bottom of the docker tab:
Invalid argument supplied for foreach() in /usr/local/emhttp/plugins/compose.manager/php/compose_manager_main.php on line 32
@blaine07 commented on GitHub (Oct 23, 2022):
Are those of you who have followed the Unraid Guide seeing this, below, spamming your syslogs since Immich was installed?
@blaine07 commented on GitHub (Oct 23, 2022):
Is it possibly because this Machine-Learning 1 is continuing to restart/bootloop?
@blaine07 commented on GitHub (Oct 23, 2022):
I disable JUST that container and Syslog spam stops in Unraid; I just have no idea how important it is that piece runs nor how to fix just that piece? Is there anything I can do or?
@alextran1502 commented on GitHub (Oct 23, 2022):
Yes looks like your machine cannot run the Machine Learning container
@blaine07 commented on GitHub (Oct 23, 2022):
So what can I do and how can I fix it? It's a old-ish Dell T610 server, FWIW
@blaine07 commented on GitHub (Oct 23, 2022):
Google says my Dell T610 doesn't have AVX support; so thats probably the reason my machine learning portion won't stay running: https://github.com/immich-app/immich/discussions/300
Still not sure of the side effects of it not running or if that will cause me other issues. Also still unsure if docker compose plugin installed on Unraid if it is normal for it to say this at bottom of the docker tab:
Invalid argument supplied for foreach() in /usr/local/emhttp/plugins/compose.manager/php/compose_manager_main.php on line 32
@martabal commented on GitHub (Oct 23, 2022):
Wouldn't it be better to use environment variables rather than using hardcoded urls ? This would allow for a single image and users to rename their containers as they wish. #647
2c189d5c78/server/apps/microservices/src/processors/machine-learning.processor.ts (L23)2c189d5c78/server/apps/microservices/src/processors/machine-learning.processor.ts (L43)2c189d5c78/web/src/api/api.ts (L48)2c189d5c78/nginx/nginx.conf (L65)2c189d5c78/nginx/nginx.conf (L90)@blaine07 commented on GitHub (Oct 27, 2022):
Every single time in Unraid I "docker compose down" then "Update Stack" MORE of my Docker Image is full. How can I "clean up" after this configuration? @Mattyfaz ? Anyone?
@bo0tzz commented on GitHub (Oct 27, 2022):
https://docs.docker.com/engine/reference/commandline/system_prune/ should do the trick.
@blaine07 commented on GitHub (Oct 27, 2022):
That will work in Unraid?
@blaine07 commented on GitHub (Oct 27, 2022):
I ran it; eventually the unraid command window wen't away. Didn't see that it did anything; docker image still larger than expected?
Did it from ssh and it deleted 284mb :scratches head:
Yep, that was a bad idea; deleted containers I had that weren't running...a few I can't seem to get recreated right. DOH LOL
@MattFaz commented on GitHub (Oct 27, 2022):
Not sure sorry, I don’t think I have the same issue. I don’t click “docker compose down”, I just click “update stack” and it does it all for you.
@sohail579 commented on GitHub (Oct 27, 2022):
Install user scripts and create this as a script it will remove any dangling images
#!/bin/bash
remove_orphaned_images="yes" # select "yes" or "no" to remove any orphaned images
remove_unconnected_volumes="yes" # select "yes" or "no" to remove any unconnected volumes
#Do not make changes below this line#
echo "##################################################################################"
echo "Cleanup before starting (if requested in script)"
echo "##################################################################################"
echo
if [ "$remove_orphaned_images" == "yes" ] ; then
echo "Removing orphaned images..."
echo
docker image prune -af
else
echo "Not removing orphaned images (this can be set in script if you want to)"
fi
echo
echo "---------------------------------------------------------------------------------"
echo
if [ "$remove_unconnected_volumes" == "yes" ] ; then
echo "Removing unconnected docker volumes"
echo
docker volume prune -f
else
echo "Not removing unconnected docker volumes (this can be set in script if you want to)"
fi
echo
echo "##################################################################################"
echo "List of Image, Container and docker volume size."
echo "##################################################################################"
echo
#docker system df
docker system df --format 'There are \t {{.TotalCount}} \t {{.Type}} \t taking up ......{{.Size}}'
echo
echo "##################################################################################"
echo "List of containers showing size and virtual size"
echo "##################################################################################"
echo
echo "First size is the writable layers of the container (Virtual size is writable and read only layers)"
echo
docker container ls -a --format '{{.Size}} \t Is being taken up by ......... {{.Image}}'
echo
echo "##################################################################################"
echo "List of containers in size order"
echo "##################################################################################"
echo
docker image ls --format "{{.Repository}} {{.Size}}" |
awk '{if ($2~/GB/) print substr($2, 1, length($2)-2) *1000 "MB - " $1 ; else print $2 " - " $1 }' |
sed '/^0/d' |
sort -nr
echo
echo "##################################################################################"
echo "List of docker volumes, the container which they are connected to their size"
echo "##################################################################################"
echo
volumes=$(docker volume ls --format '{{.Name}}')
for volume in $volumes
do
name=
(docker ps -a --filter volume="$volume" --format '{{.Names}}' | sed 's/^/ /')size=
(du -sh $(docker volume inspect --format '{{ .Mountpoint }}' $volume) | cut -f -1)echo "ID" "$volume"
echo "This volume connected to" $name "has a size of" $size
echo ""
done
echo
echo "##################################################################################"
echo
echo "Done. Scroll up to view results"
exit
@Enlinks commented on GitHub (Nov 19, 2022):
Not sure if this has been discussed but there are other templates (at least 1 I know of) like TubeArchivist that require multiple dockers to work correctly that currently work with the Unraid Community Applications Plugin. Would this approach be more appropriate?
@bo0tzz commented on GitHub (Nov 25, 2022):
It looks like TubeArchivist doesn't do anything special, they just have a template for each of their containers. At that point, docker-compose is still the better option :)
@alexbelgium commented on GitHub (Jan 11, 2023):
I second the request, a single container for all elements would be great! I am managing Home Assistant addons, which is not compatible with stacks of several containers.
@bo0tzz commented on GitHub (Jan 11, 2023):
There is now a single AIO image at https://github.com/martabal/docker-immich. It isn't supported by the Immich team though.
@SmoochSmackers commented on GitHub (Jan 11, 2023):
Sorry if this is a silly question, but since you closed this issue, does this mean that there will never be an official AIO Immich image? Only the third party one you linked to?
My number one issue right now, as an extremely novice self-hoster, is the way that I have to use docker compose on my Unraid machine to use it. The three issues I have with this is that:
1.) It spins up 5 separate containers.
2.) I cannot mass update it along with the rest of my docker containers and have to keep an eye on the github page for any new releases.
3.) I think that not having a single image available in Unraid's Community App store creates an artificial hurtle that limits Immich's reach. It took quite a lot of time, and build up of frustration with other photo hosting apps, to finally push me to learn how to use docker compose. I feel there are many like me out there, but with less time on their hands, who are not ready to take the plunge. It's a matter of getting more users/supporters by lowering the bar to entry.
To be clear, I'm not writing this in anger or frustration. To the contrary! I absolutely love this software and understand the ungodly amount of work you all must have in front of you, tackling such a project! I just wanted to give my perspective as a newbie trying their darndest to rip as many of Google's tendrils from my life as possible and taking back control of my data.
Thank you all for your amazing work, I've been looking for a solid google photos replacement for years now. From my experience trying to self-host Photoview, Photoprism, etc., Immich is far and away the best one I've come across, the only one that truly has a google photos-like experience with the mobile app, and the only one that has runs rock solid with almost no issues with its core functionalites. In fact, I love this project so much that I created a github account to better follow your progress and so that I could donate.
@alextran1502 commented on GitHub (Jan 11, 2023):
@SmoochSmackers Thank you for your very detailed thoughts and ideas. On behalf of the team, I will answer your questions.
Cheer!
@jrasm91 commented on GitHub (Jan 11, 2023):
Updated the immich docs to link to the community all-in-one github repository (#1301).
https://immich.app/docs/install/all-in-one
@SmoochSmackers commented on GitHub (Jan 11, 2023):
@alextran1502 Thank you very much for your detailed reply! In regards to the Windows comparison, I'd honestly never thought of it in terms of everything an exe is doing in the background, so it makes a lot of sense that multiple containers would be a necessity. Regardless of how you need to do it, I'm just glad you're doing it!
Just spit-balling, but maybe, way down the line when you're not in active pre-production development, you could maybe revisit this, or even somehow put all the different containers on the unraid app store, such that one is a "core" for basic photo backup, another serves as an addon for utilizing the mobile app, another serves as an addon for machine learning, etc. No idea how possible any of that is, but I just wanted to throw it out there for consideration much later down the line.
Keep up the incredible work!! Thanks again!
@martabal commented on GitHub (Jan 12, 2023):
Hello !
Do you want that I maintain the all-in-one Dockerfile on a separate repo or do you want me to create a pull request ?
@jrasm91 commented on GitHub (Jan 12, 2023):
I think we're good with you keeping it in a separate repo for now. We just get the occasional question about it, so now everyone will know to go ask you instead. 😁
@guim31 commented on GitHub (Jan 12, 2023):
@martabal do you think you could provide an unraid template ? I don't really know how your image could land on Unraid's community software... maybe it should be requested idk.
I know that everything could be working right know as it is, but like many other Unraid user, I use this system because of the simplicity to install Docker containers with just few clicks.
Thanks a lot for your work, and THANKS a lot @alextran1502
@jagjordi commented on GitHub (Jan 12, 2023):
Would it be possible to migrate from the normal docker-compose setup to the all-in-one docker preserving the database and uploaded pictures?
@jrasm91 commented on GitHub (Jan 12, 2023):
Immich persists data to the upload folder and postgres data volumes. As long as you start up the AIO with those same two volumes it should be possible.
@martabal commented on GitHub (Jan 12, 2023):
@guim31 Yep, I plan to do it this week. But you can already install it on unraid manually.
@martabal commented on GitHub (Jan 12, 2023):
@jrasm91 Is it ok that my image is published on unraid community apps ?
@jrasm91 commented on GitHub (Jan 12, 2023):
I don't have a problem with it, just as long as it's clear it's not officially supported by Immich dev team and they should ask you question if they run into issues 😁