mayo 15

Crear máquina virtual en Proxmox VE: Guía completa

Llevaba tiempo usando Pi‑hole en otros sistemas y he decidido montarlo directamente en Proxmox, dentro de un contenedor LXC, para tener un bloqueador de anuncios y rastreadores a nivel de red, siempre encendido y fácil de actualizar.​​
Aquí dejo mis apuntes por si los necesito en el futuro.

Continúa leyendo

Categoría: Bases de Datos, Docker, Inteligencia Artificial, Linux, Proxmox VE, Redes, Servidores Web | Comentarios desactivados en Crear máquina virtual en Proxmox VE: Guía completa
julio 28

Acceso remoto en Linux: Guía de xRDP y SSH

Sacado de AQUÍ

Si estáis empezando en el mundo de la sincronización de vuestros archivos entre NAS Synology y Google Drive, os habréis topado seguramente con un programa llamado ‘rclone‘. También os habréis dado cuenta que existen decenas de guías en las que cada uno explica el proceso medianamente bien de una manera distinta al resto. En la siguiente guía os lo explico todo paso a paso de una forma clara y directa, para que no tengáis perdida en todo el proceso.

Continúa leyendo
Categoría: Inteligencia Artificial, Linux, Redes, Servidores Web | Comentarios desactivados en Acceso remoto en Linux: Guía de xRDP y SSH
mayo 3

Cómo instalar phpMyAdmin en Ubuntu: Guía completa

phpMyAdmin es una de las herramientas más populares para gestionar bases de datos MySQL y MariaDB a través de una interfaz web. Si tienes un servidor LAMP o LEMP, phpMyAdmin te permite crear, modificar y eliminar bases de datos, tablas y registros sin necesidad de escribir comandos SQL. En esta guía te explico cómo instalarlo y configurarlo de forma segura en Ubuntu.

¿Qué es phpMyAdmin?

phpMyAdmin es una aplicación web de código abierto escrita en PHP que proporciona una interfaz gráfica para administrar servidores MySQL, MariaDB y Drizzle. Es la herramienta estándar en la mayoría de los hosting compartidos y es esencial para desarrolladores que trabajan con bases de datos.

Requisitos previos

  • Un servidor con Ubuntu 20.04, 22.04 o 24.04
  • Apache instalado y funcionando
  • MySQL o MariaDB instalado
  • PHP instalado con los módulos necesarios
  • Acceso root o sudo

Paso 1: Instalar phpMyAdmin

sudo apt update
sudo apt install phpmyadmin -y

Durante la instalación, el asistente te preguntará:

  • ¿Qué servidor web configurar? Selecciona apache2 con la barra espaciadora y pulsa Enter
  • ¿Configurar base de datos con dbconfig-common? Selecciona
  • Contraseña de aplicación MySQL: Introduce una contraseña segura

Paso 2: Configurar Apache

Si el asistente no configura Apache automáticamente, hazlo manualmente:

sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin

O crea un VirtualHost dedicado:

sudo nano /etc/apache2/sites-available/phpmyadmin.conf

Añade:

<VirtualHost *:80>
    ServerName phpmyadmin.tudominio.com
    DocumentRoot /usr/share/phpmyadmin
    ErrorLog ${APACHE_LOG_DIR}/phpmyadmin_error.log
    CustomLog ${APACHE_LOG_DIR}/phpmyadmin_access.log combined
</VirtualHost>

Activa el sitio:

sudo a2ensite phpmyadmin.conf
sudo systemctl reload apache2

Paso 3: Configurar acceso

Por defecto, phpMyAdmin solo permite acceso desde localhost. Para permitir acceso desde otras IPs:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Busca las líneas Require ip 127.0.0.1 y Require ip ::1 y añade tu IP:

Require ip 127.0.0.1
Require ip ::1
Require ip 192.168.1.0/24

Paso 4: Crear un usuario MySQL dedicado

Por seguridad, no uses el usuario root de MySQL con phpMyAdmin. Crea un usuario específico:

sudo mysql -u root -p

Dentro de MySQL:

