Deploy Your Website from GitHub with CR Servers Static Deploy
Publish a website kept in a GitHub repository to your CR Servers hosting automatically on every push, over an encrypted FTPS connection.
CR Servers Static Deploy publishes your website from a GitHub repository to your CR Servers hosting. Every time you push to your main branch, GitHub builds the site and uploads it to your hosting over an encrypted FTPS connection.
It's meant for developers whose site lives in GitHub, such as a Next.js site exported as static files. If you'd rather update your site by asking ChatGPT or Claude, use AI Connect instead.
Static Deploy or AI Connect?
| Static Deploy | AI Connect | |
|---|---|---|
| Best for | Developers working in GitHub | Updating your site by asking an AI assistant |
| How changes go live | A push to GitHub builds and uploads the site | The assistant prepares a draft, shows a preview, and publishes when you confirm |
| Undo | Revert the commit and push again | One sentence undoes any of the last five publishes |
Use one per site. Both write to the same folder: AI Connect won't publish over files that a deploy changed, and the next deploy replaces what an assistant published.
What you need
- A GitHub repository whose build produces static files (HTML, CSS, JavaScript, images), for example Next.js with
output: "export"andpnpm. - A CR Servers shared hosting service.
Set it up
-
Create an FTP account just for deploys. In the hosting control panel, add an FTP account whose home directory is the site's folder (see how). Don't use the main hosting login: if the GitHub secret ever leaks, this account can only touch that folder.
-
Find the server hostname shown in the control panel, for example
iwx41.crservers.com. Use it instead of your own domain: the encrypted connection's certificate belongs to the server. -
Add the secrets in GitHub. In your repository, open Settings → Secrets and variables → Actions and add:
Secret Value FTP_HOSTThe server hostname from step 2 FTP_USERThe deploy FTP account, for example deploy@yourdomain.comFTP_PASSWORDIts password FTP_REMOTE_PATH/(the deploy account already starts in the site folder) -
Add the workflow. Create
.github/workflows/deploy.yml:name: Deploy site on: push: branches: [main] permissions: contents: read actions: write jobs: deploy: uses: edenia/crservers-static-deploy/.github/workflows/deploy-static-site.yml@v1 secrets: FTP_HOST: ${{ secrets.FTP_HOST }} FTP_USER: ${{ secrets.FTP_USER }} FTP_PASSWORD: ${{ secrets.FTP_PASSWORD }} FTP_REMOTE_PATH: ${{ secrets.FTP_REMOTE_PATH }} -
Push to
main. Open the Actions tab in GitHub to follow the build and the upload, then open your site.
The Static Deploy documentation lists every option, such as the Node.js version, build commands, a dry run, and a full clean upload.
Contact forms
A static site can't send email by itself. CR Servers provides a small contact form endpoint that sends your form's messages from a mailbox on your domain. Open a ticket and we'll set it up with you.
Troubleshooting
| Problem | What to do |
|---|---|
| The upload fails with a certificate or TLS error | Use the server hostname as FTP_HOST, not your domain. |
| Login fails | Check the deploy account's user name (it includes @yourdomain.com) and password, and that the account isn't suspended. |
| Files land in the wrong folder | With a deploy account that starts in the site folder, FTP_REMOTE_PATH must be /. |
| The build fails | Open the failed run in the Actions tab. The build runs on GitHub, so fix it in your repository and push again. |
Open a ticket if you need help with the first deploy.