All Projects → gopherpit → gopherpit

gopherpit / gopherpit

Licence: BSD-3-Clause license
Take control of your Go packages' import paths

Programming Languages

go
31211 projects - #10 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to gopherpit

Forwardemail.net
The best free email forwarding for custom domains (Web Server)
Stars: ✭ 211 (+240.32%)
Mutual labels:  domain
laravel-devcontainer
🐋 Fully-Dockerised Laravel development in Visual Studio Code
Stars: ✭ 80 (+29.03%)
Mutual labels:  remote
spotify-web-helper
🎛 Control Spotify from node.js
Stars: ✭ 60 (-3.23%)
Mutual labels:  remote
IPpy
🚀 Ping IP addresses and domains in parallel to find the accessible and inaccessible ones.
Stars: ✭ 54 (-12.9%)
Mutual labels:  domain
PuTTY-ng
An improved multi-tabbed PuTTY with better user experience. This project is based on noddle1983's putty-nd.
Stars: ✭ 37 (-40.32%)
Mutual labels:  remote
domainos
A laravel package for blacklisting or whitelisting specific email providers or domains
Stars: ✭ 22 (-64.52%)
Mutual labels:  domain
China Domain Allowlist
常用中国网站白名单,纯列表,用于 SwitchyOmega,控制不走代理的网站。
Stars: ✭ 166 (+167.74%)
Mutual labels:  domain
finance-project-ddd
Projeto financeiro usando domain driven design, tdd, arquitetura hexagonal e solid
Stars: ✭ 67 (+8.06%)
Mutual labels:  domain
POS---Point-Of-Sales
Point of sales proof of concept developed using Asp.Net Core 2.2. Features: Customer, Vendor, Product, Purchase Order, Goods Receive, Sales Order, Inventory Transactions and POS form.
Stars: ✭ 120 (+93.55%)
Mutual labels:  vendor
call
Make remote development more elegant
Stars: ✭ 20 (-67.74%)
Mutual labels:  remote
addon-vscode-remote
VSCode Remote - Home Assistant Community Add-ons
Stars: ✭ 35 (-43.55%)
Mutual labels:  remote
Leap
Free & Open alternative to WHMCS. Let's see if we can make it
Stars: ✭ 270 (+335.48%)
Mutual labels:  domain
docker-chromium
Docker container with Chromium desktop and a Web VNC client allowing you to run Chromium on any server you have
Stars: ✭ 64 (+3.23%)
Mutual labels:  remote
Hot-tub-remote
Lay-z-Spa wifi remote (3 pin model)
Stars: ✭ 39 (-37.1%)
Mutual labels:  remote
SuperGrate
💾 Get moving with Super Grate; a free & open source Windows Profile Migration & Backup Utility. Super Grate is a GUI (Graphical User Interface) that assists Microsoft's USMT (User State Migration Utility) in performing remote migrations over a network connection.
Stars: ✭ 91 (+46.77%)
Mutual labels:  remote
Php Whois
PHP WHOIS provides parsed and raw whois lookup of domains and ASN routes. PHP 5.4+ and 7+ compatible
Stars: ✭ 179 (+188.71%)
Mutual labels:  domain
wx-domain-test
微信域名防封系统 实时检测 自动切换域名 消息提醒
Stars: ✭ 71 (+14.52%)
Mutual labels:  domain
PSWinDocumentation.AD
PowerShell module delivering a lot of Active Directory Forest/Domain information
Stars: ✭ 110 (+77.42%)
Mutual labels:  domain
findcdn
findCDN is a tool created to help accurately identify what CDN a domain is using.
Stars: ✭ 64 (+3.23%)
Mutual labels:  domain
WiFi-remote-for-Bestway-Lay-Z-SPA
Hack - ESP8266 as WiFi remote control for Bestway Lay-Z spa Helsinki
Stars: ✭ 138 (+122.58%)
Mutual labels:  remote

GopherPit

Build Status

GopherPit is a tool that allows you to have remote import paths for Go (programming language) packages with custom domains. That way packages are independent of the version control system provider, whether it is GitHub, Bitbucket or a private repository. You can change it whenever you like, and also keep the same import paths. Also, custom domains means better branding of your packages, if you care about it.

For Git HTTP and HTTPS repositories a custom branch or tag can be specified. It allows to have different package paths for different package versions in the same repository that break backward compatibility with master or other branches. This type of Git references change is similar to https://gopkg.in functionality, but it relies on package path configuration rather on versioning convention, and it is available for any Git repository hosting provider with support for HTTP protocol.

This service is meant for on-premises installation. A publicly available web service is hosted on https://gopherpit.com with the same functionalities.

GopherPit provides HTTP API for managing domains and packages. API Documentation is available on https://gopherpit.com/docs/api. Go API client is implemented in package:

go get gopherpit.com/gopherpit/api

and documented using Godoc https://godoc.org/gopherpit.com/gopherpit/api.

Installation

The latest GopherPit release can be downloaded from https://github.com/gopherpit/gopherpit/releases. Just unpack the content of the archive to a directory of your choosing.

Or you can build it yourself:

$ go get -u gopherpit.com/gopherpit
$ cd $GOPATH/src/gopherpit.com/gopherpit
$ make
$ cd dist

All files for distribution are located under dist directory.

Docker image gopherpit/gopherpit is also provided, with a few examples on Docker Hub.

Starting the service with default settings in the foreground is done by executing the binary:

$ ./gopherpit

Log messages should appear in terminal. You can open http://localhost:8080 in browser and checkout the service.

To start the service in the background execute:

$ ./gopherpit daemon

