fix: [ISSUE] Unable to configure unstract (mock_org/onboard): unable to submit form
Describe the bug
after loggin in, in "you're 4 steps away from nirvana', test is ok but when i press submit button it displays a popup :
for every configurations
To reproduce
docker installation with docker compose.
VERSION=dev docker compose -f docker-compose.build.yaml build VERSION=dev docker compose -f docker-compose.yaml up -d
installed on a server X (not localhost) frontend.unstract.mydomain.intr declared in dns
updates of backend .env:
DJANGO_APP_BACKEND_URL=http://frontend.unstract.mydomain.intr
LOGIN_NEXT_URL="http://frontend.unstract.mydomain.intr/org"
LANDING_URL="http://frontend.unstract.mydomain.intr/landing"
ERROR_URL="http://frontend.unstract.mydomain.intr/error"
WEB_APP_ORIGIN_URL="http://frontend.unstract.mydomain.intr"
# Default user auth credentials
DEFAULT_AUTH_USERNAME="xxxx"
DEFAULT_AUTH_PASSWORD="yyyy"
using proxy_overrides.yaml:
http:
routers:
frontend:
service: frontend
rule: Host(`frontend.unstract.mydomain.intr`)
backend:
service: backend
rule: Host(`frontend.unstract.mydomain.intr`) && PathPrefix(`/api/v1`, `/deployment`)
services:
frontend:
loadBalancer:
servers:
# Point to service running on docker host.
- url: http://host.docker.internal:3000/
passHostHeader: true
backend:
loadBalancer:
servers:
# Point to service running on docker host.
- url: http://host.docker.internal:8000/
passHostHeader: true
Expected behavior
configuration should be accepted and written
Environment details
- Version: dev (15 march 2025)
Additional context
Logs:
unstract-backend | [2025-03-16 11:27:08 +0000] [19] [DEBUG] GET /api/v1/socket/
unstract-proxy | 172.16.99.219 - - [16/Mar/2025:11:27:08 +0000] "GET /api/v1/socket/?EIO=4&transport=websocket HTTP/1.1" 400 25 "-" "-" 8894 "backend@file" "http://host.docker.internal:8000/" 5ms
unstract-backend | 172.20.0.1 - - [16/Mar/2025:11:27:08 +0000] "GET /api/v1/socket/?EIO=4&transport=websocket HTTP/1.1" 400 25 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36"
unstract-celery-beat | INFO : [2025-03-16 11:27:11,001]{module:base process:1 thread:135973213555584 request_id:none} :- DB connection (ID: 135972218967680) is established or reused.
unstract-backend | [2025-03-16 11:27:11 +0000] [19] [DEBUG] POST /api/v1/unstract/mock_org/adapter/
unstract-backend | INFO : [2025-03-16 11:27:11,499]{module:base process:19 thread:137646667990720 request_id:35a14ba52f5941af84137c0cb9c7c5be} :- DB connection (ID: 137646002629504) is established or reused.
unstract-backend | ERROR : [2025-03-16 11:27:11,504]{module:exception process:19 thread:137646667990720 request_id:35a14ba52f5941af84137c0cb9c7c5be} :- POST http://frontend.unstract.mydomain.intr/api/v1/unstract/mock_org/adapter/ 500
unstract-backend |
unstract-backend | ValueError('Fernet key must be 32 url-safe base64-encoded bytes.')
unstract-backend |
unstract-backend | ````Traceback (most recent call last):
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/cryptography/fernet.py", line 34, in __init__
unstract-backend | key = base64.urlsafe_b64decode(key)
unstract-backend | File "/usr/local/lib/python3.9/base64.py", line 133, in urlsafe_b64decode
unstract-backend | return b64decode(s)
unstract-backend | File "/usr/local/lib/python3.9/base64.py", line 87, in b64decode
unstract-backend | return binascii.a2b_base64(s)
unstract-backend | binascii.Error: Incorrect padding
unstract-backend |
unstract-backend | The above exception was the direct cause of the following exception:
unstract-backend |
unstract-backend | Traceback (most recent call last):
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/views.py", line 506, in dispatch
unstract-backend | response = handler(request, *args, **kwargs)
unstract-backend | File "/app/adapter_processor_v2/views.py", line 180, in create
unstract-backend | serializer.is_valid(raise_exception=True)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/serializers.py", line 227, in is_valid
unstract-backend | self._validated_data = self.run_validation(self.initial_data)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/serializers.py", line 426, in run_validation
unstract-backend | value = self.to_internal_value(data)
unstract-backend | File "/app/adapter_processor_v2/serializers.py", line 51, in to_internal_value
unstract-backend | f: Fernet = Fernet(encryption_secret.encode("utf-8"))
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/cryptography/fernet.py", line 36, in __init__
unstract-backend | raise ValueError(
unstract-backend | ValueError: Fernet key must be 32 url-safe base64-encoded bytes.
unstract-backend | ````
unstract-backend | Internal Server Error: /api/v1/unstract/mock_org/adapter/
unstract-backend | Traceback (most recent call last):
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/cryptography/fernet.py", line 34, in __init__
unstract-backend | key = base64.urlsafe_b64decode(key)
unstract-backend | File "/usr/local/lib/python3.9/base64.py", line 133, in urlsafe_b64decode
unstract-backend | return b64decode(s)
unstract-backend | File "/usr/local/lib/python3.9/base64.py", line 87, in b64decode
unstract-backend | return binascii.a2b_base64(s)
unstract-backend | binascii.Error: Incorrect padding
unstract-backend |
unstract-backend | The above exception was the direct cause of the following exception:
unstract-backend |
unstract-backend | Traceback (most recent call last):
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/django/core/handlers/exception.py", line 55, in inner
unstract-backend | response = get_response(request)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/django/core/handlers/base.py", line 197, in _get_response
unstract-backend | response = wrapped_callback(request, *callback_args, **callback_kwargs)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 56, in wrapper_view
unstract-backend | return view_func(*args, **kwargs)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/viewsets.py", line 125, in view
unstract-backend | return self.dispatch(request, *args, **kwargs)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/views.py", line 509, in dispatch
unstract-backend | response = self.handle_exception(exc)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/views.py", line 469, in handle_exception
unstract-backend | self.raise_uncaught_exception(exc)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
unstract-backend | raise exc
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/views.py", line 506, in dispatch
unstract-backend | response = handler(request, *args, **kwargs)
unstract-backend | File "/app/adapter_processor_v2/views.py", line 180, in create
unstract-backend | serializer.is_valid(raise_exception=True)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/serializers.py", line 227, in is_valid
unstract-backend | self._validated_data = self.run_validation(self.initial_data)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/serializers.py", line 426, in run_validation
unstract-backend | value = self.to_internal_value(data)
unstract-backend | File "/app/adapter_processor_v2/serializers.py", line 51, in to_internal_value
unstract-backend | f: Fernet = Fernet(encryption_secret.encode("utf-8"))
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/cryptography/fernet.py", line 36, in __init__
unstract-backend | raise ValueError(
unstract-backend | ValueError: Fernet key must be 32 url-safe base64-encoded bytes.
unstract-backend | ERROR : [2025-03-16 11:27:11,560]{module:log process:19 thread:137646667990720 request_id:35a14ba52f5941af84137c0cb9c7c5be} :- Internal Server Error: /api/v1/unstract/mock_org/adapter/
unstract-backend | Traceback (most recent call last):
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/cryptography/fernet.py", line 34, in __init__
unstract-backend | key = base64.urlsafe_b64decode(key)
unstract-backend | File "/usr/local/lib/python3.9/base64.py", line 133, in urlsafe_b64decode
unstract-backend | return b64decode(s)
unstract-backend | File "/usr/local/lib/python3.9/base64.py", line 87, in b64decode
unstract-backend | return binascii.a2b_base64(s)
unstract-backend | binascii.Error: Incorrect padding
unstract-backend |
unstract-backend | The above exception was the direct cause of the following exception:
unstract-backend |
unstract-backend | Traceback (most recent call last):
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/django/core/handlers/exception.py", line 55, in inner
unstract-backend | response = get_response(request)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/django/core/handlers/base.py", line 197, in _get_response
unstract-backend | response = wrapped_callback(request, *callback_args, **callback_kwargs)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/django/views/decorators/csrf.py", line 56, in wrapper_view
unstract-backend | return view_func(*args, **kwargs)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/viewsets.py", line 125, in view
unstract-backend | return self.dispatch(request, *args, **kwargs)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/views.py", line 509, in dispatch
unstract-backend | response = self.handle_exception(exc)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/views.py", line 469, in handle_exception
unstract-backend | self.raise_uncaught_exception(exc)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception
unstract-backend | raise exc
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/views.py", line 506, in dispatch
unstract-backend | response = handler(request, *args, **kwargs)
unstract-backend | File "/app/adapter_processor_v2/views.py", line 180, in create
unstract-backend | serializer.is_valid(raise_exception=True)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/serializers.py", line 227, in is_valid
unstract-backend | self._validated_data = self.run_validation(self.initial_data)
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/rest_framework/serializers.py", line 426, in run_validation
unstract-backend | value = self.to_internal_value(data)
unstract-backend | File "/app/adapter_processor_v2/serializers.py", line 51, in to_internal_value
unstract-backend | f: Fernet = Fernet(encryption_secret.encode("utf-8"))
unstract-backend | File "/app/.venv/lib/python3.9/site-packages/cryptography/fernet.py", line 36, in __init__
unstract-backend | raise ValueError(
unstract-backend | ValueError: Fernet key must be 32 url-safe base64-encoded bytes.
unstract-backend | 172.20.0.1 - - [16/Mar/2025:11:27:11 +0000] "POST /api/v1/unstract/mock_org/adapter/ HTTP/1.1" 500 145556 "http://frontend.unstract.mydomain.intr/mock_org/onboard" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
unstract-proxy | 172.16.99.6 - - [16/Mar/2025:11:27:11 +0000] "POST /api/v1/unstract/mock_org/adapter/ HTTP/1.1" 500 145556 "-" "-" 8895 "backend@file" "http://host.docker.internal:8000/" 87ms
unstract-backend | [2025-03-16 11:27:11 +0000] [19] [DEBUG] POST /api/v1/unstract/mock_org/logs/
unstract-backend | INFO : [2025-03-16 11:27:11,611]{module:base process:19 thread:137646540064448 request_id:94bec21c5c3f465da0392a5fc3d9147e} :- DB connection (ID: 137646002629504) is established or reused.
unstract-proxy | 172.16.99.6 - - [16/Mar/2025:11:27:11 +0000] "POST /api/v1/unstract/mock_org/logs/ HTTP/1.1" 200 54 "-" "-" 8896 "backend@file" "http://host.docker.internal:8000/" 18ms
unstract-backend | 172.20.0.1 - - [16/Mar/2025:11:27:11 +0000] "POST /api/v1/unstract/mock_org/logs/ HTTP/1.1" 200 54 "http://frontend.unstract.mydomain.intr/mock_org/onboard" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
unstract-backend | [2025-03-16 11:27:11 +0000] [19] [DEBUG] GET /api/v1/socket/
unstract-proxy | 172.16.99.6 - - [16/Mar/2025:11:27:11 +0000] "GET /api/v1/socket/?EIO=4&transport=websocket HTTP/1.1" 400 25 "-" "-" 8897 "backend@file" "http://host.docker.internal:8000/" 6ms
unstract-backend | 172.20.0.1 - - [16/Mar/2025:11:27:11 +0000] "GET /api/v1/socket/?EIO=4&transport=websocket HTTP/1.1" 400 25 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
unstract-backend | [2025-03-16 11:27:13 +0000] [19] [DEBUG] GET /api/v1/socket/
unstract-proxy | 172.16.99.6 - - [16/Mar/2025:11:27:13 +0000] "GET /api/v1/socket/?EIO=4&transport=websocket HTTP/1.1" 400 25 "-" "-" 8898 "backend@file" "http://host.docker.internal:8000/" 4ms
unstract-backend | 172.20.0.1 - - [16/Mar/2025:11:27:13 +0000] "GET /api/v1/socket/?EIO=4&transport=websocket HTTP/1.1" 400 25 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36"
unstract-backend | [2025-03-16 11:27:13 +0000] [19] [DEBUG] GET /api/v1/socket/
unstract-proxy | 172.16.99.219 - - [16/Mar/2025:11:27:13 +0000] "GET /api/v1/socket/?EIO=4&transport=websocket HTTP/1.1" 400 25 "-" "-" 8899 "backend@file" "http://host.docker.internal:8000/" 4ms
unstract-backend | 172.20.0.1 - - [16/Mar/2025:11:27:13 +0000] "GET /api/v1/socket/?EIO=4&transport=websocket HTTP/1.1" 400 25 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36
Screenshots
If applicable, add screenshots to help explain your problem.
@gaetanquentin looks like to be issue with ENCRYPTION_KEY . Can you check the value of this in backend/.env. Same value should be present in platform/.env file also.
Usually this won't have any issues if you use ./run-platform.sh .
And these values needs to be base 64 encoded
@gaetanquentin looks like to be issue with
ENCRYPTION_KEY. Can you check the value of this inbackend/.env. Same value should be present inplatform/.envfile also.Usually this won't have any issues if you use
./run-platform.sh.And these values needs to be base 64 encoded
i think i must have missed something: i have set ENCRYPTION_KEY in base64 in the two files but the problem is still here. even when launched with run-platform.sh
here is the key i set (i will change it later): ENCRYPTION_KEY=b'rf5tkDlBckkEIoZR6MxNjh_DiptKJIurmirQxW1aJFQ=' one decoded it does 32 bytes
with bash -x run-platforms.sh i can see this not my encryption key set in .env files:
./run-platform.sh:189: python3 -c 'import secrets, base64; print(base64.urlsafe_b64encode(secrets.token_bytes(32)).decode())' ./run-platform.sh:189: ENCRYPTION_KEY=N5XU26l6gPk3NHAMngTzuAthvFzbIRbujpsXuP_7nAY= ./run-platform.sh:190: DEFAULT_AUTH_KEY=unstract
ok so i got the encryption key with bash -x run-platforms.sh and paste it into env files and restarted the services, now it is ok. i think something is miising in doc?
@gaetanquentin which was the doc that you followed for the setup?
@gaetanquentin which was the doc that you followed for the setup?
mainly READMEs: main one, docker directory one, .env files comments, . is there a doc explaining ENCRYPTION_KEY management?
https://github.com/Zipstack/unstract?tab=readme-ov-file#-backup-encryption-key
Is this what you are looking for?
https://github.com/Zipstack/unstract?tab=readme-ov-file#-backup-encryption-key
Is this what you are looking for?
Do copy the value of ENCRYPTION_KEY config in
-> what does that mean? the ENCRYPTION_KEY is never shown by run-platform.sh, does he? only shown if i do a bash -x run-platforms.sh.
Copy from the .env files of the backend or platform
cc: @hari-kuriakose