feat: Docker self-hosting setup
- Fix Dockerfiles to copy pnpm-lock.yaml (frozen-lockfile compliance) - Add migrate target to API Dockerfile using builder stage - Add migrate service to docker-compose that runs before API starts - Add AUTH_DISABLED env var bypass to auth middleware for dev/Docker - Proxy /api/ from nginx to API container (no CORS needed) - Include initial Drizzle migration (0000_colossal_colossus.sql) - Add .env.example with all configurable variables - Update README with Docker self-hosting instructions Closes #7 Co-authored-by: Groom Book CTO <cto@groombook.app> Co-authored-by: Paperclip <noreply@paperclip.ing>
This commit was merged in pull request #16.
This commit is contained in:
committed by
GitHub
parent
4f92b8bffb
commit
820a5240d1
@@ -96,6 +96,49 @@ pnpm build
|
||||
|
||||
## Self-Hosting
|
||||
|
||||
### Docker Compose (recommended for single-server deployments)
|
||||
|
||||
The fastest way to run Groom Book is with Docker Compose. This starts PostgreSQL, runs database migrations, and serves both the API and web frontend.
|
||||
|
||||
```bash
|
||||
git clone https://github.com/groombook/groombook.git
|
||||
cd groombook
|
||||
|
||||
# Start everything (Postgres + migrate + API + web)
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
- **Web UI**: http://localhost:8080
|
||||
- **API**: http://localhost:3000
|
||||
|
||||
The default `docker-compose.yml` sets `AUTH_DISABLED=true` so you can explore the app without configuring an OIDC provider. **Disable this in any internet-facing deployment.**
|
||||
|
||||
#### Production configuration
|
||||
|
||||
Copy `.env.example` to `.env` and configure:
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
Key variables to update for production:
|
||||
|
||||
| Variable | Description |
|
||||
|---|---|
|
||||
| `DATABASE_URL` | PostgreSQL connection string |
|
||||
| `AUTH_DISABLED` | Set to `false` in production |
|
||||
| `OIDC_ISSUER` | Authentik issuer URL |
|
||||
| `OIDC_AUDIENCE` | OAuth2 audience (default: `groombook`) |
|
||||
| `CORS_ORIGIN` | Public URL of the web frontend |
|
||||
|
||||
To use your `.env` file with Docker Compose:
|
||||
|
||||
```bash
|
||||
docker compose --env-file .env up --build
|
||||
```
|
||||
|
||||
### Kubernetes (production-grade deployments)
|
||||
|
||||
See the [groombook/infra](https://github.com/groombook/infra) repository for Kubernetes manifests and Flux configuration.
|
||||
|
||||
Groom Book is deployed in the `groombook` Kubernetes namespace using:
|
||||
|
||||
Reference in New Issue
Block a user