Log messages are written in files under configured log directory, by default it is a log directory next to the gopherpit executable.

To check the status of the daemonized process:

$ ./gopherpit status

To stop the service:

$ ./gopheprit stop

Configuration introduction

To print all loaded configuration options:

$ ./gopherpit config

All default configuration options are optimized for local testing. Each production environment requires its own specific settings, some of which are addressed in this introduction.

Each section of the configuration can be overridden by a YAML or JSON file with the same name under a configuration directory, which is printed at the end of the config command output, by default it is /etc/gopherpit.

For example, to change the log directory, create a file /etc/gopherpit/logging.yaml with the following content:

log-dir: /path/to/log

Or you can achieve the same effect with a JSON file /etc/gopherpit/logging.json:

{
    "log-dir": "/path/to/log"
}

Make sure that the directory can be created by the user under which GopherPit daemon is started. After starting the daemon, logs are saved there.

Every configuration parameter has a corresponding environment variable. For example the log directory can also be set with:

$ GOPHERPIT_LOGGING_LOG_DIR=/path/to/log ./gopherpit daemon

Beside log directory, storage directory should be configured, too, but in different file (section). Create /etc/gopherpit/gopherpit.yaml file and add the following:

storage-dir: /path/to/storage

Storage directory is used by GopherPit to store permanent or temporary data and it should be outside of the GopherPit installation directory.

Serving on ports 80 and 443 on a custom domain

To be able to fully utilize GopherPit, it is required for service to listen to default http and https ports under a specific domain. These are privileged ports, so root user is required for starting the service. This is a simple "one-liner" to accomplish this:

$ GOPHERPIT_DOMAIN=gopherpit.example.com GOPHERPIT_LISTEN=:80 GOPHERPIT_LISTEN_TLS=:443 ./gopherpit daemon

Or if you prefer to have an explicit configuration, set this options in /etc/gopherpit/gopherpit.yaml:

listen: :80
listen-tls: :443
domain: gopherpit.example.com
storage-dir: /path/to/storage

And just start:

# ./gopherpit daemon

Make sure that configured domain (gopherpit.example.com is just an example) has the right DNS record, and you should be able to access the service.

The domain specified in configuration is the domain that GopherPit recognizes as the one that the web interface should be served on. If you mistype or go to a different domain that is pointing to your GopherPit running instance, you will get a text message that no packages could be found, or a TLS error. In that case, make sure that domain in your browser and configuration match.

TLS certificates and ACME provider

GopherPit is able to obtain TLS certificate from ACME provider, by default Let's Encrypt, and it allows you to register ACME user on a production or staging ACME directory with or without an E-mail address. When you access the service first time on port 80, and TLS listener is configured, it will present a web form to register ACME user.

The first time you access the domain you configured, GopherPit will try to obtain a TLS certificate. The domain must be accessible by the ACME provider, as the only validation method supported is ACME HTTP-01.

To summarize:

  • Make sure that your server is available to the ACME provider (or publicly on the Internet).
  • Make sure that DNS record for your domain points to the right IP address of your server.
  • Configure GopherPit to listen on ports 80 and 433 and to have domain specified.
  • Start GopherPit.
  • Open http://gopherpit.example.com in your browser and register ACME user.
  • Open https://gopherpit.example.com in your browser to obtain certificate.

ACME provider allows automatic obtaining of TLS certificates for domains added through the service, but if you do not need that functionality, it is possible to configure static TLS certificates.

Static TLS certificates

It is not required to use ACME provider for TLS certificates. If you already have certificates for the domain, just include them in gopherpit.yaml configuration:

tls-cert: /path/to/certificate-chain.pem
tls-key: /path/to/certificate-key.key

SMTP issues and options

Default configuration for SMTP integration is to verify the certificate of SMTP server and that it listens on localhost port 25. Postfix and other MTAs may not have a valid certificate for localhost. In that case, either change the smtp-host in email.yaml configuration file, or in the same file set smtp-skip-verify to true. It is possible to have this type of error in log files notifier api send email: x509: certificate is valid for gopherpit.example.com, not localhost.

Some may use Gmail as SMTP server, and example of that email.yaml configuration in this case is:

smtp-username: [email protected]
smtp-password: your password
smtp-host: smtp.gmail.com
smtp-port: 25

Other notable options

Beside other options, the following are important for production deployments.

gopherpit.yaml

listen-internal: :6060
pid-file: /path/to/gopherpit.pid
google-analytics-id: "UA-123456x-1"
contact-recipient-email: gopherpit@localhost

Option "listen-internal" defines a listening address for "internal" debug and management server. It used for inspecting debug profiles, server status and handling maintenance mode.

By default pid-file is in the same directory as gopherpit executable, and for production installations it should be changed to other location, for example /var/run/gopherpit.pid.

If "google-analytics-id" is not empty string, a Google Analytics block of code is added to every HTML page.

E-mails with content from the contact form is sent to address specified under "contact-recipient-email".

email.yaml

default-from: gopherpit@localhost

All e-mail messages to GopherPit users have "From" field set from value defined under "default-from".

Configuration directory

By default all configuration files are read from /etc/gopherpit. It can be changed either with --config-dir optional argument:

# ./gopherpit --config-dir /path/co/configurations daemon

Or with GOPHERPIT_CONFIGDIR environment variable:

# GOPHERPIT_CONFIGDIR=/path/to/configurations ./gopherpit daemon

Contributing

Please report bugs or feature requests in the issue tracker at GitHub.

License

Unless otherwise noted, the GopherPit source files are distributed under the BSD-style license found in the LICENSE file.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].