![](http://tech.lobobrothers.com/wp-content/uploads/2023/05/shlink.png)
TU SERVER DE SHORTLINKS
Vamos a ver como montar tu propio servidor de shortlinks en Debian 11 utilizando shlink , el cual tiene muchas características, multi dominio, códigos QR, emojis, REST API, Bot detectión,....
Lo primero es instalar php 8.1 o 8.2 con los módulos necesarios, como indican en la documentación oficial.
INSTALAR PHP 8.1 EN DEBIAN 11
Ejecutamos:
apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list
curl -fsSL https://packages.sury.org/php/apt.gpg| gpg --dearmor -o /etc/apt/trusted.gpg.d/sury-keyring.gpg
apt-get update
Hemos añadido los repositorios y a continuación instalamos los módulos necesarios.
apt-get install php-apcu php8.1 php8.1-fpm php8.1-mysql php8.1-gd php8.1-common php8.1-curl php8.1-intl php8.1-gmp php8.1-xml php-dev php-pear
Podemos comprobar con:
php --modules
Que están cargados correctamente.
INSTALACIÓN Y CONFIGURACIÓN SHLINK
Comenzamos instalando los paquetes necesarios.
apt-get install nginx mariadb-server unzip sudo
Creamos la base de datos.
mysql
Una vez dentro escribimos.
CREATE DATABASE shlink;
GRANT ALL ON shlink.* TO 'shlink'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;
Puedes llamar a la base de datos como te guste al igual que el usuario.
Una vez tenemos la base de datos, procedemos con la descarga e instalación de la última versión shlink
wget https://github.com/shlinkio/shlink/releases/download/v3.5.4/shlink3.5.4_php8.1_dist.zip
unzip shlink3.5.4_php8.1_dist.zip
mv shlink3.5.4_php8.1_dist /var/www/html/shlink
chown -R www-data:www-data /var/www/html/shlink/
chmod -R 755 /var/www/html/shlink/
cd /var/www/html/shlink
(Sino os vais a este directorio el siguiente comando no será capaz de escribir el fichero de configuración si lo ejecutáramos con el path completo /var/www/htmtl...., puesto que el path que hay en el script es config/params para grabar el fichero de configuración)
sudo -u www-data php8.1 vendor/bin/shlink-installer install
Y nos saldrá un menú interactivo
DATABASE (los datos de la conexión a nuestra base de datos)
Elegimos la 1 en nuestro caso y nos pedirá los siguientes datos
URL SHORTENER
1. El dominio por defecto para generar las url cortas
2. Con SSL o sin SSL
3. Cuantos caracteres
4. Si quieres que resuelva en función de la url larga
5. Si quieres que resuelva la url lo antes posible y añada el resto de la url larga
6. Si quieres que soporte multiniveles
7. Si quieres que considere la misma url con barra al final o sin ella
8. Como quieres que coincidan
9. Licencia de GeoLite2.
Aquí nos paramos un poco para explicar. Shlink utiliza GeoLite2 para geolocalizar las visitas, si no es introducida simplemente no las geolocalizara. Obtener esta licencia es gratis, solo hay que:
Crear cuenta en MAXMIND https://www.maxmind.com/en/geolite2/signup
Y a continuación generar la key
Tras eso nos pide que tipo de redireccionamiento queremos, elegir el mejor para vuestro caso.
Y cuanto tiempo queremos que sean cacheadas en segundos, por defecto 30
TRACKING
Para no hacerlo más largo el post simplemente es contestar a las preguntas de que quieres hacer seguimiento y si quieres excluir algo como un rango de ip, un navegador,etc...
REDIRECTS
Donde quieres redirigir según lo que te preguntan, tiene que ser en formato http:// o https://
QR CODES
Como quieres que sean los QR
APPLICATION
No tiene misterio, salvo quizá la primera que quiere decir si ese link estará indefinido o puedes decirle 1, entonces se borrara tras la primera apertura.
INTEGRATIONS
Como no estamos montando un cluster le diremos que no.
Una vez completado encontraremos nuestro fichero de configuración en /var/www/html/shlink/config/params con el nombre generated_config.php, el cual podemos modificar si cambias de opinión en las opciones seleccionadas durante la instalación.
CONTINUAMOS CON NGINX
Borramos el sitio por defecto
rm /etc/nginx/sites-enabled/default
Y ahora creamos nuestro sitio
nano /etc/nginx/sites-available/tudominio.conf
Añadiendo lo siguiente
server {
listen 80;
listen [::]:80;
server_name tudominio.com;
root /var/www/html/shlink/public;
error_log /var/log/nginx/shlink.error;
access_log /var/log/nginx/shlink.access;
index index.php index.html index.htm index.nginx-debian.html;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /index.php$is_args$args;
}
# redirect some entire folders
rewrite ^/(vendor|translations|build)/.* /index.php break;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Creamos el enlace simbólico para activarlo
ln -s /etc/nginx/sites-available/tudominio.conf /etc/nginx/sites-enabled/
Comprobamos que no haya ningún error en la configuración
nginx -t
Y lo recargamos
systemctl reload nginx
Ahora habilitaremos SSL ya que en nuestro config le hemos dicho SSL
apt-get install certbot python3-certbot-nginx
certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d tudominio.com
Hecho todo esto solo nos falta generar nuestar API key
sudo -u www-data php8.1 /var/www/html/shlink/bin/cli api-key:generate
Y nos dirigimos a https://app.shlink.io/ para añadir nuestro servidor si queremos la interfaz gráfica
O bien desde el propio servidor utilizando
sudo -u www-data php8.1 /var/www/html/shlink/bin/cli short-url:create
OJO!!! siempre proveer el https://
Podemos ver las opciones con:
sudo -u www-data php8.1 /var/www/html/shlink/bin/cli
La documentación de la API podéis encontrarla en https://shlink.io/documentation/api-docs/
Y por último para obtener el QR solo tenéis que añadir /qr-code a la url corta.
TL.
Gracias por leer nuestros posts.
No hay comentarios