# GotHub Alternative front-end for GitHub written with Go. (WIP) [Matrix](https://matrix.to/#/%23gothub%3Atrygve.me?via=projectsegfau.lt&via=vern.cc&via=matrix.org&via=trygve.me) [![Go Report Card](https://goreportcard.com/badge/codeberg.org/gothub/gothub)](https://goreportcard.com/report/codeberg.org/gothub/gothub) ## Features - Lightweight - for both you and the instance host - No JavaScript - pure HTML and CSS goodness - No requests made to Micro$oft - 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 not 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](https://gothub.projectsegfau.lt) (official) | No | GeoDNS | BuyVM/Bharti Airtel/Digital Ocean | master | | [gh.odyssey346.dev](https://gh.odyssey346.dev) | No | 🇫🇷 | OVHcloud (Trolling Solutions) | master | | [gh.riverside.rocks](https://gh.riverside.rocks) | No | 🇺🇸 | Comcast | master | | [gh.vern.cc](https://gh.vern.cc)[^1] | No | 🇺🇸 | Hetzner | master | | [gh.akisblack.dev](https://gh.akisblack.dev) | No | 🇩🇪 | OVHcloud | master | | [gothub.lunar.icu](https://gothub.lunar.icu) | Yes | 🇩🇪 | Unesty | master | | [gh.phreedom.club](https://gh.phreedom.club) | No | 🇮🇸 | Flokinet | master | | [gothub.dev.projectsegfau.lt](https://gothub.dev.projectsegfau.lt) (official) | No | 🇱🇺 | BuyVM | dev | | [gh.dev.odyssey346.dev](https://gh.dev.odyssey346.dev) | No | 🇫🇷 | OVHcloud (Trolling Solutions) | dev | | [gothub.esmailelbob.xyz](https://gothub.esmailelbob.xyz) | No | 🇨🇦 | OVHcloud | dev | | [dev.gh.akisblack.dev](https://dev.gh.akisblack.dev) | No | 🇩🇪 | OVHcloud | dev | | [gh.777.tf](https://gh.777.tf) | No | 🇫🇮 | Own ISP | 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](https://codeberg.org/gothub/gothub-instances). [^1]: Has some modifications: https://git.vern.cc/vern/modifications/src/branch/master/gothub ## Setup ### Docker We recommend Docker as it is easy to update GotHub that way and it is easy to setup. [Packages page](https://codeberg.org/gothub/-/packages/container/gothub/latest) ```docker 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. ```bash git clone https://codeberg.org/gothub/gothub.git cd gothub go build -o gothub ./gothub serve ``` If you don't want to use port 3000 for GotHub, set the GOTHUB_PORT environment variable to the port you want to use. If you want to be in the official instance list, you also need to fill these Instance Privacy environment variables: ``` 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. ```caddyfile gothub.example.com { reverse_proxy localhost:(the port for GotHub) } ``` ## Scraping Other than for the explore page, gothub uses scraping in order to retrieve the information. This makes it hard for gothub to get ratelimited. You can also set the GOTHUB_USER_AGENT envvar in order to set the user agent with which GotHub makes requests to Github. By default, we use the user agent of Chrome 110 on Windows 10. ## 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.