YOURLS (Your Own URL Shortener) – веб-приложение с открытым исходным кодом, предназначенное для создания собственного сервиса сокращения ссылок. В YOURLS можно преобразовывать длинные URL-адреса в короткие ссылки, используя собственное доменное имя или пользовательские псевдонимы. Приложение поддерживает создание как случайных, так и заранее заданных коротких идентификаторов, предоставляет веб-интерфейс для управления ссылками и API для автоматизации работы.
Инсталляция YOURLS на собственном сервере позволяет обеспечить независимость от сторонних сервисов, сохранить контроль над данными и настроить систему в соответствии со своими требованиями. Благодаря простой архитектуре приложение может использоваться как для личных проектов, так и в корпоративной среде для создания фирменного сервиса сокращения ссылок.
В статье разберём, как установить YOURLS на виртуальный выделенный сервер, работающий под управлением Ubuntu или Debian.
Как установить YOURLS на Ubuntu и Debian
YOURLS разработан на языке PHP, а для его работы требуется веб-сервер с поддержкой PHP и системы управления базами данных MySQL или MariaDB. Поэтому перед установкой приложения необходимо подготовить сервер с одним из стандартных веб-стеков – LAMP или LEMP. В данном руководстве будет рассмотрен вариант установки YOURLS с использованием стека LEMP – Linux, Nginx, MariaDB, PHP.
Поскольку, кроме всего прочего, в данном мануале рассматривается настройка доступа к сайту YOURLS с использованием протокола HTTPS, также потребуется наличие доменного имени, через которое будет осуществляться доступ к сайту. Это доменное имя должно быть привязано к IP-адресу виртуального сервера при помощи специальной DNS-записи – A-записи. Данная привязка осуществляется на сайте регистратора домена, на сайте хостинга или с использованием сторонних DNS-сервисов.
Установка LEMP
Перед началом установки обновите списки пакетов в вашей системе:
$ sudo apt update
После чего установите веб-сервер Nginx:
$ sudo apt install nginx
По окончании инсталляции проверьте его состояние:
$ systemctl status nginx
В выводе команды не должно присутствовать сообщений о каких-либо ошибках.

Затем установите интерпретатор PHP-FPM и необходимые расширения PHP для работы YOURLS, включая поддержку базы данных, HTTP-запросов, многобайтовых строк, обработки XML и ZIP-архивов:
$ sudo apt install php-fpm php-mysql php-curl php-mbstring php-xml php-zip
Проверить корректность установки можно через вывод версии PHP:
$ php -v
В нашем примере в систему проинсталлирован PHP версии 8.3.63.

На следующем шаге установите MariaDB:
$ sudo apt install mariadb-server
После завершения установки запустите скрипт базовой настройки безопасности:
$ sudo mariadb-secure-installation
В процессе работы скрипт последовательно предложит настроить аутентификацию пользователя root, удалить анонимные учётные записи, запретить удалённое подключение пользователя root, удалить тестовую базу данных и права доступа к ней, а также обновить таблицы привилегий, чтобы все внесённые изменения вступили в силу. Выполнение этих операций позволяет устранить стандартные небезопасные настройки и подготовить сервер MariaDB к эксплуатации.
Настройка базы данных YOURLS
Поскольку YOURLS в своей работе использует базу данных, на следующем шаге необходимо произвести её настройку. Для чего подключитесь к командной оболочке MariaDB:
$ sudo mysql -u root -p
Здесь создайте базу данных, например, с именем yourls:
CREATE DATABASE yourls CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Создайте нового пользователя с именем, например, yourlsuser, которому разрешено подключаться только с локального сервера. В команде замените YourVeryStrongPassword на пароль для создаваемой учётной записи:
CREATE USER 'yourlsuser'@'localhost' IDENTIFIED BY 'YourVeryStrongPassword';
Созданному пользователю предоставьте полный набор прав на все таблицы и объекты базы данных yourls:
GRANT ALL PRIVILEGES ON yourls.* TO 'yourlsuser'@'localhost';
Для вступления в силу изменений обновите таблицы привилегий:
FLUSH PRIVILEGES;
Чтобы отключиться от командной строки MariaDB, выполните команду:
EXIT;
Установка YOURLS
Дистрибутив YOURLS распространяется в виде архива с исходным кодом приложения. Для загрузки архива перейдите в каталог /tmp:
$ cd /tmp
На странице релизов YOURLS на GitHub скопируйте ссылку на zip-архив с дистрибутивом актуальной версии.

