前言 {#前言}
现在经常会分享很长的链接,但是分享和修改起来很不方便,所以想着搭建一个短链接服务,经过网上搜索和体验,最终选择了 YOURLS。
YOURLS 是一组PHP脚本,允许您在服务器上运行自己的URL缩短器。你将完全控制您的数据、详细统计数据、分析、插件等。它是免费和开源的。
功能特性:
- 私有与共享: 根据您的需求,选择仅自己使用的私有模式,或允许每个人创建短链接的公共模式,适用于Intranet环境。
- 灵活的URL管理: 支持从1到n的顺序排列,或自定义URL关键字,让您的链接管理更加个性化。
- 便捷的书签记录: 类似书签的记录方式,让您轻松缩短和共享链接,提升工作效率。
- 详尽的统计分析: 提供历史点击报告、引荐来源跟踪、访问者地理位置等统计信息,帮助您深入了解链接的使用情况。
- 强大的插件系统: 出色的插件架构,让您能够轻松添加新功能,满足不断变化的需求。
- 开发者友好的API: 支持开发人员API,方便集成和自动化处理。
- 全面的jsonp支持: 确保与各种客户端的兼容性,提供更广泛的使用场景。
- 简易安装: 友好的安装流程,让您快速启动并运行服务。
- 个性化公共界面: 提供示例文件,帮助您创建自己的公共短链接界面,满足特定需求。
相关准备/链接 {#相关准备-链接}
- 服务器/VPS
- 域名
- 服务器安装 Docker 环境
- Caddy、Nginx、Nginx Proxy Manager 等反代服务
- YOURLS文档:https://yourls.org/
- GitHub项目地址:https://github.com/YOURLS/YOURLS
- 插件库:https://github.com/YOURLS/awesome#plugins
部署 {#部署}
建议采用 Docker 的方式进行部署。
docker-compose.yml 配置文件如下:
version: "3"
services:
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=your-pw
- MYSQL_DATABASE=yourls
- MYSQL_USER=yourls
- MYSQL_PASSWORD=yourls
volumes:
- ./mysql/db/:/var/lib/mysql
- ./mysql/conf/:/etc/mysql/conf.d
restart: always
container_name: yourls_mysql
`yourls:
image: yourls
restart: always
ports:
- "8200:80" # 可自定义左侧宿主机端口(未被占用的)
environment:
YOURLS_DB_HOST: mysql
YOURLS_DB_USER: yourls
YOURLS_DB_PASS: yourls
YOURLS_DB_NAME: yourls
YOURLS_USER: admin # 自己设置用户名
YOURLS_PASS: admin # 自己设置登录密码
YOURLS_SITE: https://u.jyf.zone # 换成你自己的域名
YOURLS_HOURS_OFFSET: 8
volumes:
- ./yourls_data/:/var/www/html`
`
container_name: yourls_service
links:
- mysql:mysql
`
然后在 docker-compose.yml 文件的目录下执行下面命令即可启动容器:
docker compose up -d
如果国内的服务器拉取镜像失败,可以参考文章:免费 API 代理服务,使用 DockerHub 代理先拉取镜像,再执行命令。
配置反向代理 {#配置反向代理}
Docker 容器运行成功后,可以配置反向代理,用域名进行访问,Nginx 配置示例如下:
server {
server_name u.jyf.zone;
listen 443 ssl http2;
ssl_certificate <SSL证书路径>.cer;
ssl_certificate_key <SSL证书路径>.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
listen 80;
if ($scheme = http) {
return 301 https://$host:443$request_uri;
}
location / {
proxy_pass http://127.0.0.1:8200;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_redirect http:// https://;
}
}
使用 {#使用}
Docker 运行成功后可通过 http://IP:8200/admin
进行访问,如果配置了 Nginx,可使用 https://域名/admin
进行访问。
直接点击【Install YOURLS】安装,安装完毕后,点击【YOURLS Administration Page】访问,输入你设置的用户名和密码,点击【Login】登录即可。
然后就可以直接在 Enter the URL 中输入你的 url 链接,点击【Short The URL】就可以生成 URL 链接了,也可以自定义你的 URL 后缀。
默认生成的链接是按照数字升序,如果想要用随机字母数字的Hash值,可点击【Manage Plugins】,选中【Random ShortURLs】插件,点击【Activate】激活该插件即可。
其他 {#其他}
汉化 {#汉化}
中文语言包下载地址:https://github.com/taozhiyu/yourls-translation-zh_CN
中文语言包备用下载地址:https://drive.fjy.zone/Static/YOURLS-zh_CN.zip
下载(解压)后会有两个文件:zh_CN.po
、zh_CN.mo
在启动容器的时候,我们添加了相关的容器卷映射,所以在 yourls 项目的 docker-compose.yml
文件相同目录下会有 yourls_data
的文件夹。
在 docker-compose.yml
文件相同目录下执行 docker compose down
命令,停止容器,
然后把上面解压后的两个文件放到 yourls_data/user/languages
文件夹下面。
方式一 {#方式一}
编辑 yourls_data/user/config.php
文件,修改内容如下:
/** YOURLS language
** Change this setting to use a translation file for your language, instead of the default English.
** That translation file (a .mo file) must be installed in the user/language directory.
** See http://yourls.org/translations for more information */
define( 'YOURLS_LANG', getenv('YOURLS_LANG') ?: 'zh_CN' );
只需把 define( 'YOURLS_LANG', getenv('YOURLS_LANG') ?: '' );
修改为 define( 'YOURLS_LANG', getenv('YOURLS_LANG') ?: 'zh_CN' );
即可
修改这个文件的目的是把 YOURLS 项目的默认语言设置为中文。
然后在 yourls 项目的 docker-compose.yml
文件相同目录下执行命令 docker compose up -d
启动容器访问即可
方式二 {#方式二}
编辑 docker-compose.yml
文件,修改内容如下:
version: "3"
services:
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=your-pw
- MYSQL_DATABASE=yourls
- MYSQL_USER=yourls
- MYSQL_PASSWORD=yourls
volumes:
- ./mysql/db/:/var/lib/mysql
- ./mysql/conf/:/etc/mysql/conf.d
restart: always
container_name: yourls_mysql
yourls:
image: yourls
restart: always
ports:
- "8200:80" # 可自定义左侧宿主机端口(未被占用的)
environment:
YOURLS_DB_HOST: mysql
YOURLS_DB_USER: yourls
YOURLS_DB_PASS: yourls
YOURLS_DB_NAME: yourls
YOURLS_USER: admin # 自己设置用户名
YOURLS_PASS: admin # 自己设置登录密码
YOURLS_SITE: https://u.jyf.zone # 换成你自己的域名
YOURLS_HOURS_OFFSET: 8
YOURLS_LANG: zh_CN # 新增这一行,指定项目的语言
volumes:
- ./yourls_data/:/var/www/html
container_name: yourls_service
links:
- mysql:mysql
然后在 yourls 项目的 docker-compose.yml
文件相同目录下执行命令 docker compose up -d
启动容器访问即可
其他语言下载地址:https://github.com/YOURLS/awesome?tab=readme-ov-file#translations
更换主题 {#更换主题}
更多主题下载地址:https://github.com/YOURLS/awesome?tab=readme-ov-file#themes
Sleeky主题下载地址:https://github.com/Flynntes/Sleeky
Sleeky主题备用下载地址:https://drive.fjy.zone/Static/YOURLS-Sleeky.zip
下载(解压)后有两个文件夹:sleeky-backend、sleeky-frontend
将 sleeky-backend
上传到 yourls_data/user/plugins
目录中,
将 sleeky-frontend
文件夹中的 frontend
文件夹和 index.php
文件上传到 yourls_data
目录中。
在 yourls 项目的 docker-compose.yml
文件相同目录下执行命令 docker compose restart
启动容器,
然后访问 https://域名
,你就会发现前台页面已经变更。进入到后台,管理插件,会有一个 Sleeky Backent
的插件,启用激活后,后台的主题也就变了。
如果不生效的话,执行命令:
docker compose down
和docker compose up -d
,重新起一下容器即可。
插件 {#插件}
更多插件访问链接:https://github.com/YOURLS/awesome#plugins
包含用户认证、IP限制访问、API支持、二维码生成等各种插件,大家可以自己安装尝试一下。
在使用的时候,发现只允许输入http、https开头的链接才能生成短链,所以开发了一个插件:https://github.com/junyangfan/yourls-any-url-plugin
按照文章安装该插件并激活就允许输入任意链接了,比如:weixin://xxxxxx
、alipay://xxxxxx
更新/卸载 {#更新-卸载}
更新 {#更新}
# 进入 yourls 项目的 `docker-compose.yml` 文件的目录下,执行下面命令
拉取新镜像
=====
docker compose pull
更新项目容器
======
docker compose up -d
删除未被使用的镜像(prune 命令用来删除不再使用的 docker 对象。删除所有未被 tag 标记和未被容器使用的镜像)
==============================================================
docker image prune
卸载 {#卸载}
# 进入 yourls 项目的 `docker-compose.yml` 文件的目录下,执行下面命令
docker compose down
然后删除 yourls 对应的文件/文件夹即可
=======================