CREATE USER 'phpmyadmin'@'localhost' IDENTIFIED BY 'contraseña_segura';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Seguridad de phpMyAdmin

phpMyAdmin es un objetivo común de ataques. Sigue estas recomendaciones:

  • Usa HTTPS con un certificado SSL de Let's Encrypt
  • Cambia la URL por defecto de /phpmyadmin a algo personalizado
  • Configura autentecación adicional con .htaccess
  • Restringe el acceso por IP en la configuración de Apache
  • Actualiza regularmente a la última versión
  • Deshabilita el login root desde phpMyAdmin

Conclusión

phpMyAdmin es una herramienta indispensable para gestionar bases de datos MySQL/MariaDB. Con esta guía tienes un phpMyAdmin instalado, configurado y seguro en tu servidor Ubuntu. Recuerda siempre seguir las buenas prácticas de seguridad y mantener todo actualizado.

Categoría: Bases de Datos, Inteligencia Artificial, Linux, Servidores Web | Comentarios desactivados en Cómo instalar phpMyAdmin en Ubuntu: Guía completa
mayo 2

Instalar LAMP Stack en Ubuntu: Apache, MySQL y PHP

La pila LAMP es una de las configuraciones de servidor web más populares del mundo. Sus siglas representan Linux, Apache, MySQL y PHP. Es la base que impulsa millones de sitios web, desde blogs personales hasta aplicaciones empresariales. En esta guía completa te explico cómo instalar y configurar cada componente paso a paso en Ubuntu.

¿Qué es exactamente LAMP?

LAMP es un acrónimo que describe una pila de software de código abierto para servidores web:

  • Linux — El sistema operativo (Ubuntu, Debian, CentOS, etc.)
  • Apache — El servidor web que sirve las páginas HTTP
  • MySQL/MariaDB — El sistema de gestión de bases de datos
  • PHP — El lenguaje de programación del lado del servidor

Juntos, estos cuatro componentes crean un entorno completo para ejecutar aplicaciones web dinámicas como WordPress, Joomla, Drupal, Laravel y muchas más.

Requisitos previos

  • Un servidor o máquina virtual con Ubuntu 20.04, 22.04 o 24.04
  • Acceso root o un usuario con privilegios sudo
  • Conexión a Internet
  • Al menos 512MB de RAM (1GB recomendado)

Paso 1: Actualizar el sistema

Antes de instalar cualquier paquete, actualiza los repositorios y el software existente:

sudo apt update
sudo apt upgrade -y

Paso 2: Instalar Apache

Apache es el servidor web más utilizado del mundo. Para instalarlo:

sudo apt install apache2 -y

Después de la instalación, Apache se inicia automáticamente. Verifica que está funcionando:

sudo systemctl status apache2

Deberías ver active (running). También puedes abrir un navegador y visitar http://tu-ip-del-servidor para ver la página de bienvenida de Apache.

Configurar el firewall

Si tienes UFW activado, permite el tráfico HTTP y HTTPS:

sudo ufw allow 'Apache Full'
sudo ufw status

Paso 3: Instalar MySQL

MySQL es un sistema de gestión de bases de datos relacional. Para instalarlo:

sudo apt install mysql-server -y

Después de la instalación, ejecuta el script de seguridad:

sudo mysql_secure_installation

Este script te guiará para:

  • Establecer una contraseña para el usuario root de MySQL
  • Eliminar usuarios anónimos
  • Deshabilitar el login remoto de root
  • Eliminar la base de datos de prueba

Responde Y (sí) a todas las preguntas para una configuración segura.

Verificar MySQL

sudo systemctl status mysql

Paso 4: Instalar PHP

PHP es el lenguaje de programación que procesa el contenido dinámico. Instala PHP junto con los módulos más comunes:

sudo apt install php libapache2-mod-php php-mysql php-cli php-curl php-gd php-mbstring php-xml php-zip -y

Cada módulo tiene una función específica:

  • php-mysql — Conexión a bases de datos MySQL
  • php-curl — Peticiones HTTP externas
  • php-gd — Manipulación de imágenes
  • php-mbstring — Cadenas multibyte (UTF-8)
  • php-xml — Procesamiento de XML
  • php-zip — Compresión de archivos

