Spaces:
Sleeping
Deploying to Fly.io
This backend service uses Docker and uv for easy deployment. Since it uses SQLite for data persistence, we need to configure a persistent volume on Fly.io.
Prerequisites
- Install
flyctl(Fly.io CLI). - Login:
fly auth login.
Deployment Steps
1. Initialize the App
Run the launch command in this directory (backend/):
fly launch
- Choose a unique app name (e.g.,
my-chatkit-backend). - Select a region (choose one close to you).
- Would you like to set up a Postgresql database now? -> No (we use SQLite).
- Would you like to set up an Upstash Redis database now? -> No.
- Do you want to deploy now? -> No (we need to set secrets first).
This creates a fly.toml file.
2. Set Up Data Persistence (Volumes)
Since the app uses SQLite (chatkit_threads.db and user_state.db), you need a persistent volume so data isn't lost when the app restarts.
Create a 1GB volume (adjust size if needed):
fly volumes create chatkit_data --size 1 --region <your-region>
Make sure to use the same region you selected in step 1.
3. Update fly.toml
Open fly.toml and add the [mounts] section to mount the volume to /data in the container. Also add the environment variables to tell the app to use that path.
Add this to fly.toml:
[mounts]
source = "chatkit_data"
destination = "/data"
[env]
CHATKIT_DB_PATH = "/data/chatkit_threads.db"
USER_STATE_DB_PATH = "/data/user_state.db"
PORT = "8000"
4. Set Secrets
Set your API keys using fly secrets. Copy values from your .env.local:
fly secrets set \
GROQ_API_KEY=your_groq_key \
OPENAI_API_KEY=your_openai_key \
OPENROUTER_API_KEY=your_openrouter_key \
DEEPSEEK_API_KEY=your_deepseek_key \
GOOGLE_API_KEY=your_google_key \
CARTESIA_API=your_cartesia_key
5. Deploy
Now you are ready to deploy:
fly deploy
Verifying Deployment
Check the logs to ensure everything started correctly:
fly logs
Your app should now be running!