The karrot-frontend nginx template hardcodes Docker's DNS resolver (127.0.0.11) which doesn't exist in Kubernetes. Added a ConfigMap to override the template, removing the Docker DNS resolver by using a direct proxy_pass with no nginx variable (which would force runtime resolution). Also adds a README with usage instructions. Documents lessons learned in ADDING-APPS-NOTES.md: - Note 24: nginx Docker DNS resolver doesn't work in Kubernetes; any nginx variable in proxy_pass (including $request_uri) forces runtime DNS resolution requiring a resolver directive - Note 25: ConfigMap changes don't restart pods; subPath mounts never auto-update; always follow with kubectl rollout restart - Note 26: includeSelectors mismatch affects every deployment in an app — check all endpoints, not just the web-facing one Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
36 lines
1.3 KiB
Markdown
36 lines
1.3 KiB
Markdown
# Karrot
|
|
|
|
Karrot is a community platform for sharing resources, coordinating food-saving activities, and organizing volunteers. Groups can manage pickups, track saved food, and communicate through a shared feed.
|
|
|
|
## Dependencies
|
|
|
|
- **PostgreSQL** - Database for storing groups, users, and activity data
|
|
- **SMTP** - For account verification and notifications
|
|
|
|
## Configuration
|
|
|
|
Key settings in `config.yaml`:
|
|
|
|
- **domain** - Where Karrot will be accessible (default: `karrot.{your-cloud-domain}`)
|
|
- **storage** - Persistent volume size for uploaded files (default: `2Gi`)
|
|
- **redis.host** - Redis instance for caching and background jobs (default: app-local `karrot-redis`)
|
|
- **smtp** - Email settings inherited from your Wild Cloud SMTP service
|
|
|
|
## First-Time Setup
|
|
|
|
1. Add and deploy the app:
|
|
```bash
|
|
wild app add karrot
|
|
wild app deploy karrot
|
|
```
|
|
|
|
2. Visit `https://karrot.{your-cloud-domain}` and register an account. The first user to register becomes the site admin.
|
|
|
|
3. Log in and create your first group to start coordinating.
|
|
|
|
## Notes
|
|
|
|
- Karrot supports federation — groups can connect with other Karrot instances
|
|
- The `secretKey` and `dbPassword` are auto-generated in `secrets.yaml`
|
|
- Uploaded files (photos, attachments) are stored in the persistent volume and shared between the frontend and backend pods
|