Deploy tinykit using Docker on any host (VPS, DigitalOcean, AWS, etc.)
-
Clone the repository:
git clone https://github.com/tinykit-studio/tinykit.git cd tinykit -
Set environment variables:
cp .env.example .env # Edit .env and add your LLM_API_KEY -
Run with Docker Compose:
cd deploy/docker docker-compose up -d -
Access your instance:
- App: http://localhost:3000
- Builder: http://localhost:3000/tinykit
# Build image
docker build -f deploy/docker/Dockerfile -t crud-one .
# Run container
docker run -d \
-p 3000:3000 \
-e LLM_PROVIDER=openai \
-e LLM_API_KEY=sk-your-key \
-e LLM_MODEL=gpt-4 \
-v crud_pb_data:/app/pocketbase/pb_data \
-v crud_workspace:/app/workspace \
--name crud-one \
crud-one- Create droplet (Ubuntu 22.04, $6/mo minimum)
- SSH into droplet
- Install Docker:
curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh
- Clone repo and run docker-compose (see above)
- Point domain to droplet IP
- Add HTTPS with Caddy or nginx
- Launch t3.small instance (Ubuntu 22.04)
- Configure security group (allow ports 80, 443, 3000)
- SSH and install Docker
- Follow same steps as DigitalOcean
# Install flyctl
curl -L https://fly.io/install.sh | sh
# Launch app
fly launch --dockerfile deploy/docker/Dockerfile
# Set secrets
fly secrets set LLM_API_KEY=sk-your-key
fly secrets set LLM_PROVIDER=openai
fly secrets set LLM_MODEL=gpt-4
# Deploy
fly deploy# Add to docker-compose.yml
services:
caddy:
image: caddy:latest
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
restart: unless-stopped
volumes:
caddy_data:
caddy_config:Caddyfile:
your-domain.com {
reverse_proxy crud-one:3000
}
See .env.example for all available options.
Required:
LLM_PROVIDER- AI provider (openai, anthropic, gemini, deepseek)LLM_API_KEY- Your API keyLLM_MODEL- Model to use
Docker volumes persist data between container restarts:
/app/pocketbase/pb_data- Database, auth, files/app/workspace- User projects and generated apps
Backup volumes:
docker run --rm -v crud_pb_data:/data -v $(pwd):/backup alpine tar czf /backup/pocketbase-backup.tar.gz -C /data .
docker run --rm -v crud_workspace:/data -v $(pwd):/backup alpine tar czf /backup/workspace-backup.tar.gz -C /data .Container won't start:
docker logs crud-oneReset everything:
docker-compose down -v
docker-compose up -dUpdate to latest version:
git pull
docker-compose build
docker-compose up -d- DigitalOcean Droplet: $6-12/mo
- AWS t3.small: ~$15/mo
- Fly.io: $5-10/mo
- LLM API: $3-10/mo
Total: $10-25/mo (comparable to Railway)