miércoles, 4 de diciembre de 2024

Instalación y Configuración de un DNS Público en Debian 12

Configuración de un DNS Público en Debian 12
=====================================
Registrar un dominio público en Goddady, Namecheap  ó punto.pe.
Configura en tu proveedor de dominio los glue records apuntando a las direcciones IP de tu servidor vps
ns1 -> 158.10.11.12
ns2 -> 158.10.11.12
Agregar los nameservers personalizados
Nameserver 1:   ns1.tudominio.com
Nameserver 2:   ns2.tudominio.com 

Actualizar repositorios de Debian
sudo apt update
sudo apt upgrade

Acceder al servidor con el usuario root
Crear el usuario y agregarlo al grupo SUDO
sudo adduser jperez
sudo usermod -aG sudo jperez

Verificar si el usuario pertenece al grupo sudo
groups jperez
exit

Ingresar con el nuevo usuario:
ssh jperez@158.10.11.12

Configuración de SSH
Configurar SSH para Deshabilitar Root:
sudo vim /etc/ssh/sshd_config
:33     PermitRootLogin no
:124   AllowUsers jperez  -> añadir al final del archivo

Reiniciar el Servicio SSH
sudo systemctl restart sshd

Instalar UFW:
sudo apt install ufw

Habilitar UFW:
sudo ufw enable

Habilitar el servicio ssh
sudo ufw allow ssh
sudo systemctl status ssh

Configurar Nombre de Host
Cambiar el hostname del servidor vps
$> sudo hostnamectl set-hostname webserver.midominio.dev
$> exit
Volver a loguearse
$> hostnamectl

Configurar la ip del host, agregar la ip interna del vps
sudo vim /etc/hosts
127.0.0.1     localhost.localdomain localhost
192.168.2.5    webserver.dominio.dev webserver

Instalación de DNS Server Interno Bind
sudo apt install bind9 bind9utils dnsutils