После чего при помощи утилиты wget и скопированной ссылки загрузите архив, сохранив его под именем yourls.zip:
$ wget https://github.com/YOURLS/YOURLS/archive/refs/tags/1.10.4.zip -O yourls.zip
Для распаковки архива понадобится утилита unzip. Следующим шагом установите данную утилиту:
$ sudo apt install unzip
Затем распакуйте полученный архив:
$ unzip yourls.zip
Полученный при распаковке каталог переместите в директорию /var/www/html и сохраните там под именем yourls:
$ sudo sudo mv YOURLS-1.10.4 /var/www/html/yourls
Далее обеспечьте веб-серверу необходимые права для доступа к файлам приложения. Для этого рекурсивно назначьте владельцем и группой всех файлов и каталогов приложения пользователя www-data, от имени которого работает веб-сервер:
$ sudo chown -R www-data:www-data /var/www/html/yourls
Для всех каталогов в директории /var/www/html/yourls установите права доступа 755, а для всех файлов – права доступа 644:
$ sudo find /var/www/html/yourls -type d -exec chmod 755 {} \;
$ sudo find /var/www/html/yourls -type f -exec chmod 644 {} \;
Создайте файл конфигурации YOURLS, скопировав его из шаблона:
$ sudo cp /var/www/html/yourls/user/config-sample.php /var/www/html/yourls/user/config.php
Откройте файл для редактирования:
$ sudo nano /var/www/html/yourls/user/config.php
В файле приведите в соответствие со своими значениями следующие настройки:
/** Имя пользователя базы данных */
define( 'YOURLS_DB_USER', 'yourlsuser' );
/** Пароль пользователя базы данных */
define( 'YOURLS_DB_PASS', 'YourVeryStrongPassword' );
/** Название базы данных */
define( 'YOURLS_DB_NAME', 'yourls' );
/** MySQL hostname — оставьте localhost */
define( 'YOURLS_DB_HOST', 'localhost' );
/** Префикс таблиц YOURLS в базу даных */
define( 'YOURLS_DB_PREFIX', 'yourls_' );
/** URL сайта YOURLS — БЕЗ завершающего слеша */
define( 'YOURLS_SITE', 'https://your-domain-name.ru' );
/** Сделать установку приватной (только авторизованные пользователи) */
define( 'YOURLS_PRIVATE', true );
/** Случайная строка для шифрования cookies — сгенерируйте на yourls.org/cookie */
define( 'YOURLS_COOKIEKEY', 'some_random_secret_string' );
/** Список пользователей для подключения к сайту в массиве $yourls_user_passwords */
$yourls_user_passwords = [
'admin' => 'P@ssw0rd',
'api' => 'passwordforAPI',
];
Что касается последнего параметра, то $yourls_user_passwords – это PHP-массив, в котором перечислены логины и пароли пользователей, имеющих доступ к административной панели YOURLS. При этом для возможности использования данных пользователей параметр YOURLS_PRIVATE должен быть установлен в true. Можно добавить несколько пользователей. Каждая строка массива представляет собой отдельный аккаунт.
По окончании редактирования закройте файл с сохранением внесённых изменений.
Затем создайте конфигурационный файл Nginx:
$ sudo nano /etc/nginx/sites-available/yourls
В файл вставьте следующее содержимое:
server {
listen 80;
listen [::]:80;
server_name your-domain-name.ru www.your-domain-name.ru;
root /var/www/html/yourls;
index index.php;
# Перенаправление коротких ссылок через yourls-loader.php
location / {
try_files $uri $uri/ /yourls-loader.php$is_args$args;
}
# Обработка PHP через PHP-FPM
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.X-fpm.sock; # укажите акутальную версию PHP
}
# Запрет доступа к скрытым файлам
location ~ /\.ht {
deny all;
}
error_log /var/log/nginx/yourls_error.log;
access_log /var/log/nginx/yourls_access.log;
}
В конфигурации замените your-domain-name.ru на ваше доменное имя и укажите актуальную версию PHP в строке fastcgi_pass unix:/var/run/php/php8.X-fpm.sock;. Номер версии можно узнать при помощи команды:
$ php -v
По окончании редактирования конфигурационного файла Nginx и сохранения настроек активируйте конфигурацию виртуального хоста:
$ sudo ln -s /etc/nginx/sites-available/yourls /etc/nginx/sites-enabled
После чего отключите дефолтный виртуальный хост:
$ sudo rm -f /etc/nginx/sites-enabled/default
Затем проверьте синтаксис Nginx на корректность:
$ sudo nginx -t
Вывод команды должен выглядеть как на скриншоте ниже.

