| Examples:
|
| 1. Create a short link to https://duckduckgo.com
| $ curl -d https://duckduckgo.com {{.URL}}
| {{.URL}}/502fb5543c36014f
|
| 2. Create a short link with a custom path
| $ curl -d https://duckduckgo.com {{.URL}}/ddg
| {{.URL}}/ddg
|
| 3. Create a short link to https://duckduckgo.com using a query string
| $ curl {{.URL}}?https://duckduckgo.com
| {{.URL}}/1acd382417199d7e
|
| 4. Create a short link with a custom path using a query string
| $ curl {{.URL}}/ddg?https://duckduckgo.com
| {{.URL}}/ddg
|
| 5. You can also pass an encoded URL:
| $ curl {{.URL}}?https%3A%2F%2Fduckduckgo.com
| {{.URL}}/1dc4cb37e81de396
|
| 6. Deleting a short link
| $ TMP=$(mktemp)
| $ # temp file will store header
| $ LINK=$(curl -sS {{.URL}} -d https://duckduckgo.com -D $TMP)
| $ # the link has been successfully created
| $ DEL=$(cat $TMP | grep -i delete-with | awk '{print$2}'| tr -d '\r')
| $ # deletion key is stored in 'X-Delete-With' header.
| $ curl $LINK
| <a href="https://duckduckgo.com">Permanent Redirect</a>.
| $ # the link is working as expected
| $ curl $LINK -X DELETE -d $DEL
| $ curl $LINK
| record not found
| $ # the link has been successfully deleted.
{{if .Demo}}
Please note: this is an example deployment. If you attempt to create a short link here you will receive a 401 Unauthorized. If you like the examples above and want to use this URL shortener you should self-host an instance. It's easy to do (one of the design goals). Below are instructions detailing how.
{{end}}
| How to self-host:
|
| 1. Install dependencies
| a. The Go programming language
| https://golang.org/doc/install
| b. Git version control
| https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
|
| * Most distributions should have Go and Git in their repositories,
| simply as go and git.
| Install these through your package manager, e.g.:
| # pacman -S go git
| # emerge --ask dev-lang/go dev-vcs/git
| # apt install go git
|
| 2. Clone the source code
| # git clone https://git.swurl.xyz/swirl/link
|
| 3. Compile
| # cd link && make
|
| 4. Install
| # make install
|
| 5. Change the configuration to reflect your desired options
| # vim /etc/link.conf
|
| 6. Enable and start the service
| # systemctl enable --now link
|
| * The server is now running on localhost at port 8080.
| * If the SQLite database does not exist, it will be created.
| * All logging will be printed to standard error and standard output.
| Set up an NGINX reverse proxy:
|
| 1. Install dependencies
| * nginx
| * certbot
| * certbot nginx plugin
|
| * Most distributions should have these in their repositories:
| # pacman -S nginx certbot-nginx
| # emerge --ask www-servers/nginx app-crypt/certbot-nginx
| # apt install nginx python-certbot-nginx
|
| 2. Install if you haven't already
| # make install
|
| 3. Change the domain to reflect your setup
| # sed -i 's/your.doma.in/[DOMAIN HERE]/g' /etc/nginx/sites-available/link
|
| 4. Enable the site
| # ln -s /etc/nginx/sites-{available,enabled}/link
|
| 5. Enable https for the site
| # certbot --nginx -d your.doma.in
|
| 6. Enable and start nginx
| # systemctl enable --now nginx
| # # Or, if you already have nginx running, reload it:
| # systemctl reload nginx
|
| * Your site should now be running on https://your.doma.in.
| * To run in a subdirectory, simply put the proxy_pass in the subdirectory, e.g.:
location /shortener {
proxy_pass http://localhost:8080;
}
| * If you want to use another HTTP server, then create the equivalent for that HTTP server.