mirror of
https://github.com/bretzel-app/crumbs.git
synced 2026-10-12 12:06:57 +02:00
docs: add dedicated AUTH.md and deduplicate auth info across docs
Create AUTH.md as the canonical reference for authentication: password auth, OAuth/SSO setup, provider-specific guides (Authentik, Keycloak, Okta/Auth0), env vars, callback URLs, security notes, and troubleshooting. Fixes incorrect env var names and callback URL patterns that had drifted in DEPLOYMENT.md. Other docs now cross-link to AUTH.md instead of duplicating content. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
4e2e0353df
commit
7297dc0616
+4
-62
@@ -110,48 +110,9 @@ node build
|
||||
| `PORT` | `3000` | HTTP port |
|
||||
| `NODE_ENV` | `development` | Set to `production` for deployment |
|
||||
|
||||
### OAuth Providers (optional)
|
||||
### OAuth / SSO (optional)
|
||||
|
||||
Enable social login by setting the client ID and secret for any provider. Users who sign in via OAuth are created automatically (invite-only when combined with admin approval).
|
||||
|
||||
| Variable | Description |
|
||||
|----------|-------------|
|
||||
| `AUTH_GOOGLE_ID` | Google OAuth client ID |
|
||||
| `AUTH_GOOGLE_SECRET` | Google OAuth client secret |
|
||||
| `AUTH_GITHUB_ID` | GitHub OAuth client ID |
|
||||
| `AUTH_GITHUB_SECRET` | GitHub OAuth client secret |
|
||||
| `AUTH_OIDC_ISSUER` | Generic OIDC issuer URL (e.g. `https://accounts.example.com`) |
|
||||
| `AUTH_OIDC_ID` | OIDC client ID |
|
||||
| `AUTH_OIDC_SECRET` | OIDC client secret |
|
||||
| `AUTH_OIDC_NAME` | Display name for the OIDC button (default: "SSO") |
|
||||
|
||||
**Callback URLs** — register these in your provider's dashboard:
|
||||
|
||||
| Provider | Callback URL |
|
||||
|----------|-------------|
|
||||
| Google | `https://your-domain/api/auth/callback/google` |
|
||||
| GitHub | `https://your-domain/api/auth/callback/github` |
|
||||
| OIDC | `https://your-domain/api/auth/callback/oidc` |
|
||||
|
||||
#### Docker example with Google OAuth
|
||||
|
||||
```yaml
|
||||
services:
|
||||
crumbs:
|
||||
image: ghcr.io/bretzel-app/crumbs:latest
|
||||
ports:
|
||||
- "3000:3000"
|
||||
volumes:
|
||||
- crumbs-data:/data
|
||||
environment:
|
||||
- ORIGIN=https://notes.example.com
|
||||
- AUTH_GOOGLE_ID=123456789.apps.googleusercontent.com
|
||||
- AUTH_GOOGLE_SECRET=GOCSPX-xxxxxxxxxxxxx
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
crumbs-data:
|
||||
```
|
||||
Google, GitHub, and generic OIDC (Authentik, Keycloak, Okta, etc.) are supported. Providers are auto-enabled when their env vars are set. See **[AUTH.md](AUTH.md)** for environment variables, callback URLs, provider-specific setup guides, and troubleshooting.
|
||||
|
||||
## Health Check
|
||||
|
||||
@@ -163,7 +124,7 @@ docker inspect --format='{{.State.Health.Status}}' crumbs
|
||||
|
||||
## MCP Server Configuration
|
||||
|
||||
Crumbs includes a built-in MCP (Model Context Protocol) server that allows AI assistants to interact with your notes.
|
||||
Crumbs includes a built-in MCP (Model Context Protocol) server that allows AI assistants to interact with your notes. See [ARCHITECTURE.md](ARCHITECTURE.md#mcp-server) for technical details and the full tool list.
|
||||
|
||||
### Setup
|
||||
|
||||
@@ -186,28 +147,9 @@ Crumbs includes a built-in MCP (Model Context Protocol) server that allows AI as
|
||||
}
|
||||
```
|
||||
|
||||
### Available Tools
|
||||
|
||||
| Tool | Description |
|
||||
|------|-------------|
|
||||
| `list_notes` | List notes (filter by status/tag) |
|
||||
| `get_note` | Get a note by ID |
|
||||
| `create_note` | Create a new note |
|
||||
| `update_note` | Update a note |
|
||||
| `trash_note` / `restore_note` | Move to/from trash |
|
||||
| `archive_note` / `unarchive_note` | Archive/unarchive |
|
||||
| `delete_note` | Permanently delete |
|
||||
| `search_notes` | Full-text search |
|
||||
| `list_tags` | List all tags |
|
||||
| `pin_note` | Pin/unpin a note |
|
||||
| `reorder_notes` | Set sort orders |
|
||||
| `upload_image` | Attach image from URL |
|
||||
|
||||
## Security Notes
|
||||
|
||||
- Always use HTTPS in production (via reverse proxy)
|
||||
- Set a strong password (min 8 characters recommended)
|
||||
- The `ORIGIN` variable must match your actual domain for CSRF protection
|
||||
- Sessions expire after 30 days
|
||||
- Passwords are hashed with Argon2
|
||||
- API keys are SHA-256 hashed (never stored in plain text)
|
||||
- See [AUTH.md](AUTH.md#security-notes) for authentication security details (password hashing, session expiry, PKCE)
|
||||
|
||||
Reference in New Issue
Block a user