Deploy an Existing Project
This guide shows how to add Haloy deployment to any existing project using AI-powered agent skills. The skills automatically detect your framework and generate the necessary configuration.
Prerequisites
- An existing web application (any framework)
- Haloy CLI installed (Client Installation)
- A haloy server configured (Server Setup)
- A domain pointing to your server
- An AI coding assistant (Claude Code, Cursor, or similar)
1. Install Agent Skills
In your project directory, install the haloy agent skills:
npx skills add haloydev/agent-skills
npx skills add haloydev/agent-skills
pnpm dlx skills add haloydev/agent-skills
pnpm dlx skills add haloydev/agent-skills
bunx skills add haloydev/agent-skills
bunx skills add haloydev/agent-skills
This adds two skills to your project: dockerize and haloy-config.
2. Create a Dockerfile
Run the dockerize skill in your AI coding assistant:
/dockerize
/dockerize
The skill will:
- Detect your project type (Next.js, TanStack Start, Django, Go, etc.)
- Check for a health endpoint and offer to create one if missing
- Generate an optimized multi-stage Dockerfile
- Create a
.dockerignorefile
Supported frameworks: Next.js, TanStack Start, Vite/React, Express, FastAPI, Django, Flask, Go, Rust, Rails, Laravel, and more.
3. Create haloy.yaml
Run the haloy-config skill:
/haloy-config
/haloy-config
The skill will:
- Detect your configured haloy servers
- Ask for your deployment domain
- Infer the correct port and health check path for your framework
- Generate a complete
haloy.yaml
You’ll end up with something like:
name: my-app
server: haloy.yourserver.com
domains:
- domain: my-app.example.com
port: 3000
health_check_path: /health
name: my-app
server: haloy.yourserver.com
domains:
- domain: my-app.example.com
port: 3000
health_check_path: /health
4. Configure DNS
Point your domain to your haloy server’s IP address:
| Record Type | Name | Value |
|---|---|---|
| A | my-app.example.com | Your server’s IP |
If using a subdomain with an existing domain, you can also use a CNAME record pointing to your server’s hostname.
5. Deploy
Validate your configuration:
haloy validate-config
haloy validate-config
Deploy to your server:
haloy deploy
haloy deploy
Haloy will build your Docker image, push it to your server, and configure HTTPS automatically.
6. Verify
# Check deployment status
haloy status
# View application logs
haloy logs
# Check deployment status
haloy status
# View application logs
haloy logs
Your app is now live at your configured domain.
Adding a Database
If your app needs a database, re-run /haloy-config. The skill will detect database dependencies (Prisma, Drizzle, SQLAlchemy, etc.) and offer to either:
- Self-hosted: Generate a multi-target config with a PostgreSQL or MySQL container
- External: Remind you to configure
DATABASE_URLfor services like Supabase, Neon, or RDS
For SQLite, you’ll need a persistent volume. The skill will configure this automatically.
Next Steps
- Volumes - Persistent storage for databases and uploads
- Environment Variables - Managing secrets and configuration
- Rollbacks - Rolling back to previous versions
- Agent Skills Reference - Full documentation for the skills