Shlink — это мощный сервис сокращения ссылок на локальном хостинге для Linux. Он предоставляет простую, но эффективную структуру, в которой вы можете использовать собственное доменное имя в качестве корня для сокращенных ссылок. В этой статье показано, как установить собственный экземпляр Shlink в Ubuntu Linux с помощью Docker и Nginx.
Зачем сокращать ссылки с помощью Shlink?
Одним из самых больших преимуществ Shlink является то, что вы можете использовать свой собственный домен для коротких ссылок, сохраняя при этом возможность самостоятельного хостинга. Это, в св
Contents
Зачем сокращать ссылки с помощью Shlink?
сылок SaaS, а также конфиденциальность запуска программного обеспечения на вашем компьютере.Помимо этого, Шлинк также может похвастаться разнообразным набором функций, таких как возможность создавать QR-коды, автоматически пересылать запросы по ссылкам и создавать собственные многосегментные фрагменты. Это делает Shlink удобным инструментом, если вы ищете службу сокращения ссылок в Linux, где вы можете настроить внешний вид и поведение ваших ссылок.
Полезно знать: узнайте больше о самостоятельном хостинге до создание собственного сервера псевдонимов электронной почты с помощью SimpleLogin .
Получение Docker для Shlink
Предположение: В этой статье предполагается, что вы устанавливаете Shlink на VPS Ubuntu 22.04 и в настоящее время у вас есть доменное имя.
Первым шагом при развертывании Shlink в Linux является получение копии Docker. Для этого получите ключ подписи проекта Docker с их веб-сайта:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
Создайте файл репозитория для двоичных файлов Docker:
sudo nano /etc/apt/sources.list.d/docker.list
Вставьте следующую строку кода в новый файл репозитория:
deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/Получение Docker для Shlink
stable
Обновите список репозитория вашей системы, выполнив apt update
:
sudo apt update && sudo apt upgrade
Установка зависимостей для Shlink
После того как репозитории Docker запущены, вы можете использовать apt для получения зависимостей для Shlink:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin nginx
Убедитесь, что в вашей системе доступен «основной» пакет Snap:
sudo snap install core
Загрузите и установите пакет оснастки «certbot» от Electronic Frontier Foundation:
sudo snap install certbot --classic
Получение лицензионного ключа Geolite2
Еще одной определяющей особенностью Shlink является то, что он может отслеживать общее местоположение пользователя, перешедшего по вашим ссылкам. Чтобы использовать это, откройте страницу Регистрация лицензирования Geolite2 .
Заполните форму своими данными и нажмите Продолжить.
Откройте свой почтовый ящик и найдите письмо с подтверждением от MaxMind.
Нажмите ссылку в электронном письме, а затем укажите пароль для своей новой учетной записи MaxMind.
Войдите в свою учетную запись MaxMind, затем нажмите Управление лицензионными ключами на панели управления.
Нажмите Создать новый лицензионный ключ, затем нажмите Подтвердить, чтобы создать ключ Geolite2.
Скопируйте лицензионный ключ Geolite2 в текстовый файл на своем компьютере и сохраните его.
Получение и установка Shlink
Чтобы установить Shlink, вам необходимо сначала создать виртуальную сеть Docker. Это будет частная сеть приложения, где оно сможет взаимодействовать с другими контейнерами, которые вы развернете:
sudo docker network create -d bridge \ --subnet=10.0.0.0/24 \ --gateway=10.0.0.1 \ shlink-network
Разверните базу данных PostgreSQL и свяжите ее с новой виртуальной сетью Docker:
sudo docker run -d \ --name shlink-db \ -e POSTGRES_PASSWORD=!REPLACE_ME! \ -e POSTGRES_USER=postgres \ -e POSTGRES_DB=shlink \ -p 127.0.0.1:5432:5432 \ --restart always \ --network="shlink-network" \ postgres:12.1
Измените значение переменной среды «POSTGRES_PASSWORD» на случайную текстовую строку.
Примечание. Вы можете создать эту случайную текстовую строку, используя «/dev/urandom»: cat /dev/urandom | tr -dc 'A-Za-z0-9' | fold -w 32 | head -n 1
Вставьте следующую команду в новый сеанс терминала:
sudo docker run -d \ --name shlink-stable \ -p 8081:8080 \ -e DEFAULT_DOMAIN=YOUR-ROOT.DOMAIN \ -e IS_HTTPS_ENABLED=true \ -e GEOLITE_LICENSE_KEY=!REPLACE_ME! \ -e DB_DRIVER=postgres \ -e DB_USER=postgres \ -e DB_PASSWORD=!REPLACE_ME! \ -e DB_HOST=shlink-db \ --network="shlink-network" \ shlinkio/shlink:stable
Замените значение переменной DEFAULT_DOMAIN именем вашего домена.
Примечание. Убедитесь, что в вашем домене есть запись A, указыва
Получение и установка Shlink
p>Измените значение переменной «GEOLITE_LICENSE_KEY» с помощью своего личного лицензионного ключа.
Замените переменную «DB_PASSWORD» на пароль базы данных PostgreSQL.
Нажмите Enter, чтобы запустить экземпляр Shlink.
Установка и подключение интерфейса Shlink
Извлеките ключ API из контейнера Shlink, а затем скопируйте его в буфер обмена:
sudo docker exec -it shlink-stable shlink api-key:generate
Вставьте следующую команду в новый сеанс терминала:
sudo docker run -d \ --name shlink-client \ -p 8080:8080 \ -e SHLINK_SERVER_URL=https://YOUR-ROOT.DOMAIN \ -e SHLINK_SERVER_API_KEY=!REPLACE-ME! \ --network="shlink-network" shlinkio/shlink-web-client
Замените «SHLINK_SERVER_URL» значением из переменной «DEFAULT_DOMAIN» во внутреннем контейнере.
Вставьте свой ключ API в качестве значения «SHLINK_SERVER_API_KEY».
Нажмите Enter, чтобы запустить внешний интерфейс Shlink.
Убедитесь, что ваша база данных, серверная часть Shlink и внешний интерфейс Shlink работают правильно, перечислив все активные в данный момент контейнеры в системе:
sudo docker container list
Создание обратного прокси-сервера SSL с помощью Nginx
Теперь у вас есть рабочий пакет программного обеспечения Shlink, работающий на вашем сервере. Однако для доступа к нему вам все равно необходимо создать веб-прокси SSL, который делегирует ваши два контейнера в разные домены.
Для начала создайте новую запись A для внешнего интерфейса вашего Shlink. В моем случае я установлю запись A моего интерфейса как «admin».
Создайте файл конфигурации сайта для вашего экземпляра Shlink с помощью вашего любимого текстового редактора:
sudo nano /etc/nginx/sites-available/shlink
Вставьте следующий блок кода в файл конфигурации:
server { server_name YOUR-ROOT.DOMAIN; location / { proxy_pass http://127.0.0.1:8081; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } } server { server_name SUBDOMAIN.YOUR-ROOT.DOMAINУстановка и подключение интерфейса Shlink
proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; } }
Замените переменную YOUR-ROOT.DOMAIN на корневой домен, а переменную SUBDOMAIN.YOUR-ROOT.DOMAIN на поддомен вашего внешнего интерфейса.
Сохраните файл конфигурации, затем включите веб-приложение в Nginx:
sudo ln -s /etc/nginx/sites-available/shlink /etc/nginx/sites-enabled/
Перезагрузите демон Nginx, чтобы применить новые настройки:
sudo systemctl reload nginx
Зарегистрируйте свой сервер в Electronic Frontier Foundation:
sudo certbot register --agree-tos -m YOUR@EMAIL.ADDRESS
Запросите новый многодоменный SSL-сертификат для вашего экземпляра Shlink:
sudo certbot --nginx -d YOUR-ROOT.DOMAIN -d SUBDOMAIN.YOUR-ROOT.DOMAIN
Убедитесь, что ваш сервер Shlink работает правильно, перейдя в консоль администратора вашего экземпляра. В моем случае это «https://admin.helloserver.top».
Полезно знать: узнайте больше о веб-шифровании к создание собственных сертификатов SSL с использованием OpenSSL .
Создание первой ссылки с помощью Shlink
Чтобы использовать новый экземпляр, нажмите пункт меню Shlink на целевой странице.
Вставьте длинный URL-адрес в текстовое поле URL-адрес, который необходимо сократить в категории Создать короткий URL-адрес.
Укажите метаданные для короткой ссылки, затем нажмите Сохранить, чтобы создать ссылку.
Откройте новый короткий URL-адрес на новой вкладке браузера, затем нажмите кнопку Посещения на панели управления Shlink, чтобы проверить, правильно ли он работает.
Установка и развертывание собственной службы сокращения ссылок — это лишь первый шаг к восстановлению вашей конфиденциальности в Интернете. Узнайте, как Linux может помочь вам восстановить конфиденциальность к хостинг вашего собственного анонимного веб-сайта в Ubuntu с использованием Tor .
Изображение предоставлено: Карлос Муза через Unsplash и Разработчики Shlink.io . Все изменения и скриншоты Рамсеса Реда.