Verificar PHP

Crea un archivo de prueba:

echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php

Visita http://tu-ip/info.php en tu navegador. Deberías ver la página de información de PHP. Importante: elimina este archivo después de verificar:

sudo rm /var/www/html/info.php

Paso 5: Probar la pila completa

Crea un script de prueba que conecte a MySQL:

sudo nano /var/www/html/test_db.php

Añade este contenido:

<?php
$mysqli = new mysqli("localhost", "root", "tu_contraseña");

if ($mysqli->connect_error) {
    die("Error de conexión: " . $mysqli->connect_error);
}
echo "Conexión exitosa a MySQL!";
$mysqli->close();
?>

Visita http://tu-ip/test_db.php para verificar la conexión. Recuerda eliminarlo después.

Paso 6: Configurar Virtual Hosts

Para alojar múltiples sitios web en un solo servidor, configura Virtual Hosts:

sudo nano /etc/apache2/sites-available/misitio.conf

Añade:

<VirtualHost *:80>
    ServerName misitio.com
    ServerAlias www.misitio.com
    DocumentRoot /var/www/misitio
    ErrorLog ${APACHE_LOG_DIR}/misitio_error.log
    CustomLog ${APACHE_LOG_DIR}/misitio_access.log combined
</VirtualHost>

Activa el sitio y el módulo rewrite:

sudo mkdir -p /var/www/misitio
sudo a2ensite misitio.conf
sudo a2enmod rewrite
sudo systemctl reload apache2

Conclusión

Con estos pasos, tienes un servidor LAMP completamente funcional en Ubuntu. Esta configuración es la base para ejecutar WordPress, aplicaciones Laravel, tiendas PrestaShop, y prácticamente cualquier aplicación web basada en PHP. Recuerda mantener el sistema actualizado y seguir buenas prácticas de seguridad.

Categoría: Bases de Datos, Linux, Seguridad, Servidores Web | Comentarios desactivados en Instalar LAMP Stack en Ubuntu: Apache, MySQL y PHP
abril 25

DNS dinámico en Linux: Conectar dominio con IP dinámica

Si tienes un servidor en casa o en una oficina con una dirección IP pública dinámica (que cambia cada cierto tiempo), acceder a él desde fuera puede ser un problema. La solución es el DNS dinámico (DDNS), un servicio que asocia un nombre de dominio fijo a tu IP cambiante. En esta guía te explico cómo configurar DNS dinámico en Linux paso a paso.

¿Qué es DNS dinámico?

El sistema DNS tradicional traduce nombres de dominio (como google.com) en direcciones IP. Cuando tu IP es estática (no cambia), esto funciona sin problemas. Pero si tu proveedor de Internet te asigna una IP dinámica (que puede cambiar cada horas o días), tu dominio dejaría de apuntar a tu servidor cada vez que la IP cambie.

El DNS dinámico resuelve esto: un cliente en tu servidor detecta los cambios de IP y actualiza automáticamente el registro DNS de tu dominio.

Proveedores de DNS dinámico gratuitos

  • DuckDNS (duckdns.org) — El más sencillo, gratuito, sin límites
  • No-IP (noip.com) — Gratuito con confirmación mensual
  • FreeDNS (freedns.afraid.org) — Múltiples dominios gratuitos
  • Cloudflare — Si ya usas Cloudflare para tu dominio
  • Afraid.org — Gran variedad de dominios gratuitos

Método 1: DuckDNS (recomendado para principiantes)

Paso 1: Crear una cuenta

  1. Ve a duckdns.org
  2. Inicia sesión con Google, GitHub o Reddit
  3. Crea un subdominio (por ejemplo, miservidor)
  4. Apunta el token que te asignan

Paso 2: Instalar el cliente

# Crear directorio
mkdir -p ~/duckdns
cd ~/duckdns

# Crear script de actualización
nano duck.sh

Añade:

#!/bin/bash
echo url="https://www.duckdns.org/update?domains=miservidor&token=TU_TOKEN&ip=" | curl -k -o ~/duckdns/duck.log -K -