Если ошибок нет, перезапустите конфигурацию веб-сервера:
$ sudo systemctl reload nginx
Настройка HTTPS-доступа
Для настройки доступа к сайту по протоколу HTTPS требуется получение и установка TLS-сертификата от доверенного Центра сертификации. Одним из наиболее распространённых Центров сертификации, выдающим бесплатные TLS-сертификаты, является Let’s Encrypt. Для автоматического получения, установки и последующего продления сертификатов от Let’s Encrypt на Linux-системах удобно использовать утилиту Certbot.
Для инсталляции утилиты Certbot и модуля для интеграции с веб-сервером Nginx запустите команду:
$ sudo apt install certbot python3-certbot-nginx
Если ваш сервер защищён брандмауэром UFW, добавьте разрешающие правила для протоколов HTTP и HTTPS:
$ sudo ufw allow http
$ sudo ufw allow https
Протокол HTTPS будет использоваться для доступа к сайту YOURLS после установки TLS-сертификата и настройки веб-сервера Nginx. Протокол же HTTP используется утилитой Certbot для подтверждения владения доменом при выпуске сертификата. Способ проверки при помощи подключения к сайту по HTTP называется HTTP-01 challenge.
Чтобы инициировать процесс получения TLS-сертификата Let’s Encrypt, запустите следующую команду, в которой замените your-domain-name.ru на имя вашего домена:
$ sudo certbot --nginx -d your-domain-name.ru -d www.your-domain-name.ru
Во время своей работы утилита Certbot проверяет доступность доменов и подтверждает право владения ими с помощью механизма HTTP-01 challenge, временно размещая служебные файлы, необходимые для проверки. После успешного подтверждения выпускается сертификат, который сохраняется на сервере, а Certbot автоматически изменяет конфигурацию Nginx, подключая полученный сертификат и закрытый ключ к соответствующему виртуальному хосту.

По окончании работы утилиты Certbot убедитесь, что настроено автообновление сертификатов:
$ sudo systemctl status certbot.timer
Вывод команды должен показать, что механизм автоматического продления сертификатов Let’s Encrypt настроен корректно. В данном случае дважды в сутки система будет запускать Certbot, который проверит срок действия сертификата и выполнит его продление в случае необходимости. Если сертификат ещё действителен, никаких изменений вноситься не будет.

Первоначальное подключение к сайту YOURLS
Откройте браузер и перейдите по ссылке вида https://your-domain-name.ru/admin, где вместо your-domain-name.ru укажите имя вашего домена. На открывшейся странице кликните Install YOURLS.

В результате система создаст необходимые таблицы в базе данных, и после успешной установки кликните YOURLS Administration Page.

Для подключения к веб-панели используйте логин и пароль, указанные ранее в файле /var/www/html/yourls/user/config.php.

