
elie222/inbox-zero NEXT_PUBLIC_BASE_URL=http://localhost:3000 docker compose --profile all up -d # Start Docker (Windows PowerShell) # $env:NEXT_PUBLIC_BASE_URL="http://localhost:3000"; docker compose --profile all up -d # Verify startup (wait for "Ready" message, Ctrl+C to exit logs) docker logs inbox-zero-services-web-1 -f
Tip: The setup CLI guides you through configuring your AI provider (OpenAI, Anthropic, etc.) and connecting Google or Microsoft accounts. For the fastest setup, choose the defaults and select "Full Docker Compose" when asked about databases. See Google OAuth Setup and Microsoft OAuth Setup below for detailed configuration instructions.
Important: You must enable the Gmail API and Google People API in your Google Cloud project, or sign-in will fail.
To update your configuration or pull the latest version:
bashdocker compose --profile all down NEXT_PUBLIC_BASE_URL=http://localhost:3000 docker compose --profile all up -d
See our Self-Hosting Guide for complete instructions, production deployment, and configuration options.
Here's a video on how to set up the project. It covers the same steps mentioned in this document. But goes into greater detail on setting up the external services.
The fastest way to get started is using devcontainers, supported by VS Code (Dev Containers extension), JetBrains IDEs, and other modern editors:
postCreateCommand to completeapps/web/.env (see Google OAuth Setup or Microsoft OAuth Setup below for credentials and redirect URIs)pnpm devStart PostgreSQL and Redis:
bashdocker compose -f docker-compose.dev.yml up -d
Install dependencies and set up environment:
bashpnpm install
Option A: Interactive CLI - Guides you through each step and auto-generates secrets
bashnpm run setup
Option B: Manual setup - Copy the example file and edit it yourself
bashcp apps/web/.env.example apps/web/.env # Generate secrets with: openssl rand -hex 32
Run database migrations:
bashcd apps/web pnpm prisma migrate dev
Run the development server:
bashpnpm dev
The app will be available at http://localhost:3000.
The sections below provide detailed setup instructions for OAuth and other services. For a comprehensive reference of all environment variables, see the Environment Variables Guide.
Quick Setup with CLI: If you have the
gcloudCLI installed, you can useinbox-zero setup-googleto automate API enabling and Pub/Sub setup. It will guide you through the OAuth steps that require manual console access. Runnpx inbox-zero setup-google --helpfor options.
Go to Google Cloud Console and create a new project if necessary.
Create new credentials:
If the banner shows up, configure consent screen (if not, you can do this later)
Get Started.ExternalCreate.Create new credentials:
+Create Credentials button. Choose OAuth Client ID.Application Type, Choose Web applicationhttp://localhost:3000 (replace localhost:3000 with your domain in production)Authorized redirect URIs enter (replace localhost:3000 with your domain in production):http://localhost:3000/api/auth/callback/googlehttp://localhost:3000/api/google/linking/callbackhttp://localhost:3000/api/google/calendar/callback (only required for calendar integration)http://localhost:3000/api/google/drive/callback (only required for Google Drive integration)Create.Update .env file:
GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRETUpdate scopes
Data Access in the left sidebar (or click link above)Add or remove scopesManually add scopes box:plaintext[***] [***] [***] [***] [***] [***] (only required for calendar integration) [***] (only required for Google Drive integration)
UpdateSave in the Data Access page.Add yourself as a test user
Test users section, click +Add usersSaveEnable required APIs in Google Cloud Console:
Automated Setup: If you ran
inbox-zero setup-google, the Pub/Sub topic and subscription were created automatically. Skip to the "For local development" section if needed.
PubSub enables real-time email notifications. Follow the official guide:
Set GOOGLE_PUBSUB_TOPIC_NAME in your .env file.
When creating the subscription, select Push and set the URL to:
[***]
Set GOOGLE_PUBSUB_VERIFICATION_TOKEN in your .env file to the value of TOKEN.
For local development, use *** to expose your local server:
sh*** http 3000
Then update the webhook endpoint in the Google PubSub subscriptions dashboard.
Scheduled tasks: Several features require periodic execution. If using Docker Compose, this is handled automatically by the cron container. Otherwise, set up cron jobs manually:
| Endpoint | Frequency | Cron Expression | Description |
|---|---|---|---|
/api/watch/all | Every 6 hours | 0 */6 * * * | Renews Gmail/Outlook push notification subscriptions |
/api/meeting-briefs | Every 15 minutes | */15 * * * * | Sends pre-meeting briefings (optional, only if using meeting briefs feature) |
/api/follow-up-reminders | Every 30 minutes | */30 * * * * | Processes follow-up reminder notifications (optional, only if using follow-up reminders feature) |
See Self-Hosting Guide for detailed cron configuration.
Go to Microsoft Azure Portal and create a new Azure Active Directory app registration:
Navigate to Azure Active Directory
Go to "App registrations" in the left sidebar or search it in the searchbar
Click "New registration"
http://localhost:3000/api/auth/callback/microsoft (replace localhost:3000 with your domain in production)localhost:3000 with your domain in production):
http://localhost:3000/api/outlook/linking/callbackhttp://localhost:3000/api/outlook/calendar/callback (only required for calendar integration)http://localhost:3000/api/outlook/drive/callback (only required for OneDrive integration)Get your credentials from the Overview tab:
MICROSOFT_CLIENT_IDMICROSOFT_TENANT_IDValue → this is your MICROSOFT_CLIENT_SECRET (Important: copy Value, not Secret ID)Configure API permissions:
In the "Manage" menu click "API permissions" in the left sidebar
Click "Add a permission"
Select "Microsoft Graph"
Select "Delegated permissions"
Add the following permissions:
NEXT_PUBLIC_EMAIL_SEND_ENABLED=true, which is the default)Click "Add permissions"
Click "Grant admin consent" if you're an admin
Update your .env file with the credentials:
MICROSOFT_CLIENT_ID=your_client_id_here MICROSOFT_CLIENT_SECRET=your_client_secret_here MICROSOFT_TENANT_ID=your_tenant_id_here # Only needed for single tenant, omit for multitenant
In your .env file, uncomment one of the LLM provider blocks and add your API key:
Users can also change the model in the app on the /settings page.
To test a production build locally:
bash# Without Docker pnpm run build pnpm start # With Docker (includes Postgres and Redis) NEXT_PUBLIC_BASE_URL=http://localhost:3000 docker compose --profile all up --build
For production deployments, see our guides:
You can view open tasks in our GitHub Issues. Join our *** to discuss tasks and check what's being worked on.
ARCHITECTURE.md explains the architecture of the project (LLM generated).
Docker images are automatically built on every push to main and tagged with the commit SHA (e.g., elie222/inbox-zero:abc1234). The latest tag always points to the most recent main build.
For formal releases, we create GitHub Releases with version tags (e.g., v2.26.0) which also trigger Docker builds with that version tag.
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务