supermemory/apps/docs/deployment/self-hosting.mdx
2025-09-28 16:42:06 -07:00

243 lines
No EOL
8.5 KiB
Text
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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.
---