mirror of
https://github.com/immich-app/immich.git
synced 2026-02-05 00:30:57 +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
feat/asset-file-apis
chore/translations
fix/web-switch-label-clickable
fix/web-people-hidden-state
renovate/typescript-projects
release/next
fix/timezones
fix/time-zone-upserts
midzelis/wip
push-zpwsovysllvn
push-nwxlpmyzkyrl
push-nvnkszuqwppm
renovate/github-actions
push-smstsuupsowp
refactor/adaptive_image
push-olwpzvrxnomt
push-lmxsupnmxspl
renovate/machine-learning
feat/web-chromecast-video-looping
feat/use-native-clients
renovate/flutter
fix/create-face-edited
fix/mobile-ios-mtls
docs/contributing
docs/mise-mobile
renovate/grafana-monorepo
feature/bottom-buttons-order
feat/immich-mobile-ui-showcase
refactor/consolidate-image-requests
renovate/connectivity_plus-7.x
renovate/major-vitest-monorepo
renovate/pypi-python-multipart-vulnerability
fix/mobile-people-query
sqlite_thumbs
feat/html-text
chore/no-macro-validation
refactor/purchase-store
uhthomas/mobile-fix-app-bar-fade
uhthomas/mobile-fix-asset-jump
feat/pano-ocr
feat/shared-link-login
fix/database-backup-db-names
fix-keep-correct-ios-shared-album-asset
fix-memory-generation-and-display
feat/verify-permissions
refactor/album-service-small-tests
fix/ml-rocm-build
fix/flipped-dimensions-mobile
push-vpxwmwwxwnvw
fix-migration-width-height
refactor/more-queries
revert/prettier-translations
refactor/asset-service-queries
fix/locale-settings-desc
chore/add-debug-log
feat/edit-filters
shared-deep-link-handler
feat/mobile-editing
feat/thumbnail-native-clients
feat/platform-clients
feat/integrity-checks-izzy
fix/foreground-cloud-sync
feat/dynamic-layout
filter-by-person
feat/csp
refactor/sidebar
fix/disable-editing
fix/view-timeline-deeplink
image-zoom-on-slow-connection
fix-consider-dar-for-video-dimension
fix/merged-edited-assets
perf/optimize-album-sort
open-api-fix
feat/create-job-with-dto
use-toast-primary
feat/vitest-4
feat/ios-fastlane-match
match-signing
fix-update-time-update-timeline
chore/translation-keys
feat/modal-routes
feat/panorama-tiles
feature/mobile-view-asset-owner
feat/system-settings
feature/show-activity-count
better-info-in-asset-viewer
fix/all-people-count
feat/location-favorites
feature/rearrange-buttons-2
fix/download-storage-template
feat/kb-shortcuts-mobile
fix/people-count
push-qolzzzzxrvvn
chore/originals-in-asset-files
feat/asset-size-columns
ben/tree-a11y
new-search-filter-ui
refactor/expectSelectedReadonly
refactor/mobile-grdb
push-qvuktpxmkknu
feat/mobile-native-local-sync
refactor/timeline_ops
fix/scrubber_end
feat/version.txt
feat/context-menus
feat/server-chunked-uploads
refactor/virtualsegment
refactor/rename_daymonth_groups
fix/restrict-android-bg-worker
feat/android-periodic-worker
fix-remote-sync-clean-up
refactor/timeline_move_ops
renovate/mapbox-mapbox-gl-rtl-text-0.x
fix/timeline_split_selectable
feat/keyboard_actions_help_modal
feat/static_frontend
feat/notification-warnign-android
feat/plugins2
feat/plugins
test/create-workflow-token-action
fix/docs-force
debug/search-result-similarity
debug/cf-chunked-uploads
feat/eslint_rule
feat/search-filter-album/web
refactor/timeline_photostream
refactor/timelineasset_asset
feat/session-permissions
feat/timeline_photostream_assetnav
feat/timeline_minor_optimize
feat/timeline_perf_nocomp
feat/timeline_search_results_actions
feat/timeline_search_results_page
fix/timeline_padding
fix/timeline_search_reactivity_warnings
feat/timeline_scrollbar
feat/timeline_stream_withviewer
fix/timeline_back_forth_nav
refactor/timeline_photostream_component
fix/generated-files-checks
fix/locate-button-local
chore/base-image-mimalloc
refactor/timeline_assetlayout
refactor/timeline_selectable
refactor/timeline_aware_actions
refactor/timeline_monthsegment
feat/remove-old-pages
chore/deps-gradle
tmp_photostream
tmp/lcms
feat/mobile-dynamic-thumbnails
fix/mobile-finer-thumbnail-concurrency
refactor/timeline1
refactor/extract_photostream
refactor/rename_load_api
refactor/timeline2
refactor/timeline3
feat/multi-select-asset-viewer
feat-no-thumbhash-cache
refactor/asset_grid
feat/faster-access-checks
fix/18991
fix/19543
chore/temp-remove
fix/21419
feat/mobile-hdr-images
chore/update-mise-lockfile
feat/mise-server-checks
feat/mise-ci
feat/windows-2025
feat/dev_cli
refactor/mobile-migrate-clients
fix/map-theme
fix/require-checkbox
chore/use_swc
feat/efficient-thumbnail-decoding
refactor/mobile-thumbhash
refactor/mobile-thumbhash-new
fix/mobile-uncached-zoom
feat/beta-background-upload
fix/beta-timeline-memories-setting
fix/failed-uploads-not-removed
feat/mobile-shared-album
feat/groups
drift-map-page
drift-auth-user-sync
fix/disable-memory
feat/add-to-album-action
edit-date-time-action
drift-people-page
sqlite-remove-isIn
feat/inline-storage-columns
chore/required-reviewers
refact/asset-manager
fix/folder-sort
pnpm
feat/widget-multiple-server-urls
chore/medium-tests-dbname
fix/web-no-iterator-find
fix/map-pan-interruption
track-livephotos
timeline_events
chore/oxlint-migration
feat/maintenance-worker
feat/dav
chore/demo-snapshot
refactor/server-side-dedupe
feat/integrity-checks
dev/recognition-eval
lighter_buckets_test
perf/postgres-queue
postgres-queue
focus_rings
refactor/web-stores-1
refactor/add-to-taken
feat/sort-places
feat/sidecar-asset-file
vet
tmp/demo-snapshot-preview
fix/server-migration-file-extension
refactor/mobile-v2
fix/asset-update-race-condition
rknn-toolkit-lite2
refactor/mobile-split-up-search-page
feature/Add-rocm-support-for-machine-learning
feat/rocm
chore/async-hash-file
feat/shared-link-view-count
feat/rotation
feat/graphql
feat/job-ids
feat/ignore-library-permission-error
feat/docker-compose-builder
feat/kysely-typeorm
mobile/onboarding
no-video-player
fix/server-qsv-output-format
chore/server-geodata-tweaks
mobile/native-video-player-no-hero
feat/xxhash
fix/docs-concurrency
feat/preload-ml-textual-model
feat/local-tileserver
refactor/exif-orientation
original-path-infix
refactor/mobile/login-form-1
feat/server-editor-endpoints
fix/server-qsv-vbr
fix-mobile-db-problems
feat/ml-armnn-conversion
feat/mobile/backup-with-album-info
feat/fast-initial-sync-1
chore/handle-output_dims
feat/server-more-robust-generation
feat/unassign-faces
feat/shortcuts-on-asset-grid
feat/background-upload
feat/capacitor-mobile-app-poc
feat/server-nvenc-hw-decoding
release/v1.105
fix/mobile-fetch-non-archive
feat/fine-grained-access-controls
web/automation-ui
feat/mobile-server-endpoint-save-dropdown
feat/blurhash-thumbnail
object-storage
feat/memories-animations
dev/metrics
ml/tflite
feat/ml-export-cli
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
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