Skip to main content
ThinkEx supports two storage backends for file uploads. You choose between them by setting the STORAGE_TYPE environment variable.
Local storage is the right choice for most self-hosted setups. It requires no external accounts, keeps your data on your own server, and works out of the box.
Local storage saves uploaded files to the ./uploads/ directory on the server running ThinkEx. It has no external dependencies and is the simplest option to operate.When to use it: You’re running a single ThinkEx instance on one machine and want full control over your files without third-party services.Set up local storage:In your .env file, set:
STORAGE_TYPE=local
That’s all. ThinkEx creates the ./uploads/ directory automatically on first upload. Make sure the directory is writable by the process running ThinkEx, and include it in your backup strategy.
If you later migrate to Supabase storage, existing files in ./uploads/ are not automatically moved. You’ll need to upload them to your Supabase bucket manually.

Comparison

Local storageSupabase storage
External dependencyNoneSupabase project
Max file sizeLimited by diskUp to 200 MB
Multi-instance supportNoYes
Setup complexityMinimalModerate
Data locationYour serverSupabase cloud
For most self-hosted deployments on a single machine, local storage is simpler and gives you complete ownership of your data. Use Supabase storage if you need to scale horizontally or deploy to a platform without persistent local disk.