A self-hosted URL shortener: Shlink - Keep control over all your shortened URLs, by serving them under your own domains, using this simple yet powerful tool. https://shlink.io/
I was very surprised to find this mature, full-featured URL shortener. It’s written in PHP and includes Geoblocking so your shortener isn’t abused.
A Docker quick-start guide: https://lnk.clifmo.com/ljk13
This maybe isn’t for everyone but I de-dockerified Shlink pretty quickly. Moving it to two nginx vhosts (server and admin) on a Shlink LXC and a centralized Postgres server made dealing with it a lot easier.
E.g., the initial API key shenanigans were less fiddly after I took more direct control.
Interesting. I deploy to my homelab with Docker so it was a fit for me. But I do want to tinker on the API to disable everything but GET. Can you share anything more about breaking it up?
It was mostly uneventful, to be honest. I downloaded the two apps (static admin and the php app), tossed them into /opt/www, and set up nginx to serve PHP. The config in the main app had a section for my Postgres settings and the docs gave the instructions on putting the default server configuration into the static site.
The only challenge was actually rather silly: I don’t use PHP so it took me a bit to understand why apt install php installed Apache when I had already installed nginx. Once I found php-fpm it was smooth sailing from there.
Another great option is Yourls. I’ve been using it for years and it’s been fabulous
I looked at yourls, too. I found Shlink devex to be more mature and the automated geolocation-blocking integration sold me.
It also hasn’t had a release in 2 years and is a self-described “set of PHP scripts”. Doesn’t fit my standard for what I deploy to my homelab
Totally fair.
Do you know if there is any way to use this in combination with Raycast?
I’m not a raycast user, but it has a CLI and REST API, so if Raycast has any extensibility, my guess is yes
Oh snap now I just need to learn how to code