.gitea/ISSUE_TEMPLATE | ||
.woodpecker | ||
cmd/gothub | ||
pages | ||
public | ||
serve | ||
utils | ||
views | ||
.editorconfig | ||
.gitignore | ||
compose.yml | ||
Dockerfile | ||
go.mod | ||
go.sum | ||
LICENSE | ||
main.go | ||
README.md |
GotHub
Alternative front-end for GitHub written with Go. (WIP)
Features
- Lightweight - for both you and the instance host
- No JavaScript - pure HTML and CSS goodness
- No requests made to GitHub from the client side - they won't even know you made a request!
- Open source - for peer review & trustworthiness
- Save bandwidth - no JavaScript/tracking bloat loaded!
Instances
Difference between branches
The master
branch runs on the master branch of GotHub. This means that the instance is running a stable, tested version of GotHub that doesn't get updated as much as dev
. Doesn't mean they're bad, though.
dev
instances run on the dev branch of GotHub. This might mean they are more up-to-date than other instances, but at the same time, they might not be (instance admin might not always update their instance, no auto-updates etc.). You can get the latest and greatest straight out of Git, but you could meet on bugs and other nasty things.
Link | Cloudflare | Country | ISP | Branch |
---|---|---|---|---|
gothub.projectsegfau.lt (official) | No | GeoDNS (USA/Luxembourg/India) | BuyVM/Digital Ocean/Airtel | master |
gh.odyssey346.dev | No | France | OVHcloud (Trolling Solutions) | master |
gh.riverside.rocks | No | USA | Comcast | master |
gh.vern.cc1 | No | USA | Hetzner | master |
gh.akisblack.dev | No | Germany | OVHcloud | master |
gothub.lunar.icu | Yes | Germany | Unesty | master |
gh.phreedom.club | No | Iceland | Flokinet | master |
gothub.dev.projectsegfau.lt (official) | No | Luxembourg | BuyVM | dev |
gh.dev.odyssey346.dev | No | France | OVHcloud (Trolling Solutions) | dev |
gothub.esmailelbob.xyz | No | Canada | OVHcloud | dev |
dev.gh.akisblack.dev | No | Germany | OVHcloud | dev |
Have an instance you want on the list? Make an issue or PR!
You can find a json-list of the same in gothub/gothub-instances.
Setup
Docker
We recommend Docker as it is easy to update GotHub that way and it is easy to setup. Packages page
docker run -d -p 3000:3000 --name gothub codeberg.org/gothub/gothub
If you are using Portainer or Podman, you know how to create the GotHub container.
Manual
You will need an installation of Go 1.19+ installed on your system.
We recommend setting the GO_TELEMETRY
environment variable to off
. In the future, the Go CLI will send telemetry to Google, which you might not want.
git clone https://codeberg.org/gothub/gothub.git
cd gothub
go build -o gothub
./gothub serve
GotHub includes a setup wizard that will set the environment variables for you. Run ./gothub setup
.
If you don't want to use port 3000 for GotHub, set the GOTHUB_PORT environment variable to the port you want to use.
You can create a .env
file in the root directory of GotHub and set the environment variables there, which is what ./gothub setup
does.
These are the environment variables that are being used by GotHub:
GOTHUB_PORT=3000 # optional
GOTHUB_USER_AGENT="GotHub/1.0.0" # optional, it comes with a Chrome on Windows 10 user agent by default
# The following are optional, but required if you want your instance to be listed on the instances page
GOTHUB_IP_LOGGED=true/false
GOTHUB_REQUEST_URL_LOGGED=true/false
GOTHUB_USER_AGENT_LOGGED=true/false
GOTHUB_DIAGNOSTIC_INFO_LOGGED=true/false
GOTHUB_INSTANCE_PRIVACY_POLICY=""
GOTHUB_INSTANCE_COUNTRY=""
GOTHUB_INSTANCE_PROVIDER=""
GOTHUB_INSTANCE_CLOUDFLARE=true/false
Web server configuration (Caddy)
We recommend Caddy for the web server, as it provides automatic HTTPS, HTTP/3 and is easy to setup.
gothub.example.com {
reverse_proxy localhost:(the port for GotHub)
}
Web server configuration (other web servers)
Just make sure that you pass the Host and IP headers (X-Forwarded-For) to GotHub.
Scraping
GotHub utilizes scraping powered by Colly to retrieve information from GitHub for everything except the explore page. By default, GotHub uses Chrome on Windows 10 as the user agent, but you can change it by setting the GOTHUB_USER_AGENT
environment variable.
Funding
Our domain gothub.app is funded by the Project Segfault team, which is our only expense other than blood, sweat and tears. So, if you'd like to donate to GotHub, you can donate it to your favourite instance host or Project Segfault.
DMCA/Legal notice
All content shown on a GotHub instance is from GitHub. Any issues with content shown on a GotHub instance need to be reported to GitHub, not the instance host's internet or domain provider.
GitHub is a registered trademark of GitHub, Inc. GotHub is not affiliated with GitHub, Inc.
-
Has some modifications: https://git.vern.cc/vern/modifications/src/branch/master/gothub ↩︎