.dockerfiles | ||
gitea | ||
.dockerignore | ||
.gitignore | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
LICENSE | ||
main.go | ||
Makefile | ||
README.md |
caddy-gitea
This allows you to have github pages (with more features) in Gitea. This also requires you to setup a wildcard CNAME to your gitea host.
For now markdown files (with .md
extension) will also be automatically generated to HTML.
Getting started
Caddy config
The Caddyfile below creates a webserver listening on :3000 which will interact with gitea on https://yourgitea.yourdomain.com using agiteatoken
as the token.
{
order gitea before file_server
}
:3000
gitea {
server https://yourgitea.yourdomain.com
token agiteatoken
domain pages.yourdomain.com #this is optional
}
DNS config
This works with a wildcard domain. So you'll need to make a *.pages.yourdomain.com CNAME to the server you'll be running caddy on. (this doesn't need to be the same server as gitea).
Depending on the gitea config below you'll be able to access your pages using:
- http://org.pages.yourdomain.com:3000/repo/file.html (org is the organization or username)
- http://org.pages.yourdomain.com:3000/repo/file.html?ref=abranch (org is the organization or username)
- http://repo.org.pages.yourdomain.com:3000/file.html
- http://branch.repo.org.pages.yourdomain.com:3000/file.html
- http://org.pages.yourdomain.com:3000/ (if you have created a gitea-pages repo it'll be served on the root)
Gitea config
There are multiple options to expose your repo's as a page, that you can use both at the same time.
- creating a gitea-pages repo with a gitea-pages branch and a gitea-pages topic
- adding a gitea-pages branch to any repo of choice and a gitea-pages topic
- adding a gitea-pages-allowall topic to your repo (easiest, but less secure)
gitea-pages repo
e.g. we'll use the yourorg
org.
- create a
gitea-pages
repo inyourorg
org - Add a
gitea-pages
topic to thisgitea-pages
repo (this is used to opt-in your repo), - Create a
gitea-pages
branch in thisgitea-pages
repo. - Put your content in this branch. (eg file.html)
Your content will now be available on http://yourorg.pages.yourdomain.com:3000/file.html
any repo with configurable allowed branch/tag/commits
e.g. we'll use the yourrepo
repo in the yourorg
org and there is a file.html
in the master
branch and a otherfile.html
in the dev
branch. The master
branch is your default branch.
- Add a
gitea-pages
topic to theyourrepo
repo (this is used to opt-in your repo). - Create a
gitea-pages
branch in thisyourrepo
repo. - Put a
gitea-pages.toml
file in thisgitea-pages
branch ofyourrepo
repo. (more info about the content below)
The gitea-pages.toml
file will contain the git reference (branch/tag/commit) you allow to be exposed.
To allow everything use the example below:
allowedrefs=["*"]
To only allow main and dev:
allowedrefs=["main","dev"]
- Your
file.html
in themaster
branch will now be available on http://yourorg.pages.yourdomain.com:3000/yourrepo/file.html - Your
file.html
in themaster
branch will now be available on http://yourrepo.yourorg.pages.yourdomain.com:3000/file.html - Your
otherfile.html
in thedev
branch will now be available on http://yourorg.pages.yourdomain.com:3000/yourrepo/file.html?ref=dev - Your
otherfile.html
in thedev
branch will now be available on http://dev.yourrepo.yourorg.pages.yourdomain.com:3000/file.html
any repo with all branches/tags/commits exposed
e.g. we'll use the yourrepo
repo in the yourorg
org and there is a file.html
in the master
branch and a otherfile.html
in the dev
branch. The master
branch is your default branch.
- Add a
gitea-pages-allowall
topic to theyourrepo
repo (this is used to opt-in your repo).
- Your
file.html
in themaster
branch will now be available on http://yourorg.pages.yourdomain.com:3000/yourrepo/file.html - Your
file.html
in themaster
branch will now be available on http://yourrepo.yourorg.pages.yourdomain.com:3000/file.html - Your
otherfile.html
in thedev
branch will now be available on http://yourorg.pages.yourdomain.com:3000/yourrepo/file.html?ref=dev - Your
otherfile.html
in thedev
branch will now be available on http://dev.yourrepo.yourorg.pages.yourdomain.com:3000/file.html
Building caddy
As this is a 3rd party plugin you'll need to build caddy (or use the binaries). To build with this plugin you'll need to have go1.19 installed.
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest #this will install xcaddy in ~/go/bin
~/go/bin/xcaddy build --with github.com/42wim/caddy-gitea@v0.0.4