# Directus Instance: <%= props.instanceName %>

Generated by [lenne.tech CLI](https://github.com/lenneTech/cli)

## Quick Start

Start the Directus instance:
```bash
docker-compose up -d
```

Stop the instance:
```bash
docker-compose down
```

Restart the instance:
```bash
docker-compose restart
```

View logs:
```bash
docker-compose logs -f
```

View only Directus logs:
```bash
docker-compose logs -f directus
```

## Access

- **URL**: http://localhost:<%= props.port %>
- **Admin Email**: admin@example.com
- **Admin Password**: admin

**⚠️ IMPORTANT**: Change the admin password after first login!

## Configuration

All configuration is stored in the `.env` file. You can modify:
- Directus version (`DIRECTUS_VERSION`)
- Admin credentials
- Database settings

After modifying `.env`, restart the instance:
```bash
docker-compose down
docker-compose up -d
```

## Security

The `.env` file contains sensitive information:
- Security keys (KEY, SECRET)
- Admin credentials
- Database passwords

**Never commit the `.env` file to version control!**

## Volumes

The following Docker volumes are created for persistent data:
- `uploads` - User uploaded files
- `extensions` - Directus extensions
<% if (props.dbType === 'sqlite') { -%>
- `database` - SQLite database file
<% } else { -%>
- `db-data` - Database data
<% } -%>

## Backup

To backup your Directus instance:

1. **Backup volumes**:
   ```bash
   docker-compose down
   docker run --rm -v <%= props.instanceName %>-uploads:/data -v $(pwd):/backup alpine tar czf /backup/uploads-backup.tar.gz /data
   docker run --rm -v <%= props.instanceName %>-extensions:/data -v $(pwd):/backup alpine tar czf /backup/extensions-backup.tar.gz /data
<% if (props.dbType === 'sqlite') { -%>
   docker run --rm -v <%= props.instanceName %>-database:/data -v $(pwd):/backup alpine tar czf /backup/database-backup.tar.gz /data
<% } else if (props.dbType === 'postgres') { -%>
   docker run --rm -v <%= props.instanceName %>-db-data:/data -v $(pwd):/backup alpine tar czf /backup/db-backup.tar.gz /data
<% } else if (props.dbType === 'mysql') { -%>
   docker run --rm -v <%= props.instanceName %>-db-data:/data -v $(pwd):/backup alpine tar czf /backup/db-backup.tar.gz /data
<% } -%>
   ```

2. **Backup `.env` file**:
   ```bash
   cp .env .env.backup
   ```

## Troubleshooting

### Port already in use
If the port is already in use, update `DIRECTUS_PORT` in `.env`, then restart:
```bash
docker-compose down
docker-compose up -d
```

### Database connection issues
Check if the database container is healthy:
```bash
docker-compose ps
```

View database logs:
```bash
docker-compose logs <%= props.dbType %>
```

### Reset instance
To completely reset the instance (⚠️ DELETES ALL DATA):
```bash
docker-compose down -v
docker-compose up -d
```

## Update Directus Version

**⚠️ WARNING**: Changing Directus versions may require database migrations. Major version changes often need a fresh database.

### For minor/patch updates (e.g., 10.0.0 → 10.0.1):
1. Edit `.env` and change `DIRECTUS_VERSION`
2. Pull the new image and restart:
   ```bash
   docker-compose pull
   docker-compose down
   docker-compose up -d
   ```

### For major updates (e.g., 10.x → 11.x):
**Recommended**: Create a backup first, then recreate with fresh volumes:
   ```bash
   # Backup (see Backup section above)
   docker-compose down -v
   # Edit .env with new version
   docker-compose up -d
   ```

**Note**: This will delete all data. Always backup before major version changes!

## Remove Instance

To completely remove this instance:
```bash
docker-compose down -v
cd ..
rm -rf <%= props.instanceName %>
```

## More Information

- [Directus Documentation](https://docs.directus.io/)
- [Docker Compose Documentation](https://docs.docker.com/compose/)
