Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
This branch is 113 commits ahead, 4 commits behind GoogleCloudPlatform:master.

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

turbo-vanityURLs - source

This is the source that runs

Automatic Builds

This can be run anywhere, really. Packages and builds for lots of things are provided. The repo auto-builds packages for freebsd, linux, binaries for macOS and windows. A homebrew formula and a Docker image are also available, and easy to use.


  • Linux users can use this script to download and install the latest package for their system.
    Linux repository hosting provided by packagecloud
    This works on any system with apt or yum. If your system does not use APT or YUM, then download a package from the Releases page.

Install the Go Lift package repo and Turbo Vanity URLs with this command:

curl -s | sudo bash -s - turbovanityurls
  • Docker users can pull directly from the image built on Docker.
docker pull golift/turbovanityurls

The config file is located at /etc/turbovanityurls/config.yaml, pass that path into your container.

  • macOS users can try it out using homebrew.
brew install golift/mugs/turbovanityurls
  • App Engine: Run glcoud app deploy after you edit app.yaml.


I run it in Docker behind swag (nginx) using a config like this:

server {
  # This is the turbovanityurls container.
  set $server http://golift:8080;

  listen 443 ssl http2;

  location @proxy {
    include  /config/nginx/proxy.conf;
    proxy_pass $server$request_uri;

  location / {
    # This points to the 'static' folder in this repo.
    root /config/www/;
    try_files $uri @proxy;
  • FreeBSD users can find a package on the Releases page.


Differences from

  • Wildcard Support Example: You can point a path (even /) to a github user/org. #25
  • App Engine Go 1.12. go112 #29
  • App Engine Go 1.15+ go115.
  • Moved Templates to their own file.
  • Cleaned up templates. Add some css, a little better formatting.
  • Pass entire PathConfig into templates.
  • Exported most of the struct members to make them usable by yaml and template packages.
  • Reused structs for unmarshalling and passing into templates.
  • Converted PathConfig to a pointer; can be accessed as a map or a slice now.
  • Embedded structs for better inheritance model.
  • Set max_age per path instead of global-only.
  • Added -l (listen), -t (timeout), and -c (config) flags. #20
  • Root path repos work now. #23
  • Better auto-detection for repo type. #26 and #27

New Features

  • See the new manual, and the example config file.
  • Path redirects. Issue 302s for specific paths.
    • Useful for redirecting to download links on GitHub.
  • More customization for index and package pages.
  • Configurable descriptions and logos.
  • Better CSS/HTML templates.


Incorporated a badge package for data collection and return. In other words this app can collect data from "things" (like the public grafana api) and store that data for later requests. I use this to populate badge/shield data for things like "grafana dashboard download counter" - It's 3 lines of code you can pull out real easy. You can also disable badgedata in the config file.


The following fine folks are providing their services, completely free! These service integrations are used for things like storage, building, compiling, distribution and documentation support. This project succeeds because of them. Thank you!


  • Go 54.0%
  • Makefile 26.9%
  • Shell 15.7%
  • Dockerfile 2.7%
  • CSS 0.7%