A static site server for Forgejo/Gitea instances.
Go to file
2024-04-03 19:37:59 -05:00
.forgejo/workflows use keydb-cli in deploy.yml 2024-04-03 19:05:53 -05:00
cache change code structure 2024-03-26 13:41:12 -05:00
certificates use wildcard domains whenever possible 2024-03-29 16:03:43 -05:00
errors add error pages 2024-03-29 23:03:26 -05:00
forgejo Move caching to after rendering markdown :3 2024-04-03 19:37:59 -05:00
handler fix _redirects support 2024-03-31 20:19:47 -05:00
pagerouter Add markdown rendering 2024-04-03 19:31:57 -05:00
redirects change code structure 2024-03-26 13:41:12 -05:00
render add error pages 2024-03-29 23:03:26 -05:00
utils add error pages 2024-03-29 23:03:26 -05:00
views add error pages 2024-03-29 23:03:26 -05:00
.gitignore Rewrite in Go 2023-10-23 03:45:45 -05:00
go.mod Add markdown rendering 2024-04-03 19:31:57 -05:00
go.sum Add markdown rendering 2024-04-03 19:31:57 -05:00
LICENSE initial commit 2023-07-03 21:03:12 -05:00
local_test exit on error local_test 2024-04-03 18:02:07 -05:00
main.go add ENABLE_HTTPS flag 2024-04-03 18:43:08 -05:00
README.md update features list to be accurate for go port 2024-03-23 02:14:01 -05:00
serve.go add quic support maybe? 2024-03-26 14:19:58 -05:00

pages.gay

A static site server for Forgejo instances.

usage

sign into git.gay and make a repository called "pages". place static files in the repository (index.html for the homepage!) on the default branch, and visit https://username.pages.gay in a browser!

you can make a page for a project by making a branch named "pages" in another repository, and putting your static files there. it can then be accessed at https://username.pages.gay/repo.

custom domains

to use a custom domain, create a .domains file in your repository with the domain you'd like to use.

then, add a DNS CNAME record on your domain pointing to [[branch.]repo.]user.pages.gay.

for apex domains, where CNAME records don't work, just add an A record pointing to 66.94.102.77, an AAAA record pointing to 2605:a142:2135:4519::1, and a TXT record with the content [[branch.]repo.]user.pages.gay.

selfhosting

selfhosting the pages.gay server somewhere else is simple- but you need a separate host for this. unlike typical web servers, where you can put them behind nginx and be fine, this server handles its own SSL in order to support custom domains.

git clone https://git.gay/gitgay/pages
cd pages
go build

configuration is done through a .env file:

# the PAGES_DOMAIN should be just the domain, with no leading period:
PAGES_DOMAIN=pages.gay
FORGEJO_URL=https://git.gay
# FORGEJO_USER_URL is needed for generated repository links if FORGEJO_URL is a local address inaccessible by users
FORGEJO_USER_URL=https://git.gay
PORT=80
HTTPS_PORT=443

ACME_ACCEPT_TERMS=true
ACME_EMAIL=example@example.com
# mock ACME_DIRECTORY_URL, useful for testing:
# ACME_DIRECTORY_URL=https://acme.mock.directory/
# staging LetsEncrypt:
# ACME_DIRECTORY_URL=https://acme-staging-v02.api.letsencrypt.org/directory
# actual LetsEncrypt:
ACME_DIRECTORY_URL=https://acme-v02.api.letsencrypt.org/directory

# A Cloudflare API token with Zone Edit permissions for the domain you'll be hosting this on.
# This is used for solving the ACME challenges.
CLOUDFLARE_TOKEN=abcd1234

features

  • username.pages.gay pages
  • username.pages.gay/repo pages
  • custom domains
  • https support
  • auto-renewal of certificates
  • support SPAs with _redirects file
  • markdown rendering (set back with go rewrite, TODO!)

license

the pages.gay server is copyright (c) hazycora 2023. it's under the AGPLv3 license.

made with ❤️ by besties