- Go 78.1%
- CSS 10.3%
- HTML 8.2%
- Dockerfile 3.3%
| .forgejo/workflows | ||
| .rmi-work | ||
| cmd | ||
| lib | ||
| .dockerignore | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| LICENSE.txt | ||
| main.go | ||
| README.md | ||
A simple static page service for Forgejo/Gitea.
Repo setup
Everything in branch static-pages (if you have not changed it by assigning -b flag) will be served as-is.
There are two mode you can use: serve mode and webhook mode.
Serve mode
Serve mode starts an HTTP server listens on specified port. When you visit http://ip:port/user/repo/path/to/file, it ask forgejo server for path/to/file in branch static-pages of repository user/repo via api, then forward the response to client.
In other words, anything you push to branch static-pages will be provided as-is.
This mode is good for simple setup, like, you have small number of viewers, or you use other powerful cache/proceting service like Cloudflare.
Webhook mode
Webhook mode is a tool which helps you to download latest content via git. You'll have to setup a webhook in forgejo server in order to notify it when to download new content.
To serve downloaded pages, you'll have to use a web server like Nginx.
Example
forgejo-pages serve -k my-secret-token -s https://git.example.com -a :8080 -b static-pages
forgejo-pages listen -u myuser -k my-secret-token -s https://git.example.com -a :8080 -b static-pages -d ./data
Flags can be assigned through environmental variables like PAGES_BIND, PAGES_BRANCH, or config file
bind=":8080"
server="https://git.example.com"
token="my-secret-token"
Take care about permissions of the API token. For serve mode, repositories the key cannot read will return error. For webhook mode, it will failed to download (clone/pull) new content.
Use docker
docker run -p 8080:8080 --user 1000:1000 ronmi/forgejo-pages serve -s https://git.example.com -k my-secret-token
docker run -p 8080:8080 --user 1000:1000 -v `pwd`/data:/data ronmi/forgejo-pages listen -u myuser -k my-secret-token -s https://git.example.com -a :8080 -b static-pages -d /data
FAQ
Can I use user.example.com/repo/path format?
Use reverse proxy, Nginx for example:
server {
server_name ~^(?<user>[^.]+)\.example\.com$;
location / {
proxy_pass http://1.2.3.4:5678/$user$uri;
}
}
Will it support SSL for security?
No, just use reverse proxy. You might also need LetsEncrypt or Cloudflare to apply for a free SSL certificate.
Will it support caching
No. It does provide very basic cache (etag, last-modified and related HTTP headers) as it just forward request to your git server. If your need more, use reverse proxy.
License
MPLv2