Configurar Bind
sudo vim /etc/bind/named.conf.options
-----------------------------------------------------------------------------------------------------------------------------
options {
        listen-on port 53 { ip_publica; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/cache/bind";
        dump-file       "/var/cache/bind/cache_dump.db";
        statistics-file "/var/cache/bind/named_stats.txt";
        memstatistics-file "/var/cache/bind/named_mem_stats.txt";
        allow-query     { localhost;any; };
        forwarders   { 8.8.8.8;1.1.1.1; };
        forward first;
        allow-transfer   { "none"; };
        recursion           no;
        dnssec-validation no;
};
-----------------------------------------------------------------------------------------------------------------------------
Configurar archivo de Zona Directa
Editar el archivo /etc/bind/named.conf.local para definir las zonas:
sudo vim /etc/bind/named.conf.local
-----------------------------------------------------------------------------------------------------------------------------
zone "midominio.dev" {
    type master;
    file "/etc/bind/zones/db.midominio.dev";
    allow-update { none; };
};
-----------------------------------------------------------------------------------------------------------------------------
Crear el directorio donde estarán alojados los archivos de zona
sudo mkdir /etc/bind/zones

Crear el archivo de zona
sudo touch /etc/bind/zones/db.midominio.dev

Configurar los permisos:
sudo chown -R bind:bind /etc/bind/zones
sudo chmod -R 750 /etc/bind/zones
sudo ls -l /etc/bind/zones

Configurar el Archivo de Zona Directa
sudo vim /etc/bind/zones/db.midominio.dev
----------------------------------------------------------------------------------------------------------------------------
$TTL 86400 @ IN SOA @ root ( 2024010101 ; serial 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum dominio.dev. IN NS ns1.dominio.dev.
dominio.dev. IN NS ns2.dominio.dev.
dominio.dev. IN A 158.10.11.12 ns1 IN A 158.10.11.12
ns2 IN A 158.10.11.12 www IN A 158.10.11.12
----------------------------------------------------------------------------------------------------------------------------
Verificar la configuración de BIND:
sudo named-checkconf

Configurar DNS de tarjeta de red:
sudo vim /etc/resolv.conf
nameserver 8.8.8.8
nameserver 1.1.1.1

Reiniciar los servicios:
sudo systemctl enable named
sudo systemctl restart named
sudo systemctl status named

Habilitar el servicio DNS
sudo ufw allow dns
sudo ufw status
sudo ss -tuln | grep ":53"

Comprobar el DNS público
dig NS midominio.dev

Configurar el PTR en el proveedor del VPS

Probar la resolución inversa:
dig -x 158.10.11.12

Comprobar el estado de propagación del DNS
https://www.whatsmydns.net/
Ingresar el dominio y el tipo de registro:
midominio.dev      NS











Instalar NGINX y MySQL Community Server en Debian 12

Instalar NGINX y MySQL Community Server en Debian 12
=============================================
Actualizar repositorios de Debian
sudo apt update
sudo apt upgrade

Configurar zona horaria de servidor
sudo timedatectl set-timezone America/Lima
timedatectl
-----------------------------------------------------------------------------------------------------------------------------
Instalar Mysql Community Server
Descargar e instalar el paquete de repositorios de MySQL:
wget https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.33-1_all.deb
sudo apt update

Instalar MySQL
sudo apt install mysql-server

Verificar la instalación:
mysql --version

Habilitar MySQL
sudo systemctl enable mysql
sudo systemctl status mysql

Habilitar firewall para MySQL
sudo ufw allow mysql
sudo ufw status

Acceder a MySQL como root:
sudo mysql -u root -p

Cambiar Contraseña de root y Crear nuevo usuario 
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> CREATE USER 'usuario'@'ipPublicaHome' IDENTIFIED BY '654321';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'usuario'@'ipPublicaHome';
mysql> FLUSH PRIVILEGES;
mysql> exit

Asegurar la instalación de MySQL
sudo mysql_secure_installation

Enter password for user root: 123456
Validate Password: No
Change the password for root? [Y/n]  No
Do you wish to continue with the password provided? Y
Remove anonymous users? [Y/n]   Y
Disallow root login remotely? [Y/n]  Y
Remove test database and access to it? [Y/n]  Y
Reload privilege tables now? [Y/n]   Y

Eliminar el archivo de instalación de MySQL
rm mysql-apt-config_0.8.33-1_all.deb
-----------------------------------------------------------------------------------------------------------------------------
Instalar Nginx
sudo apt install nginx -y

Habilitar el servicio Nginx
sudo systemctl enable nginx
sudo systemctl status nginx

Agregar el usuario jperez al grupo www-data
sudo usermod -aG www-data jperez

Verificar si el usuario pertenece al grupo
groups jperez
exit
Volver a loguearse

Crear un Directorio para el dominio principal:
Crea el directorio donde estarán alojados los archivos del dominio:
sudo mkdir -p /var/www/dominio.dev

Configurar una página de prueba
Crear un archivo HTML de prueba en el directorio raíz de Nginx:
echo '<h1>¡Bienvenido a midominio.dev!</h1>' | sudo tee /var/www/dominio.dev/index.html

Configurar los permisos
sudo chown -R www-data:www-data /var/www/dominio.dev
sudo chmod -R 770 /var/www/dominio.dev
sudo ls -l /var/www/dominio.dev

Crear un archivo de configuración para el dominio principal
sudo vim /etc/nginx/sites-available/dominio.dev.conf
----------------------------------------------------------------------------------------
server {
        listen 80;
        listen [::]:80;

        root /var/www/dominio.dev;

        index index.html index.htm;

        server_name dominio.dev www.dominio.dev;

        location / {
                try_files $uri $uri/ =404;
        }
}
----------------------------------------------------------------------------------------
Crear un Enlace Simbólico para habilitar la configuración del dominio:
sudo ln -s /etc/nginx/sites-available/dominio.dev.conf /etc/nginx/sites-enabled/

Eliminar el archivo de configuración predeterminado de Nginx
sudo rm -r /etc/nginx/sites-enabled/default
sudo rm -r /var/www/html

Verificar la configuración de Nginx:
sudo nginx -t

Reiniciar Nginx
sudo systemctl reload nginx

Habilitar Firewall para Nginx
sudo ufw allow 'Nginx Full'

Verificar si el servidor responde correctamente con curl
curl -I http://dominio.dev

Instalar Certificado Digital de Let's Encrypt
===================================
Instalar Certbot y el Plugin de Nginx:
sudo apt install certbot python3-certbot-nginx

Generar el certificado para el dominio:
sudo certbot --nginx -d midominio.dev -d www.midominio.dev

Verificar la Renovación Automática:
sudo systemctl status certbot.timer

Acceder a la página de prueba
https://dominio.dev

Eliminar el Archivo de Prueba Después de Usarlo
sudo rm -r /var/www/dominio.dev/index.html
-----------------------------------------------------------------------------------------------------------------------------
Instalar PHP y los Módulos Necesarios
sudo apt install php-fpm php-cli php-mbstring php-xml php-curl php-mysql -y

Verificar la versión de php
php --version

Copiar los archivos del proyecto al servidor Web:
Ejecutar la terminal como Administrador:
scp -r $HOME/Desktop/Carpeta/* jperez@158.10.11.12:/var/www/dominio.dev

Configurar los permisos
sudo chown -R www-data:www-data /var/www/dominio.dev
sudo chmod -R 770 /var/www/dominio.dev
sudo ls -l /var/www/dominio.dev

Configurar Nginx para Procesar Archivos PHP
Abrir y editar el archivo:
sudo vim /etc/nginx/sites-available/dominio.dev.conf
------------------------------------------------------------------------------------------
server {
        root /var/www/dominio.dev;

        index index.php index.html index.htm;

        server_name dominio.dev www.dominio.dev;

        location / {
                try_files $uri $uri/ =404;
        }

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.X-fpm.sock;
}

location ~ /\.ht {
deny all;
}

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/dominio.dev/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/dominio.dev/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = www.dominio.dev) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    if ($host = dominio.dev) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

        listen 80;
        listen [::]:80;

        server_name dominio.dev www.dominio.dev;
    return 404; # managed by Certbot
}
------------------------------------------------------------------------------------------
Verificar que la configuración de Nginx sea correcta:
sudo nginx -t

Reiniciar los Servicios
sudo systemctl reload nginx
sudo systemctl restart php8.X-fpm

Acceder a la Página de Prueba
https://dominio.dev/info.php

Eliminar el Archivo de Prueba Después de Usarlo
sudo rm -r /var/www/dominio.dev/*
-----------------------------------------------------------------------------------------------------------------------------
Configurar subdominios en Nginx
Configurar el DNS
En el servidor de DNS, crear un registro A para el subdominio y que apunte a la dirección IP pública de tu servidor.

Crear el Directorio de Raíz para el Subdominio:
Crea el directorio donde estarán los archivos del subdominio:
sudo mkdir -p /var/www/blog.dominio.dev

Copiar los archivos del proyecto al servidor Web en la carpeta blog
Ejecutar la terminal como Administrador
scp -r $HOME/Desktop/Carpeta/* jperez@158.10.11.12:/var/www/blog.dominio.dev

Configurar los permisos
sudo chown -R www-data:www-data /var/www/blog.dominio.dev
sudo chmod -R 770 /var/www/blog.dominio.dev
sudo ls -l /var/www/blog.dominio.dev

Crear el Archivo de Configuración para el Subdominio:
sudo vim /etc/nginx/sites-available/blog.dominio.dev.conf
-------------------------------------------------------------------------------------------
server {
        listen 80;
        listen [::]:80;

        root /var/www/blog.dominio.dev;

        index index.php index.html index.htm;

        server_name blog.dominio.dev;

        location / {
                try_files $uri $uri/ =404;
        }
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.X-fpm.sock;
}

location ~ /\.ht {
deny all;
}
}
----------------------------------------------------------------------------------------
Crear un Enlace Simbólico para habilitar la configuración del subdominio:
sudo ln -s /etc/nginx/sites-available/blog.dominio.dev.conf /etc/nginx/sites-enabled/

Probar la Configuración de Nginx:
sudo nginx -t

Reiniciar los Servicios
sudo systemctl reload nginx
sudo systemctl restart php8.X-fpm

Agregar el Certificado para el Subdominio:
sudo certbot --nginx -d blog.dominio.dev

Verificar el Certificado SSL:
curl -I https://blog.dominio.dev

Acceder al Subdominio:
https://blog.dominio.dev
-----------------------------------------------------------------------------------------------------------------------------



viernes, 1 de noviembre de 2024

Instalar diferentes versiones de MySQL en Arch Linux con Homebrew

Instalar diferentes versiones de MySQL en Arch Linux con Homebrew
======================================================
Instalación de Homebrew en Arch Linux
Instalar las dependencias básicas:
sudo pacman -S gcc make curl file git

Ejecutar el script de instalación de Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Configurar el entorno:
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc
source ~/.bashrc  ó   source ~/.zshrc

Instalar el compilador de GNU
brew install gcc

Listar versiones disponibles en el repositorio de Homebrew

brew search mysql

Instalación de diferentes versiones de PHP con Homebrew
brew install mysql@8.0
brew install mysql@5.7

Iniciar MySQL
brew services start mysql@8.0

Encuentra la ruta de MySQL:
brew --prefix mysql

Editar tu archivo de configuración del shell
vim ~/.bashrc
export PATH="/home/linuxbrew/.linuxbrew/opt/mysql@8.0/bin:$PATH"
source ~/.bashrc  ó  source ~/.zshrc

Verificar la versión actual de MySQL:

mysql --version

Cambiar entre versiones:
brew unlink mysql@8.0
brew link mysql@5.7

Asegurar la instalación de MySQL
$> mysql_secure_installation
Would you like to setup VALIDATE PASSWORD component?   N

Cambiar contraseña de usuario root de mysql
$> mysql -u root -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'P#123';
mysql> flush privileges;

Instalar MySQL Workbench
$> sudo pacman -S mysql-workbench

Cambiar el tema del Editor de codigo de MySQL Workbench
Ingresa al repositorio: https://github.com/mleandrojr/mysql-workbench-dark-theme/
Copia todo el código y pégalo en el archivo code_editor.xml

sudo vim /usr/share/mysql-workbench/data/code_editor.xml
:%d  ->borra todo el contenido
















Instalar MySQL en Arch Linux

Instalar MySQL en Arch Linux
=========================
Instala MySQL Server:
$> sudo pacman -Syu
$> sudo pacman -S git gnome-keyring
$> cd $HOME/Descargas
$> git clone https://aur.archlinux.org/mysql.git
$> cd mysql
$> makepkg -si --skippgpcheck
$> sudo pacman -S mysql
Repositorio extra
1)mariadb 2)mariadb-lts 3)percona-server
Ingrese un numero:  3

Verificar instalacion de mysql
$> mysqld --version

Inicializar la base de datos:
sudo mkdir -p /var/lib/mysql
sudo chown -R mysql:mysql /var/lib/mysql
sudo touch /var/log/mysqld.log
sudo chown mysql:mysql /var/log/mysqld.log
sudo chmod 755 /var/log
sudo chmod 644 /var/log/mysqld.log
sudo mysqld --initialize --user=mysql --datadir=/var/lib/mysql

Iniciar MySQL
$> sudo systemctl start mysqld

Habilitar MySQL
$> sudo systemctl enable mysqld

Ver clave generada por MYSQL
$> sudo grep -i password /var/log/mysqld.log

Asegurar la instalación de MySQL
$> mysql_secure_installation
Enter password for user root: ClaveGenerada
New password: NuevaClave
Re-enter new password: NuevaClave
Change the password for root? [Y/n]  YN
Do you wish to continue with the password provided?  Y
Remove anonymous users? [Y/n]    Y
Disallow root login remotely? [Y/n]  Y
Remove test database and access to it? [Y/n]  Y
Reload privilege tables now? [Y/n]  Y

Instalar MySQL Workbench
$> sudo pacman -S mysql-workbench


























Instalar Postman en Arch Linux

Instalar Postman en Arch Linux
=========================
sudo pacman -Syu
yay -s postman-bin
















Instalar OnlyOffice en Arch Linux

Instalar OnlyOffice en Arch Linux
============================
sudo pacman -Syu
yay -S onlyoffice-bin









Instalar Visual Studio Code en Arch Linux

Instalar Visual Studio Code en Arch Linux
=================================
sudo pacman -Syu
yay -s visual-studio-code-bi
n













Instalación y Configuración de un DNS Público en Debian 12

Configuración de un DNS Público en Debian 12 ===================================== Registrar un dominio público en Goddady, Namecheap  ó pun...