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:
Минусы:
В этом разделе описан процесс обновления скрипта Yourls до последней версии. Если вы только решили установить Yourls читайте пошаговую инструкцию ниже по инсталляции Yourls с нуля.
cp -r /var/www/yourlsite/ /var/www/yourlsite.bak.20221029 mysqldump yourlbd > /var/www/yourlsite.bak.20221029/yourlbd.sql
wget -c https://github.com/YOURLS/YOURLS/archive/refs/tags/1.9.1.tar.gz
tar -xzvf 1.9.1.tar.gz
cp -r YOURLS-1.9.1/* /var/www/yourlsite
https://<имя вашего домена>/admin
При обновлении на версию YOURLS v 1.9.1, после перехода по ссылке - уже все обновлено. Не нужно ничего делать в админке.
И видим ободряющий текст от разработчиков, особенно впечатлило "If everything goes too fast and you cannot read, good for you, let it go :)", что в вольном переводе означает "Если вы не умеете читать - жмите кнопку Обновить"!!!
Установка YOURLS осуществляется на ваш сайт и занимает не больше 10-и минут. Файлы скрипта загружаются на хостинг и админка сокращалки устанавливается на сайт/admin.
Требования к серверу Yourls:
Покупаем домен или создаем домен третьего уровня, я создал 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.
Установка:
User-agent: * Disallow: /admin Disallow: /css Disallow: /images Disallow: /includes Disallow: /js Disallow: /user
Если вы занимаетесь партнерским маркетингом, то частенько сталкиваетесь с тем что часть ПП закрывается или становятся не интересными. И казалось, бы достаточно в 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.
Проблема: По разным причинам, требуется сокращение ссылок для разных доменов или поддоменов с использованием одной установки 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:
По итогу, у нас в наличии 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 на ваши значения
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';