Трекер Yourls ваш собственный сокращатель ссылок (URL)

  • Домашняя страница: YOURLS Your Own URL Shortener, разработчик Ǭɀħ

YOURLS (Аббревиатура You Own URL Shortener) - это бесплатная альтернатива сокращению ссылок (URL) с открытым исходным кодом и самостоятельно размещаемым URL-адресом аналогично ТОП 3 сервисов: Как сократить URL ссылку: bit.ly, U.to или To.click.

Отслеживание трафика один из основных факторов продуктивной работы арбитражника, SMM специалиста и даже спамера. Для серьезного уровня работы, как правило, используются функциональные серверные или облачные трекеры, которые отслеживают десятки метрик по входящему трафику и предоставляют инструменты для детальной аналитики. Но они стоят денег и не мало за ежемесячную подписку.

В этой стать представляю вам бесплатный инструмент YOURLS, который может закрыть потребности в отслеживании переходов по вашим ссылкам. YOURLS - это ваш персональный аналог Bitly или u.to. Этот скрипт предназначен для сокращения ссылок, а так же отображает количество кликов, источники переходов и ГЕО пользователей. Это лишь не большая часть функционала обычного трекера, но преимущество YOURLS, как минимум, в том, что за него не нужно платить.

Yourls инструмент для редиректов будет полезен для тех, кто добывает трафик из мессенджеров (Телеграм, Viber), социальных сетей (Вконтакте, Фейсбук) и других источников.

Плюсы Yourls:

  • Не крадет ваш трафик
  • 100% бесплатно
  • Потрясающая статистика: отчеты о кликах, отслеживание переходов, геолокация посетителей
  • Открытый исходный код, в отличие от сервисов сокращения ссылок или трекеров
  • Полное управление, в отличие от bitly или аналогов
  • Простая установка
  • Полная поддержка jsonp
  • Вы можете изменить адрес назначения URL позже
  • Импорт/экспорт URL-адреса, в отличие от bitly
  • Вы можете добавлять пользователей
  • Огромный ассортимент бесплатных плагинов:
  1. Плагины, которые позволяют выбирать из ряда типов перенаправления (например, 301, 302, мета-перенаправление)
  2. Плагин, который устанавливает запасной URL
  3. Плагин, который делает URL-адреса нечувствительными к регистру
  4. Плагин, который добавляет теги ссылок Google Analytics
  5. Плагин, который скрывает реферала или доставит вас на сервис анонимайзера

Минусы:

  • Нет доступных полных резервных копий, но эта проблема автоматически решается хостером.

В этом разделе описан процесс обновления скрипта Yourls до последней версии. Если вы только решили установить Yourls читайте пошаговую инструкцию ниже по инсталляции Yourls с нуля.

  1. Обязательно сделайте резервную копию файлов и базы данных Yourls и сохраните его на какой-то время. Например из консоли Linux
    cp -r /var/www/yourlsite/ /var/www/yourlsite.bak.20221029
    mysqldump yourlbd > /var/www/yourlsite.bak.20221029/yourlbd.sql
  2. Скачиваем архив с последней версии по Yourls ссылке https://github.com/YOURLS/YOURLS/releases
    wget -c https://github.com/YOURLS/YOURLS/archive/refs/tags/1.9.1.tar.gz
  3. Распаковываем архив
    tar -xzvf 1.9.1.tar.gz
  4. При помощи клиента FileZilla подключаемся к нашему хостингу и перезаписываем файлы на сайте фалами из распакованного архива. Или в консоли воспользуемся командой
    cp -r YOURLS-1.9.1/* /var/www/yourlsite
  5. Для продолжения обновления переходим по ссылке
    https://<имя вашего домена>/admin

При обновлении на версию YOURLS v 1.9.1, после перехода по ссылке - уже все обновлено. Не нужно ничего делать в админке.

И видим ободряющий:-D текст от разработчиков, особенно впечатлило:-D "If everything goes too fast and you cannot read, good for you, let it go :)", что в вольном переводе означает "Если вы не умеете читать - жмите кнопку Обновить"!!! :-D

  1. Нажимаем кнопку Upgrade, практически сразу должен появиться следующий экран с надписью: Upgrade YOURLS Your installation is now up to date! Go back to the admin interface
  2. Всё! Обновление закончено, переходим в веб-интерфейс и продолжаем спокойно работать.

Yourls с нуля на виртуальном хостинге

Устанавливать Yourls будем на виртуальном хостинге с Apache и PHP 7.4, инструкция будет работать с любым тарифным планом из списка проверенных хостингов для сайта.

Установка YOURLS осуществляется на ваш сайт и занимает не больше 10-и минут. Файлы скрипта загружаются на хостинг и админка сокращалки устанавливается на сайт/admin.

Требования к серверу Yourls:

  • На хоcтинге/сервере должен быть включен mod_rewrite
  • Минимум PHP 5.3 и MYSQL 5
  • cURL если планируете использовать API

Покупаем домен или создаем домен третьего уровня, я создал https://to.dieg.info/. Обязательно устанавливаем бесплатный SSL сертификат. Выбираем PHP 7.4 Все настройки на скриншоте:

Создаем БД, копируем обе строки в блокнот для дальнейшего использования.

Скачиваем архив последней версии с GitHub. Распаковываем архив и записываем в корень вашего сайта.

Переименовываем файл user/config-sample.php в user/config.php или делаем копию.

Изменяем параметры в полученном файле config.php: подключение к базе MySQL (из ШАГ 2); указываем свой домен; параметр YOURLS_COOKIEKEY генерируем что-то типо gBaXCvIxLXU9qluEq7c0; меняем часовой пояс на нужный вам в параметреYOURLS_HOURS_OFFSET (я выставил +2).

Логин и пароль для доступа в админку задаются в массиве, замените yourlsadminusername на имя своего пользователя и задайте пароль вместо слова password. Здесь же вы можете добавить одного или более пользователей - раскомментируйте строку ниже и впишите нужные логин и пароль второго пользователя Yourls.

define( 'YOURLS_DB_USER', 'пользователь БД' );
define( 'YOURLS_DB_PASS', 'пароль пользователя БД' );
define( 'YOURLS_DB_NAME', 'имя базы данных' );
define( 'YOURLS_SITE', 'https://твой домен' );
define( 'YOURLS_COOKIEKEY', 'gBaXCvIxLXU9qluEq7c0' );
define( 'YOURLS_HOURS_OFFSET', +2 ); 
$yourls_user_passwords = array(
    'yourlsadminusername' => 'password',
    	// 'username2' => 'password2',
	// You can have one or more 'login'=>'password' lines
    );

Ко мне дважды обращались с проблемой подключения Yourls к базе данных, поэтому написал скрипт для независимой проверки подключения к MySQL из PHP mysqli.

Переходим по адресу

https://<имя вашего домена>/admin

Если все ок, увидим страницу конфигуратор. Нажимаем кнопку "Install YOURLS" и должен получиться такой результат. Если все Ок - поздравляю! Если нет можете написать мне -я подскажу.

Административная панель доступна по адресу

https://<имя вашего домена>/admin

Ниже хорошее видео по инсталляции Yourls, если что-то не понятно из руководства посмотрите его

Скачиваем русский перевод для YOURLS.

Установка:

  1. Загрузите архив и распакуйте его.
  2. Поместите файлы ru_RU.mo и ru_RU.po в папку user/languages.
  3. Добавьте define( 'YOURLS_LANG', 'ru_RU' ) в config.php.
  4. Готово!
  • переименовываем sample-robots.txt в robots.txt, нам не нужно чтобы файлы движка индексировались поисковыми системами. Ниже правильный robots.txt для Yourls:
User-agent: *
Disallow: /admin
Disallow: /css
Disallow: /images
Disallow: /includes
Disallow: /js
Disallow: /user
  • в корне сайта создаем файл index.html в котором вы можете разместить например рекламу. Любопытные пользователи все равно будут пытаться переходить на ваш домен с сокращалкой, пусть будет дополнительная монетизация.

Если вы занимаетесь партнерским маркетингом, то частенько сталкиваетесь с тем что часть ПП закрывается или становятся не интересными. И казалось, бы достаточно в YOURLS заменить старые ссылки на новые. Но по умолчанию, в YOURLS вы не можете создать две и более коротких ссылок на один длинный URL из партнерской сети.

Но это легко решается установкой параметра YOURLS_UNIQUE_URLS в false в конфигурационном файле config.php, расположенном в директории user.

define( 'YOURLS_UNIQUE_URLS', false );

Разрешить несколько коротких URL-адресов для одного и того же длинного URL-адреса. Установите значение true, чтобы иметь только одну пару коротких и длинных URL-адресов (поведение YOURLS по умолчанию). Установите значение false, чтобы несколько коротких URL-адресов указывали на один и тот же длинный URL-адрес (поведение bit ly)

Вы не хотите облегчать взломщику задачу? Например он взломает и поставить свои ссылки вместо ваших - будет весело.

Apache:

Поэтому в директории /admin создаем файл .htaccess с таким содержимым:

Order Deny,Allow
Deny from all
#Allow from xxx.xxx.xxx.xxx
Allow from xxx.xxx.xxx.xxx

Где вместо xxx.xxx.xxx.xxx подставляем свой личный ip или несколько ip (для этого добавьте строчки Allow from).

Nginx:

location /admin/ {
    allow xxx.xxx.xxx.xxx;
    deny  all;
    }

В реальности код выше для Nginx будет запрещать только доступ к директории, но разрешит выполнение php файлов. Если вы хотите возиться с безопасностью nginx для Yourls, то вам следует использовать код ниже (без понимания что он делает не копируйте его себе):

location /admin/ {
    allow xxx.xxx.xxx.xxx;
    deny  all;
}
 
location ~* ^/admin/(index|install|admin-ajax|plugins|tools|upgrade)\.php {
    allow xxx.xxx.xxx.xxx;
    deny all;
 
    fastcgi_pass  127.0.0.1:9074;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi.conf;
}

Действительно плагинов расширяющих возможности Yourls очень много, весь список смотрите на официальном гитхабе проекта. Ниже я привожу список интересных плагинов расширяющих функционал скрипта Yourls.

  • Плагин Don't Track Admins проверяет, вошел ли пользователь, запрашивающий ссылку, в систему установки YOURLS. Если да, то он прерывает работу функций отслеживания кликов и регистрации перенаправлений в обработчике перенаправлений YOURLS. То есть ваши личный тестовые переходы учитываться не будут.
  • Плагин Yourls-Email-Notify позволяет отсылать вам электронное письмо, когда кто-то щелкнет сокращенную ссылку.
  • Плагин YOURLS Import Export позволяет экспортировать ваши ссылки в формат CSV, XML, RSS.
  • Плагин YOURLS-IQRCodes создает QR-код для ваше ссылки.
  • Плагин YOURLS Plugin: Upload and Shorten позволяет загружать файл на сервер и создавать на него короткую ссылку. Затем Вы можете поделиться этим файлом по его короткой ссылке, а также по его полному URL-адресу.
  • Поддержку генератора UTM меток добавляет плагин Yourls Google Analytics Link Tagging.
  • Плагин поддержки Google Tag Manager вы можете найти на сайте GTM-for-YOURLS

Проблема: По разным причинам, требуется сокращение ссылок для разных доменов или поддоменов с использованием одной установки Yourls. То есть вы хотите чтобы работали ссылки для двух доменов https://your.domain и https://second.your.domain.

Официально Yourls не поддерживает установку на несколько доменов. Но если почитать форумы, то можно найти несколько приемлемых и на первый взгляд работающих решений.

Решение 1. (Я не тестировал этот способ). Использовать запись CNAME в настройке DNS для другого домена или поддомена. То есть достаточно в DNS создать запись second.your.domain CNAME your.domain. Плюсы - это простое решение. Минусы вы не сможете разделить статистку по доменам.

Решение 2. (Я не тестировал этот способ). Это решение известно с 2014 года. И заключается в создании двух виртуальных доменов https://github.com/YOURLS/YOURLS/issues/560#issuecomment-46617669

Предварительные условия:

Это то, что вам нужно, чтобы следовать этому руководству и настроить YOURLS:

  • Сервер Ubuntu или Debian (для написания руководства использовалась Ubuntu 22.04 LTS Jammy). Вы можете купить виртуальный сервер у любого из проверенных VPS/VDS хостинг провайдеров, не дороже 2,50 доллара в месяц - этого более чем достаточно, чтобы YOURLS работал хорошо.
  • В этом руководстве предполагается, что вы уже позаботились об обслуживании и защите сервера. Здесь вы узнаете, как установить и настроить YOURLS.
  • Ubuntu 22.04 LTS по умолчанию PHP версии 8.1, но ещё довольно сырая, поэтому у меня установлен также PHP-FPM версии 7.4. Как установить несколько версии PHP на VPS выходит за рамки этой статьи, но вы может воспользоваться такими руководствами: Hestia CP переключение версии PHP.
  • Root-доступ к серверу. Мы будем использовать пользователя root для всего ниже. Если вы используете пользователя без полномочий root, используйте «sudo», где это уместно.
  • Iptables настроен и открыты порты 80 и 443

По итогу, у нас в наличии VPS Ubuntu 22.04 LTS Jammy, купленный у абузоустойчивого хостинг провайдера Alexhost, Nginx версии 1.18.0, MariaDB 10 (вы можете установить MySQL - для Yourls все равно), две версии PHP FPM 8.1 и 7.4 (слушает на порту 127.0.0.1:9074). Также VPS поддерживает IPv6.

Для создания SSL сертификатов установим certbot из репозиториев по умолчанию Ubuntu и git:

apt install certbot git

Установим зависимости PHP 7.4 для Yourls:

apt install php7.4-xml php7.4-cli php7.4-zip php7.4-json php7.4-mysql  php7.4-gd php7.4-mbstring php7.4-curl php7.4-bcmath

Перезапустим Nginx и php-fpm:

systemctl restart nginx.service php7.4-fpm.service

Создаем базу данных и пользователя:

mysql -u root -p
 
CREATE DATABASE exampledb;
GRANT ALL privileges ON exampledb.* TO 'exampledb-user'@'localhost' IDENTIFIED BY 'p@ssw0rd' WITH GRANT OPTION;
FLUSH privileges;
exit;

Скачиваем дистрибутив, при желании полученную директорию YOURLS можете переименовать, командой mv:

cd /var/www/
git clone https://github.com/YOURLS/YOURLS.git
cd YOURLS/

Делаем бэкапа конфигурационного файла и добавляем данные для доступа к базе данных, как в ШАГе 4.

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

Обновляем права доступа к каталогу.

chown -R www-data:www-data /var/www/html

Теперь самое интересное, это настройка виртуального домена в Nginx. Нам нужно настроить Nginx и настроить серверный блок для YOURLS. Создайте файл .conf для YOURLS:

nano /etc/nginx/sites-available/yourls.conf

Рабочий конфигурационный файл, достаточно заменить YOURLS на ваши значения

yourls.conf
server {
        listen 80;
        listen [::]:80;
 
        server_name YOURLS;
        root /var/www/YOURLS;
        index index.php index.html;
        access_log  /var/log/nginx/YOURLS.access.log;
        error_log  /var/log/nginx/YOURLS.error.log;
 
location / {
        try_files $uri $uri/ /yourls-loader.php$is_args$args;
}
 
location ~ \.php$ {
        fastcgi_pass  127.0.0.1:9074;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi.conf;
}
 
##### Стандартные настройки для любого хоста
  location = /robots.txt  { access_log off; log_not_found off; }
  location = /favicon.ico { access_log off; log_not_found off; }
# Запрет доступа к скрытым файлам, файлы названия которых начинаются с точки)
  location ~ /\.          { access_log off; log_not_found off; deny all; }
#####

Разрешим запуск конфига нашего сайта в Nginx:

ln -s /etc/nginx/sites-available/yourls.conf /etc/nginx/sites-enabled/

Проверяем синтаксис, если все ОК перезапускаем Nginx

nginx -t
nginx -s reload

Установим сертификат SSL, запустив команду certbot.

certbot --nginx

Поздравляю! Yourls установлен на чиcтый VPS, без использования панели управления.

Административная панель доступна по адресу

https://<имя вашего домена>/admin

Это супер крутая возможность для скрытия ссылок на вашем сайте Wordpress.

Связка Yourl и плагина Mihdan: No External Links как сделать внешние ссылки внутренними:

Сигнатуру берем из админки вашего Yourl по ссылке:

https://<твой домен>/admin/tools.php

Найти все записи для партнерской программы с именем example:

SELECT * FROM `yourls_log` WHERE `shorturl` = "example";
SELECT * FROM `yourls_log` WHERE `shorturl` LIKE "example%";

Удалить все записи для партнерской программы с именем example:

DELETE FROM `yourls_log` WHERE `shorturl` LIKE "example%";

Обнулить количество кликов для партнерской программы с именем example:

UPDATE `yourls_url` SET `clicks` = '0' WHERE `yourls_url`.`keyword` = 'example';
PQ VPS сервера в 28+ странах.