mirror of
https://github.com/supermemoryai/supermemory.git
synced 2026-05-17 12:20:04 +00:00
243 lines
No EOL
8.5 KiB
Text
243 lines
No EOL
8.5 KiB
Text
---
|
||
title: 'Self Hosting'
|
||
description: 'Deploy your own instance of the supermemory API on Cloudflare Workers'
|
||
---
|
||
|
||
<Warning>
|
||
This guide is intended for **enterprise customers only** who have specifically opted for self-hosting as part of their enterprise plan. If you're on a standard plan, please use our hosted API at [console.supermemory.ai](https://console.supermemory.ai).
|
||
</Warning>
|
||
|
||
## Prerequisites
|
||
|
||
Before you start, you'll need to gather several API keys and set up accounts with various services. This comprehensive guide will walk you through obtaining each required component.
|
||
|
||
### Enterprise Deployment Package
|
||
|
||
Your enterprise deployment package is provided by the supermemory team and contains:
|
||
- Your unique Host ID (`NEXT_PUBLIC_HOST_ID`)
|
||
- The compiled JavaScript bundle
|
||
- The deployment script
|
||
|
||
Contact your supermemory enterprise representative to receive your deployment package.
|
||
|
||
### Cloudflare
|
||
|
||
|
||
#### Create Account
|
||
|
||
1. Go to [cloudflare.com](https://dash.cloudflare.com/sign-up) and create an account
|
||
3. Your **Account ID** is the long randon string in the URL bar
|
||
|
||
#### Create API Token
|
||
|
||
1. Navigate to [Cloudflare API Tokens](https://dash.cloudflare.com/?to=/:account/api-tokens)
|
||
2. Click **"Create Token"**
|
||
3. Use the **"Custom token"** template
|
||
4. Configure the token with these permissions:
|
||
- **Account:AI Gateway:Edit**
|
||
- **Account:Hyperdrive:Edit**
|
||
- **Account:Workers KV Storage:Edit**
|
||
- **Account:Workers R2 Storage:Edit**
|
||
7. Click **"Continue to summary"** → **"Create Token"**
|
||
8. **Important**: Copy and securely store the token immediately (it won't be shown again)
|
||
|
||
#### Enable Workers
|
||
|
||
1. In your Cloudflare dashboard, go to **Workers & Pages**
|
||
2. If prompted, accept the Workers terms of service
|
||
3. Choose a subdomain for your workers (e.g., `yourcompany.workers.dev`)
|
||
|
||
Your `CLOUDFLARE_ACCOUNT_ID` and `CLOUDFLARE_API_TOKEN` are now ready.
|
||
|
||
### Database
|
||
|
||
You'll need to provide a PostgreSQL connection string via the `DATABASE_URL` environment variable.
|
||
|
||
The database must:
|
||
- Support the **pgvector extension** for vector operations
|
||
- Be accessible from Cloudflare Workers
|
||
- Support SSL connections
|
||
- Allow connections from Cloudflare's IP ranges
|
||
|
||
Your connection string should follow this format:
|
||
```
|
||
postgresql://username:password@hostname:port/database
|
||
```
|
||
|
||
### LLM Providers
|
||
|
||
#### OpenAI
|
||
|
||
1. Go to [platform.openai.com](https://platform.openai.com)
|
||
2. Sign in or create an account
|
||
3. Navigate to **API Keys** in the left sidebar
|
||
4. Click **"Create new secret key"**
|
||
5. Name your key (e.g., "supermemory Self-Hosted")
|
||
6. Copy the key and store it securely
|
||
7. Add billing information if you haven't already
|
||
|
||
#### Anthropic
|
||
|
||
1. Go to [console.anthropic.com](https://console.anthropic.com)
|
||
2. Create an account and complete verification
|
||
3. Navigate to **API Keys**
|
||
4. Click **"Create Key"**
|
||
5. Name your key and copy it securely
|
||
|
||
#### Gemini
|
||
|
||
1. Go to [Google AI Studio](https://aistudio.google.com)
|
||
2. Sign in with your Google account
|
||
3. Click **"Get API key"** → **"Create API key"**
|
||
4. Choose an existing Google Cloud project or create a new one
|
||
5. Copy your API key
|
||
|
||
#### Groq
|
||
|
||
1. Go to [console.groq.com](https://console.groq.com)
|
||
2. Sign up for an account
|
||
3. Navigate to **API Keys**
|
||
4. Click **"Create API Key"**
|
||
5. Name your key and copy it
|
||
|
||
|
||
|
||
{/* TODO: Add OAuth documentation */}
|
||
{/* ### Authentication Providers
|
||
#### GitHub OAuth (Optional)
|
||
|
||
1. Go to [GitHub Developer Settings](https://github.com/settings/developers)
|
||
2. Click **"New OAuth App"**
|
||
3. Fill in the application details:
|
||
- **Application name**: Your app name
|
||
- **Homepage URL**: Your API domain (e.g., `https://api.yourdomain.com`)
|
||
- **Authorization callback URL**: `https://api.yourdomain.com/api/auth/callback/github`
|
||
4. Click **"Register application"**
|
||
5. Note the **Client ID** and generate a **Client Secret**
|
||
6. Use these for `AUTH_GITHUB_ID` and `AUTH_GITHUB_SECRET`
|
||
|
||
#### Google OAuth (Optional)
|
||
|
||
1. Go to [Google Cloud Console](https://console.cloud.google.com)
|
||
2. Create a new project or select an existing one
|
||
3. Enable the **Google+ API**
|
||
4. Go to **Credentials** → **Create Credentials** → **OAuth client ID**
|
||
5. Choose **Web application**
|
||
6. Add your domain to **Authorized JavaScript origins**
|
||
7. Add `https://api.yourdomain.com/api/auth/callback/google` to **Authorized redirect URIs**
|
||
8. Copy the **Client ID** and **Client secret**
|
||
9. Use these for `AUTH_GOOGLE_ID` and `AUTH_GOOGLE_SECRET` */}
|
||
|
||
### Email Service Setup
|
||
|
||
#### Resend
|
||
|
||
1. Go to [resend.com](https://resend.com) and create an account
|
||
2. Navigate to **API Keys**
|
||
3. Click **"Create API Key"**
|
||
4. Name your key (e.g., "supermemory Production")
|
||
5. Copy the key for `RESEND_API_KEY`
|
||
6. Verify your sending domain in the **Domains** section
|
||
|
||
### Connectors (Optional)
|
||
|
||
#### Google Drive
|
||
|
||
1. Go to [Google Cloud Console](https://console.cloud.google.com)
|
||
2. Create or select a project
|
||
3. Enable the **Google Drive API**
|
||
4. Go to **Credentials** → **Create Credentials** → **OAuth client ID**
|
||
5. Configure the OAuth consent screen if required
|
||
6. Choose **Web application**
|
||
7. Add authorized redirect URIs for your domain
|
||
8. Copy `GOOGLE_CLIENT_ID` and `GOOGLE_CLIENT_SECRET`
|
||
|
||
#### Microsoft OneDrive
|
||
|
||
1. Go to [Azure Portal](https://portal.azure.com)
|
||
2. Navigate to **Microsoft Entra ID** → **App registrations**
|
||
3. Click **"New registration"**
|
||
4. Name your app and set redirect URI
|
||
5. Go to **Certificates & secrets** → **New client secret**
|
||
6. Copy the **Application (client) ID** and **Client secret**
|
||
7. Use for `MICROSOFT_CLIENT_ID` and `MICROSOFT_CLIENT_SECRET`
|
||
|
||
#### Notion
|
||
|
||
1. Go to [Notion Developers](https://developers.notion.com)
|
||
2. Click **"Create new integration"**
|
||
3. Fill in the integration details
|
||
4. Copy the **Internal Integration Token**
|
||
5. Set up OAuth if needed for user connections
|
||
6. Use for `NOTION_CLIENT_ID` and `NOTION_CLIENT_SECRET`
|
||
|
||
---
|
||
|
||
## Setup deployment files
|
||
|
||
Extract the deployment package provided by the supermemory team to your preferred directory:
|
||
|
||
```bash
|
||
# Extract the deployment package
|
||
$ unzip supermemory-enterprise-deployment.zip
|
||
$ cd supermemory-deployment
|
||
```
|
||
|
||
---
|
||
|
||
## Configure environment variables
|
||
|
||
The deployment script reads **all** environment variables from your shell at runtime. We ship an example file that lists the full set supported by the worker.
|
||
|
||
```bash
|
||
# Copy the template and start editing
|
||
$ cp packages/alchemy/env.example .env
|
||
|
||
# Open the file in your editor of choice and fill in the blanks
|
||
$ $EDITOR .env
|
||
```
|
||
|
||
Below is a quick reference.
|
||
**Required** values are mandatory for a successful deploy – leave optional ones empty if you don't need the related feature.
|
||
|
||
| Name | Required? | Description |
|
||
|------|-----------|-------------|
|
||
| `NODE_ENV` | ✅ | `development`, `staging` or `production`. |
|
||
| `NEXT_PUBLIC_HOST_ID` | ✅ | Your unique Host ID provided by the supermemory team. |
|
||
| `BETTER_AUTH_SECRET` | ✅ | Random 32-byte string – run `openssl rand -base64 32`. |
|
||
| `BETTER_AUTH_URL` | ✅ | Public base URL for the API (no trailing `/`). Example: `https://api.example.com`. |
|
||
| `DATABASE_URL` | ✅ | Postgres connection string (e.g. `postgres://user:pass@host:5432/db`). |
|
||
| `CLOUDFLARE_ACCOUNT_ID` | ✅ | Your Cloudflare account ID. |
|
||
| `CLOUDFLARE_API_TOKEN` | ✅ | Token created in *Prerequisites*. |
|
||
| `OPENAI_API_KEY` | ✅ | Key from [platform.openai.com](https://platform.openai.com). |
|
||
| `RESEND_API_KEY` | ✅ | E-mail provider key if you plan to send e-mails. |
|
||
| `ANTHROPIC_API_KEY` | | Needed to use Claude models. |
|
||
| `GEMINI_API_KEY` | | Key for Google Gemini models. |
|
||
| `GROQ_API_KEY` | | Key for Groq models. |
|
||
| `AUTH_GITHUB_ID` / `AUTH_GITHUB_SECRET` | | Enable GitHub OAuth login. |
|
||
| `AUTH_GOOGLE_ID` / `AUTH_GOOGLE_SECRET` | | Enable Google OAuth login. |
|
||
| `GOOGLE_CLIENT_ID` / `GOOGLE_CLIENT_SECRET` | | Needed for Google Drive connector. |
|
||
| `MICROSOFT_CLIENT_ID` / `MICROSOFT_CLIENT_SECRET` | | Needed for OneDrive connector. |
|
||
| `NOTION_CLIENT_ID` / `NOTION_CLIENT_SECRET` | | Needed for Notion connector. |
|
||
| `CLOUDFLARE_AI_GATEWAY_NAME` / `CLOUDFLARE_AI_GATEWAY_TOKEN` | | Only if you want to route requests through an AI Gateway. |
|
||
| `SENTRY_DSN` | | If you use Sentry for error reporting. |
|
||
|
||
---
|
||
|
||
## Deploy
|
||
|
||
With your `.env` in place, run the deployment script:
|
||
|
||
```bash
|
||
# Run the deployment script provided in your package
|
||
$ bun ./deploy.ts
|
||
```
|
||
|
||
|
||
---
|
||
|
||
## Updating Your Deployment
|
||
|
||
To update your supermemory deployment, follow the same process as the initial deployment described in the **Deploy** section above. You can reuse your existing `.env` file and add/remove any new environment variables as needed.
|
||
|
||
--- |