• Go 78.1%
  • CSS 10.3%
  • HTML 8.2%
  • Dockerfile 3.3%
Find a file
2025-01-12 23:25:59 +08:00
.forgejo/workflows also push readme to docker hub 2025-01-12 23:25:59 +08:00
.rmi-work init 2025-01-06 12:05:10 +08:00
cmd add simple description in command 2025-01-12 21:08:02 +08:00
lib webhook will be lock by repo to prevent re-entrance. 2025-01-12 22:59:11 +08:00
.dockerignore build docker 2025-01-06 16:32:03 +08:00
Dockerfile add license to source codes 2025-01-08 04:02:17 +08:00
go.mod update deps 2025-01-07 22:14:12 +08:00
go.sum init 2025-01-06 12:05:10 +08:00
LICENSE.txt init 2025-01-06 12:05:10 +08:00
main.go add license to source codes 2025-01-08 04:02:17 +08:00
README.md update readme 2025-01-12 22:50:02 +08:00

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