Web Developer
Hey everyone — running into a persistent cold start issue with Go functions on self-hosted Appwrite 1.9.0 (Elestio/Hetzner). Looking for how others are handling this.
Setup:
Self-hosted Appwrite 1.9.0 on Elestio (Hetzner Germany)
Three Go 1.23 functions with database event triggers
Functions deploy successfully
What the functions do:
on-status-change — fires on entity document updates, rewrites document-level permissions based on participation_status, appends to audit log
sync-entity-arrays — fires on relationship table creates/deletes, rebuilds denormalized filter arrays on entity documents
on-intake-submission — fires on intake_submissions document create, sends confirmation email to applicant and alert to team via Brevo
The problem:
Event triggers fire correctly (confirmed via appwrite-worker-functions logs)
But functions hit cold start timeout before executing
Worker logs show: Cold start timeout exceeded while starting the server
Function timeout is set to 15s, instances are s-0.5vcpu-512mb
Zero executions appear in the console Executions tab despite triggers firing
What we've tried:
Confirmed event strings are correct format for 1.9.0
Scoped events to specific collections instead of wildcards
Manual execution fires but with code 0 ( no config on manual execution set )
Questions:
What runtime spec are people using for Go functions to avoid cold start issues?
Is there a recommended minimum timeout setting for Go on self-hosted?
Any way to keep the runtime warm between executions on self-hosted?
Is the s-0.5vcpu-512mb spec simply too small for Go cold starts?
as i'm understanding it....appwrite is the ONLY service to cold start a docker shell every time a function runs?? This seems crazy to me and it seems like the only option would be to continue upgrading only for functions or self host another instance on elestio for db functions which also seems like a lot.
Any help appreciated 🙏