ГлавнаяОперационные системыLinuxКак разместить собственный сервер bit.ly с помощью Shlink в Linux

Как разместить собственный сервер bit.ly с помощью Shlink в Linux

Shlink — это мощный сервис сокращения ссылок на локальном хостинге для Linux. Он предоставляет простую, но эффективную структуру, в которой вы можете использовать собственное доменное имя в качестве корня для сокращенных ссылок. В этой статье показано, как установить собственный экземпляр Shlink в Ubuntu Linux с помощью Docker и Nginx.

Зачем сокращать ссылки с помощью Shlink?

Одним из самых больших преимуществ Shlink является то, что вы можете использовать свой собственный домен для коротких ссылок, сохраняя при этом возможность самостоятельного хостинга. Это, в св

Зачем сокращать ссылки с помощью Shlink?

сылок SaaS, а также конфиденциальность запуска программного обеспечения на вашем компьютере.

Скриншот, показывающий работу Shlink на демо-сервере.

Помимо этого, Шлинк также может похвастаться разнообразным набором функций, таких как возможность создавать 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 .

Снимок экрана, показывающий страницу регистрации лицензии GeoLite.

Заполните форму своими данными и нажмите Продолжить.

Откройте свой почтовый ящик и найдите письмо с подтверждением от MaxMind.

Нажмите ссылку в электронном письме, а затем укажите пароль для своей новой учетной записи MaxMind.

Установка зависимостей для Shlinkuploads/2024/05/host-bitly-server-shlink-linux-17-password-creation-link-maxmind-account-800x314-1.png" alt="Скриншот, показывающий ссылку для создания пароля для MaxMind.">

Войдите в свою учетную запись MaxMind, затем нажмите Управление лицензионными ключами на панели управления.

Снимок экрана, показывающий пункт меню «Управление лицензионными ключами» на левой боковой панели панели управления.

Нажмите Создать новый лицензионный ключ, затем нажмите Подтвердить, чтобы создать ключ Geolite2.

Получение лицензионного ключа Geolite2erver-shlink-linux-04-confirm-new-license-key-800x300-1.png" alt="Снимок экрана, на котором выделена кнопка «Подтвердить» в запросе на регистрацию лицензионного ключа.">

Скопируйте лицензионный ключ 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» на случайную текстовую строку.

Терминал, показывающий случайный пароль к базе данных PostgreSQL.

Примечание. Вы можете создать эту случайную текстовую строку, используя «/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» с помощью своего личного лицензионного ключа.

Терминал, показывающий лицензию Geolite для демонстрационного сервера Shlink.

Замените переменную «DB_PASSWORD» на пароль базы данных PostgreSQL.

Терминал, показывающий пароль БД 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» во внутреннем контейнере.

Терминал, показывающий полный URL-адрес экземпляра серверной части Shlink.

Вставьте свой ключ API в качестве значения «SHLINK_SERVER_API_KEY».

Терминал, показывающий ключ API серверной части Shlink.

Нажмите Enter, чтобы запустить внешний интерфейс Shlink.

Убедитесь, что ваша база данных, серверная часть Shlink и внешний интерфейс Shlink работают правильно, перечислив все активные в данный момент контейнеры в системе:

sudo docker container list
Терминал, показывающий три контейнера, из которых создается полное веб-приложение Shlink.

Создание обратного прокси-сервера SSL с помощью Nginx

Теперь у вас есть рабочий пакет программного обеспечения Shlink, работающий на вашем сервере. Однако для доступа к нему вам все равно необходимо создать веб-прокси SSL, который делегирует ваши два контейнера в разные домены.

Для начала создайте новую запись A для внешнего интерфейса вашего Shlink. В моем случае я установлю запись A моего интерфейса как «admin».

Снимок экрана, показывающий две записи DNS для демонстрационного сервера Shlink.

Создайте файл конфигурации сайта для вашего экземпляра 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».

Снимок экрана, показывающий целевую страницу по умолчанию для экземпляра Shlink.

Полезно знать: узнайте больше о веб-шифровании к создание собственных сертификатов SSL с использованием OpenSSL .

Создание первой ссылки с помощью Shlink

Чтобы использовать новый экземпляр, нажмите пункт меню Shlink на целевой странице.

Создание обратного прокси-сервера SSL с помощью Nginxающий пункт меню Shlink на целевой странице экземпляра.">

Вставьте длинный URL-адрес в текстовое поле URL-адрес, который необходимо сократить в категории Создать короткий URL-адрес.

Укажите метаданные для короткой ссылки, затем нажмите Сохранить, чтобы создать ссылку.

Скриншот, показывающий форму создания короткой ссылки в Шлинке.

Откройте новый короткий URL-адрес на новой вкладке браузера, затем нажмите кнопку Посещения на панели управления Shlink, чтобы проверить, правильно ли он работает.

Скриншот, показывающий базовую аналитику образца ссылки на Shlink.

Установка и развертывание собственной службы сокращения ссылок — это лишь первый шаг к восстановлению вашей конфиденциальности в Интернете. Узнайте, как Linux может помочь вам восстановить конфиденциальность к хостинг вашего собственного анонимного веб-сайта в Ubuntu с использованием Tor .

Изображение предоставлено: Карлос Муза через Unsplash и Разработчики Shlink.io . Все изменения и скриншоты Рамсеса Реда.

Создание первой ссылки с помощью Shlink

ПОХОЖИЕ СТАТЬИ

Популярные записи