A ready-to-use template to deploy a static website on Akash Network with automatic builds via GitHub Actions and a custom domain via Cloudflare.
Every time you push code to GitHub, this template automatically:
- Builds a Docker image containing your website
- Pushes it to GitHub's container registry (ghcr.io)
- Updates
deploy.yamlwith the new image tag
You then paste deploy.yaml into Akash Console to update your live site.
- A GitHub account → github.com
- A Keplr wallet with AKT tokens → wallet.keplr.app
- A domain name → register one at Namecheap, Gandi or OVH
- Your domain's DNS managed on Cloudflare → cloudflare.com (free plan works)
- Click the green "Use this template" button at the top of this page
- Click "Create a new repository"
- Name your repo (e.g.
my-site) - Make sure it is Public
- Click "Create repository"
In your new repo:
- Go to Settings → Actions → General
- Scroll down to Workflow permissions
- Select Read and write permissions
- Click Save
In your new repo:
- Go to Settings → Secrets and variables → Actions
- Click New repository secret
- Add this secret:
| Name | Value |
|---|---|
DOMAIN |
yourdomain.com |
This template uses plain static HTML and CSS no framework, no build tool, no JavaScript required. Static means your site is just files served directly by nginx: fast, simple, and perfectly suited for Akash Network.
Everything lives in the site/ folder. You can completely replace the existing index.html and add any files you want:
site/
├── index.html ← your main page (required)
├── style.css ← your styles
├── about.html ← any additional pages
└── images/ ← your images
└── photo.jpg
What you can build:
- A personal homepage / bio page
- A portfolio
- A link-in-bio page
- A landing page for a project
- Any site that doesn't need a backend or database
What you cannot do with static hosting:
- User login / authentication
- Forms that send emails (unless you use a third-party service like Formspree)
- Any server-side logic (PHP, Python, Node.js...)
To get started, simply delete the contents of site/index.html and write your own HTML and CSS from scratch or keep the existing design and modify it. Either way, as long as your main file is named index.html, the template will handle the rest automatically.
Once you save your changes, commit and push:
git clone https://github.com/YOUR_USERNAME/YOUR_REPO.git
cd YOUR_REPO
# edit site/index.html
git add .
git commit -m "customize my site"
git pushThen go to the Actions tab of your repo and wait for the workflow to turn green ✅ (takes about 30 seconds).
Once green, run:
git pullThis updates your local deploy.yaml with the new image tag generated by the workflow.
By default, ghcr.io images are private. Akash needs to pull the image so it must be public.
- Go to github.com/YOUR_USERNAME → Packages tab
- Click on your image (same name as your repo)
- Click Package settings (bottom right)
- Change visibility → Public → Confirm
You only need to do this once.
- Go to console.akash.network
- Connect your Keplr wallet
- Click Deploy → From SDL
- Open your
deploy.yamlfile, copy its entire content and paste it - Click Create Deployment
- Review the bids from providers and select one
- Click Accept Bid and confirm the transaction in Keplr
- Wait for the deployment to start you will see a public URL like
xyz.provider.akash.network
Note the public URL you will need it in the next step.
- Log in to cloudflare.com
- Select your domain
- Go to DNS → Records
- Add these two records:
| Type | Name | Value | Proxy |
|---|---|---|---|
| CNAME | @ |
xyz.provider.akash.network |
✅ Proxied (orange cloud) |
| CNAME | www |
xyz.provider.akash.network |
✅ Proxied (orange cloud) |
The orange cloud enables free HTTPS automatically.
DNS changes can take a few minutes to propagate. After that, your site is live at yourdomain.com ✅
Every time you want to update your site:
git pull # always pull first
# edit site/index.html
git add .
git commit -m "update"
git pushThen wait for the Actions workflow to turn green ✅, run git pull again, and:
- Go to Akash Console → your deployment
- Click Update
- Paste the new content of
deploy.yaml - Confirm
Your site will reload with the latest version within a few seconds.
| Problem | Cause | Solution |
|---|---|---|
| Workflow not triggering | .github/ folder not pushed |
Use git add . not git add * |
403 on image pull |
Image is private on ghcr.io | GitHub profile → Packages → your image → Package settings → set to Public |
403 when workflow tries to push |
Write permissions not enabled | Settings → Actions → General → Read and write permissions |
| Site not updating on Akash | Old image tag in deploy.yaml |
Run git pull after the workflow finishes, then paste the updated deploy.yaml in Akash Console |
| Branches diverging on git pull | Workflow pushed while you were editing | Run git config pull.rebase false then git pull |
my-site/
├── site/
│ └── index.html ← your website (edit this)
├── Dockerfile ← packages nginx + your site into a Docker image
├── deploy.yaml ← auto-updated by GitHub Actions, paste into Akash Console
└── .github/
└── workflows/
└── deploy.yml ← automatic build triggered on every git push