unstract icon indicating copy to clipboard operation
unstract copied to clipboard

About access unstract web from other computer

Open haluwong opened this issue 1 year ago • 24 comments

It seems the webUI can only access through http://frontend.unstract.localhost/ which point to 127.0.0.1

I'm trying to setup nginx to reverse proxy to it through another URL and set host header to frontend.unstract.localhost. Can see the login screen but will redirect back to http://frontend.unstract.localhost/!!!

Is there anyway to setup with another hostname? Please advise?

Thanks, Halu

haluwong avatar Jun 21 '24 03:06 haluwong

Hi @haluwong , I think below can help you with setting it up for a different domain.

  1. You actually don't need to use nginx. We are using traefik already in our docker-compose. So you can continue using this. We just need to make changes to the hosts in routing rules and backend envs.
  2. To change routing rules you need to change the host name from frontend.unstract.localhost to which even hostname you want to use. https://github.com/Zipstack/unstract/blob/49b9873a7a3feca769919fe2ce8846c743c187fd/docker/docker-compose.yaml#L31 https://github.com/Zipstack/unstract/blob/49b9873a7a3feca769919fe2ce8846c743c187fd/docker/docker-compose.yaml#L105
  3. Should change envs in backend related to the FE URL. https://github.com/Zipstack/unstract/blob/49b9873a7a3feca769919fe2ce8846c743c187fd/backend/sample.env#L10 https://github.com/Zipstack/unstract/blob/49b9873a7a3feca769919fe2ce8846c743c187fd/backend/sample.env#L35-L38 (In local should be changing the backend/.env file. If you are making change in backend/sample.env file then you need to delete the backend/.env file if it already exists and then run the script)

This should be enough to get it running for a different host.

Please try and let us know if it works for you.

Also if possible it would be great if you can help with a new README on how to setup unstract for different host.

ritwik-g avatar Jun 21 '24 04:06 ritwik-g

I modified the corresponding points according to the prompts. The homepage can be accessed, but after logging in, it still jumps to http://frontend.unstract.localhost.

dumbsheep1990 avatar Jun 22 '24 04:06 dumbsheep1990

I modified the host configuration in sample.proxy_overrides.yaml, but it still prompts that verification cannot be performed when logging in, and jumps back to the landing page.

dumbsheep1990 avatar Jun 22 '24 06:06 dumbsheep1990

@dumbsheep1990 Hi can you confirm if the changes where made in backend/sample.env as mentioned in the below thread. If you have could you please share the screenshots or share the configuration itself of backend?

Hi @haluwong , I think below can help you with setting it up for a different domain.

  1. You actually don't need to use nginx. We are using traefik already in our docker-compose. So you can continue using this. We just need to make changes to the hosts in routing rules and backend envs.
  2. To change routing rules you need to change the host name from frontend.unstract.localhost to which even hostname you want to use. https://github.com/Zipstack/unstract/blob/49b9873a7a3feca769919fe2ce8846c743c187fd/docker/docker-compose.yaml#L31 https://github.com/Zipstack/unstract/blob/49b9873a7a3feca769919fe2ce8846c743c187fd/docker/docker-compose.yaml#L105
  3. Should change envs in backend related to the FE URL. https://github.com/Zipstack/unstract/blob/49b9873a7a3feca769919fe2ce8846c743c187fd/backend/sample.env#L10 https://github.com/Zipstack/unstract/blob/49b9873a7a3feca769919fe2ce8846c743c187fd/backend/sample.env#L35-L38

This should be enough to get it running for a different host.

Please try and let us know if it works for you.

Also if possible it would be great if you can help with a new README on how to setup unstract for different host.

ritwik-g avatar Jun 24 '24 05:06 ritwik-g

@ritwik-g I tried to following your suggestion to modify .env and labels for unstract-backend and unstract-frontend also, modified the backend/settings/dev.py in unstract-backend added our URL in the CORS_ALLOWED_ORIGINS CORS_ORIGIN_WHITELIST

Can show the login page but cannot login. http://unstract.certosa.com/api/v1/session (401 authorized) screen_20240624_11

haluwong avatar Jun 24 '24 10:06 haluwong

@haluwong , when you modified the code (backend/settings/dev.py), you will need to build containers from the local code. Which is acheivable passing -b or --build-local to ./run-platform.sh image

Hope you have done this.

In any case I don't think this is a CORS error. Can you also share

  • Response of this network call?
  • And also check if any specific error log in the backend?

ritwik-g avatar Jun 24 '24 10:06 ritwik-g

I downloaded the latest branch. Try to replace all the "frontend.unstract.localhost" to my desired hostname. use "./run-platform.sh -b" to build it locally and run it.

