51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Docker搭建自己的短链接服务-YOURLS

前言 {#前言}

现在经常会分享很长的链接,但是分享和修改起来很不方便,所以想着搭建一个短链接服务,经过网上搜索和体验,最终选择了 YOURLS。

YOURLS 是一组PHP脚本,允许您在服务器上运行自己的URL缩短器。你将完全控制您的数据、详细统计数据、分析、插件等。它是免费和开源的。

功能特性:

  • 私有与共享: 根据您的需求,选择仅自己使用的私有模式,或允许每个人创建短链接的公共模式,适用于Intranet环境。
  • 灵活的URL管理: 支持从1到n的顺序排列,或自定义URL关键字,让您的链接管理更加个性化。
  • 便捷的书签记录: 类似书签的记录方式,让您轻松缩短和共享链接,提升工作效率。
  • 详尽的统计分析: 提供历史点击报告、引荐来源跟踪、访问者地理位置等统计信息,帮助您深入了解链接的使用情况。
  • 强大的插件系统: 出色的插件架构,让您能够轻松添加新功能,满足不断变化的需求。
  • 开发者友好的API: 支持开发人员API,方便集成和自动化处理。
  • 全面的jsonp支持: 确保与各种客户端的兼容性,提供更广泛的使用场景。
  • 简易安装: 友好的安装流程,让您快速启动并运行服务。
  • 个性化公共界面: 提供示例文件,帮助您创建自己的公共短链接界面,满足特定需求。

docker-yourls-1.png

docker-yourls-2.png

docker-yourls-3.png

相关准备/链接 {#相关准备-链接}

部署 {#部署}

建议采用 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 进行访问。

docker-yourls-4.png

直接点击【Install YOURLS】安装,安装完毕后,点击【YOURLS Administration Page】访问,输入你设置的用户名和密码,点击【Login】登录即可。

docker-yourls-5.png

docker-yourls-6.png

docker-yourls-7.png

然后就可以直接在 Enter the URL 中输入你的 url 链接,点击【Short The URL】就可以生成 URL 链接了,也可以自定义你的 URL 后缀。

默认生成的链接是按照数字升序,如果想要用随机字母数字的Hash值,可点击【Manage Plugins】,选中【Random ShortURLs】插件,点击【Activate】激活该插件即可。

docker-yourls-8.png

其他 {#其他}

汉化 {#汉化}

中文语言包下载地址:https://github.com/taozhiyu/yourls-translation-zh_CN

中文语言包备用下载地址:https://drive.fjy.zone/Static/YOURLS-zh_CN.zip

下载(解压)后会有两个文件:zh_CN.pozh_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 downdocker compose up -d ,重新起一下容器即可。

docker-yourls-9.png

docker-yourls-10.png

插件 {#插件}

更多插件访问链接:https://github.com/YOURLS/awesome#plugins

包含用户认证、IP限制访问、API支持、二维码生成等各种插件,大家可以自己安装尝试一下。

在使用的时候,发现只允许输入http、https开头的链接才能生成短链,所以开发了一个插件:https://github.com/junyangfan/yourls-any-url-plugin

按照文章安装该插件并激活就允许输入任意链接了,比如:weixin://xxxxxxalipay://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 对应的文件/文件夹即可
=======================



视频链接 {#视频链接}

赞(1)
未经允许不得转载:工具盒子 » Docker搭建自己的短链接服务-YOURLS