User guide · 14/15
Deployment
Run the web edition on Coolify or plain Docker in minutes, the environment variables that matter, and what to back up.
What you deploy
A single container: Node 24 running the SvelteKit server, SQLite inside a volume. No external database, cache, queue or cron. Image size about 380 MB; during the stress test with 2,000 learners the process stayed under 350 MB of memory.
Coolify
- Add resource → Application → Git repository. Point it at the repository and the
mainbranch. - Build pack: Dockerfile. The Dockerfile at the repository root builds and runs the app. Port 3000.
- Storage → Add volume, mounted at /data. This holds the database, photos, backups and the device key. Without it a redeploy starts empty.
- Environment variables (see below): at least
ORIGINandTZ. - Deploy. Coolify proxies HTTPS to the container; the health check hits
/health.
Open the URL, create the administrator account, finish onboarding.
Docker Compose
git clone https://github.com/AAA-It-uae/academy-manager-site.git
cd academy-manager-site
ORIGIN=https://academy.example.com TZ=Asia/Dubai docker compose up -d --build
Environment variables
| Variable | Default | Purpose |
|---|---|---|
ORIGIN |
– | Public URL, e.g. https://academy.example.com. Required behind a proxy; form posts are refused when the origin does not match. |
TZ |
UTC |
Server time zone: "today", attendance dates and the auto-backup time use it. |
DATA_DIR |
/data |
Where the database, photos and backups live. |
APP_LOCALES |
en,ar,fa |
Languages offered, in picker order. |
DEFAULT_LOCALE |
en |
Language before onboarding. |
APP_CURRENCIES |
AED,USD,IRT |
Currencies offered; the first is the default. |
SESSION_DAYS |
30 |
Sign-in session length. |
MAX_UPLOAD_MB / BODY_SIZE_LIMIT |
64 / 64M |
Largest photo or backup upload. |
WORKERS |
1 |
Worker processes; auto uses every core. |
SECURE_COOKIES |
follows scheme | Force the cookie Secure flag on or off. |
Backups of the server
The volume at /data is everything. Snapshot it with your host's tools, and use the app's own Create backup for portable, encrypted copies you can restore anywhere, including on the phone.
Updating
Redeploy from Git. Database migrations run automatically on start; the schema version is shown under Settings → About.