MAATRIX / Блог / YOURLS или Shlink: что выгоднее и когда

YOURLS или Shlink: что выгоднее и когда

MAATRIX

Когда встаёт вопрос своего 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 в короткий и посчитать клики». На практике то, как они это делают, определяет, какой вписывается в ваш сценарий, а какой создаст лишнюю возню.

Сравнение по ключевым параметрам

КритерийYOURLSShlink
Язык / стек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 vCPU1 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)
CPU1 vCPU1 vCPU (2 vCPU под продакшн-нагрузку)
RAM512 MB - 1 GB1-2 GB (MySQL-контейнер добавляет накладные расходы)
Диск10-15 GB SSD15-25 GB SSD
Веб-серверApache/Nginx + PHP-FPMNginx как 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 на сервере — частые ошибки и решения и 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 ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →