unstract
unstract copied to clipboard
About access unstract web from other computer
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
Hi @haluwong , I think below can help you with setting it up for a different domain.
- 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.
- To change routing rules you need to change the host name from
frontend.unstract.localhostto 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 - 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/.envfile. If you are making change inbackend/sample.envfile then you need to delete thebackend/.envfile 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.
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.
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 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.
- 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.
- To change routing rules you need to change the host name from
frontend.unstract.localhostto 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- 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 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)
@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
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?
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
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.
some js show NetworkError too but I can access it.
And for http://unstract.certosa.com/api/v1/login
Request:
Response:
I tried in both chrome and firefox
redirect to the following landing page after login~
Hope this information is useful for your troubleshooting
@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?
@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
@haluwong had any luck with the above?
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"
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.
below is docker-compress.yaml for backend and frontend part
_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.
directory "proxy_overrides.aml" was created after docker-compose
@haluwong Since you are using http, also set SESSION_COOKIE_SECURE to False in backend env. or use https.
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?
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:
- 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
- Adding desktop IP to
CORS_ALLOWED_ORIGINSandCORS_ORIGIN_WHITELIST, clean docker images and rebuild
[Issue] On form submit it redirects to /landing
- Setting
SESSION_COOKIE_SECUREtoFalse, 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?
I too am getting an error when I try accessing remotely. Network trace is given below:
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.
Could you share more detail about it, please?
Hi @dmnxprss , could you give us more details, please?
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 Agree, they could be False by default and could be set explicitly as per the deployment env.
cc @muhammad-ali-e @johnyrahul @athul-rs
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.
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.
@dumbsheep1990 Hi can you confirm if the changes where made in
backend/sample.envas 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.
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.
To change routing rules you need to change the host name from
frontend.unstract.localhostto 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`)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