短链接服务是一种在线工具,可以将长URL缩短为更短的URL,方便在社交媒体平台、短信、邮件等场景下分享。通过短链接服务,用户可以将原本冗长复杂的URL简化为易于记忆和分享的短链接,提高链接的可访问性和可分享性。同时,短链接服务也可以提供统计分析功能,帮助用户了解链接的点击量、来源、地域等信息,为用户提供数据支持和决策依据。
短链接服务的工作原理比较简单,通常采用URL重定向技术,将用户输入的短链接映射到原始的长URL,并且将用户重定向到原始URL的网页。这个过程对于用户来说是透明的,用户只需要点击短链接即可访问原始URL的网页。
有很多提供短链接服务的网站,那为什么还要自己搭建呢?答案是因为免费的短链接服务缩短的URL后缀无法自定义,这样也不利于我们自己记忆,但当我们有了一个自己的短链接服务时我们就可以随意自定义后缀,比如我自己的短链接服务url.zyh8.com
,缩短后我可以自定义后缀:url.zyh8.com/a
这样是不是就更方便记忆了呢?
接下来我就手把手教大家如何搭建吧!
1.准备一个域名
如果你不介意的话也可以直接通过IP地址进行访问,不过这样可能会不安全,但如果你一个人用的话问题也不是很大。不排除有会被攻击的风险哦!
给大家介绍3个注册域名的方法:
- 免费注册一年的.link顶级域名:Find Your Free Domain (dynadot.com)
- 免费注册eu.org二级域名nic.eu.org审核时间较长,一到两个月不等。
- 无需实名与备案,到namesilo注册,推荐的原因是他们家的价格比较便宜
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
恭喜你已经成功获得了一个自己的短链接服务,快去享受吧!