Standard Deployment
Reuses the official shared backend and works out of the box. Fork the project first, then deploy with one of the methods below.
Requirements: Node.js 20.0 or higher, on macOS, Windows (including WSL), or Linux.
Local Build
# install dependencies
yarn
# local development
yarn start
# build: builds all 18 locales in chunks (a single pass runs out of memory); output goes to build/ — see --locale below for just one language
yarn build
Build specific languages only: use
yarn build --locale <locale>(e.g.zh-Hans,en,ja… see the full locale list inscripts/i18nLocales.mjs). Chain multiple:yarn build --locale zh-Hans && yarn build --locale en.
Vercel Deployment
Click the button below for one-click deployment to Vercel:
Note: Vercel's free tier may fail due to memory limits. Deploy a single language instead — go to the project's Settings → Build & Deployment → Build Command, click Override, and set a single-language command (
yarn build --locale zh-Hansfor Chinese,yarn build --locale ptfor Portuguese, etc.).
Cloudflare Pages Deployment
First 👉 Fork this project, then deploy:
- Open the Pages creation page and choose Connect to Git. If you land on Create a Worker instead, the Pages entry is the Get started link at the bottom
- Connect the repository you just forked
- Configure the build:
- Build command:
yarn build --locale zh-Hans(swap the locale for the language you want to deploy, e.g.yarn build --locale ptfor Portuguese) - Output directory:
build - Environment variables:
YARN_VERSION=1.22.22
- Build command:
- Click Deploy and wait for Cloudflare Pages to finish building
YARN_VERSIONis required: Cloudflare's v3 build system defaults to Yarn 4.9.1 and no longer infers the version fromyarn.lockthe way v2 did. This repository ships a Yarn Classic v1 lockfile, so without pinning it, Yarn 4 takes over. Node needs no setting — v3 defaults to 22.16.0, already above the 20 this project requires.
Every push afterwards automatically triggers a build and deploy.
Docker Deployment
One-line deployment:
# ghcr.io
docker run -d -p 3000:3000 --name chatgpt-shortcut ghcr.io/rockbenben/chatgpt-shortcut:latest
# docker hub
docker run -d -p 3000:3000 --name chatgpt-shortcut rockben/chatgpt-shortcut:latest
Or with docker-compose:
services:
chatgpt-shortcut:
container_name: chatgpt-shortcut
image: ghcr.io/rockbenben/chatgpt-shortcut:latest
ports:
- "3000:3000"
restart: unless-stopped