Reemplaza miservidor con tu subdominio y TU_TOKEN con tu token.

# Hacer ejecutable
chmod +x duck.sh

# Probar
./duck.sh
cat duck.log

Deberías ver OK en el log.

Paso 3: Configurar cron para actualización automática

crontab -e

Añade esta línea para actualizar cada 5 minutos:

*/5 * * * * ~/duckdns/duck.sh >/dev/null 2>&1

Método 2: Cliente DDNS genérico

Para otros proveedores, puedes usar un cliente DDNS universal:

# Instalar ddclient
sudo apt install ddclient -y

# Configurar
sudo nano /etc/ddclient.conf

Ejemplo para No-IP:

protocol=dyndns2
use=web, web=myip.dnsomatic.com
server=dynupdate.no-ip.com
login=tu_usuario
password=tu_contraseña
tudominio.ddns.net

Método 3: Con Cloudflare

Si tu dominio usa Cloudflare, puedes usar su API para actualizar registros DNS:

#!/bin/bash
# Script DDNS para Cloudflare
API_KEY="tu_api_key"
EMAIL="tu@email.com"
ZONE_ID="tu_zone_id"
RECORD_ID="tu_record_id"
DOMAIN="tudominio.com"

IP=$(curl -s https://api.ipify.org)
curl -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID"   -H "X-Auth-Email: $EMAIL"   -H "X-Auth-Key: $API_KEY"   -H "Content-Type: application/json"   --data "{"type":"A","name":"$DOMAIN","content":"$IP","ttl":120}"

Verificar que funciona

# Comprobar tu IP pública
curl https://api.ipify.org

# Verificar que el DNS apunta correctamente
dig miservidor.duckdns.org +short
nslookup miservidor.duckdns.org

Conclusión

El DNS dinámico es la solución perfecta para acceder a tu servidor con IP dinámica desde cualquier lugar. Con herramientas como DuckDNS, la configuración toma menos de 10 minutos y es completamente gratuita. Una vez configurado, tu dominio siempre apuntará a tu servidor sin importar cuánto cambie tu IP.

Categoría: Linux, Seguridad | Comentarios desactivados en DNS dinámico en Linux: Conectar dominio con IP dinámica
abril 19

Sustituir router por MikroTik: Guía de configuración

Tutorial sacado íntegramente de aquí

En este post veremos cómo usar un equipo Mikrotik para realizar una sustitución de un router de Movistar.

Como sabéis ya hice un post de como sustituir un router Asus por el router de Movistar. Y como sabéis también hice especial hincapié en separar dos casos de uso:


• Un caso si teníamos Router de Movistar + ONT por separado.
• El otro caso si teníamos el HGU (Home Gateway Unit), donde la ONT y el Router vienen integrados en el mismo aparato.


En este post también separaré debidamente ambos casos.
También quiero remarcar que esta sustitución es para poder tener únicamente datos en ambos casos, es decir, en este post NO hablaremos por ahora del tema de la Televisión ni del teléfono.


Finalmente, como la idea es poder usar sin problemas el servicio de 300/300 Mbps de Movistar hemos optado por usar un Mikrotik RB750Gr3.


Empezamos, primero encenderemos el equipo y accederemos a él mediante Winbox o vía web.

Continúa leyendo
Categoría: Inteligencia Artificial, Linux, Redes, Seguridad | Comentarios desactivados en Sustituir router por MikroTik: Guía de configuración
febrero 13

Cursos de aerografía en Academia C10 una historia de amor, tutorial de David

Cursos de aerografía en Academia C10: una historia de amor, tutorial de David

Un frío y seco día de Diciembre, mi amigo Jorge me ofreció conocerla, me habían hablado de ella, de cómo todos la miraban, de cómo exhibía sus curvas por el barrio.

A mi por supuesto me gusto la idea, más aún cuando Jorge me dijo: ¨puedes hacer lo que quieras con ella, a mi no me importa, somos amigos¨.

Continúa leyendo
Categoría: Off-Topic | Comentarios desactivados en Cursos de aerografía en Academia C10 una historia de amor, tutorial de David