mirror of
https://github.com/immich-app/immich.git
synced 2026-07-25 14:00:45 +03:00
[Feature]: Second server url for fallback / local ip to external domain name swtich #130
Closed
opened 2026-02-04 17:55:05 +03:00 by OVERLORD
·
38 comments
No Branch/Tag Specified
main
chore/translations
fix/partner-ownership-contention
renovate/machine-learning
renovate/pypi-pillow-vulnerability
renovate/pypi-pydantic-settings-vulnerability
renovate/java-25.x
renovate/mobile
chore/harden-mobile-openapi-gen
renovate/java-21.x
fix/min-faces
refactor/asset-update
feat/merge-people-mobile
chore/face-cluster-abstraction
refactor/search-v3/pr-2a
fcast
fix/android-local-album-date
fix/24545-sync-retry-cx
fix/android-locked-folder-delete
make-sure-memory-widget-render
chore/freezed-example
fix/clamp-local-date-time-to-valid-value
fix/datetime-max-limit
fix/viewer-long-image-aspect
feat/native-core
feat/yucca-integration
refactor/mobile-actions
fix/ws-reconnect-battery
renovate/sharp
renovate/pigeon-27.x
refactor/auto-trash-sync
feat/release-source-branch
refactor/session-repository
fix/library-map-live-bounds-updates
renovate/permission_handler-12.x
renovate/node-24.x
fix/mobile-scroll-velocity-placeholders
fix/library-map-loading-flash
agg23/appbar-experiments
renovate/pep621-lock-file-maintenance-machine-learning
refactor/undo-actions
refactor/actions
feat/restore-action
feat/delete-action
fix/29853-thumbnail-decode-size
bugfix/live-photo-stuck
feature/load-previews
chore/pub-upgrade
custom-app-logo
fix/failed-sync-blocks-resume
feat/ml-hwaccel-testing
feat/workflow-logs
feat/server-chunked-uploads
feat/upload-action
fix-29727
feat/download-tag-action
feat/share-action
feat/album-actions
fix/android-cr3-save
feat/browser-profile-action
feat/cast-slideshow-action
feat/locked-folder-action
fix/unauthorized-memory-creation
feat/context-actions
refactor/action-class
feat/memories-view
refactor/asset-action-filter
feat/archive-action
feat/stack-action
feat/mobile-hls-player
refactor/stack-actions
feat/workflow-asset-tags
fix/timeline-drag-select-stops
fix/featured-photo-thumbnail-cache
fix/album-timeline-date-ordering
chore/album-remove-assets
feat/partner-table-permissions
fix/ocr-after-edit
fix/re-enable-pruning
refactor/delete-restore-actions
apk-build-deployment
edit-photo-stacking
fix/mise-lockfile
feat/web-hls-hover
refactor/store-cleanup
fix/hash-mismatch
refactor/app-metadata
refactor/advanced-settings
refactor/current-user
fix/dedupe-integrity-missing-paths
chore/albums-select
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
test-bump-prerelease
fix/handle-unlinking-motion-photos
fix/date-range-formatting
fix/mobile-album-action-msg
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
update-mise-lock-file
feat/kysely-0.29
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
plan-local-image-display
fix/remote-thumbnail-fallback
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#130
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 @EnderPicture on GitHub (Jul 5, 2022).
Feature detail
It would be nice to automatically switch between uploading from the local network connection when at home to viewing from any location when outside.
example:
192.168.0.25:2283for high speed local file transfer to server.photo.example.comto view photos/upload at slower speeds.Platform
Mobile App
@bertmelis commented on GitHub (Jul 5, 2022):
Isn't the domain resolved to the same machine?
@EnderPicture commented on GitHub (Jul 6, 2022):
Yes, but connecting through local IP transfers way faster.
@bo0tzz commented on GitHub (Jul 7, 2022):
The usual solution for this is split DNS: The domain is configured externally as usual, but on your local network you run a DNS server that resolves it to the local IP.
@alextran1502 commented on GitHub (Jul 28, 2022):
I think we can close this issue as it is better to be handled on the local network DNS.
@jon-f-novabackup commented on GitHub (May 8, 2023):
What is the reluctance to implement a feature that would allow the mobile app to be able to switch endpoint addresses easily, like at least from an internal endpoint to an external endpoint address? It doesn't seem like that would take much added logic just to allow the user to configure two endpoint URLs, one as "internal" and one as "external" to be able to choose from upon mobile app load (if the two endpoint URLs were in fact configured first in settings). Not all of us that host this app are network experts to be able to setup and maintain split DNS, or want to maintain our own DNS servers that then must be utilized across all friends and family members mobile devices, who don't even live at the same home location in some cases. It doesn't seem like having a config setting to enter in your endpoint URLs one time in the mobile app UI and then present those two "internal" or "external" endpoint URL choices on mobile app load would be that hard to implement? I'm just curious why the reluctance for this fairly simple mobile app feature that seems like many have asked about and need.
@PeterBasista commented on GitHub (May 10, 2023):
I addressed this question right at the beginning when I started using immich, I also created a discussion about it, and I also got the answer that I should use DNS somehow. Since I am not familiar with the languages immich is written in, I unfortunately don't know the complexity or difficulty of the implementation. But I find it fairly simple to check the ssid of the network at startup, if it is "xyz" then use internal otherwise external url/address. But since they always say about "just use split DNS" so I want to describe my problem and solution.
My network setup is quite simple. Router and then a Pihole (2x), this pihole is also as the main DNS server (I also have to rely on it since when I only had it as primary my router sometimes changed its mind about using secondary and I couldn't do connect to immich.Thus both primary and secondary I have a pihole instance.) In the pihole I set the url for immich as a translation to the internal address, so when I query on local network I am redirected to the local address. But since I have multiple containers I still needed an nginx proxy manager where I have the external url mapped to the local address with the port. Then I have this external address in local DNS in pihole. This is the build for the local network and for me to be able to translate the url to the local address in the local network. Since my ISP does not allow direct querying to their address (isp loop). So I can't directly access my address from outside. Which has complicated things for me quite a bit. Therefore I had to use another server (in this case it suited me well that I have another remote VPS) where I also have a domain. So I created a subdomain for that domain and redirected that domain to the VPS. On the VPS I am running frps which is configured and connects to my home server using fprc. In any case frpc queries the nginx proxy manager which knows the port.
For some reason it seems to me that managing this feature in immich would be much easier than my solution. But I respect your decision.
And now in short.
Local:
Pihole (as local dns) -> nginx proxy manager -> immich container
Remote:
Cloudflare -> remote VPS -> FRPS -> FRPC (on local server) -> nginx proxy manager -> immich container
@imran0 commented on GitHub (May 14, 2023):
I too think this feature will be immensely useful. I would greatly appreciate it if the Immich dev's could reconsider this feature request.
@Caian commented on GitHub (Jun 29, 2023):
I also think this is super useful. In my case I use Tailscale so I don't have to expose any service through my public IP. Because of this, each service is bound to a different IP, so there is no concept of an external DNS record.
@RyGuy994 commented on GitHub (Jul 4, 2023):
Having this out of the box would help me a bunch. I have 6 friends and family that I have set them up with their own server. Mainly for immich. Each time I have to configure a reverse proxy, then go on top of that and establish a local DNS to a second RP. This would cut down on a bunch of man hours.
@Scorcerer commented on GitHub (Jul 16, 2023):
Hi!
Having the same wish I wanted to share one angle that I think nobody mentioning yet: the encryption.
As example, please look how HomeAssistant does that: depending if you're on some specific WiFi the app uses url B, and if not it uses url A. They can be completely different, which is very nice, as being at home i don't really need to jump through hoops of setting proper SSL and all of that stuff, since it's local. If I'm away form home (other, not specified WiFi or mobile connection) the app seamlessly chooses SSL-encrypted entry point that has all the security I can provide (In my case, that's whole another server, as I don't get an public IP where my storage is). This is undoable with the proposed DNS approach - the encryption will be there either all the time (problematic locally) or never at all (BAD(tm) thing to do).
Please rethink this, from my non-programmer approach it looks like simple if-then-else, but I'd understand it's maybe not that easy...
@KeeganCarter11 commented on GitHub (Sep 29, 2023):
I wanted to bump this as well, I was kinda surprised this isn't an option since the other main thing I host is gome assistant and am currently fighting my local dns to get this app set up. External routing is easy, but forcing users to set up a local dns server isn't that user friendly.
@kiwijunglist commented on GitHub (Nov 4, 2023):
I came across this thread looking for a solution.
My situation is that I setup the immich app to point to timescale VPN IP address and wanted a fallback local IP address for when timescale wasn't running.
In home assistant app it supported local IP and remote IP address which was handy.
The DNS server is a good idea, so I will research into running my own DNS server for my local network to point the timescale IP to the local IP.
Thanks again for the app, I love it.
@eded333 commented on GitHub (Dec 18, 2023):
This is exactly what the HomeAssistant app does, when you are located at home within your wifi, it uses your internal ip, located elsewhere it uses the external one.

It would be extremely useful and much less of a hassle for people that use a VPN as tailgate to connect home but want to use the local network when at home.
@kiwijunglist commented on GitHub (Dec 18, 2023):
I initially wrote I was keen on the fallback url option.
Subsequently I have installed wireguard on my unraid server and no longer require this feature. I use the local IP and then when I am not home wireguard automatically kicks in.
@Caian commented on GitHub (Dec 19, 2023):
VPNs are known to drain a lot of battery though.
@kiwijunglist commented on GitHub (Dec 19, 2023):
That is true. Android phone user here, tailscale used some battery, haven't noticed any drain with wireguard. Didn't come up on battery stats.
@jenda69 commented on GitHub (Dec 21, 2023):
This would be really nice feature to have!
I've set up dnsmasq on my router to get local IP in my LAN as suggested in this thread and it somewhat works...
Until I use a device which uses Private DNS (enabled by default on Android I guess). Then it just ignores DNS server provided by DHCP and all the data go over half of Europe through my tunnel again.
I thought I could just check for my home IP address on the server I use as the tunnel and instead of reverse proxying send HTTP redirect to the local IP. That works great when accessing through webbrowser, but Immich app doesn't follow redirects and refuses to work.
@krunkster commented on GitHub (Jan 27, 2024):
I think this is going to be a must have feature... eventually.
I'm a fairly technical person, decades of software engineering experience, and I think you've done a great job of making Immich easy to install and use on a local network. Making it accessible remotely (and securely) is an order of magnitude more complicated, and likely beyond most people. Concepts like TLS, reverse proxy, and Split DNS require a lot of technical knowledge. Caddy helps solve the first two, but it's difficult to get right. Pi Hole is a popular way to do local and split DNS but even once it's configured Immich seems to be much slower and more unstable compared to a direct local connection.
I understand the audience of Immich today may be the IT hobbyist, but for wider adoption features like this one will make a big difference in reducing technical overhead for a lot of users.
@Betoniara commented on GitHub (Feb 10, 2024):
This should be natively supported.
Since I'm uploading photos using Wi-Fi, it's natural that I would want them to connect to a local IP address rather than through a domain.
@sneffetsd commented on GitHub (Apr 4, 2024):
This is a must. My network is behind a CGNet, I need to use a cloudflare tunnel, what means that I can't upload videos from my mobile gallery. It's not a reality change manually every time when needs to upload an large file, for me that would be easy, but for family members that is not easy to understand (Why don't I just use google photos instead? Is what they ask me).
Home Assistant does that in the settings and it runs seamless.
@shlomiassaf commented on GitHub (Apr 6, 2024):
With today's tools this one is a must!
As an example, it's easy today to use zero-trust security to apply a setup free tunnel to a serve(e.g CloudFlare Tunnels without the cumbersome VPN setup.
It does however process traffic (decrypt ssl and encrypt back) so you want to avoid most traffic, especially when home.
For example, my setup is photos.mydomain.local for home network and photos.mydomain.co for external
I would like to use the first on my home network and the external outside.
Both are protected via oidc through my authentik server which will go to google as it's oidc solution so the tunnel provider will never know my password ( it can know my temp tokens and content as it strips down but I trust cloudflare)
Since it's free I wouldn't want to abuse the service and anyway reduce latency and speed things up locally !
This is must, I really don't see how we miss this one.
At least, in the interim allow us to choose a server in the login screen, I need to change the address every time manually
@Borrower543 commented on GitHub (Jun 9, 2024):
Any reconsideration on this front? Really would love this feature. As others have said it's great in Home Assistant.
@phil9309 commented on GitHub (Jun 24, 2024):
Any official update on this feature?
@alextran1502 commented on GitHub (Jun 24, 2024):
@phil9309 not on the priority list at the moment, but probably will be added once we refactor the auth pipeline to solve other issues
@Triple-Z commented on GitHub (Jul 2, 2024):
As a homelab user, I need this functionality very much. For now I have installed two immich app instances on my mobile phone. One is official and the other one is installed via Xcode for external use (with custom header support via #10588 ).
It would be very glad for me if this feature could be done.
@ampersandru commented on GitHub (Jul 15, 2024):
Would love this since Im using a reverse proxy + cloudflare proxy and uploads are SLOW at 7 MB/s even when on the same local network. When I log out of the immich app and log back in with the local address of immich, uploads hit 50MB/s and higher
@grazy27 commented on GitHub (Aug 1, 2024):
Relevant as never, Cloudflare proxy won't resolve to local IP, the only available option now is to configure DNS rewrite on router
@krishgcek commented on GitHub (Aug 4, 2024):
I would like a feature similar to what exists in OpenHAB, where I can use a local LAN IP when I’m at home and automatically switch to a remote URL, such as a free SSH tunnel or AnyDesk, when I'm away.
@haydndup commented on GitHub (Sep 14, 2024):
Why is the team so resistant to this? There is clearly demand for it, and having a configurable base URL should be fairly trivial?
@radhoo2k10 commented on GitHub (Oct 7, 2024):
Would really loved this feature. Having problems when uploading large video-files via cloudflare. Have to logout from app and login via local IP. Do what HomeAssistant app does. If home wifi then use local IP.
@ampersandru commented on GitHub (Oct 7, 2024):
Ah crap, that's why a lot of my videos fail to upload. Because I'm using cloudflare proxying, I think they support up to 200mb at a time
This needs to be addressed, a lot of people use CF tunnels and similar with upload restrictions (and extremely slow upload speeds) even when they are on their local network
@T0biasCZe commented on GitHub (Oct 8, 2024):
plus, how tf are you even to configure it through local DNS
Immich locally runs on Port 2283, and over the internet its on 80/443. So even when you setup local DNS to redirect your domain to the local server IP, it wont work because it connects to port 443, not to the Immichs 2283. And you obviously cant configure port inside DNS
@grazy27 commented on GitHub (Oct 8, 2024):
Thanks god dns doesn't allow that. There are still a number of options on how to set it up, ranging from changing '2283' in compose file ending with simple local nginx gateway / reverse proxy, that redirects traffic locally
@jenda69 commented on GitHub (Oct 8, 2024):
Yeah, that's the way I do it. I have an Oracle VPS connected to my network through VPN and I reverse proxy to my RPi port 2283 using Nginx from there.
On my RPi I have another Nginx as a reverse proxy to RPi, basically the same thing but locally (+ curl script to rsync HTTPS certificates from the VPS).
I got [mydomain] to point to the VPS. And on my local network, I have a local DNS (dnsmasq on my router) set to point [mydomain] to the local IP.
So from both external and internal network, accessing [mydomain] looks the same with the HTTPS, but on local network, the traffic doesn't go through the VPS but directly to the server.
But I had to disable Private DNS in Chrome and in Android, otherwise it ignores the local DNS. That's why I'd like to have an option for internal/external IP too.
@mxz94 commented on GitHub (Oct 12, 2024):
i like the feature
@NeilTheFisher commented on GitHub (Oct 15, 2024):
Just thought I'd share my solution since I've been running into the cloudflare tunnel 100mb limit:
I am able to clone the immich app using the secure folder feature on my Samsung.
There are other ways to clone apps on other android devices.
One immich installation points to my local home ip, and the other points to my domain on the cloudflare tunnel.
Cons:
Anyway, I believe this simple feature should be implemented. I truly don't understand the reluctance. If I were a flutter dev I wouldn't mind looking into this.
@Blendi commented on GitHub (Oct 31, 2024):
The main issue I have is that when I connect via internal url, I have set it up to use https:// and the certificates are the one I have created manually in my PC. I have imported those in my IPhone and it works perfectly.
When outside I use cloudflare tunnel and the url has different certificates.
Trying to use DNS in my local network to redirect my cloudflare public url into local IP is not a solution as the certificates don't match.
I don't understand what is the negative impact on planning to add this feature apart from increase in maybe complexity when writing the IOS or android apps. I would be very happy to hear if there is any negative side I don't know and if so, I would happy back off from this feature request. :)
Other than that I know there are 1001 solution especially in IT than can be applied to solve this issue. I can have 1001 jumps here and there and make it work, nothing to add here. But I think it is more efficient and clean having the app choosing between 2 url depending on the phone wireless connection status. Whenever you are at you defined home network the app will use internal URL, whenever connected to a different wireless network or 4G-5G network it will use the external URL.
@haydndup commented on GitHub (Dec 6, 2024):
For everyone following this issue, this feature has finally been added in v1.122.0:
https://github.com/immich-app/immich/releases/tag/v1.122.0