Login page can show but will show NetworkError to fetch the source map screen_20240626_02

But i can access http://unstract.certosa.com/static/js/main.12ab8275.js.map in my browser.

Then, click login and input the username ,password and login and then it will redirect to first login page again. screen_20240626_05

some js show NetworkError too but I can access it. And for http://unstract.certosa.com/api/v1/login Request: screen_20240626_04

Response: screen_20240626_03

I tried in both chrome and firefox redirect to the following landing page after login~ image

Hope this information is useful for your troubleshooting

haluwong avatar Jun 26 '24 04:06 haluwong

@haluwong I think the issue is with traefik routing. From the response of login API(/api/v1/login) it looks like to be going to Frontend container instead of backend.

Can you share the screenshot of docker-compose.yaml portions for backend and front-end?

ritwik-g avatar Jun 30 '24 16:06 ritwik-g

@haluwong I tried this locally and noticed one thing. If you make change in sample.env file in backend then we need to delete the backend/.env file and run the script again. Else the .env file is not updated.

So either delete backend/.env file and run script or make the changes directly in .env file it should work for you

ritwik-g avatar Jul 03 '24 11:07 ritwik-g

@haluwong had any luck with the above?

ritwik-g avatar Jul 09 '24 05:07 ritwik-g

Sorry for the late update. I tried to download the latest version: v0.72.1 and run it in a clean system decompress and we use grep frontend.unstract.localhost and replace/add our own domain "unstract.certosa.com" image

Then we run "./run-platform.sh to run the system. After login it stills redirect back to login page

https://github.com/Zipstack/unstract/assets/2929231/a730ffb6-ca09-412a-8a50-b854f3b16a3c

Also, i find that unstract-proxy seems have problem in using the proxy_override.yaml it's pointed to a directory instead of file. screen_20240710_07

below is docker-compress.yaml for backend and frontend part screen_20240710_08 screen_20240710_09

haluwong avatar Jul 10 '24 07:07 haluwong

_unstract-proxy_logs_0.73.0_20240715.txt _unstract-frontend_logs_0.73.0_20240715.txt _unstract-backend_logs_0.73.0_20240715.txt

Attached with backend,frontend and proxy log for your reference. hope this help to troubleshoot.

About unstract_proxy, it seems the providers file was mapped to a director instead. image

directory "proxy_overrides.aml" was created after docker-compose

haluwong avatar Jul 15 '24 06:07 haluwong

@haluwong Since you are using http, also set SESSION_COOKIE_SECURE to False in backend env. or use https.

vivekrathiave avatar Jul 15 '24 07:07 vivekrathiave

Hi @haluwong . Will check the logs. Mean while we have created a doc about this. https://docs.unstract.com/unstract_faq/networking/unstract_faq_networking

Can you try following this and update if this works for you?

ritwik-g avatar Jul 26 '24 05:07 ritwik-g

I have noticed a similar issue with this.

  • If I run all services on my desktop, there are no issues and I can access and use the system.
  • If I run all services on my server and want to access it from other devices within the same network, there are issues.

Host On Server & Access On Desktop:

  1. Git clone of latest (0.83.0) and run with no changes, I could access the front page and get to api/v1/login

[Issue] On form submit it redirects to /landing

  1. Adding desktop IP to CORS_ALLOWED_ORIGINS and CORS_ORIGIN_WHITELIST, clean docker images and rebuild

[Issue] On form submit it redirects to /landing

  1. Setting SESSION_COOKIE_SECURE to False, clean docker images and rebuild

[Issue] System goes into a redirect loop between /onboarding and /landing with PermissionDenied('CSRF Failed: CSRF cookie not set.') and Forbidden: /api/v1/organization/mock_org/set

Can you provide any advice?

dmnxprss avatar Aug 25 '24 20:08 dmnxprss

I too am getting an error when I try accessing remotely. Network trace is given below:

image

ashok-log avatar Sep 02 '24 11:09 ashok-log

After some Docker & DNS work, I was able to resolve this.

  • Needed some additional work with Traefik container.
  • Employed local certificates so https could be utilized.
  • Updated host name to my preference and with https, where required within files
  • Update internal DNS for new host name

Stack is currently running on local server, accessible within network.

dmnxprss avatar Sep 12 '24 17:09 dmnxprss

Could you share more detail about it, please?

alancamillo avatar Sep 16 '24 12:09 alancamillo

Hi @dmnxprss , could you give us more details, please?

theclash12072002 avatar Oct 07 '24 13:10 theclash12072002

