Как установить и настроить YOURLS на VPS
Сторонние сервисы коротких ссылок обрезают статистику до базовых цифр, показывают рекламу на странице перехода и в любой момент могут заблокировать домен или закрыться сами — а вся история кликов уйдёт вместе с ними. YOURLS решает это по-другому: open-source движок на PHP и MySQL, который вы ставите на собственный VPS и получаете полный контроль над короткими ссылками, доменом и данными о переходах. Ниже — рабочий путь от чистого сервера до готового сервиса: стек, установка, настройка веб-сервера под короткие URL, SSL и статистика.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что нужно перед установкой
YOURLS — лёгкое приложение, оно не требует мощного сервера. Хватает 1 ядра и 1 ГБ RAM для личного использования и небольшой команды; для сервиса с заметным трафиком и десятками тысяч переходов в сутки берите 2 ГБ RAM с запасом под MySQL и кэш PHP-OPcache. Диск — от 10 ГБ SSD, база и логи переходов растут медленно.
Понадобится отдельный домен или поддомен под короткие ссылки — короткий и запоминающийся: go.ваш-домен.ru, clc.im, s.ваш-бренд.com. Чем короче домен, тем короче итоговая ссылка. Направьте A-запись домена на IP сервера заранее, DNS должен успеть примениться до выпуска SSL-сертификата.
Локацию сервера выбирайте по аудитории, которая будет кликать по ссылкам: для российских проектов логичен RU-сервер с минимальным пингом, для международной аудитории — US или UK. Примеры ниже даны для Ubuntu 24.04 LTS, работаем под sudo-пользователем с доступом по SSH-ключу. Перед началом обновите систему: sudo apt update && sudo apt upgrade -y.
Установка веб-сервера, PHP и MySQL
YOURLS работает на связке nginx + PHP-FPM + MySQL (или MariaDB) — классический LEMP-стек. Если ставите с нуля, подробный разбор каждого компонента отдельно есть в статье про установку веб-сервера LEMP с нуля, здесь — минимум для запуска YOURLS.
Ставим nginx и MySQL:
sudo apt install -y nginx mysql-server
sudo systemctl enable --now nginx mysql
PHP для YOURLS нужен версии 8.1 и выше с модулями для MySQL и работы с URL:
sudo apt install -y php-fpm php-mysql php-curl php-mbstring php-xml php-gd
Проверьте, под каким сокетом слушает PHP-FPM — на Ubuntu 24.04 это обычно /run/php/php8.3-fpm.sock, номер версии зависит от репозитория:
sudo systemctl status php8.3-fpm
Создайте базу и пользователя под YOURLS — не заводите приложение под root, это отдельная гигиена базы данных, которая пригодится и для других сервисов на сервере (подробнее — в статье про установку и настройку MySQL на VPS):
sudo mysql
CREATE DATABASE yourls CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'yourls_user'@'localhost' IDENTIFIED BY 'слоЖный_Пароль_2026';
GRANT ALL PRIVILEGES ON yourls.* TO 'yourls_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка и настройка YOURLS
Скачайте актуальную версию с GitHub в каталог сайта:
cd /var/www
sudo git clone https://github.com/YOURLS/YOURLS.git yourls
sudo chown -R www-data:www-data /var/www/yourls
Если git не установлен — sudo apt install -y git, либо скачайте архив релиза с GitHub и распакуйте вручную.
Основной конфиг — файл user/config.php, в поставке лежит шаблон user/config-sample.php:
cd /var/www/yourls/user
sudo cp config-sample.php config.php
sudo nano config.php
Заполните ключевые параметры:
define( 'YOURLS_DB_USER', 'yourls_user' );
define( 'YOURLS_DB_PASS', 'слоЖный_Пароль_2026' );
define( 'YOURLS_DB_NAME', 'yourls' );
define( 'YOURLS_DB_HOST', 'localhost' );
define( 'YOURLS_DB_PREFIX', 'yourls_' );
define( 'YOURLS_SITE', 'https://go.ваш-домен.ru' );
define( 'YOURLS_HOURS_OFFSET', 3 );
define( 'YOURLS_LANG', '' );
define( 'YOURLS_UNIQUE_URLS', true );
define( 'YOURLS_PRIVATE', true );
define( 'YOURLS_COOKIEKEY', '<случайная строка от 20 символов>' );
define( 'YOURLS_USER', 'admin_login' );
define( 'YOURLS_PASS', 'слоЖный_Пароль_панели' );
YOURLS_SITE — обязательно с протоколом и без слэша на конце, иначе редиректы и генерация коротких ссылок ломаются непредсказуемо. YOURLS_COOKIEKEY нужна случайная и уникальная — на сайте проекта есть генератор, либо сгенерируйте сами: openssl rand -hex 24. YOURLS_PRIVATE = true закрывает создание ссылок и статистику паролем — оставляйте true, если сервис не публичный сервис для всех подряд. С версии 1.8 логин и пароль можно (и правильнее) не хранить в открытом виде в конфиге, а завести через файл user/plugins или переменные окружения — но для одиночной установки прямой пароль в config.php с правами доступа 640 и владельцем www-data — рабочий и распространённый вариант.
Настройка nginx под короткие ссылки
Ключевая особенность YOURLS — короткая ссылка вида go.ваш-домен.ru/aB3xZ не существует как файл на диске, движок сам разбирает aB3xZ и ищет соответствие в базе. Значит, все запросы, которые не попадают в реальные файлы, нужно направлять в yourls-loader.php. Пример конфига:
sudo nano /etc/nginx/sites-available/yourls
server {
listen 80;
server_name go.ваш-домен.ru;
root /var/www/yourls;
index index.php;
location / {
try_files $uri $uri/ /yourls-loader.php$is_args$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}
location ~ /\.(?!well-known) {
deny all;
}
location ~ ^/(user/config\.php|\.git) {
deny all;
}
}
Директива try_files — сердце конфига: если файл или каталог с именем /aB3xZ не найден на диске (а его там и не будет), запрос уходит в yourls-loader.php, который и обрабатывает переход, редирект и запись статистики клика. Отдельно закройте доступ к config.php и служебным файлам — там лежат пароли от базы. Активируйте сайт и проверьте синтаксис:
sudo ln -s /etc/nginx/sites-available/yourls /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
Откройте http://go.ваш-домен.ru/admin/ — должен показаться установщик YOURLS, который проверит подключение к базе и создаст таблицы. После установки удалить install.php вручную не нужно — YOURLS сам блокирует повторный запуск, если таблицы уже есть, но лишним не будет ограничить доступ к каталогу /admin/ по IP на фаерволе, если панель нужна только вам.
SSL-сертификат
Короткие ссылки без HTTPS сегодня вызывают недоверие у получателя и предупреждение браузера, да и сама админ-панель с паролем должна ходить только по шифрованному каналу. Получите бесплатный сертификат Let's Encrypt через certbot — подробный разбор процесса и частых нюансов есть в статье про установку и настройку Let's Encrypt SSL на VPS:
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d go.ваш-домен.ru
Certbot сам допишет блок listen 443 ssl в конфиг nginx и настроит редирект с 80 на 443 порт. После выпуска сертификата поправьте YOURLS_SITE в config.php на https://, если ещё не сделали этого сразу, — иначе часть внутренних ссылок в админке будет указывать на http. Автопродление certbot ставит через systemd timer сам, проверить его можно командой sudo certbot renew --dry-run.
Статистика переходов, плагины и безопасность
Ради статистики переходов чаще всего и разворачивают собственный YOURLS вместо стороннего сокращателя. В админ-панели /admin/ по каждой ссылке доступны: число кликов, график по дням, страна, браузер и реферер посетителя — без урезки, характерной для бесплатных сторонних сервисов. Данные хранятся в вашей же базе MySQL в таблице yourls_log, и её можно выгружать и анализировать отдельно любым SQL-запросом или подключить к BI-инструменту.
YOURLS расширяется плагинами — в официальном каталоге на сайте проекта десятки готовых: генерация QR-кода для каждой ссылки, API-ключи для внешних интеграций, кастомные алиасы вместо случайных, блокировка спам-доменов, экспорт статистики в CSV. Устанавливаются копированием папки плагина в user/plugins/ и активацией в разделе «Управление плагинами» админки — без правки ядра, что упрощает последующие обновления самого YOURLS.
Отдельно стоит подумать про приватность IP посетителей: по умолчанию YOURLS хранит полный IP в логе клика, что в контексте 152-ФЗ и GDPR может считаться персональными данными. Если публичной статистикой пользуются не только вы, поставьте плагин анонимизации IP (обрезка последнего октета) или периодически очищайте таблицу yourls_log от старых записей через cron. API создания ссылок (/yourls-api.php) обязательно защищайте сигнатурой или паролем из конфига — открытый API кто угодно использует, чтобы плодить ссылки на чужой домен для спам-рассылок, а репутация домена от этого страдает быстро и заметно.
Резервное копирование и автоматизация
Вся ценность YOURLS — в базе с историей ссылок и переходов, поэтому бэкап критичен так же, как для любого продакшен-сервиса. Минимальный рабочий вариант — дамп базы и архив конфига по расписанию:
mysqldump -u yourls_user -p yourls > /var/backups/yourls_$(date +%F).sql
tar -czf /var/backups/yourls_config_$(date +%F).tar.gz /var/www/yourls/user/config.php
Заведите обе команды в cron ежедневно ночью и храните копии хотя бы за две недели — как это сделать правильно, с логированием и уведомлением об ошибках, подробно разобрано в статье про установку и настройку cron-задач на VPS. Держите хотя бы одну копию за пределами самого сервера — на объектном хранилище или другой машине, иначе бэкап на том же диске не спасёт при отказе диска.
Само приложение обновляется скачиванием новой версии поверх старой с сохранением user/config.php и user/plugins/ — перед обновлением обязательно снимите свежий дамп базы, потому что YOURLS при первом заходе после обновления может накатывать миграции схемы. Чтобы всё это работало стабильно под растущим трафиком переходов, нужен VPS с гарантированными ресурсами, а не шаренный хостинг с лимитом на число запросов. В MAATRIX можно арендовать сервер под YOURLS в России, США или Великобритании и оплатить картой РФ, по СБП, криптой или токеном MAAT — без иностранной карты.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Чем YOURLS лучше готовых сервисов вроде bit.ly?
Полный контроль над доменом и данными: ссылки не зависят от чужого сервиса, статистика не урезана, домен ваш и не меняется по решению третьей стороны. Обратная сторона — вы сами отвечаете за сервер, обновления и бэкапы.
Можно ли использовать YOURLS без своего домена?
Технически можно на поддомене хостинга, но короткая ссылка тогда выйдет длинной и негативно повлияет на цель всей затеи. Отдельный короткий домен — часть смысла сервиса.
Как перенести YOURLS на новый сервер?
Перенесите дамп базы MySQL, каталог user/config.php и user/plugins/, разверните тот же стек nginx + PHP-FPM на новом сервере и обновите A-запись домена на новый IP.
YOURLS поддерживает несколько пользователей и ролей?
Из коробки — один логин/пароль в конфиге на весь сервис. Разделение ролей и мультипользовательский доступ добавляются сторонними плагинами из каталога проекта.
Что делать, если короткие ссылки отдают 404 вместо редиректа?
Почти всегда причина в try_files — проверьте, что nginx действительно направляет несуществующие пути в yourls-loader.php, а не в стандартную страницу 404, и что YOURLS_SITE в конфиге совпадает с реальным доменом без слэша на конце.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →