Full-featured, self-hosted URL shortener written in Go.
Features | Description |
---|---|
Custom Domain | Everything is under control with your own domain |
Link Shortener | Support /s/semantic-name for short semantic alias for anonymous shortening |
Go Vanity Import | Redirect /x/repo-name to configured VCS and pkg.go.dev for API documentation |
Access Control | 1) Private links won't be listed in public index page; 2) Allow link to be accessible only after a configured time point; 3) Allow warn to visitors about external URL redirects (for liability control) |
Public Indexes | Router /s provides a list of avaliable short links |
Admin Dashboard | Dashboard /s?mode=admin provides full management ability |
Visitor Analysis | Statistics visualization regarding PV, UV, Referrer, Devices, Location, etc |
GDPR Compliant | Including imprint, privacy, contact pages; optional warning about external redirects, etc. |
There are three major pages available in redir.
The redir
command offers server side operation feature from shell:
$ redir
redir is a featured URL shortener. The redir server (run via '-s' option),
will connect to the default database address mongodb://localhost:27018.
It is possible to reconfig redir using an external configuration file.
See https://changkun.de/s/redir for more details.
Version: dev
GoVersion: devel go1.18-39e08c6cd7 Tue Sep 21 13:18:09 2021 +0000
Command line usage:
$ redir [-s] [-f <file>] [-d <file>] [-op <operator> -a <alias> -l <link> -p -trust -vt <time>]
...
You can configure redir using a configuration file. The default configuration is embedded into the binary.
Alternative configuration can be used to replace default config and specified in environtment variable REDIR_CONF
, for example REDIR_CONF=/path/to/config.yml redir -s
to run the redir server under given configuration.
Please check the release page.
You need install Go to build the redir
command.
Build everything into a single native binary:
$ make dashboard # build front-end
$ make # build back-end and embed front-end files into binary
$ redir -s # run the server, require an external database
Build and deploy with Docker:
$ docker network create traefik_proxy
$ make dashboard && make build && make up
Easiest way to contribute is to provide feedback! We would love to hear what you like and what you think is missing. PRs are also welcome.
MIT © 2020-2021 Changkun Ou