Files
headquarter/openspec/changes/cloudflare-tunnel-instances/tasks.md
T
2026-06-03 08:51:02 +00:00

45 lines
1.9 KiB
Markdown

## 1. Infrastructure Setup
- [ ] 1.1 Add cloudflared service to docker-compose.traefik.yml
- [ ] 1.2 Create cloudflared config directory and base config
- [ ] 1.3 Add Cloudflare env vars (API token, account ID, zone ID) to .env.example
- [ ] 1.4 Mount shared config volume between API and cloudflared containers
## 2. Backend - Cloudflare Tunnel Service
- [ ] 2.1 Create `src/services/cloudflare_tunnel.py` with tunnel CRUD operations
- [ ] 2.2 Implement `create_tunnel(instance_name, container_name, port)` function
- [ ] 2.3 Implement `delete_tunnel(tunnel_id)` function
- [ ] 2.4 Implement `update_cloudflared_config()` to rewrite config.yml
- [ ] 2.5 Add Cloudflare API token validation on startup
## 3. Backend - Instance Lifecycle Updates
- [ ] 3.1 Update ToolInstance model: add `tunnel_id` and `public_url` fields
- [ ] 3.2 Create Alembic migration for new fields
- [ ] 3.3 Update `start_instance` to create tunnel and store public_url
- [ ] 3.4 Update `stop_instance` to delete tunnel and DNS record
- [ ] 3.5 Update `delete_instance` to ensure tunnel cleanup
- [ ] 3.6 Update `get_user_sessions` to include `public_url`
## 4. Backend - Cleanup
- [ ] 4.1 Remove `instance_proxy.py` router
- [ ] 4.2 Remove proxy route registration from `main.py`
- [ ] 4.3 Remove `default_port` from ToolType (no longer needed)
- [ ] 4.4 Clean up any proxy-related code
## 5. Frontend Updates
- [ ] 5.1 Update Session interface to include `public_url`
- [ ] 5.2 Update InstanceList "Open" button to use `public_url`
- [ ] 5.3 Update SessionsPage "Open" button to use `public_url`
- [ ] 5.4 Remove proxy URL construction logic
## 6. Testing and Deployment
- [ ] 6.1 Test tunnel creation with code-server instance
- [ ] 6.2 Test tunnel deletion on instance stop
- [ ] 6.3 Verify HTTPS and WebSocket support
- [ ] 6.4 Run quality gates (ruff, mypy, typecheck, lint, build)
- [ ] 6.5 Deploy and test end-to-end