标签: 短链接

  • 打造专属个人短链接平台 YOURLS 自建指南以及主题配置

    打造专属个人短链接平台 YOURLS 自建指南以及主题配置

    在互联网营销、社交媒体分享以及数据追踪中,短链接的作用不可小觑。然而,依赖第三方服务往往面临数据隐私泄露、品牌展示受限以及昂贵的 API 调用成本。YOURLS (Your Own URL Shortener) 是一款久经考验、功能强大的开源 PHP 程序,它能让你在几分钟内搭建起一个完全属于自己的短链接平台。

    简介

    YOURLS 解决了用户对短链接底层数据控制权的渴望。通过自建服务,你可以使用自己的品牌域名(如 yourbrand.co/sale),确保链接在社交平台上的信任度。同时,它规避了第三方服务随时可能倒闭或封禁域名的风险,让每一条短链接的生命周期都掌握在自己手中。

    核心功能

    • 完全私有化控制 🔒:支持私有模式(仅自己使用)或公开模式(允许他人缩短链接)。
    • 详尽的数据统计 📈:提供实时点击量、历史趋势、地理位置分布(GeoIP)以及来源(Referrer)分析。
    • 强大的 API 支持 ⚙️:原生提供 RESTful API,方便集成到自定义应用、浏览器扩展或 WordPress 中。
    • 丰富的插件生态 🧩:拥有数百个社区插件,支持自定义 URL 规则、安全过滤、LDAP 认证等。
    • 简洁的管理界面 🖥️:基于 AJAX 的后台管理,操作流畅,支持批量编辑与搜索。
    • 开发者友好 🛠️:基于经典的 PHP+MySQL 架构,代码易于二次开发与维护。

    视觉辅助

    特性维度YOURLS (自建)第三方服务
    数据所有权完全归属用户 🙋‍♂️归属平台商 🏢
    品牌域名支持无限自定义域名 🏷️通常需要付费订阅 💰
    统计深度原始点击数据,永久保存 📅免费版通常有时间限制 ⏳
    扩展性支持插件与代码修改 🛠️仅限官方提供的功能 🧱
    成本仅需基础 VPS 费用 ☁️高级功能月费昂贵 💸

    准备工作

    在部署 YOURLS 之前,请确保你的服务器环境满足以下要求:

    1. Web 服务器:Apache (需开启 mod_rewrite) 或 Nginx。
    2. PHP 版本:PHP 7.4 或更高版本。
    3. 数据库:MySQL 5.0 或 MariaDB。
    4. 域名:一个较短的域名(例如 s.yourname.com)。
    5. 核心扩展:PHP 的 curl, gd, mysql 等标准扩展。

    部署步骤

    YOURLS 提供了传统的源码部署方案以及现代化的容器化部署方案。

    1. 宝塔面板部署 (推荐)

    步骤 1:下载并解压

    Releases 页面下载源码,将文件解压至服务器中。

    步骤 2:配置数据库后台账户密码

    进入 user 目录 打开 config-sample.php 原版本是英文可参考如下中文版本的

    注释修改版本
    <?php
    /* 这是一个示例配置文件。
     * 请使用你自己的配置修改此文件,并将其保存为 "config.php"
     *
     * 重要提示:请使用纯文本编辑器(如 Mac OS 的 TextEdit 或 Windows 的记事本)
     * 将此文件编辑并保存为纯 ASCII 文本格式。确保文件开头的 <?php 之前没有任何字符。
     */
    
    /*
     ** MySQL 数据库设置 - 你可以从虚拟主机服务商处获取这些信息
     */
    
    /** MySQL 数据库用户名 */
    define( 'YOURLS_DB_USER', '填写数据库用户名' );
    
    /** MySQL 数据库密码 */
    define( 'YOURLS_DB_PASS', '填写数据库密码' );
    
    /** YOURLS 所用的数据库名称
     ** 仅允许使用小写字母 [a-z]、数字 [0-9] 和下划线 [_] */
    define( 'YOURLS_DB_NAME', '填写数据库名称' );
    
    /** MySQL 数据库主机地址
     ** 如果使用非标准端口,请按此格式填写 '主机名:端口',例如 'localhost:9999' 或 '127.0.0.1:666' */
    define( 'YOURLS_DB_HOST', 'localhost' );
    
    /** MySQL 数据表前缀
     ** YOURLS 会使用此前缀创建数据表(例如 `yourls_url`、`yourls_options` 等)
     ** 仅允许使用小写字母 [a-z]、数字 [0-9] 和下划线 [_] */
    define( 'YOURLS_DB_PREFIX', 'yourls_' );
    
    /*
     ** 站点配置选项
     */
    
    /** YOURLS 安装地址
     ** 全部使用小写字母,末尾不要加斜杠。
     ** 如果你将其定义为 "https://sho.rt",则不要在浏览器中使用 "https://www.sho.rt"(反之亦然)
     ** 如果使用国际化域名(例如 https://héhé.com),请在此填写其 ASCII 形式(例如 https://xn--hh-bjab.com) */
    define( 'YOURLS_SITE', 'https://your-own-domain-here.com' );
    
    /** YOURLS 语言设置
     ** 修改此配置可使用对应语言的翻译文件,替代默认的英文。
     ** 翻译文件(.mo 格式)必须安装在 user/language 目录下。
     ** 更多信息请参考:https://yourls.org/translations */
    define( 'YOURLS_LANG', '' );
    
    /** 是否允许同一个长链接对应多个短链接
     ** 设置为 true:仅允许一对短链接/长链接(YOURLS 默认行为)
     ** 设置为 false:允许多个短链接指向同一个长链接(类似 bit.ly 的行为) */
    define( 'YOURLS_UNIQUE_URLS', true );
    
    /** 私有模式:后台管理区域将受以下定义的账号密码保护。
     ** 设置为 false 则为公共模式(例如在受限内网或测试环境中使用)
     ** 若不确定,请参考:https://yourls.org/privatepublic */
    define( 'YOURLS_PRIVATE', true );
    
    /** 用于加密 Cookie 的随机密钥。无需记忆,建议设置为长且复杂的字符串
     ** 提示:可从 https://yourls.org/cookie 生成随机密钥 */
    define( 'YOURLS_COOKIEKEY', 'modify this text with something random' );
    
    /** 允许访问站点的用户名和密码。密码可填写明文或加密哈希值
     ** YOURLS 会自动将此文件中的明文密码加密
     ** 更多信息请参考:https://yourls.org/userpassword */
    $yourls_user_passwords = [
        'username' => 'password',
        // 'username2' => 'password2',
        // 你可以添加一行或多行 '用户名'=>'密码' 配置
    ];
    
    /** URL 缩短规则:36 进制或 62 进制
     ** 36:生成纯小写字母的短链接关键词(例如:13jkm)
     ** 62:生成大小写混合的短链接关键词(例如:13jKm 或 13JKm)
     ** 更多信息请参考:https://yourls.org/urlconvert */
    define( 'YOURLS_URL_CONVERT', 36 );
    
    /** 调试模式:输出部分内部运行信息
     ** 生产环境默认设为 false。编写代码或提交 Bug 前可启用 */
    define( 'YOURLS_DEBUG', false );
    
    /**
    * 保留关键词(确保生成的短链接不会匹配这些词)
    * 在此定义禁用、不希望出现或可能引起误解的关键词。
    */
    $yourls_reserved_URL = [
        'porn',      // 色情
        'faggot',    // 侮辱性词汇
        'sex',       // 性
        'nigger',    // 种族歧视词汇
        'fuck',      // 脏话
        'cunt',      // 脏话
        'dick',      // 脏话
    ];
    
    /*
     ** 自定义配置可写在下方。
     */
    代码行常量名含义对应填写内容
    第 14 行YOURLS_DB_USER数据库用户名你的 MySQL 用户名(如 root 或自定义用户名)
    第 17 行YOURLS_DB_PASS数据库密码你的 MySQL 密码
    第 21 行YOURLS_DB_NAME数据库名你为 YOURLS 新建的数据库名称(默认 yourls
    第 26 行YOURLS_DB_HOST数据库地址一般是 localhost,如果是远程数据库填对应 IP
    第 30 行YOURLS_DB_PREFIX表前缀数据库表名前缀,默认 yourls_ 即可

    接下来是配置,站点地址、中文设置、随机密钥、后台账号密码。

    这里是设置账号与密码的参考如下。

    $yourls_user_passwords = [
        '用户名' => '密码',
        // 'username2' => 'password2',
        // You can have one or more 'login'=>'password' lines
    ];

    访问获取Cookie:https://yourls.org/cookie

    下载翻译包:https://github.com/YOURLS/awesome#Translations 链接直达中文版:Simplified Chinese (zh_CN)。

    翻译包上传至 /user/languages 目录并解压,之后进入压缩包文件将 zh_CN.mozh_CN.po 复制到 /user/languages 目录下。

    设置完毕应该是我这样。

    最后一步将 config-sample.php 重命名为 config.php

    步骤 3:配置 Web 服务器伪静态

    location / {
      try_files $uri $uri/ /yourls-loader.php$is_args$args;
      # 如果YOURLS安装在Windows中,请更改路径
      # 到yourls-loader.php,例如, eg
      # try_files $uri $uri/ /subdir/yourls-loader.php$is_args$args;
    }

    步骤 4:访问地址进入安装页面

    访问:域名 /admin 进入安装页面

    这样就代表已经部署完毕可正常使用。目前没配置前台主题所以前台会打不开。

    安装主题:

    进入文档:https://github.com/YOURLS/awesome#Themes

    建议使用Sleeky主题 地址直达:Flynntes/Sleeky

    然后将压缩包解压至服务器中进入后会有俩个文件非别为前台主题和后台主题插件(可以自行选择安装)

    sleeky-backend 插件包 移动到 插件目录 /user/plugins 粘贴

    然后将前台包 sleeky-frontend 里面的文件移动至 网址目录下如图

    然后访问前台就会发现可以打开了

    前台主题的内容在 /frontend/config.php 中修改

    注释修改为版本
    <?php 
    // 配置项 - 这些参数控制网站的外观和细节。更多细节请参考官方文档。
    
    // 通用设置
    
    // 网站页面标题
    define('title', 'Sleeky theme for YOURLS'); 
    
    // 网站简短标题,用于页脚和部分子页面
    define('shortTitle', 'Sleeky');
    
    // 网站描述,显示在首页
    define('description', 'A quick description on why your site is so fantastic, what it does and why people should definitely start using it. Oh, and how it’s free.'); 
    
    // 网站/favicon图标路径
    define('favicon', '/frontend/assets/img/favicon.ico');
    
    // 网站logo路径,显示在首页
    define('logo', '/frontend/assets/img/logo-black.png');
    
    // 启用reCAPTCHA V3验证
    // 强烈建议启用reCAPTCHA V3,可有效阻止垃圾信息。你可从以下地址获取站点密钥和密钥:https://www.google.com/recaptcha/admin/create
    define("enableRecaptcha", false);
    
    // reCAPTCHA V3 站点密钥
    define("recaptchaV3SiteKey", 'YOUR_SITE_KEY_HERE');
    
    // reCAPTCHA V3 密钥
    define("recaptchaV3SecretKey", 'YOUR_SECRET_KEY_HERE');
    
    // 启用缩短链接的身份验证要求
    // true = 仅已登录用户可缩短链接,false = 任何人都可缩短链接
    // 默认值: false
    define('requireAuth', false);
    
    // 启用自定义URL输入框
    // 可选值:true 或 false
    define('enableCustomURL', true);
    
    // 可选配置
    // 设置网站主色调。默认值: #007bff
    // 你也可以尝试这些颜色值:
    // #f44336: 红色, #9c27b0: 紫色, #00bcd4: 青绿色, #ff5722: 橙色
    define('colour', '#007bff');
    
    // 可选配置
    // 设置网站背景图片。
    // 默认值: 使用picsum.photos的随机图片
    // define('backgroundImage', 'https://picsum.photos/1920/1080');
    
    // 页脚设置
    
    // 这些是页脚的链接。每新增一个链接就添加一行即可。
    // 数组格式遵循「标题 => 链接」的结构:
    // "标题" => "链接地址",
    $footerLinks = [
        "About"   =>  "https://sleeky.flynntes.com/",
        "Contact" =>  "https://yourls.org/",
        "Legal"   =>  "https://yourls.org/",
        "Admin"   =>  "/admin"
    ];
    
    ?>

    2. 传统 LAMP/LEMP 部署

    这是最能发挥 YOURLS 性能和插件兼容性的方式。

    步骤 1:下载并解压

    git clone https://github.com/YOURLS/YOURLS.git
    cd YOURLS
    # 将文件移动到你的 Web 根目录
    sudo cp -R . /var/www/html/short
    

    步骤 2:配置数据库

    进入 user 目录,将示例配置文件重命名并编辑:

    cd user
    cp config-sample.php config.php
    nano config.php
    

    config.php 中填入你的数据库信息:

    define( 'YOURLS_DB_USER', 'your_db_user' );
    define( 'YOURLS_DB_PASS', 'your_db_password' );
    define( 'YOURLS_DB_NAME', 'your_db_name' );
    define( 'YOURLS_DB_HOST', 'localhost' );
    define( 'YOURLS_SITE', 'https://s.yourdomain.com' );
    

    步骤 3:配置 Web 服务器伪静态

    • Nginx 用户:请在配置文件中加入以下规则:
    location / {
      try_files $uri $uri/ /yourls-loader.php$is_args$args;
      # 如果YOURLS安装在Windows中,请更改路径
      # 到yourls-loader.php,例如, eg
      # try_files $uri $uri/ /subdir/yourls-loader.php$is_args$args;
    }

    步骤 4:运行安装脚本

    访问 https://s.yourdomain.com/admin/,点击安装按钮即可。


    3. 使用 Docker 一键部署

    适合追求快速上线和环境隔离的用户。

    docker run -d \
      --name my-yourls \
      -e YOURLS_DB_USER=root \
      -e YOURLS_DB_PASS=secret \
      -e YOURLS_DB_NAME=yourls \
      -e YOURLS_SITE=https://s.example.com \
      -e YOURLS_USER=admin \
      -e YOURLS_PASS=admin_password \
      -p 8080:80 \
      --restart always \
      yourls:latest
    

    4. 使用 Docker Compose 部署 (含数据库)

    version: '3.5'
    services:
      mysql:
        image: mariadb:10.5
        environment:
          - MYSQL_ROOT_PASSWORD=root_pass
          - MYSQL_DATABASE=yourls
        volumes:
          - ./mysql_data:/var/lib/mysql
    
      yourls:
        image: yourls:latest
        ports:
          - "8080:80"
        environment:
          - YOURLS_DB_HOST=mysql
          - YOURLS_DB_USER=root
          - YOURLS_DB_PASS=root_pass
          - YOURLS_DB_NAME=yourls
          - YOURLS_SITE=http://localhost:8080
          - YOURLS_USER=admin
          - YOURLS_PASS=password
        depends_on:
          - mysql
    

    总结评价

    YOURLS 是短链接领域的老牌霸主,虽然其后台 UI 略显复古,但其稳定性和可扩展性至今无人能出其右。

    • 优点
      • 极致稳定:核心代码极其精简,在低配服务器上也能支持极高并发。
      • 插件丰富:如果你觉得原生功能不够,社区提供的插件几乎能覆盖所有想象力范围内的需求。
      • 数据详尽:自带的点击热图和地理分析对于复盘营销效果非常有帮助。
    • 缺点
      • UI 审美:默认后台管理界面比较传统,不符合现代 Material Design 审美(可通过插件更换皮肤)。
      • PHP 依赖:对于习惯了 Node.js 或 Go 的开发者来说,PHP 的部署环境配置稍显繁琐。

    适用建议:非常适合自媒体从业者、跨境电商卖家以及需要大规模分发内部追踪链接的企业。


    项目地址

    资源名称链接地址
    GitHub 仓库https://github.com/YOURLS/YOURLS
    官方文档https://yourls.org/
    插件市场https://github.com/YOURLS/awesome