@cronicorn/mcp-server 1.12.1 → 1.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/self-hosting.md +80 -135
- package/package.json +1 -1
|
@@ -18,155 +18,100 @@ Run Cronicorn on your own infrastructure using Docker Compose.
|
|
|
18
18
|
|
|
19
19
|
## Quick Start
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
retries: 5
|
|
42
|
-
volumes:
|
|
43
|
-
- cronicorn-db:/var/lib/postgresql/data
|
|
44
|
-
|
|
45
|
-
migrator:
|
|
46
|
-
image: ghcr.io/weskerllc/cronicorn/migrator:latest
|
|
47
|
-
container_name: cronicorn-migrator
|
|
48
|
-
restart: no
|
|
49
|
-
networks:
|
|
50
|
-
- cronicorn
|
|
51
|
-
depends_on:
|
|
52
|
-
db:
|
|
53
|
-
condition: service_healthy
|
|
54
|
-
environment:
|
|
55
|
-
DATABASE_URL: postgresql://cronicorn:your_secure_password_here@db:5432/cronicorn
|
|
56
|
-
|
|
57
|
-
api:
|
|
58
|
-
image: ghcr.io/weskerllc/cronicorn/api:latest
|
|
59
|
-
container_name: cronicorn-api
|
|
60
|
-
restart: unless-stopped
|
|
61
|
-
networks:
|
|
62
|
-
- cronicorn
|
|
63
|
-
depends_on:
|
|
64
|
-
db:
|
|
65
|
-
condition: service_healthy
|
|
66
|
-
migrator:
|
|
67
|
-
condition: service_completed_successfully
|
|
68
|
-
environment:
|
|
69
|
-
DATABASE_URL: postgresql://cronicorn:your_secure_password_here@db:5432/cronicorn
|
|
70
|
-
PORT: 3333
|
|
71
|
-
BETTER_AUTH_SECRET: generate_random_secret_here
|
|
72
|
-
BETTER_AUTH_URL: http://localhost:3333
|
|
73
|
-
WEB_URL: http://localhost:5173
|
|
74
|
-
API_URL: http://localhost:3333
|
|
75
|
-
GITHUB_CLIENT_ID: your_github_client_id
|
|
76
|
-
GITHUB_CLIENT_SECRET: your_github_client_secret
|
|
77
|
-
NODE_ENV: production
|
|
78
|
-
ports:
|
|
79
|
-
- "3333:3333"
|
|
80
|
-
|
|
81
|
-
scheduler:
|
|
82
|
-
image: ghcr.io/weskerllc/cronicorn/scheduler:latest
|
|
83
|
-
container_name: cronicorn-scheduler
|
|
84
|
-
restart: unless-stopped
|
|
85
|
-
networks:
|
|
86
|
-
- cronicorn
|
|
87
|
-
depends_on:
|
|
88
|
-
db:
|
|
89
|
-
condition: service_healthy
|
|
90
|
-
migrator:
|
|
91
|
-
condition: service_completed_successfully
|
|
92
|
-
environment:
|
|
93
|
-
DATABASE_URL: postgresql://cronicorn:your_secure_password_here@db:5432/cronicorn
|
|
94
|
-
NODE_ENV: production
|
|
95
|
-
|
|
96
|
-
ai-planner:
|
|
97
|
-
image: ghcr.io/weskerllc/cronicorn/ai-planner:latest
|
|
98
|
-
container_name: cronicorn-ai-planner
|
|
99
|
-
restart: unless-stopped
|
|
100
|
-
networks:
|
|
101
|
-
- cronicorn
|
|
102
|
-
depends_on:
|
|
103
|
-
db:
|
|
104
|
-
condition: service_healthy
|
|
105
|
-
migrator:
|
|
106
|
-
condition: service_completed_successfully
|
|
107
|
-
environment:
|
|
108
|
-
DATABASE_URL: postgresql://cronicorn:your_secure_password_here@db:5432/cronicorn
|
|
109
|
-
OPENAI_API_KEY: your_openai_api_key # Optional - required for AI features
|
|
110
|
-
AI_MODEL: gpt-4o-mini
|
|
111
|
-
NODE_ENV: production
|
|
112
|
-
|
|
113
|
-
web:
|
|
114
|
-
image: ghcr.io/weskerllc/cronicorn/web:latest
|
|
115
|
-
container_name: cronicorn-web
|
|
116
|
-
restart: unless-stopped
|
|
117
|
-
networks:
|
|
118
|
-
- cronicorn
|
|
119
|
-
depends_on:
|
|
120
|
-
- api
|
|
121
|
-
ports:
|
|
122
|
-
- "5173:80"
|
|
123
|
-
|
|
124
|
-
volumes:
|
|
125
|
-
cronicorn-db:
|
|
126
|
-
|
|
127
|
-
networks:
|
|
128
|
-
cronicorn:
|
|
129
|
-
driver: bridge
|
|
130
|
-
```
|
|
21
|
+
1. **Download the compose file**
|
|
22
|
+
|
|
23
|
+
Get [`docker-compose.yml`](https://github.com/weskerllc/cronicorn/blob/main/docker-compose.yml) from the repo. This file pulls pre-built images from our registry—no building required.
|
|
24
|
+
|
|
25
|
+
2. **Create environment file**
|
|
26
|
+
|
|
27
|
+
Create a `.env` file in the same directory. See [`.env.example`](https://github.com/weskerllc/cronicorn/blob/main/.env.example) for all options. At minimum, set:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Generate with: openssl rand -base64 32
|
|
31
|
+
BETTER_AUTH_SECRET=your-random-32-character-secret-here
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Everything else has sensible defaults that work out of the box.
|
|
35
|
+
|
|
36
|
+
3. **Start services**
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
docker compose up -d
|
|
40
|
+
```
|
|
131
41
|
|
|
132
|
-
|
|
42
|
+
4. **Access the app**
|
|
133
43
|
|
|
44
|
+
- **Dashboard**: http://localhost:5173
|
|
45
|
+
- **API**: http://localhost:3333
|
|
46
|
+
- **Login**: Use default admin credentials from `.env.example`
|
|
47
|
+
|
|
48
|
+
## Optional Features
|
|
49
|
+
|
|
50
|
+
### GitHub OAuth
|
|
51
|
+
|
|
52
|
+
Add to your `.env`:
|
|
134
53
|
```bash
|
|
135
|
-
|
|
136
|
-
|
|
54
|
+
GITHUB_CLIENT_ID=your_github_client_id
|
|
55
|
+
GITHUB_CLIENT_SECRET=your_github_client_secret
|
|
56
|
+
```
|
|
137
57
|
|
|
138
|
-
|
|
139
|
-
docker compose logs -f
|
|
58
|
+
Create an OAuth app at [github.com/settings/developers](https://github.com/settings/developers) with callback URL: `http://localhost:3333/api/auth/callback/github`
|
|
140
59
|
|
|
141
|
-
|
|
142
|
-
|
|
60
|
+
### AI Scheduling
|
|
61
|
+
|
|
62
|
+
Add to your `.env`:
|
|
63
|
+
```bash
|
|
64
|
+
OPENAI_API_KEY=sk-your-key-here
|
|
65
|
+
AI_MODEL=gpt-4o-mini
|
|
143
66
|
```
|
|
144
67
|
|
|
145
|
-
|
|
68
|
+
### Stripe Payments
|
|
146
69
|
|
|
147
|
-
|
|
148
|
-
- **API Server**: http://localhost:3333
|
|
149
|
-
- **API Documentation**: http://localhost:3333/reference
|
|
70
|
+
See `.env.example` for required Stripe configuration.
|
|
150
71
|
|
|
151
|
-
##
|
|
72
|
+
## Custom Domain
|
|
152
73
|
|
|
153
|
-
|
|
74
|
+
To use a custom domain, update these in your `.env`:
|
|
154
75
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
76
|
+
```bash
|
|
77
|
+
# Public URLs (accessed by browsers)
|
|
78
|
+
BETTER_AUTH_URL=https://cronicorn.yourdomain.com
|
|
79
|
+
WEB_URL=https://cronicorn.yourdomain.com
|
|
80
|
+
VITE_API_URL=https://cronicorn.yourdomain.com # Used at build time for client-side requests
|
|
81
|
+
BASE_URL=https://cronicorn.yourdomain.com
|
|
82
|
+
|
|
83
|
+
# Internal URLs (Docker network, used by web SSR to call API)
|
|
84
|
+
API_URL=http://cronicorn-api:3333 # Keep this as internal Docker hostname
|
|
85
|
+
```
|
|
159
86
|
|
|
160
|
-
|
|
87
|
+
**Important**: The web app makes requests to the API from two places:
|
|
88
|
+
- **Client-side** (browser): Uses `VITE_API_URL` - must be your public domain
|
|
89
|
+
- **Server-side** (SSR): Uses `API_URL` - should be internal Docker network URL (`http://cronicorn-api:3333`)
|
|
161
90
|
|
|
162
|
-
|
|
91
|
+
You'll need a reverse proxy (Traefik, Caddy, nginx) to handle SSL and route requests:
|
|
92
|
+
- `yourdomain.com/` → Web container (port 5173)
|
|
93
|
+
- `yourdomain.com/api/*` → API container (port 3333)
|
|
163
94
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
95
|
+
## Useful Commands
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# View logs
|
|
99
|
+
docker compose logs -f
|
|
100
|
+
|
|
101
|
+
# Restart services
|
|
102
|
+
docker compose restart
|
|
103
|
+
|
|
104
|
+
# Stop everything
|
|
105
|
+
docker compose down
|
|
106
|
+
|
|
107
|
+
# Update to latest version
|
|
108
|
+
docker compose pull
|
|
109
|
+
docker compose up -d
|
|
168
110
|
```
|
|
169
111
|
|
|
170
|
-
|
|
112
|
+
## Troubleshooting
|
|
171
113
|
|
|
172
|
-
**
|
|
114
|
+
- **Connection refused**: Wait 30 seconds for all services to start
|
|
115
|
+
- **Auth errors**: Ensure `BETTER_AUTH_SECRET` is at least 32 characters
|
|
116
|
+
- **API not accessible**: Check that port 3333 isn't already in use
|
|
117
|
+
- **Database issues**: Check logs with `docker compose logs db`
|
package/package.json
CHANGED