Как настроить self-hosted сервис для сокращения ссылок Shlink.io на своем сервере. Установка через Docker, настройка Nginx, API интеграция и отслеживание статистики переходов.
Недавно я решил настроить сервис для сокращения ссылок с помощью Shlink.io. Меня привлекла возможность получить контроль над своим сервисом и настроить его под свои нужды. В этом посте делюсь своим опытом установки и настройки Shlink на сервере.
Shlink.io — это self-hosted инструмент для создания коротких URL и отслеживания их статистики. Удобен тем, что можно настроить под свои нужды и использовать с кастомным доменом. В моем случае я решил протестировать его на собственном сервере, используя Docker.

Для развёртывания Shlink я использовал VPS на хостинге Aéza и Docker. Вот команда, которую я использовал для установки:
docker run \
--name my_shlink \
-p 8080:8080 \
-e DEFAULT_DOMAIN=<ВАШ_ДОМЕН> \
-e IS_HTTPS_ENABLED=true \
-e GEOLITE_LICENSE_KEY=<ВАШ_КЛЮЧ> \
shlinkio/shlink:stableДля использования функции геолокации Shlink требует ключ GeoLite, который можно получить, зарегистрировавшись здесь. Однако мне не удалось получить этот ключ, но даже без него система работает.
После успешной установки я сгенерировал API-ключ для доступа к панели управления командой:
docker exec -it my_shlink shlink api-key:generateЭто позволит вам управлять Shlink через веб-интерфейс или интегрировать его с другими приложениями через API.
Для проксирования трафика на Shlink использовал Nginx. Ниже пример конфигурации, которая перенаправляет HTTP-запросы на HTTPS и проксирует их на локальный сервер Shlink:
server {
if ($host = <ВАШ_ДОМЕН>) {
return 301 https://$host$request_uri;
}
listen 80;
server_name <ВАШ_ДОМЕН>;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name <ВАШ_ДОМЕН>;
ssl_certificate /etc/letsencrypt/live/<ВАШ_ДОМЕН>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<ВАШ_ДОМЕН>/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Эта конфигурация настроена для автоматического перенаправления с HTTP на HTTPS и проксирования запросов на сервер Shlink.
На мой взгляд, настройка прошла довольно гладко, и Shlink оказался простым в использовании. Особенно полезными показались аналитические функции и возможность использования собственного домена. В итоге я получил инструмент, который позволяет не только создавать короткие ссылки, но и следить за статистикой переходов, что пригодится для личных проектов.
Если вам важно контролировать данные и вы хотите независимость от внешних сервисов — стоит попробовать развернуть Shlink на своём сервере.