HTTP server for canonical "go get" import path. It supports all versions of go get
regardless of if it's Go Modules aware.
Install from source or download binaries on GitHub Releases.
The minimum requirement of Go is 1.16, and 64-bit system is required because of a bug in BadgerDB.
$ go get unknwon.dev/go-import-server
Example for this tool itself (save as app.toml
):
addr = "127.0.0.1:4333"
db_path = "app.db"
[[packages]]
import_path = "unknwon.dev/go-import-server"
subpath = "/go-import-server"
repo = "https://github.com/unknwon/go-import-server"
branch = "main"
Assuming $GOPATH/bin
has been added to your $PATH
environment variable.
$ go-import-server -config=./app.toml
YYYY/MM/DD 12:34:56 [ INFO] Listening on http://127.0.0.1:4333...
I recommend use Caddy for automatic HTTPS in front of this tool:
# Caddy 1
unknwon.dev {
proxy / localhost:4333 {
transparent
}
}
# Caddy 2
unknwon.dev {
reverse_proxy * localhost:4333 {
header_up Host {http.request.host}
header_up X-Real-IP {http.request.remote}
header_up X-Forwarded-For {http.request.remote}
header_up X-Forwarded-Port {http.request.port}
header_up X-Forwarded-Proto {http.request.scheme}
}
}
This tool exposes Prometheus metrics via endpoint /-/metrics
.
You can set HTTP Basic Authentication for this endpoint via your app.toml
:
[prometheus]
auth_username = "superuser"
auth_password = "supersecure"
The BadgerDB is used to store total page views and number of go get
s.
Here is an example dump:
go_import_server_stats_view_total 20
go_import_server_stats_view_unknwon_dev_go_import_server 20
go_import_server_stats_get_total 16
go_import_server_stats_get_unknwon_dev_go_import_server 16
This project uses the Task as the build tool, it is not required as all the commands are listed in the Taskfile.yml
in plaintext.
The source files of templates are located in the templates
directory but uses Go embed to embed into the binary. Due to the nature limitation of the Go embed, templates cannot be hot-reloaded after modifications, so the following command needs to be used for re-packing templates and re-compiling the binary:
$ task web --force
Quote from benbjohnson/litestream:
I am grateful for community involvement, bug reports, & feature requests. I do not wish to come off as anything but welcoming, however, I've made the decision to keep this project closed to contributions for my own mental health and long term viability of the project.
This project is under MIT License. See the LICENSE file for the full license text.