YOURLS или Shlink: что выгоднее и когда
Когда встаёт вопрос своего URL-shortener, выбор почти всегда сужается до двух вариантов: YOURLS и Shlink. Оба open source, оба разворачиваются на своём VPS за 20-30 минут, и по названию не сразу понятно, чем один лучше другого. Разница на самом деле принципиальная — это не «одно и то же, но разные цвета кнопок», а два разных подхода к тому, что вообще должен делать сокращатель ссылок. Разберём по сценариям, а не по абстрактным фичам.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что это вообще за два проекта
YOURLS (Your Own URL Shortener) — старый, проверенный временем проект на чистом PHP без фреймворка, с MySQL под капотом. Появился ещё в конце 2000-х, изначально задуман как self-hosted альтернатива bit.ly с собственным веб-интерфейсом из коробки. У него огромная библиотека плагинов — от кастомной статистики до интеграции с соцсетями — и низкие требования к ресурсам.
Shlink — проект намного моложе, написан на Symfony (PHP), спроектирован API-first: ядро изначально задумано как REST API без веб-морды. Панель для конечного пользователя — это отдельное приложение Shlink Web Client, которое ставится отдельным контейнером поверх API. Shlink делает ставку на детальную аналитику переходов (гео, устройства, referrer) и multi-domain из коробки.
Формально оба решают одну задачу — «превратить длинный URL в короткий и посчитать клики». На практике то, как они это делают, определяет, какой вписывается в ваш сценарий, а какой создаст лишнюю возню.
Сравнение по ключевым параметрам
| Критерий | YOURLS | Shlink |
|---|---|---|
| Язык / стек | PHP + MySQL, без фреймворка | PHP (Symfony) + MySQL/PostgreSQL/MariaDB/SQLite |
| Веб-интерфейс из коробки | Да, встроенная админка | Нет — нужен отдельный Shlink Web Client |
| REST API | Есть, но минималистичный | Полноценный, API-first, вся логика через него |
| Аналитика переходов | Базовая (клики, referrer, ОС/браузер через плагин) | Детальная из коробки: гео (GeoLite2), устройства, referrer, теги |
| Multi-domain | Через плагины, не нативно | Нативно, штатный сценарий |
| Плагины / расширения | Большая экосистема (сотни плагинов) | Нет плагинной системы — только то, что в ядре и API |
| Минимальные требования | 512 MB RAM, 1 vCPU | 1 GB RAM, 1 vCPU (с учётом БД) |
| Способ установки | Composer/git + Apache/Nginx, без Docker в оф. репозитории | Официальный Docker-образ, Docker Compose из коробки |
| Кастомные слаги | Да, из веб-интерфейса и API | Да, только через API/CLI |
| Порог входа | Низкий — поставил, зашёл в браузер, готово | Средний — нужно освоить API или доп. поставить Web Client |
Уже по таблице видно направление: YOURLS ближе к «поставил и пользуешься мышкой», Shlink — к «поставил и интегрируешь через код».
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверКогда выгоднее YOURLS
YOURLS выигрывает в сценариях, где важна простота и человек за клавиатурой — не разработчик, а маркетолог, контент-менеджер, админ паблика.
- Нужен веб-интерфейс сразу, без установки второго приложения. Зашёл на
/admin/, вставил длинную ссылку, нажал кнопку — готово. - Команда небольшая или ссылки создаются вручную, не пачками через скрипт. Пять-десять ссылок в день руками — YOURLS для этого удобнее.
- Нужны специфичные фичи из плагинов: интеграция с конкретной CMS, кастомные страницы 404, экспорт в определённый формат, QR-коды прямо в интерфейсе. У YOURLS под многое уже есть готовый плагин, писать свою интеграцию не придётся.
- Ресурсы сервера ограничены. YOURLS стабильно работает на 512 MB RAM и 1 vCPU — годится для минимального VPS, если кроме сокращателя на сервере почти ничего нет.
- Нужна максимально быстрая установка без Docker. Классический стек LAMP/LEMP многим админам ближе, чем разбираться с Docker Compose, если раньше с ним не работали.
Обратная сторона: аналитика в YOURLS без плагинов скромная — по сути клики и referrer, детальная гео-статистика или разбивка по устройствам требует стороннего плагина, а плагины YOURLS не все одинаково поддерживаются и обновляются. Экосистема живая, но не централизованная — качество плагина стоит проверять перед установкой.
Когда выгоднее Shlink
Shlink выигрывает там, где сокращатель — часть автоматизированного процесса, а не инструмент для ручного клика.
- Ссылки создаются программно: бот в Telegram генерирует короткую ссылку на лету, CRM подставляет её в письмо, скрипт рассылки формирует пачку ссылок с UTM-метками. Shlink для этого спроектирован — весь функционал доступен через REST API без обходных путей.
- Нужна детальная аналитика без танцев с плагинами: гео (страна, город через базу GeoLite2), тип устройства, ОС, браузер — всё из коробки, включённое одной переменной окружения.
- Несколько коротких доменов на одном сервере — например
s.company.comдля маркетинга иgo.company.ruдля партнёрской программы. В Shlink это нативный multi-domain, настраивается через API без танцев с отдельными инсталляциями. - Инфраструктура уже на Docker. Официальный образ
shlinkio/shlinkразворачивается черезdocker compose up -dза пару минут, обновления — просто смена тега образа. - Важен контроль версий и предсказуемость. Без плагинной системы вы точно знаете, что все ссылки идут через один код — не приходится думать, не сломает ли обновление стороннего плагина всю сборку.
Обратная сторона: без Web Client у Shlink нет визуальной панели — нетехническому сотруднику придётся либо ставить и поддерживать отдельный контейнер с UI, либо работать через curl/CLI, что для не-разработчика неудобно. Плюс два контейнера (API + Web Client при необходимости UI) вместо одного приложения — чуть больше движущихся частей на сервере.
Требования к серверу и разница в стоимости
По железу разница минимальна, если сравнивать на равных — оба легковесны для одиночного сайта с умеренной нагрузкой:
| Параметр | YOURLS (LAMP/LEMP) | Shlink (Docker) |
|---|---|---|
| CPU | 1 vCPU | 1 vCPU (2 vCPU под продакшн-нагрузку) |
| RAM | 512 MB - 1 GB | 1-2 GB (MySQL-контейнер добавляет накладные расходы) |
| Диск | 10-15 GB SSD | 15-25 GB SSD |
| Веб-сервер | Apache/Nginx + PHP-FPM | Nginx как reverse proxy перед Docker |
Разница по факту не в тарифе VPS — оба вписываются в младшие конфигурации — а в том, сколько ресурсов уходит на инфраструктуру вокруг: Docker сам по себе съедает немного RAM на демон, а если ставить ещё и Web Client вторым контейнером, стоит закладывать дополнительный запас. Если сервер используется только под сокращатель ссылок, YOURLS формально экономичнее по железу; если на том же VPS крутится ещё пара Docker-сервисов, разница стирается — Docker-инфраструктура уже есть, и лишний контейнер Shlink не добавляет заметной нагрузки.
Миграция и совместное использование
Часто вопрос звучит не «что поставить с нуля», а «стоит ли переезжать с одного на другое». Прямого автоматического импорта базы между YOURLS и Shlink нет — структуры БД разные (YOURLS хранит всё в одной таблице yourls_url, у Shlink нормализованная схема с отдельными таблицами под теги, домены, посетителей). Практический путь миграции:
# Экспорт коротких ссылок из YOURLS через API в CSV/JSON
curl "https://s.example.com/yourls-api.php?action=db_stats&format=json&signature=ВАШ_ТОКЕН"
# Дальше — скрипт, который проходит по списку и создаёт
# те же ссылки в Shlink через его REST API с тем же shortCode
curl -X POST "https://new.example.com/rest/v3/short-urls" \
-H "X-Api-Key: ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{"longUrl": "https://example.com/page", "customSlug": "abc123"}'
Сохранить точный shortCode при переносе — не сложно (оба принимают кастомный слаг), а вот статистику переходов (историю кликов, накопленную в старой системе) перенести штатными средствами не получится — форматы несовместимы. Если история кликов критична для отчётности, стоит держать старую БД в архиве отдельно, а не полагаться на перенос.
Держать оба сервиса одновременно тоже вариант — например YOURLS для ручных ссылок редакции, Shlink для автоматических рассылок с API. Это два независимых Docker/LAMP-стека, конфликтов между ними нет, если у каждого свой домен и своя БД.
Установка: с чего начать
Если решение принято, дальше — готовые пошаговые разборы под каждый вариант на Ubuntu 24.04:
- Установка и настройка YOURLS на VPS — общий разбор с плагинами и настройкой домена.
- YOURLS на Ubuntu 24.04: пошаговая установка — конкретная версия под LTS-релиз.
- YOURLS в Docker Compose: готовый файл — если хочется того же удобства Docker, что у Shlink, но на YOURLS.
- Shlink на Ubuntu 24.04: пошаговая установка — Docker Compose, MySQL, Nginx, SSL.
- Сколько RAM нужно для YOURLS — если сомневаетесь в тарифе VPS под YOURLS.
Если в процессе что-то пойдёт не так, есть отдельные разборы частых ошибок для обоих: YOURLS на сервере — частые ошибки и решения и Shlink на сервере — частые ошибки и решения.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли добавить веб-интерфейс к Shlink и получить то же удобство, что у YOURLS?
Да, через отдельное приложение Shlink Web Client (тоже Docker-контейнер) — но это второй сервис, который нужно ставить и поддерживать отдельно, в отличие от YOURLS, где панель уже встроена в основное приложение.
У YOURLS есть API, сравнимый со Shlink?
API есть, но он проще — заточен под базовые операции (создать, получить статистику, удалить), без такой детализации, как в Shlink. Для скриптовой автоматизации обычно хватает, но для сложных интеграций Shlink спроектирован лучше.
Что легче администрировать в долгосрочной перспективе?
YOURLS — если не увлекаться плагинами от разных авторов (каждый плагин — дополнительная точка отказа при обновлении PHP или самого YOURLS). Shlink — предсказуемее за счёт отсутствия плагинной системы, но требует привычки к Docker и работе через API.
Подходит ли YOURLS для крупного проекта с миллионами кликов в месяц?
Технически да, YOURLS справляется с большими объёмами при правильной настройке MySQL (индексы, кэширование), но детальная аналитика на таких объёмах удобнее реализована в Shlink — там агрегация статистики продумана изначально под большие данные.
Нужен ли отдельный домен для короткого сокращателя в обоих случаях?
Не обязательно, но настоятельно рекомендуется — короткий домен вроде s.example.com делает ссылки компактнее и не мешается с основным сайтом на том же VPS.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →