2022-12-18 04:27:19 +09:00
# GotHub
2022-10-24 21:24:32 +09:00
2022-12-18 04:27:19 +09:00
Alternative front-end for GitHub written with Go. (WIP)
2023-02-11 17:33:01 +09:00
2023-04-03 02:48:13 +09:00
[Matrix ](https://matrix.to/#/#gothub:matrix.org )
2023-04-02 04:08:46 +09:00
[![Go Report Card ](https://goreportcard.com/badge/codeberg.org/gothub/gothub )](https://goreportcard.com/report/codeberg.org/gothub/gothub)
2023-04-02 19:34:07 +09:00
[![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)
2022-11-30 05:49:43 +09:00
2022-12-18 04:27:19 +09:00
## Features
- Lightweight - for both you and the instance host
- No JavaScript - pure HTML and CSS goodness
2023-04-02 19:35:05 +09:00
- No requests made to GitHub from the client side - they won't even know you made a request!
2022-12-18 04:27:19 +09:00
- Open source - for peer review & trustworthiness
- Save bandwidth - no JavaScript/tracking bloat loaded!
2022-12-02 07:14:24 +09:00
2023-04-03 22:00:57 +09:00
## Comparison to GitHub
Tested with PageSpeed Insights. Using ansible/ansible as a test repo.
| | [GotHub ](https://pagespeed.web.dev/analysis/https-gh-dev-odyssey346-dev-ansible-ansible/2430mn1ece?form_factor=mobile ) | [GitHub ](https://pagespeed.web.dev/analysis/https-github-com-ansible-ansible/maetxu2zat?form_factor=mobile ) |
| -------- | ---------- | ----------- |
| Performance | 100 | 81 |
| Requests | 3 | 88 |
| Resource Size | 8kb | 629kb |
| Time to Interactive | 0.9s | 2.7s |
Quite the difference, isn't it?
2022-12-18 04:27:19 +09:00
## Instances
2023-02-10 04:58:57 +09:00
### Difference between branches
2023-04-02 19:34:39 +09:00
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.
2023-01-14 04:35:45 +09:00
2023-02-10 04:58:57 +09:00
``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 |
| -------- | ---------- | ----------- | ----- | ----- |
2023-04-03 15:55:24 +09:00
| [gothub.projectsegfau.lt ](https://gothub.projectsegfau.lt ) (official) | No | GeoDNS (Luxembourg/USA/India) | BuyVM/Digital Ocean/Airtel | master |
2023-04-03 15:29:49 +09:00
| [gh.odyssey346.dev ](https://gh.odyssey346.dev ) | No | France | OVHcloud (Trolling Solutions) | master |
| [gh.riverside.rocks ](https://gh.riverside.rocks ) | No | USA | Comcast | master |
| [gh.vern.cc ](https://gh.vern.cc )[^1] | No | USA | Hetzner | master |
| [gh.akisblack.dev ](https://gh.akisblack.dev ) | No | Germany | OVHcloud | master |
| [gothub.lunar.icu ](https://gothub.lunar.icu ) | Yes | Germany | Unesty | master |
| [gh.phreedom.club ](https://gh.phreedom.club ) | No | Iceland | Flokinet | master |
2023-04-03 19:36:36 +09:00
| [gh.creller.net ](https://gh.creller.net ) | No | Finland | Hetzner | dev |
2023-04-03 15:29:49 +09:00
| [gothub.dev.projectsegfau.lt ](https://gothub.dev.projectsegfau.lt ) (official) | No | Luxembourg | BuyVM | dev |
| [gh.dev.odyssey346.dev ](https://gh.dev.odyssey346.dev ) | No | France | OVHcloud (Trolling Solutions) | dev |
| [gothub.esmailelbob.xyz ](https://gothub.esmailelbob.xyz ) | No | Canada | OVHcloud | dev |
| [dev.gh.akisblack.dev ](https://dev.gh.akisblack.dev ) | No | Germany | OVHcloud | dev |
2023-01-14 04:35:45 +09:00
Have an instance you want on the list? Make an issue or PR!
2023-03-07 21:35:57 +09:00
You can find a json-list of the same in [gothub/gothub-instances ](https://codeberg.org/gothub/gothub-instances ).
2023-01-14 04:35:45 +09:00
[^1]: Has some modifications: https://git.vern.cc/vern/modifications/src/branch/master/gothub
2022-12-02 07:14:24 +09:00
2022-12-18 04:27:19 +09:00
## 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 )
2023-03-07 22:40:41 +09:00
```docker
2022-12-18 04:48:50 +09:00
docker run -d -p 3000:3000 --name gothub codeberg.org/gothub/gothub
2022-12-18 04:27:19 +09:00
```
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.
2023-02-11 04:31:21 +09:00
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.
2022-12-18 04:27:19 +09:00
```bash
git clone https://codeberg.org/gothub/gothub.git
cd gothub
go build -o gothub
./gothub serve
```
2023-04-02 19:46:46 +09:00
GotHub includes a setup wizard that will set the environment variables for you. Run `./gothub setup` .
2022-12-18 04:48:50 +09:00
If you don't want to use port 3000 for GotHub, set the GOTHUB_PORT environment variable to the port you want to use.
2022-12-27 23:19:26 +09:00
2023-04-02 19:46:46 +09:00
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:
2023-03-07 23:25:52 +09:00
```
2023-04-02 19:46:46 +09:00
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
2023-03-07 23:25:52 +09:00
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
```
2023-02-11 05:07:46 +09:00
### 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 {
2023-02-11 05:21:00 +09:00
reverse_proxy localhost:(the port for GotHub)
2023-02-11 05:07:46 +09:00
}
```
2023-04-02 19:46:46 +09:00
### Web server configuration (other web servers)
Just make sure that you pass the Host and IP headers (X-Forwarded-For) to GotHub.
2023-02-10 18:13:06 +09:00
## Scraping
2023-04-02 19:46:46 +09:00
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.
2023-04-02 07:50:31 +09:00
## 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 ).
2022-12-27 23:19:26 +09:00
## DMCA/Legal notice
2023-03-09 01:47:31 +09:00
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.
2022-12-27 23:19:26 +09:00
2023-02-10 18:13:06 +09:00
GitHub is a registered trademark of GitHub, Inc. GotHub is not affiliated with GitHub, Inc.