Recommendations for a self-hosted URL shortener?

Hi Everyone,

I've used tinyurl.com a number of times before, and of course there are well-known competitors such as bitly.com, but recently, I've thought about trying to self-host a URL shortener, mainly intended for private use (for a group of users), and not intended as a public URL shortener for everyone to use (though this may be an interesting experiment to try out sometime).

Do any of you have experience with self-hosting a URL shortener?

My need is basically the following: given a link such as

http://mydomain.org/pub/documents/a-pdf-file-with-a-rather-long-name.pdf,

shorten this to something like

http://mydomain.org/123cba.

Naturally, the domain name itself (here: mydomain.org) couldn't be shortened in this case (unless I got a new domain name!).

I'm looking at YOURLS (https://yourls.org/), which is PHP-based and appears to be well-maintained. It needs a MySQL database, but some kind of database would be needed anyway.

Do any of you have other recommendations? (Needless to say, I'd like to keep it as simple as possible.)

"A single swap file or partition may be up to 128 MB in size. [...] [I]f you need 256 MB of swap, you can create two 128-MB swap partitions." (M. Welsh & L. Kaufman, Running Linux, 2e, 1996, p. 49)

«1

Comments

  • I would recommend Yourls. It would work well. Just make sure to monitor it like a hawk. I ran a instance for a week with a Captcha and about 50% of my links were for used for spamming, so I would not recommend leaving it open to the public.

    Thanked by (1)angstrom

    Cheap dedis are my drug, and I'm too far gone to turn back.

  • vyasvyas OGContent Writer
    edited September 9

    +! for yourls,

    there are some SAAS alternatives with generous free/ base tier ($5/month) plans.

    Would recommend getting a cheap shared hosting (the ultra cheap plan from @Smallweb is a good option) and host it there. Makes the management much easier. I host at Myw.pt, DE @MikePT

    Thanked by (2)angstrom MikePT
  • @CamoYoshi said:
    I would recommend Yourls. It would work well. Just make sure to monitor it like a hawk. I ran a instance for a week with a Captcha and about 50% of my links were for used for spamming, so I would not recommend leaving it open to the public.

    Yes, on this particular server, it would be offered as a private service, so I would need to protect it sufficiently.

    If I tried to offer a public service, it would be on another server. :)

    "A single swap file or partition may be up to 128 MB in size. [...] [I]f you need 256 MB of swap, you can create two 128-MB swap partitions." (M. Welsh & L. Kaufman, Running Linux, 2e, 1996, p. 49)

  • @vyas said:
    +! for yourls,

    Would recommend getting a cheap shared hosting (the ultra cheap plan from @Smallweb is a good option) and host it there. Makes the management much easier. I host at Myw.pt, DE @MikePT

    You're right that this would be a good use for cheap shared hosting. (I have shared hosting with @SmallWeb that I play around with.)

    At the moment, the server in question (a VPS) is already up and running, and I'd like to use the server's domain name as the base of the URL.

    Thanked by (1)MikePT

    "A single swap file or partition may be up to 128 MB in size. [...] [I]f you need 256 MB of swap, you can create two 128-MB swap partitions." (M. Welsh & L. Kaufman, Running Linux, 2e, 1996, p. 49)

  • beaglebeagle OG
    edited September 9

    Not self-hosted, but Rebrandly has a generous free tier. My wife is a light user and she has been happy using it. They offer browser plugins and even an app. So very user friendly particularly for non-tech users.

  • @vyas said:
    also take a look at:

    https://github.com/thedevs-network/kutt

    This looks nice and may be more of an "enterprise solution" than YOURLS is, but It may be overkill for my needs on this server. Also, I noticed:

    You need to have Node.js, PostgreSQL and Redis installed.

    :o

    Thanked by (2)vyas vimalware

    "A single swap file or partition may be up to 128 MB in size. [...] [I]f you need 256 MB of swap, you can create two 128-MB swap partitions." (M. Welsh & L. Kaufman, Running Linux, 2e, 1996, p. 49)

  • @beagle said:
    Not self-hosted, but Rebrandly has a generous free tier. My wife is a light user and she has been happy using it. They offer browser plugins and even an app. So very user friendly particularly for non-tech users.

    Intriguing. I don't think that I was really familiar with the notion "branded link" before. =)

    "A single swap file or partition may be up to 128 MB in size. [...] [I]f you need 256 MB of swap, you can create two 128-MB swap partitions." (M. Welsh & L. Kaufman, Running Linux, 2e, 1996, p. 49)

  • @angstrom said:
    My need is basically the following: given a link such as

    http://mydomain.org/pub/documents/a-pdf-file-with-a-rather-long-name.pdf,

    shorten this to something like

    http://mydomain.org/123cba.

    If the URL shortener could have a separate (sub)domain, you can achieve that with GitHub Actions.
    https://dev.to/tusharsadhwani/how-i-made-my-own-url-shortener-for-free-293p

    It's semi self-hosted because you control the git repository and can take it out at any time.

    Using boxes from SmartHost, Gullo, Evolution Host, MaxKVM, Virmach, summer-host.

  • edited September 9

    @yoursunny said:

    @angstrom said:
    My need is basically the following: given a link such as

    http://mydomain.org/pub/documents/a-pdf-file-with-a-rather-long-name.pdf,

    shorten this to something like

    http://mydomain.org/123cba.

    If the URL shortener could have a separate (sub)domain, you can achieve that with GitHub Actions.
    https://dev.to/tusharsadhwani/how-i-made-my-own-url-shortener-for-free-293p

    It's semi self-hosted because you control the git repository and can take it out at any time.

    That's a clever solution that makes good (and unexpected) use of a GitHub account. If I may say so, the author appears to be mainly addressing an audience that would prefer not to pay for a domain or for a hosting service, and accordingly, his solution uses both a free (.tk) domain and a free GitHub account. Nevertheless, it's a clever solution.

    In my case, there's already a server up and running, so it makes sense for me to try to use this server for the URL shortener.

    "A single swap file or partition may be up to 128 MB in size. [...] [I]f you need 256 MB of swap, you can create two 128-MB swap partitions." (M. Welsh & L. Kaufman, Running Linux, 2e, 1996, p. 49)

  • AnthonySmithAnthonySmith AdministratorHosting Provider

    Sorry to hijack but I wonder how responsible you can be for redirected URL's if you yourself only offer the redirection service.

    I also wonder what mitigation could be used e.g. free tier the link is only live for 250 clicks making is pointless for spamzors to use

    Inception Hosting - 256MB OpenVZ VPS back in stock for €8.00 p/year - DEDICATED IP4 + /64 IPv6 https://clients.inceptionhosting.com/cart.php?a=add&pid=177
    Please do not use the PM system here for Inception Hosting support issues.

  • @AnthonySmith said:
    Sorry to hijack but I wonder how responsible you can be for redirected URL's if you yourself only offer the redirection service.

    I also wonder what mitigation could be used e.g. free tier the link is only live for 250 clicks making is pointless for spamzors to use

    Sorry -- which comment are you referring to?

    "A single swap file or partition may be up to 128 MB in size. [...] [I]f you need 256 MB of swap, you can create two 128-MB swap partitions." (M. Welsh & L. Kaufman, Running Linux, 2e, 1996, p. 49)

  • AnthonySmithAnthonySmith AdministratorHosting Provider

    @angstrom said:

    @CamoYoshi said:
    I would recommend Yourls. It would work well. Just make sure to monitor it like a hawk. I ran a instance for a week with a Captcha and about 50% of my links were for used for spamming, so I would not recommend leaving it open to the public.

    Yes, on this particular server, it would be offered as a private service, so I would need to protect it sufficiently.

    If I tried to offer a public service, it would be on another server. :)

    that one.

    Inception Hosting - 256MB OpenVZ VPS back in stock for €8.00 p/year - DEDICATED IP4 + /64 IPv6 https://clients.inceptionhosting.com/cart.php?a=add&pid=177
    Please do not use the PM system here for Inception Hosting support issues.

  • @AnthonySmith said:
    Sorry to hijack but I wonder how responsible you can be for redirected URL's if you yourself only offer the redirection service.

    I also wonder what mitigation could be used e.g. free tier the link is only live for 250 clicks making is pointless for spamzors to use

    Okay, I see: you're asking about how one would make the service less attractive to spammers.

    This is a good question, and I haven't yet thought much about it, but in my particular use case (for a small group of users on a server that I manage), I don't envision having a publicly accessible page at all, so I hope to avoid the spam problem completely. But I have yet to install a URL shortener, so I'll have to see how this works in practice!

    "A single swap file or partition may be up to 128 MB in size. [...] [I]f you need 256 MB of swap, you can create two 128-MB swap partitions." (M. Welsh & L. Kaufman, Running Linux, 2e, 1996, p. 49)

  • @angstrom said:
    Hi Everyone,

    I've used tinyurl.com a number of times before, and of course there are well-known competitors such as bitly.com, but recently, I've thought about trying to self-host a URL shortener, mainly intended for private use (for a group of users), and not intended as a public URL shortener for everyone to use (though this may be an interesting experiment to try out sometime).

    Do any of you have experience with self-hosting a URL shortener?

    My need is basically the following: given a link such as

    http://mydomain.org/pub/documents/a-pdf-file-with-a-rather-long-name.pdf,

    shorten this to something like

    http://mydomain.org/123cba.

    Naturally, the domain name itself (here: mydomain.org) couldn't be shortened in this case (unless I got a new domain name!).

    I'm looking at YOURLS (https://yourls.org/), which is PHP-based and appears to be well-maintained. It needs a MySQL database, but some kind of database would be needed anyway.

    Do any of you have other recommendations? (Needless to say, I'd like to keep it as simple as possible.)

    If you know how to program, then my recommendation is to do it yourself. That's what I did and it works fine. Opening it to public is not recommended, specially with google or any popular captcha as they can be bypassed with special scripts.

    @CamoYoshi said:
    I would recommend Yourls. It would work well. Just make sure to monitor it like a hawk. I ran a instance for a week with a Captcha and about 50% of my links were for used for spamming, so I would not recommend leaving it open to the public.

    That is a very good premade script.

    @AnthonySmith said:
    Sorry to hijack but I wonder how responsible you can be for redirected URL's if you yourself only offer the redirection service.

    I also wonder what mitigation could be used e.g. free tier the link is only live for 250 clicks making is pointless for spamzors to use

    Your domain will get flagged for linking to scam sites, malware, child porn and so on... Linking to warez is the best possible outcome.

    @angstrom said:

    @AnthonySmith said:
    Sorry to hijack but I wonder how responsible you can be for redirected URL's if you yourself only offer the redirection service.

    I also wonder what mitigation could be used e.g. free tier the link is only live for 250 clicks making is pointless for spamzors to use

    Okay, I see: you're asking about how one would make the service less attractive to spammers.

    This is a good question, and I haven't yet thought much about it, but in my particular use case (for a small group of users on a server that I manage), I don't envision having a publicly accessible page at all, so I hope to avoid the spam problem completely. But I have yet to install a URL shortener, so I'll have to see how this works in practice!

    As long as you protect the url generation with password or keyphrase or something only your small group of users knows, it'll work out fine.

    Thanked by (1)angstrom
  • AnthonySmithAnthonySmith AdministratorHosting Provider

    @somik I guess so, I suppose it’s the same as tor in that regard, you setup a relay or exit, you probably facilitate peados, moral dilemmas.

    Inception Hosting - 256MB OpenVZ VPS back in stock for €8.00 p/year - DEDICATED IP4 + /64 IPv6 https://clients.inceptionhosting.com/cart.php?a=add&pid=177
    Please do not use the PM system here for Inception Hosting support issues.

  • @AnthonySmith said:
    @somik I guess so, I suppose it’s the same as tor in that regard, you setup a relay or exit, you probably facilitate peados, moral dilemmas.

    Which is why I coded my own url shortener and combined it with domain block list. That way I can at-least avoid redirecting to most known domains. It also sends me a message over telegram when someone generates a link so I can check if something shady is going on.

    Your idea of limiting the number of visits to a single link is very good though, however they can simply generate multiple times to circumvent that...

  • @somik said:
    It also sends me a message over telegram when someone generates a link so I can check if something shady is going on.

    Someone is going to generate a link to a virus page and infest you when you visit the page to check.

    Using boxes from SmartHost, Gullo, Evolution Host, MaxKVM, Virmach, summer-host.

  • somiksomik OG
    edited September 11

    @yoursunny said:

    @somik said:
    It also sends me a message over telegram when someone generates a link so I can check if something shady is going on.

    Someone is going to generate a link to a virus page and infest you when you visit the page to check.

    Given my domain blocklist for shorturl service, it is not very likely. Moreover, my phone browser is protected with uBlock Origin and the phone itself is connected to a always on DNS blocking VPN. But, shit happens. All I can do is wipe the phone when it happens it and move on.

  • I'm watching this thread.
    The thing is... Once I set it up, I want the URLs to live forever. That's.... Quite a long term commitment

    Thanked by (2)angstrom yoursunny
  • @vimalware said:
    I'm watching this thread.
    The thing is... Once I set it up, I want the URLs to live forever. That's.... Quite a long term commitment

    Right, that's the forever-problem, which is basically unsolvable. :)

    To tell the truth, I'm still a bit on the fence with respect to URL shorteners: for me, it's not so much a question of how to solve the forever-problem (which I can't solve), but even something like a 10-year commitment may be challenging. People change, priorities change, jobs change, servers change.

    In my use case, it would be shortened links of longer links to documents on a particular server, so the idea is that as long as that server is around, the shortened links should work, but if the server is no longer around, then none of the links (even the longer links) would work.

    I find the idea of self-hosting a private URL shortener attractive, but at the same time, I'm not rushing into it.

    It's also the case that the "long links" on this server aren't so long by some measures: they're not longer than a normal line of text, so this may not be so bad after all.

    "A single swap file or partition may be up to 128 MB in size. [...] [I]f you need 256 MB of swap, you can create two 128-MB swap partitions." (M. Welsh & L. Kaufman, Running Linux, 2e, 1996, p. 49)

  • RahulRahul OG
    edited September 11

    @angstrom said: Right, that's the forever-problem, which is basically unsolvable.

    Yes, domain part is surely tricky ( maybe a multi year deal, this coming BF maybe ? ) but surely @MikePT can help with web space ( Best effort ),

    Mini Shared Hosting, 2 GB SSD, LA or DE, 9.99€ LIFETIME - In stock

    https://talk.lowendspirit.com/discussion/1622/pay-only-once-for-your-da-based-shared-9-99-lifetime-and-reseller-hosting-80-lifetime-la-or-de

  • This is a pretty basic stack, it's the minimum barebones equivalent of node|python|whatever/postgres = php/mysql

  • https://polrproject.org/ is very good, or if you want to host it on shared web hosting you can use my friend's one: https://github.com/IbraaMx/Linktree-clone

  • AnthonySmithAnthonySmith AdministratorHosting Provider

    Hmm, never considered the 10 year problem, makes me wonder how much use a 30 day URL would be as a service.

    Inception Hosting - 256MB OpenVZ VPS back in stock for €8.00 p/year - DEDICATED IP4 + /64 IPv6 https://clients.inceptionhosting.com/cart.php?a=add&pid=177
    Please do not use the PM system here for Inception Hosting support issues.

  • Hello,

    I wrote a Self hosted URL shortener a little while back and I’ve not done anything with it. It’s not currently hosted at the moment but I would be willing to pass it on to someone else, and set it up for you if we could come to a deal?



  • mikhomikho Hosting ProviderOG

    @jamesmd said:
    Hello,

    I wrote a Self hosted URL shortener a little while back and I’ve not done anything with it. It’s not currently hosted at the moment but I would be willing to pass it on to someone else, and set it up for you if we could come to a deal?



    github it?

    Get 4 or more NAT servers (mix/match between packages) and get a 20 % recurring discount. https://clients.mrvm.net

  • I’d be happy to open the project, it’s currently private. I’d need to document the setup process etc and it’s not the most straight forward to host. Ideally you need multiple servers and MySQL replication setup as master -> slave. It’s not 100% necessary but I built it to scale as I planned on doing something with it.

  • @jamesmd said: I wrote a Self hosted URL shortener a little while back and I’ve not done anything with it. It’s not currently hosted at the moment but I would be willing to pass it on to someone else, and set it up for you if we could come to a deal?

    Assuming that you're addressing me, I was rather looking for a free-software solution that I could install myself. This said, your product looks nice (but may be overkill for my needs).

    "A single swap file or partition may be up to 128 MB in size. [...] [I]f you need 256 MB of swap, you can create two 128-MB swap partitions." (M. Welsh & L. Kaufman, Running Linux, 2e, 1996, p. 49)

  • edited September 12

    @AmirGT said:
    https://polrproject.org/ is very good,

    I glanced at this software, but it hasn't been updated since May 2017, and so I wasn't sure whether it was an abandoned project or just super stable.

    or if you want to host it on shared web hosting you can use my friend's one: https://github.com/IbraaMx/Linktree-clone

    Frankly, I'm not sure what this project is, which was uploaded only yesterday.

    "A single swap file or partition may be up to 128 MB in size. [...] [I]f you need 256 MB of swap, you can create two 128-MB swap partitions." (M. Welsh & L. Kaufman, Running Linux, 2e, 1996, p. 49)

Sign In or Register to comment.