YOURLS на Ubuntu 24.04: пошаговая установка
Каждый bit.ly или clck.ru когда-нибудь может заблокировать ваши ссылки, потребовать подписку или просто лечь на день — и вся ваша рассылка, реклама или QR-коды на упаковке перестанут работать. YOURLS решает это радикально просто: вы ставите сервис коротких ссылок на свой сервер, под свой домен, и никто, кроме вас, не решает, жить ссылке или нет. Ниже — рабочая установка с нуля на чистой Ubuntu 24.04, с честными нюансами, которые обычно всплывают уже после деплоя.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что такое YOURLS и когда он оправдан
YOURLS (Your Own URL Shortener) — open-source PHP-скрипт для сокращения ссылок с собственной админкой, API и статистикой переходов (браузер, ОС, реферер, страна по IP). В отличие от SaaS-сервисов, вы не зависите от чужих лимитов и не отдаёте третьей стороне данные о том, кто и когда кликает по вашим ссылкам.
Есть смысл ставить свой YOURLS, если:
- вам нужен короткий домен под брендом (
vash-brend.ru/xyzвместоbit.ly/xyz); - статистика переходов должна оставаться у вас, а не утекать в аналитику стороннего сервиса;
- нужен API для программной генерации ссылок (интеграция с CRM, рассылками, ботами);
- важно, чтобы ссылки не блокировались массово вместе с доменом чужого шортенера.
Минусы тоже стоит проговорить сразу: вы сами отвечаете за аптайм, бэкапы и защиту от спамеров, которые захотят использовать ваш открытый сервис как анонимный редиректор. Ниже покажу, как закрыть основные риски.
Требования к серверу и подготовка
YOURLS — лёгкий скрипт, он не требователен к ресурсам. Достаточно:
| Параметр | Минимум | Комфортно |
|---|---|---|
| CPU | 1 vCPU | 1-2 vCPU |
| RAM | 512 МБ | 1 ГБ |
| Диск | 5 ГБ SSD | 10-20 ГБ (для роста базы кликов) |
| ОС | Ubuntu 24.04 LTS | — |
Если сервис будет активно использоваться (рассылки на десятки тысяч адресов, QR-коды в офлайн-рекламе), закладывайте RAM с запасом — таблица кликов в MySQL растёт быстрее, чем таблица самих ссылок, и на дешёвом плане в 512 МБ MySQL начнёт периодически падать под нагрузкой.
Перед установкой домен уже должен смотреть A-записью на IP сервера — если ещё не настраивали DNS, это описано в настройке домена и DNS с нуля на Ubuntu 24.04.
Подключаемся по SSH и обновляем систему:
ssh root@ваш_ip
apt update && apt upgrade -y
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверУстановка стека: Nginx, MySQL, PHP
YOURLS работает на связке Nginx (или Apache) + PHP + MySQL/MariaDB. Ставим всё одной командой:
apt install -y nginx mariadb-server php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml unzip curl
Проверяем, что PHP-FPM запущен:
systemctl status php8.3-fpm --no-pager
Если в вашем репозитории по умолчанию другая версия PHP — уточните командой apt-cache search php8 и подставьте нужную версию во все команды ниже (в Ubuntu 24.04 LTS штатно идёт PHP 8.3, так что в большинстве случаев менять ничего не придётся).
Настройка MariaDB
Запускаем базовую защиту и создаём базу для YOURLS:
mysql_secure_installation
Ответьте Y на все вопросы (задать пароль root, убрать анонимных пользователей, запретить удалённый root-вход, удалить тестовую базу). Затем создаём базу и пользователя:
mysql -u root -p
CREATE DATABASE yourls_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'yourls_user'@'localhost' IDENTIFIED BY 'СЛОЖНЫЙ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON yourls_db.* TO 'yourls_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Пароль сгенерируйте заранее и сохраните — он понадобится при установке YOURLS. Если планируете держать на сервере ещё несколько сервисов с MySQL, имеет смысл заранее прочитать про установку MySQL на Ubuntu 24.04 — там разобраны нюансы, которые здесь не поместились.
Загрузка и настройка YOURLS
Скачиваем актуальный релиз с GitHub в директорию сайта:
mkdir -p /var/www/yourls
cd /tmp
curl -L -o yourls.zip https://github.com/YOURLS/YOURLS/archive/refs/heads/master.zip
unzip yourls.zip
mv YOURLS-master/* /var/www/yourls/
chown -R www-data:www-data /var/www/yourls
Копируем конфиг из шаблона:
cd /var/www/yourls/user
cp config-sample.php config.php
nano config.php
Заполняем ключевые параметры:
define( 'YOURLS_DB_USER', 'yourls_user' );
define( 'YOURLS_DB_PASS', 'СЛОЖНЫЙ_ПАРОЛЬ' );
define( 'YOURLS_DB_NAME', 'yourls_db' );
define( 'YOURLS_DB_HOST', 'localhost' );
define( 'YOURLS_SITE', 'https://short.ваш-домен.ru' );
define( 'YOURLS_PRIVATE', true );
$yourls_user_passwords = array(
'admin' => 'ЕЩЁ_ОДИН_СЛОЖНЫЙ_ПАРОЛЬ',
);
define( 'YOURLS_UNIQUE_URLS', true );
Важные моменты:
YOURLS_PRIVATEвtrueзакрывает создание ссылок для анонимов — без этого ваш сервис быстро найдут спам-боты и начнут сокращать через него фишинговые ссылки, а бренд домена окажется в чёрных списках;YOURLS_UNIQUE_URLSне даёт создавать несколько коротких ссылок на один и тот же длинный URL — экономит место в базе;- пароль в
$yourls_user_passwordsYOURLS при первом обращении к админке автоматически захеширует и перезапишет файл — руками хеш не считайте.
Секретный ключ подписи (нужен для API) сгенерируйте на странице https://yourls.org/#Signature или командой:
openssl rand -hex 32
Вставьте результат в define( 'YOURLS_COOKIEKEY', '...' );.
Настройка Nginx и SSL
Создаём конфиг сайта:
nano /etc/nginx/sites-available/yourls
server {
listen 80;
server_name short.ваш-домен.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 ~ /\.ht {
deny all;
}
location ~ /(config\.php|\.git) {
deny all;
}
}
Активируем и проверяем:
ln -s /etc/nginx/sites-available/yourls /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx
Если конфигурация Nginx как обратного прокси или отдельного веб-сервера для вас в новинку — базовые принципы разобраны в статье про Nginx как reverse proxy на Ubuntu 24.04.
Выпускаем SSL-сертификат через certbot:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d short.ваш-домен.ru
Certbot сам пропишет редирект с 80 на 443 порт и настроит автопродление. Если сомневаетесь между certbot и acme.sh — сравнение подходов есть в статье certbot или acme.sh: что выбрать для сервера.
Финальная установка через веб-мастер
Откройте https://short.ваш-домен.ru/admin/ — YOURLS покажет мастер установки, который создаст таблицы в базе автоматически. После завершения зайдите под логином admin и паролем из config.php.
Проверьте, что всё работает:
- В админке создайте тестовую короткую ссылку на любой URL.
- Откройте её в браузере — должен произойти редирект.
- Зайдите в статистику (
+после короткой ссылки, напримерhttps://short.ваш-домен.ru/xyz+) — там появится счётчик кликов, IP-геолокация (по базе GeoIP, если подключена), referrer и user agent.
Если статистика не пишется — проверьте права на директорию /var/www/yourls/user/plugins и логи PHP-FPM:
tail -n 50 /var/log/nginx/error.log
tail -n 50 /var/log/php8.3-fpm.log
Защита от спама и брутфорса
Открытый шортенер — лакомая цель для ботов: они пытаются перебрать пароль админки или, если YOURLS_PRIVATE случайно осталось false, массово создавать ссылки на фишинг. Минимальный набор защиты:
- Настройте fail2ban на бан по неудачным попыткам входа в
/admin/— подробная пошаговая настройка есть в статье fail2ban на Ubuntu 24.04. - Ограничьте доступ к
/admin/по IP через Nginx, если работаете с сервисом только вы или небольшая команда:
location /admin/ {
allow 1.2.3.4;
deny all;
try_files $uri $uri/ /yourls-loader.php$is_args$args;
}
- Включите фаервол UFW и оставьте открытыми только 22, 80, 443 — как это сделать, описано в статье про настройку UFW на Ubuntu 24.04.
- Поставьте плагин
YOURLS reCAPTCHAилиSimple reCAPTCHA, если планируете открывать создание ссылок не только себе, а команде через API-токены — так боты не смогут перебирать эндпоинт API.
Бэкапы и обслуживание
База данных YOURLS — единственное, что реально жалко потерять (сами ссылки без базы восстановить нельзя). Настройте ежедневный дамп:
mkdir -p /root/backups
crontab -e
Добавьте строку:
0 3 * * * mysqldump -u yourls_user -p'СЛОЖНЫЙ_ПАРОЛЬ' yourls_db | gzip > /root/backups/yourls_$(date +\%F).sql.gz
Держите ротацию хотя бы на 7-14 дней и по возможности копируйте дампы на другой сервер или в объектное хранилище — локальный бэкап на том же диске не спасёт при аппаратном сбое.
Обновление самого YOURLS сводится к скачиванию нового релиза и замене файлов (кроме user/config.php и папки user/plugins) — делайте это по мере выхода новых версий, поскольку в скрипте, доступном из интернета, старые уязвимости — не абстрактный риск.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Можно ли использовать YOURLS с несколькими доменами одновременно?
Да, плагин «YOURLS Random Shorturls» и связка с несколькими server_name в Nginx позволяют раздавать короткие ссылки с разных доменов на одну инсталляцию, но это требует доработки конфигурации — из коробки YOURLS привязан к одному YOURLS_SITE.
Чем YOURLS отличается от связки «Nginx + redirect-таблица»?
YOURLS даёт админку, статистику кликов, API и защиту от дублей — самописный редирект через map в Nginx быстрее по производительности, но не считает клики и требует ручного редактирования конфига при каждой новой ссылке.
Нужна ли отдельная база GeoIP для статистики по странам?
Да, YOURLS по умолчанию использует встроенную упрощённую базу; для точной геолокации ставится плагин с актуальной MaxMind GeoLite2 базой, которую нужно периодически обновлять самостоятельно.
Выдержит ли минимальный VPS высокую нагрузку от рассылок?
Сам PHP-скрипт лёгкий, но при десятках тысяч кликов в сутки узким местом становится MySQL — если это ваш случай, закладывайте от 1-2 ГБ RAM и следите за размером таблицы yourls_log.
Как перенести существующий YOURLS на новый сервер?
Перенесите дамп базы через mysqldump/mysql, скопируйте директорию user/ (конфиг и плагины) и код самого скрипта — таблицы ссылок при этом не пересоздаются, короткие URL продолжат работать без изменений.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →