
I am encountering a problem where environment variables are unexpectedly modified at runtime on my Appwrite server (version 1.6.0) hosted at https://custom-domain.tld. Here is the JavaScript configuration I'm using:
const client = new Client()
.setEndpoint(process.env.APPWRITE_FUNCTION_API_ENDPOINT)
.setProject(process.env.APPWRITE_FUNCTION_PROJECT_ID)
.setKey(process.env.APPWRITE_FUNCTION_API_KEY);
The environment variable for the API endpoint is set as follows:
APPWRITE_FUNCTION_API_ENDPOINT="https://custom-domain.tld/v1"
Despite being correctly configured on the server, APPWRITE_FUNCTION_API_ENDPOINT
changes to https:///v1
during runtime.
Using a hardcoded endpoint avoids this issue:
const client = new Client()
.setEndpoint("https://custom-domain.tld/v1")
.setProject(process.env.APPWRITE_FUNCTION_PROJECT_ID)
.setKey(process.env.APPWRITE_FUNCTION_API_KEY);
Additionally, there was a protocol issue where, despite the endpoint protocol being set to https
, it appeared to operate over http
internally. I resolved this by enforcing HTTPS in the Appwrite environment settings:
_APP_OPTIONS_FORCE_HTTPS=enabled
I'm sharing this issue to find out if this behavior is intentional or if I might have misconfigured or misunderstood something. Any insights or similar experiences would be greatly appreciated.
Thanks a lot! ❤️

are you setting that environment variable inside the appwrite console?

i am setting it via the functions > settings > Environment variables:

I'm wondering if the issue is coming up because that environment variable is kinda like a reserved word and set automatically.

on local development it is set via the .env file and it is working fine

If you change it to something else, does it still get overwritten?

That environment variable is one that is set by appwrite at runtime, off the top of my head I don't know exactly how locally run functions work, but on the platform it's set. Could you see if changing it has any effect?
https://appwrite.io/docs/products/functions/develop#environment-variables

for me it looks like, that there is internally a function that wants to clear some parts like the protocol and if it is like the same host it tries to use just the short local url

ok, i understand, if this variable is available during runtime, this will not be overwritten by my .env, because it wants to use the internal one

i will test it tomorrow, if it will change with a different naming of the env variable
Recommended threads
- Create owner team member with Server fun...
I understand that when creating a team with a function, the user that made the request will not be the owner so I think I have to add the user that did the requ...
- Schedule a function job with timezone
I am aware that cron schedule will work on UTC timezone. I would like to run my function at a particular time everyday in new york time. If I use UTC, it will m...
- Appwrite processing global envs and chan...
So I define a global env - GCP_CREDENTIALS in global env of my appwrite projcet and refer to it in my functions as ```gcp_creds: JSON.PARSE(GCP_CREDENTIALS)```...
