Deploy GAX Pro and Run Decap CMS in Production
Complete deployment guide for GAX Pro: create a GitHub account, push the project, deploy to Netlify, Vercel, Cloudflare, AWS, or a VPS, and set up Netlify Identity plus Git Gateway so Decap CMS works in production.
What This Page Covers
This page walks you through deploying GAX Pro from a fresh start: creating a GitHub account, pushing the project to a repository, connecting that repository to a hosting provider, and running the deploy.
It also covers the part most deployment guides skip: making Decap CMS work in production. That requires a Git-based backend, and the easiest path is Netlify Identity plus Git Gateway.
By the end, you will have:
- A GitHub repository with the GAX Pro project
- A live site on a modern host
- Decap CMS working at
/admin/on the live site
Before You Deploy
You need:
- The GAX Pro project folder on your computer
- A GitHub account (free — created in the first step)
- A hosting account (Netlify, Vercel, Cloudflare, or another provider)
- Git installed on your computer
Git is separate from Go. On Windows, install it from git-scm.com. On macOS, it comes with the Xcode Command Line Tools. On Linux, install it through your package manager.
Step 1: Create a GitHub Account
If you do not have a GitHub account:
1. Go to github.com
2. Click Sign up
3. Enter an email, password, and username
4. Verify your email
GitHub is free for public and private repositories. For a static site, a private repository is fine.
Step 2: Create a Repository
1. After signing in, click the + icon in the top right, then New repository
2. Name the repository — for example, gaxpro-site
3. Choose Private or Public
4. Do not initialize with a README, .gitignore, or license — the project already has files
5. Click Create repository
GitHub shows the commands to connect an existing folder to this repository. Keep that page open.
Step 3: Push the Project to GitHub
Open a terminal and go into the GAX Pro project folder:
cd path/to/gaxpro
Initialize Git if the folder is not already a repository:
git init
Add all files and commit:
git add .
git commit -m "Initial commit"
Connect the local repository to GitHub. Replace yourusername and gaxpro-site with your actual values:
git remote add origin https://github.com/yourusername/gaxpro-site.git
git branch -M main
git push -u origin main
After the push completes, refresh the GitHub repository page. The project files should be visible.
Step 4: Choose a Hosting Provider
GAX Pro builds to a static site/ folder. Any host that serves static files works. The table below compares the main options.
| Provider | Free tier | Git deploy | Decap CMS production support |
|---|---|---|---|
| Netlify | Yes | Yes | Yes — Identity + Git Gateway |
| Vercel | Yes | Yes | Requires external OAuth proxy |
| Cloudflare Pages | Yes | Yes | Requires external OAuth proxy |
| AWS Amplify | Limited | Yes | Requires external OAuth proxy |
| VPS | Paid | Manual or CI | Requires external OAuth proxy |
| cPanel | Paid (hosting) | No | No |
The key difference is Decap CMS. Only Netlify has a built-in authentication service (Identity) and a Git Gateway that let Decap CMS work without a separate OAuth proxy .
If you do not need Decap CMS in production, any host works.
Step 5: Switching Decap CMS from Local Server to Cloud
If you have been editing content locally with npx decap-server and local_backend: true, this section covers the switch to a production CMS.
The local setup writes files to your computer. The cloud setup writes commits to your GitHub repository through Netlify Identity and Git Gateway. Editors log in with an email and password — no local proxy, no terminal running in the background.
Step 1: Remove the Local Backend
Open public/admin/config.yml and find this line:
local_backend: true
Delete it. The local backend points Decap CMS at the local proxy, which does not exist on Netlify.
Then replace the backend block with Git Gateway:
backend:
name: git-gateway
branch: main
The branch should match the branch Netlify deploys from. If your default branch is master, use master.
Step 2: Enable Identity and Git Gateway
In the Netlify dashboard for your site:
1. Go to Integrations > Identity and confirm Identity is enabled.
2. Scroll to Services > Git Gateway and confirm Git Gateway is enabled.
Git Gateway is the bridge between Netlify Identity users and your GitHub repository. Editors log in through Identity, and Git Gateway commits changes to the repository on their behalf. Editors do not need GitHub accounts or repository write access.
Step 3: Commit and Deploy
Save config.yml, commit, and push to GitHub:
git add public/admin/config.yml
git commit -m "Switch Decap CMS to Git Gateway for production"
git push
Netlify rebuilds the site automatically. Wait for the deploy to finish.
Step 4: Invite Editors
In the Netlify dashboard:
1. Go to Identity > Invite users
2. Enter the editor's email address
3. The editor receives an invitation email
The editor clicks the link, sets a password, and logs in at https://your-site.netlify.app/admin/.
Step 5: Deploy to Netlify (Recommended for Decap CMS)
Netlify is the recommended host if you want Decap CMS working on the live site. It provides Identity and Git Gateway, which handle authentication and Git commits on behalf of editors .
Connect the Repository
1. Go to app.netlify.com and sign up or log in
2. Click Add new site, then Import an existing project
3. Choose GitHub and authorize Netlify
4. Select the gaxpro-site repository
5. Configure the build settings:
| Setting | Value |
|---|---|
| Build command | go build -o gax ./cmd/gax && ./gax build |
| Publish directory | site |
6. Click Deploy site
Netlify runs the build on every push to main. The first deploy takes a few minutes. When it finishes, Netlify gives you a URL like https://your-site.netlify.app.
Enable Netlify Identity
1. In the Netlify site dashboard, go to Integrations > Identity
2. Click Enable Identity
3. Under Registration, choose Invite only for a private site, or Open if you want anyone to sign up
4. Under External providers, you can enable Google or GitHub login if you want one-click sign-in
Enable Git Gateway
1. In the same Identity section, scroll to Services > Git Gateway
2. Click Enable Git Gateway
3. Leave the Roles field blank to allow all Identity users access
Git Gateway connects Netlify Identity to your GitHub repository. When an editor logs in through the CMS, Git Gateway commits changes to the repository on their behalf. Editors do not need GitHub accounts or repository write access .
Configure Decap CMS for Production
Open public/admin/config.yml and set the backend to Git Gateway - remove local_backend
backend:
name: git-gateway
branch: main
The local_backend setting should only be used for local development. In production, Git Gateway replaces it.
Commit the changes and push:
git add .
git commit -m "Configure Decap CMS for production"
git push
Netlify rebuilds the site. After the deploy finishes, open https://your-site.netlify.app/admin/. The CMS login page appears. Log in with the Netlify Identity account you invited, and the CMS loads.
Invite Editors
1. In the Netlify dashboard, go to Identity
2. Click Invite users
3. Enter the editor's email address
4. The editor receives an email with a link to set a password
Once they log in, they can edit content through /admin/ without a GitHub account.
Step 6: Deploy to Vercel
Vercel is a strong host for static sites, but Decap CMS production setup is more involved. It requires an external OAuth proxy because Vercel does not provide a built-in Git Gateway.
Connect the Repository
1. Go to vercel.com and sign up or log in
2. Click Add New > Project
3. Import the GitHub repository
4. Vercel detects the framework. Set the build command and output directory:
| Setting | Value |
|---|---|
| Build command | go build -o gax ./cmd/gax && ./gax build |
| Output directory | site |
5. Click Deploy
Vercel builds on every push. The site gets a URL like https://your-site.vercel.app.
Decap CMS on Vercel
Decap CMS needs a Git backend with OAuth. On Vercel, this means deploying a separate OAuth proxy — a small serverless function that handles the GitHub OAuth flow .
The steps are:
1. Create a GitHub OAuth App
2. Deploy an OAuth proxy (for example, a Cloudflare Worker or a Vercel function)
3. Set backend.base_url in config.yml to the proxy URL
4. Set backend.name: github
This is more setup than Netlify. If Decap CMS is a priority, use Netlify instead.
Step 7: Deploy to Cloudflare Pages
Cloudflare Pages serves static sites from a global network. Like Vercel, it requires an external OAuth proxy for Decap CMS.
Connect the Repository
1. Go to the Cloudflare dashboard, then Workers & Pages
2. Click Create application > Pages > Import an existing Git repository
3. Select the GitHub repository
4. Set the build settings:
| Setting | Value |
|---|---|
| Build command | go build -o gax ./cmd/gax && ./gax build |
| Build output directory | site |
5. Click Save and Deploy
Cloudflare builds on every push and gives you a *.pages.dev URL .
Decap CMS on Cloudflare
Decap CMS needs an OAuth proxy on Cloudflare as well. Cloudflare provides a Worker template for this . The setup is similar to Vercel: create a GitHub OAuth App, deploy the Worker, and point backend.base_url to the Worker URL.
Step 8: Deploy to AWS Amplify
AWS Amplify can deploy a static site from GitHub. The connection process is straightforward: sign in to the Amplify Console, connect GitHub, select the repository and branch, and accept the build settings .
For GAX Pro, set the build command to go build -o gax ./cmd/gax && ./gax build and the output directory to site.
Decap CMS on Amplify requires the same external OAuth proxy as Vercel and Cloudflare.
Step 9: Deploy to a VPS
A VPS (DigitalOcean, Linode, Hetzner, or similar) gives you full control. The deploy is manual or through CI.
Manual Deploy
Build locally:
./gax build
Upload the site/ folder to the server:
rsync -avz site/ user@your-server:/var/www/gaxpro/
Point your web server (Nginx or Apache) to /var/www/gaxpro/.
Automated Deploy with GitHub Actions
You can use an SSH deploy action to push the site/ folder to the VPS on every push to main . The GAX Pro project includes example workflows in .github/workflows/.
Decap CMS on a VPS
Decap CMS needs a Git backend with OAuth. On a VPS, you must host the OAuth proxy yourself or use Netlify only for authentication. The simpler option is to deploy the site on Netlify and use the VPS for something else.
Step 10: Deploy to cPanel
cPanel hosting serves static files from public_html. You can upload the site/ folder through the File Manager or FTP.
Upload the Build
1. Build locally: ./gax build
2. Open cPanel File Manager
3. Go to public_html
4. Upload the contents of the site/ folder
Decap CMS on cPanel
Decap CMS does not work on standard cPanel hosting. There is no built-in Git Gateway or Identity service. Decap CMS requires a Git-based backend with OAuth, and cPanel does not provide that.
If you need Decap CMS, use Netlify. If you only need to deploy the static site, cPanel works.
Decap CMS: Which Hosts Support It
| Host | Decap CMS production |
|---|---|
| Netlify | Yes — built-in Identity + Git Gateway |
| Vercel | External OAuth proxy required |
| Cloudflare Pages | External OAuth proxy required |
| AWS Amplify | External OAuth proxy required |
| VPS | External OAuth proxy required |
| cPanel | No |
The Netlify path is the only one where Decap CMS works without deploying a separate OAuth service .
Troubleshooting
Build fails on the host — the host may not have Go installed. Check the build image or add a Go setup step. Netlify and Vercel support Go builds if go.mod is present.
Site deploys but CSS is missing — the asset paths in the theme are absolute (/css/style.css). Make sure the public/ folder was copied to the output. Check the host's publish directory setting.
CMS login fails on Netlify — check that Identity is enabled, Git Gateway is enabled, and the Identity widget script is in public/admin/index.html.
CMS shows "Git Gateway Error" — the Git Gateway may need to be reconnected after changing repository permissions. Go to Netlify Identity settings and relink the repository .
Changes in the CMS do not appear on the live site — Netlify rebuilds on Git commits. Check that the commit reached the repository. If the build is slow, wait a minute and refresh.
Next Step
The site is deployed and Decap CMS works. The documentation is complete.
- Back to Documentation Home
- Configuration Reference
- Contact us — for deployment help or custom work