https://github.com/Zipstack/unstract/blob/7a8e2e424e1dab5dc6fe28f2732045514ca1581f/backend/backend/settings/base.py#L89-L90

This looks like to be the major problem. If anyone tries to run it in HTTP mode it might not work due to this config. @hari-kuriakose since our OSS version by default runs in HTTP mode I will try to make some changes with this and raise a PR. We might need to update the document as well

ritwik-g avatar Oct 10 '24 10:10 ritwik-g

@ritwik-g Agree, they could be False by default and could be set explicitly as per the deployment env.

cc @muhammad-ali-e @johnyrahul @athul-rs

hari-kuriakose avatar Oct 10 '24 10:10 hari-kuriakose

This issue of hardcoding the inter-dependent URLs makes the whole stack unusable in a realistic open-source setting, and it seems to be pushing us to use the cloud version only.

balajipitchumani avatar Dec 20 '24 03:12 balajipitchumani

After some Docker & DNS work, I was able to resolve this.

  • Needed some additional work with Traefik container.
  • Employed local certificates so https could be utilized.
  • Updated host name to my preference and with https, where required within files
  • Update internal DNS for new host name

Stack is currently running on local server, accessible within network.

@dmnxprss Could you please elaborate on that? Thank you very much.

luoyezadi avatar Feb 25 '25 06:02 luoyezadi

@dumbsheep1990 Hi can you confirm if the changes where made in backend/sample.env as mentioned in the below thread. If you have could you please share the screenshots or share the configuration itself of backend?

Hi @haluwong , I think below can help you with setting it up for a different domain.

  1. You actually don't need to use nginx. We are using traefik already in our docker-compose. So you can continue using this. We just need to make changes to the hosts in routing rules and backend envs.

  2. To change routing rules you need to change the host name from frontend.unstract.localhost to which even hostname you want to use.

      [unstract/docker/docker-compose.yaml](https://github.com/Zipstack/unstract/blob/49b9873a7a3feca769919fe2ce8846c743c187fd/docker/docker-compose.yaml#L31)
    
    
         Line 31
      in
      [49b9873](/Zipstack/unstract/commit/49b9873a7a3feca769919fe2ce8846c743c187fd)
    
    
    
    
    
    
    
           - traefik.http.routers.backend.rule=Host(`frontend.unstract.localhost`) && PathPrefix(`/api/v1`, `/deployment`) 
    
    
    
    
    
    
    
    
      [unstract/docker/docker-compose.yaml](https://github.com/Zipstack/unstract/blob/49b9873a7a3feca769919fe2ce8846c743c187fd/docker/docker-compose.yaml#L105)
    
    
         Line 105
      in
      [49b9873](/Zipstack/unstract/commit/49b9873a7a3feca769919fe2ce8846c743c187fd)
    
    
    
    
    
    
    
           - traefik.http.routers.frontend.rule=Host(`frontend.unstract.localhost`)
    
  3. Should change envs in backend related to the FE URL.

      [unstract/backend/sample.env](https://github.com/Zipstack/unstract/blob/49b9873a7a3feca769919fe2ce8846c743c187fd/backend/sample.env#L10)
    
    
         Line 10
      in
      [49b9873](/Zipstack/unstract/commit/49b9873a7a3feca769919fe2ce8846c743c187fd)
    
    
    
    
    
    
    
           DJANGO_APP_BACKEND_URL=http://frontend.unstract.localhost 
    
    
    
    
    
    
    
    
      [unstract/backend/sample.env](https://github.com/Zipstack/unstract/blob/49b9873a7a3feca769919fe2ce8846c743c187fd/backend/sample.env#L35-L38)
    
    
        Lines 35 to 38
      in
      [49b9873](/Zipstack/unstract/commit/49b9873a7a3feca769919fe2ce8846c743c187fd)
    
    
    
    
    
    
    
           LOGIN_NEXT_URL="http://frontend.unstract.localhost/org" 
    
    
    
    
           LANDING_URL="http://frontend.unstract.localhost/landing" 
    
    
    
    
           ERROR_URL="http://frontend.unstract.localhost/error" 
    
    
    
    
           WEB_APP_ORIGIN_URL="http://frontend.unstract.localhost"
    

This should be enough to get it running for a different host. Please try and let us know if it works for you. Also if possible it would be great if you can help with a new README on how to setup unstract for different host.

When I try that, and then run docker compose to recreate the containers, I get "unable to get image 'unstract/backend:': Error response from daemon: invalid reference format". (This does not happen, if I re-run ./run-platform.sh.)

What might be the issue?

Thanks

gitwittidbit avatar Jun 17 '25 17:06 gitwittidbit