# 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) [![Website](https://img.shields.io/website?down_color=red&down_message=offline&up_color=green&up_message=online&url=https%3A%2F%2Fgothub.app)](https://gothub.app) ## 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](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 | 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 ``` 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. ```caddyfile 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](http://go-colly.org/) 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](https://gothub.app) is funded by the [Project Segfault](https://projectsegfau.lt) 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](https://projectsegfau.lt/donate). ## 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.