如何搭建一个自己的短链接服务

短链接服务是一种在线工具,可以将长URL缩短为更短的URL,方便在社交媒体平台、短信、邮件等场景下分享。通过短链接服务,用户可以将原本冗长复杂的URL简化为易于记忆和分享的短链接,提高链接的可访问性和可分享性。同时,短链接服务也可以提供统计分析功能,帮助用户了解链接的点击量、来源、地域等信息,为用户提供数据支持和决策依据。

短链接服务的工作原理比较简单,通常采用URL重定向技术,将用户输入的短链接映射到原始的长URL,并且将用户重定向到原始URL的网页。这个过程对于用户来说是透明的,用户只需要点击短链接即可访问原始URL的网页。

有很多提供短链接服务的网站,那为什么还要自己搭建呢?答案是因为免费的短链接服务缩短的URL后缀无法自定义,这样也不利于我们自己记忆,但当我们有了一个自己的短链接服务时我们就可以随意自定义后缀,比如我自己的短链接服务url.zyh8.com,缩短后我可以自定义后缀:url.zyh8.com/a 这样是不是就更方便记忆了呢?

接下来我就手把手教大家如何搭建吧!

1.准备一个域名

如果你不介意的话也可以直接通过IP地址进行访问,不过这样可能会不安全,但如果你一个人用的话问题也不是很大。不排除有会被攻击的风险哦!

给大家介绍3个注册域名的方法:

2.获得一台服务器

如果家里有闲置的设备,那可以在本地搭建好后配置内网穿透即可在公网使用,内网穿透可以参考我的这篇文章:非常好用的内网穿透工具CloudFlare Tunnel

你也可以购买云服务器,建议购买海外的,不用实名认证和ICP备案,不然搭建好了也访问不了。

在开始安装短链接服务之前你需要先安装好docker,如果你使用的是Linux系统可以参考我的这篇文章安装:安装docker &&docker compase

开始安装

本教程用到Kutt这个开源项目,Github仓库链接:免费的现代URL缩短器

首先创建一个docker-compose.yml文件nano docker-compose.yml

version: "3"

services:
  kutt:
    image: kutt/kutt
    depends_on:
      - postgres
      - redis
    command: ["./wait-for-it.sh", "postgres:5432", "--", "npm", "start"]
    ports:
      - "3000:3000"    #设置端口映射 ,假如你要映射到外部3001端口则修改为"3001:3000"
    env_file:
      - .env
    environment:
      DB_HOST: postgres
      DB_NAME: kutt
      DB_USER: user
      DB_PASSWORD: pass
      REDIS_HOST: redis

  redis:
    image: redis:6.0-alpine
    volumes:
      - redis_data:/data

  postgres:
    image: postgres:12-alpine
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: kutt
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  redis_data:
  postgres_data:

建议修改文件中user和password的相关参数,请注意:数据库账户密码必须对应,否则无法连接到数据库

创建一个.env文件nano .env

# App port to run on
PORT=3000

# The name of the site where Kutt is hosted
SITE_NAME=Kutt

# The domain that this website is on
DEFAULT_DOMAIN=localhost:3000

# Generated link length
LINK_LENGTH=6

# Postgres database credential details
DB_HOST=postgres
DB_PORT=5432
DB_NAME=postgres
DB_USER=
DB_PASSWORD=
DB_SSL=false

# Redis host and port
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=

# Disable registration
DISALLOW_REGISTRATION=false

# Disable anonymous link creation
DISALLOW_ANONYMOUS_LINKS=false

# The daily limit for each user
USER_LIMIT_PER_DAY=50

# Create a cooldown for non-logged in users in minutes
# Set 0 to disable
NON_USER_COOLDOWN=0

# Max number of visits for each link to have detailed stats
DEFAULT_MAX_STATS_PER_LINK=5000

# Use HTTPS for links with custom domain
CUSTOM_DOMAIN_USE_HTTPS=false

# A passphrase to encrypt JWT. Use a long and secure key.
JWT_SECRET=securekey

# Admin emails so they can access admin actions on settings page
# Comma seperated
ADMIN_EMAILS=

# Invisible reCaptcha secret key
# Create one in https://www.google.com/recaptcha/intro/
RECAPTCHA_SITE_KEY=
RECAPTCHA_SECRET_KEY=

# Google Cloud API to prevent from users from submitting malware URLs.
# Get it from https://developers.google.com/safe-browsing/v4/get-started
GOOGLE_SAFE_BROWSING_KEY=

# Your email host details to use to send verification emails.
# More info on http://nodemailer.com/
# Mail from example "Kutt <[email protected]>". Leave empty to use MAIL_USER
MAIL_HOST=
MAIL_PORT=
MAIL_SECURE=true
MAIL_USER=
MAIL_FROM=
MAIL_PASSWORD=

# The email address that will receive submitted reports.
REPORT_EMAIL=

# Support email to show on the app
CONTACT_EMAIL=

请根据注释进行配置,必须配置的项目有:

  • DEFAULT_DOMAIN:kutt 实例的域
  • DB_:数据库凭证(当您使用 docker-compose 时,您可以跳过这些凭证)
  • ADMIN_EMAILS:管理员帐户的电子邮件地址
  • RECAPTCHA_:输入您的凭据以使用 reCaptchas 或删除此设置(如果您不想使用它)
  • MAIL_:输入 SMTP 服务器的凭据
  • REPORT_EMAIL:Kutt提供了一个表格来报告发送到此邮件地址的恶意链接

Smtp服务器该如何配置?

如果你有qq邮箱,可以按照如下操作进行配置,其他邮箱配置大同小异

在QQ邮箱的设置->账户中开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

  • MAIL_HOST= smtp.qq.com #填写你邮箱的发件服务器地址
  • MAIL_PORT= 465 #发件服务器端口
  • MAIL_USER= #填写你的电子邮件地址
  • MAIL_FROM= #填写你的电子邮件地址
  • MAIL_PASSWORD=#填写您的访问密码

全部配置完成后使用以下命令启动容器,确保您当前目录下已经有了docker-compose.yml .env两个文件

docker-compose up -d

现在你可以访问你的服务器IP或域名加端口就可以使用您的短链接服务了,如果需要启用https连接那么你需要使用反向代理,关于反向代理可以参考我的这篇教程: 使用Docker 部署强大的反向代理服务器Nginx Proxy Manager

恭喜你已经成功获得了一个自己的短链接服务,快去享受吧!

智云海Telegram频道
技术支持:[email protected]
站长E-mail:[email protected]
如需转载,请注明文章出处
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