<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>wordpress &#8211; El Cornijal de Linux</title>
	<atom:link href="https://linuxete.duckdns.org/category/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>https://linuxete.duckdns.org</link>
	<description>Un blog sobre Linux</description>
	<lastBuildDate>Sat, 14 Sep 2024 20:50:04 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>Añade WordPress a fail2ban.</title>
		<link>https://linuxete.duckdns.org/anade-wordpress-a-fail2ban/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=anade-wordpress-a-fail2ban</link>
					<comments>https://linuxete.duckdns.org/anade-wordpress-a-fail2ban/#respond</comments>
		
		<dc:creator><![CDATA[raspberry]]></dc:creator>
		<pubDate>Sat, 14 Sep 2024 19:41:06 +0000</pubDate>
				<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[fail2ban Debian 12]]></category>
		<category><![CDATA[wordpress fail2ban]]></category>
		<category><![CDATA[wordpress raspberry pi]]></category>
		<guid isPermaLink="false">https://linuxete.duckdns.org/?p=1845</guid>

					<description><![CDATA[Después de dificultar el acceso a WordPress con reCAPTCHA, vamos a dar otra vuelta de tuerca a la seguridad de nuestro servidor. Si has llegado hasta aquí, te recomiendo que leas: Hasta aquí, tenemos un blog funcionando con WordPress y un sistema de bloqueo de accesos como fail2ban. Ahora vigilaremos los accesos e intentos de [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>Después de dificultar el acceso a WordPress con <code><a href="https://www.google.com/recaptcha/about/">reCAPTCHA</a></code>, vamos a dar otra vuelta de tuerca a la seguridad de nuestro servidor.</p>



<p>Si has llegado hasta aquí, te recomiendo que leas:</p>



<ul class="wp-block-list">
<li><a href="https://linuxete.duckdns.org/instala-wordpress-en-tu-raspberry-pi-4/">Instala WordPress en tu Raspberry Pi</a></li>



<li><a href="https://linuxete.duckdns.org/instalar-fail2ban-en-debian-12-y-que-funcione/">Instalar Fail2ban en Debian 12 y que funcione.</a></li>
</ul>



<p>Hasta aquí, tenemos un blog funcionando con <code><strong>WordPress</strong></code> y un sistema de bloqueo de accesos como <code><strong>fail2ban</strong></code>. </p>



<p>Ahora vigilaremos los accesos e intentos de acceso al servidor <code><strong>WordPress</strong></code>.</p>



<p>Veamos como configurar todo esto.</p>



<h3 class="wp-block-heading">Crea el filtro</h3>



<p>Crearemos el siguiente fichero <code>/etc/fail2ban/filter.d/wordpress.conf</code> con el contenido:</p>



<pre class="wp-block-code"><code>sudo nano /etc/fail2ban/filter.d/wordpress.conf</code></pre>



<p>Ahora pega lo siguiente:</p>



<pre class="wp-block-code"><code>&#91;Definition]<br>failregex = ^ .* "(GET|POST) /+wp-login.php<br>^ .* "(GET|POST) /+xmlrpc.php</code></pre>



<p>Guarda con Crtl + o y cierra con Crtl + x</p>



<h3 class="wp-block-heading">Crea el jail</h3>



<p>Crea también la siguiente jail con:</p>



<pre class="wp-block-code"><code>sudo nano /etc/fail2ban/jail.d/defaults-debian.conf</code></pre>



<p>Pega el lo siguiente a continuación de la última línea:</p>



<pre class="wp-block-code"><code>&#91;wordpress]
enabled = true
port = 443
filter = wordpress
logpath = /var/log/apache2/access.log
maxretry = 3
findtime = 15m
bantime = 1h
action = %(action_mwl)s</code></pre>



<p>Como antes, guarda con Crtl + o y cierra con Crtl + x</p>



<p>Reiniciamos fail2ban:</p>



<pre class="wp-block-code"><code>sudo systemctl restart fail2ban</code></pre>



<h2 class="wp-block-heading">Comprobaciones.</h2>



<p>Vamos a realizar una serie comprobaciones para ver si se están ejecutando correctamente los servicios, estados y  advertencias.</p>



<h3 class="wp-block-heading">Test estado del servicio</h3>



<p>Comprobamos el estado del servicio con:</p>



<pre class="wp-block-code"><code>sudo systemctl status fail2ban</code></pre>



<figure class="wp-block-image aligncenter size-full"><img fetchpriority="high" decoding="async" width="785" height="504" src="https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-33-25.png" alt="" class="wp-image-1846" srcset="https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-33-25.png 785w, https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-33-25-300x193.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-33-25-768x493.png 768w" sizes="(max-width: 785px) 100vw, 785px" /></figure>



<p>De momento todo correcto, el servicio está activo y corriendo.</p>



<h3 class="wp-block-heading">Test estado general de fail2ban</h3>



<p>Comprobamos el estado y la cantidad de jails en funcionamiento.</p>



<pre class="wp-block-code"><code>sudo fail2ban-client status</code></pre>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="540" height="325" src="https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-35-25.png" alt="" class="wp-image-1848" srcset="https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-35-25.png 540w, https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-35-25-300x181.png 300w" sizes="(max-width: 540px) 100vw, 540px" /></figure>



<p>Perfecto, tenemos dos jail, el primero (ssh) que creamos en <a href="https://linuxete.duckdns.org/instalar-fail2ban-en-debian-12-y-que-funcione/">Instalar Fail2ban en Debian 12 y que funcione</a>, y el segundo el que acabamos de crear para wordpress.</p>



<h3 class="wp-block-heading">Test estado de Jails específicos</h3>



<p>Comprobemos el estado para la jail de WordPress.</p>



<pre class="wp-block-code"><code>sudo fail2ban-client status wordpress</code></pre>



<figure class="wp-block-image aligncenter size-full"><img decoding="async" width="540" height="325" src="https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-38-42.png" alt="" class="wp-image-1849" srcset="https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-38-42.png 540w, https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-38-42-300x181.png 300w" sizes="(max-width: 540px) 100vw, 540px" /></figure>



<p>La salida nos muestra bastante información sobre las IPs baneadas (ninguna por el momento), el número de intentos de conexión, el número de baneos etc etc</p>



<h3 class="wp-block-heading">Visualizar el log de eventos</h3>



<p>Veamos si el archivo log de fail2ban contiene algún error. Visualiza el archivo log en tiempo real para ver los cambios que se van produciendo instantáneamente.</p>



<p>Copia y pega el siguiente comando:</p>



<pre class="wp-block-code"><code>sudo tail -f /var/log/fail2ban.log</code></pre>



<p>En la siguiente imagen verás el log en tiempo real de los jail sin errores.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="949" height="325" src="https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-41-43.png" alt="" class="wp-image-1850" srcset="https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-41-43.png 949w, https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-41-43-300x103.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-41-43-768x263.png 768w" sizes="auto, (max-width: 949px) 100vw, 949px" /></figure>



<p></p>



<h3 class="wp-block-heading">Test de Fail2ban</h3>



<p>Fail2ban tiene un comando testear la configuración. Para esta comprobación tienes que usar este comando:</p>



<pre class="wp-block-code"><code>sudo fail2ban-client --test</code></pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="567" height="325" src="https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-43-50.png" alt="" class="wp-image-1851" srcset="https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-43-50.png 567w, https://linuxete.duckdns.org/wp-content/uploads/2024/09/Captura-desde-2024-09-11-18-43-50-300x172.png 300w" sizes="auto, (max-width: 567px) 100vw, 567px" /><figcaption class="wp-element-caption">Test de la configuración de fail2ban</figcaption></figure>



<p>Esto demuestra que todo está bien y no tenemos ningún problema con la configuración.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://linuxete.duckdns.org/anade-wordpress-a-fail2ban/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Instala WordPress en tu Raspberry Pi 4</title>
		<link>https://linuxete.duckdns.org/instala-wordpress-en-tu-raspberry-pi-4/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=instala-wordpress-en-tu-raspberry-pi-4</link>
					<comments>https://linuxete.duckdns.org/instala-wordpress-en-tu-raspberry-pi-4/#respond</comments>
		
		<dc:creator><![CDATA[raspberry]]></dc:creator>
		<pubDate>Tue, 20 Jun 2023 21:24:50 +0000</pubDate>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[instalar wordpress]]></category>
		<category><![CDATA[wordpress raspberry pi]]></category>
		<guid isPermaLink="false">https://linuxete.duckdns.org/?p=11</guid>

					<description><![CDATA[Hay muchos servicios gratuitos en internet para hospedar tu propia página web o blog personal. Si no quieres depender de terceros y controlar todo el proceso, puedes crearte un servidor web en el que guardar tus archivos, documentos, páginas y compartirlas en internet. No es costoso, es fácil de instalar y configurar. Los precios de [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image aligncenter size-medium"><img decoding="async" src="http://localhost/wp-content/uploads/2023/06/WordPress_blue_logo.svg_-300x300.png" alt="" class="wp-image-474"/></figure>



<p>Hay muchos servicios gratuitos en internet para hospedar tu propia página web o blog personal. Si no quieres depender de terceros y controlar todo el proceso, puedes crearte un servidor web en el que guardar tus archivos, documentos, páginas y compartirlas en internet. No es costoso, es fácil de instalar y configurar.</p>



<p>Los precios de la Raspberry Pi están un poco altos en este momento,  unos 170 euros la de 8GB, frente a los 88 euros que me costó a mi en Enero de 2021. A esto debes sumarle los elementos que añadas: <a href="https://shop.inux3d.com/en/home/69-geeekpi-ice-tower-cpu-fan-.html">cooler</a>, <a href="https://shop.inux3d.com/en/14-terrapi-cases-">carcasa</a>, <a href="https://www.pccomponentes.com/kingston-a400-ssd-480gb">disco SSD</a>, <a href="https://shop.inux3d.com/en/home/75-118-official-eu-raspberry-pi-4-power-supply-51v-3a.html#/11-color-black">alimentador de corriente</a>… <br>Todo lo que aquí se explica no tiene por qué instalarse sobre una Raspberry Pi. Es posible que te salga mas barato comprar en Wallapop un pc antiguo, como un Intel i3, pero la ventaja que tiene la Raspberry es su consumo, el cual apenas notarás en la factura eléctrica.</p>



<p>En referencia al software, el requisito imprescindible es tener instalada una distribución de Linux. En mi caso usaré <a href="https://www.raspberrypi.com/software/operating-systems/">Raspberry Pi OS</a> <br>El software, se instala igual que en cualquier distribución basada en Debian, como Ubuntu, Linux Mint, Pop Os y otras derivadas de la primera.<br>Nunca había sido tan fácil y accesible para el usuario medio instalar la pila <strong>LAMP y WordPress</strong>, con los que podrás montar un servidor web completo y fácil de configurar.</p>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="800" height="800" src="http://localhost/wp-content/uploads/2023/06/raspberryblue.jpg" alt="" class="wp-image-764" srcset="https://linuxete.duckdns.org/wp-content/uploads/2023/06/raspberryblue.jpg 800w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/raspberryblue-300x300.jpg 300w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/raspberryblue-150x150.jpg 150w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/raspberryblue-768x768.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></figure>



<p>Ahora mismo, mientras lees esta entrada, lo estás haciendo sobre una Raspberry como la de la imagen superior alojada en la Buhardilla de mi casa.</p>



<h2 class="wp-block-heading">¿Qué es una pila LAMP?</h2>



<p>Una pila LAMP es un conjunto de cuatro tecnologías de software diferentes que los desarrolladores utilizan para crear sitios web y aplicaciones web. LAMP es un acrónimo del sistema operativo <strong>Linux</strong>, el servidor web <strong>Apache</strong>, el servidor de base de datos <strong>MySQL</strong> y el lenguaje de programación <strong>PHP</strong>. Estas cuatro tecnologías son de código abierto, lo que significa que son mantenidas por la comunidad y están disponibles gratuitamente para que cualquiera las utilice. Los desarrolladores utilizan pilas LAMP para crear, alojar y mantener el contenido web. Es una solución popular que impulsa muchos de los sitios web que se utilizan comúnmente en la actualidad.</p>



<h3 class="wp-block-heading">Cómo instalar la pila LAMP en Raspberry Pi 4</h3>



<p>Para instalar la pila LAMP en Raspberry PI usaremos los paquetes procedentes de los repositorios de la propia distribución, así que actualizaremos la información de dichos repositorios:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo apt update</strong></code></pre>



<p>Ahora instalaremos los siguientes paquetes:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo apt install -y apache2 libapache2-mod-php mariadb-server php-mysql</strong></code></pre>



<p>Una vez instalados estos paquetes, tendremos activos los servicios <strong>apache2</strong> y <strong>mariadb</strong>, que quedan en funcionamiento y habilitados para arrancar automáticamente junto con el sistema operativo.</p>



<p>Podemos comprobar fácilmente el estado de estos dos servicios con el comando:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo systemctl status apache2 mariadb -n 0</strong></code></pre>



<p>Para configurar la pila LAMP en Raspberry Pi 4 apenas hay que realizar ajustes, ya que los componentes de la misma quedan bien encajados tras la instalación. Veremos a continuación lo mínimo que se debe hacer.</p>



<h3 class="wp-block-heading">Configurando PHP</h3>



<p>WordPress requiere la presencia  de ciertas extensiones de este lenguaje de programación que instalaremos así:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo apt install -y php-{curl,gd,imagick,intl,mbstring,xml,zip}</strong></code></pre>



<p>Para configurar este lenguaje de programación trabajaremos en primer lugar sobre el archivo de configuración del módulo del servicio web:</p>



<p>Debemos conocer la versión de PHP que hemos instalado en el sistema, con el siguiente comando en consola.</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ php -v </strong></code></pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="655" height="446" src="http://localhost/wp-content/uploads/2023/05/php-v-1.png" alt="" class="wp-image-418" srcset="https://linuxete.duckdns.org/wp-content/uploads/2023/05/php-v-1.png 655w, https://linuxete.duckdns.org/wp-content/uploads/2023/05/php-v-1-300x204.png 300w" sizes="auto, (max-width: 655px) 100vw, 655px" /></figure>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo nano /etc/php/X.X/apache2/php.ini</strong></code></pre>



<p>Reemplazamos las X.X por la versión que nos da por consola, en mi caso:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo nano /etc/php/7.4/apache2/php.ini</strong></code></pre>



<p>Un ajuste que siempre conviene realizar es el de la zona horaria del servidor, para lo que buscamos la directiva date.timezone:</p>



<p class="has-light-green-cyan-color has-text-color">…<br>;date.timezone =<br>…</p>



<p>Activaremos esta directiva eliminando el carácter ; al inicio de línea y le daremos el valor que nos interese:</p>



<p class="has-light-green-cyan-color has-text-color">…<br><strong>date.timezone = Europe/Madrid</strong><br>…</p>



<p>Una vez guardado y cerrado el archivo aplicamos los cambios recargando la configuración del servicio web:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo systemctl reload apache2</strong></code></pre>



<p>Existe otro archivo de configuración para la ejecución de aplicaciones en consola:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo nano /etc/php/7.4/cli/php.ini</strong></code></pre>



<p>En este archivo deberíamos hacer al menos el mismo cambio en la directiva <strong>date.timezone</strong> para que las aplicaciones web que usen módulos de consola no encuentren discrepancias en la hora del sistema.</p>



<figure class="wp-block-image aligncenter"><img loading="lazy" decoding="async" width="655" height="446" src="http://localhost/wp-content/uploads/2023/05/date.time_.png" alt="" class="wp-image-416" srcset="https://linuxete.duckdns.org/wp-content/uploads/2023/05/date.time_.png 655w, https://linuxete.duckdns.org/wp-content/uploads/2023/05/date.time_-300x204.png 300w" sizes="auto, (max-width: 655px) 100vw, 655px" /></figure>



<p>Guardados los cambios.</p>



<h4 class="wp-block-heading">Test de la pila LAMP</h4>



<p>Para probar el funcionamiento de la pila LAMP bastará con crear un pequeño script en PHP de sencillo acceso vía web.</p>



<p>Creamos el archivo en un lugar que pueda ser accedido por el servicio web:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo nano /var/www/html/info.php</strong></code></pre>



<p>Con el contenido:</p>



<pre class="wp-block-code has-light-green-cyan-color has-text-color"><code><strong>&lt;?php phpinfo()</strong>;</code></pre>



<p>Guardamos con Ctrl + o y cerramos con Ctrl + x</p>



<p>Para acceder a este script desde un navegador indicaremos la dirección del servidor (IP, nombre DNS, dominio, etc.) seguido de la ruta y nombre del script.</p>



<p>Por ejemplo:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>http://localhost/info.php</strong></code></pre>



<p>La página web que aparece muestra el funcionamiento de PHP y nos da amplia información sobre los componentes y configuración de la pila LAMP.</p>



<h2 class="wp-block-heading">Configurando MariaDB</h2>



<p>WordPress funciona sobre una base de datos MariaDB/MySQL. El servicio de bases de datos viene listo para usar sin necesidad de configuraciones adicionales. El único usuario que se incluye es el administrador root y para conectar al servicio desde consola habrá que usar sudo:</p>



<p>Conectamos al servicio de bases de datos desde consola indicando un usuario administrador:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$  sudo mysql -u root -p</strong></code></pre>



<p>Creamos una base de datos llamada wordpress:</p>



<pre class="wp-block-code has-light-green-cyan-color has-text-color"><code><strong>create database wordpress charset utf8mb4 collate utf8mb4_unicode_ci;</strong></code></pre>



<p>Creamos un usuario al que llamaremos wordpress y manejará la base de datos:</p>



<pre class="wp-block-code has-light-green-cyan-color has-text-color"><code><strong>create user wordpress@localhost identified by 'tu_contraseña';</strong></code></pre>



<p>Sustituye tu_contraseña por tu una de tu elección.</p>



<p>Damos permisos al usuario sobre la base de datos:Y cerramos la conexión:</p>



<pre class="wp-block-code has-light-green-cyan-color has-text-color"><code><strong>grant all privileges on wordpress.* to wordpress@localhost;</strong></code></pre>



<p>Puedes cerrar la conexión al servicio con el comando exit:</p>



<pre class="wp-block-code has-ast-global-color-2-color has-text-color"><code><strong>~$ exit</strong></code></pre>



<p>Ahora que sabemos cómo instalar la pila LAMP, ya podemos instalar y configurar WordPress.</p>



<h2 class="wp-block-heading">Descargar WordPress</h2>



<p>Antes de instalar WordPress hay que borrar el contenido del directorio /html, para ello, desde una terminal nos situamos en dicho directorio con el siguiente comando:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ cd /var/www/html/</strong></code></pre>



<p>Ahora borramos el contenido del directorio:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo rm *</strong></code></pre>



<p>A través del comando wget , descargamos la última versión en castellano, disponible en formato tar.gz</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo wget https://es.wordpress.org/latest-es_ES.tar.gz</strong></code></pre>



<p>Descomprimimos el paquete que acabamos de descargar directamente en el directorio de la página por defecto:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo tar xf latest-es_ES.tar.gz</strong></code></pre>



<p>Ahora toca crear el directorio de WordPress. Aunque puede moverlos manualmente usando la interfaz de usuario del escritorio, es simple hacerlo desde la línea de comandos:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo mv wordpress/* .</strong></code></pre>



<p>Asegúrate de incluir el espacio y el punto al final, que se refiere al directorio actual.</p>



<p>Como WordPress necesita escribir en su directorio de instalación a través del servicio web, habrá que cambiar el propietario del directorio y su contenido, establecemos al usuario de Apache como propietario del directorio:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo chown -R www-data: </strong>.</code></pre>



<h3 class="wp-block-heading">Instala WordPress</h3>



<p>Ahora que la configuración del servidor está completa, podemos finalizar la instalación a través de la interfaz web.</p>



<p>En su navegador web, vaya al nombre de dominio o a la dirección IP pública de su servidor:</p>



<pre class="wp-block-code"><code>~$ http://localhost</code></pre>



<p>Se abrirá la página de bienvenida a WordPress.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="1017" height="861" src="http://localhost/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-11-47.png" alt="" class="wp-image-458" srcset="https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-11-47.png 1017w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-11-47-300x254.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-11-47-768x650.png 768w" sizes="auto, (max-width: 1017px) 100vw, 1017px" /></figure>



<p>Luego te llevará a la página principal de configuración. Rellena los siguientes datos:</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="1017" height="861" src="http://localhost/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-17-16.png" alt="" class="wp-image-460" srcset="https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-17-16.png 1017w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-17-16-300x254.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-17-16-768x650.png 768w" sizes="auto, (max-width: 1017px) 100vw, 1017px" /></figure>



<p>Nombre de la base de datos – introduce el nombre que estableciste al configurar la base de datos de WordPress. En este caso, será wordpress<br>Nombre de usuario – introduce el nombre de usuario de MySQL que has configurado antes para la base de datos. En nuestro caso será wordpress<br>Contraseña – introduce la contraseña que has creado para el usuario de la base de datos.<br>Host de la base de datos – mantén aquí el valor por defecto localhost.<br>Prefijo de la tabla – deja wp_ en este campo.<br>Haz clic en Enviar para continuar.</p>



<p>Aparecerá un nuevo mensaje diciendo que WordPress ya puede comunicarse con tu base de datos. Haz clic en Realizar la instalación.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="1017" height="861" src="http://localhost/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-25-48.png" alt="" class="wp-image-461" srcset="https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-25-48.png 1017w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-25-48-300x254.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-25-48-768x650.png 768w" sizes="auto, (max-width: 1017px) 100vw, 1017px" /></figure>



<p>Después, tendrás que introducir más información:</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="1017" height="967" src="http://localhost/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-32-40.png" alt="" class="wp-image-462" srcset="https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-32-40.png 1017w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-32-40-300x285.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-32-40-768x730.png 768w" sizes="auto, (max-width: 1017px) 100vw, 1017px" /></figure>



<p>Título del sitio – escribe el nombre del sitio web de WordPress. <br>Nombre de usuario – crea un nuevo nombre de usuario que utilizarás para acceder a WordPress.<br>Contraseña – crea una contraseña para el usuario de WordPress.<br>Tu correo electrónico – añade la dirección de correo electrónico para las actualizaciones y notificaciones.<br>Visibilidad en los motores de búsqueda – deja esta casilla sin marcar si no quieres que los motores de búsqueda indexen tu sitio hasta que esté listo.<br>Haz clic en el botón Instalar WordPress para terminar.</p>



<p>Si todo a salido bien, ¡Lo lograste!</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="1017" height="967" src="http://localhost/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-33-41.png" alt="" class="wp-image-463" srcset="https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-33-41.png 1017w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-33-41-300x285.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-33-41-768x730.png 768w" sizes="auto, (max-width: 1017px) 100vw, 1017px" /></figure>



<p>Se abre la página de ingreso. Pulsa en el botón Acceder </p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="1017" height="967" src="http://localhost/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-34-14.png" alt="" class="wp-image-464" srcset="https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-34-14.png 1017w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-34-14-300x285.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-34-14-768x730.png 768w" sizes="auto, (max-width: 1017px) 100vw, 1017px" /></figure>



<p>Introduce tu nombre de usuario y contraseña que elegiste para acceder a WordPress y estarás dentro.</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="500" src="http://localhost/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-35-07-1024x500.png" alt="" class="wp-image-465" srcset="https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-35-07-1024x500.png 1024w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-35-07-300x146.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-35-07-768x375.png 768w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-35-07-1536x750.png 1536w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-35-07.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Ya puedes empezar a crear contenido, pero antes de eso, sigue este post hasta el final.</p>



<h3 class="wp-block-heading">Configura WordPress </h3>



<p>Antes de crear contenido vamos a configurar algunas cosas necesarias.</p>



<h4 class="wp-block-heading">Cambia los enlaces permanentes de WordPress</h4>



<p style="font-size:17px">Una configuración importante que se realiza mejor en una instalación nueva de WordPress es cambiar la configuración de enlaces permanentes. Los enlaces permanentes son las URL permanentes de sus publicaciones de blog individuales.</p>



<p>De forma predeterminada, las publicaciones se crearán con un enlace permanente numérico o sencillo, pero se recomienda utilizar un formato más versátil, como un enlace permanente con el nombre de la publicación, para ayudar a los motores de búsqueda a encontrar su sitio web.</p>



<p>El sitio web de WordPress tiene más información sobre los diferentes formatos disponibles , pero para el propósito de este tutorial usaremos el formato de enlace permanente post-name.</p>



<p>Comience cambiando la configuración en el panel de control de WordPress. Inicie sesión en su cuenta y en el menú seleccione Configuración &gt; Enlaces permanentes . Haga clic en Publicar nombre y Guardar cambios .</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="500" src="http://localhost/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-59-36-1024x500.png" alt="" class="wp-image-468" srcset="https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-59-36-1024x500.png 1024w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-59-36-300x146.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-59-36-768x375.png 768w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-59-36-1536x750.png 1536w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-22-59-36.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>También tendrá que modificar ligeramente la configuración de Apache en su Raspberry Pi para que estos cambios puedan comunicarse al servidor. Si no ha habilitado el módulo de reescritura en el tutorial anterior , hágalo ahora con el siguiente comando.</p>



<pre class="wp-block-code has-text-color" style="color:#0833f3"><code>sudo a2enmod rewrite</code></pre>



<p>El archivo de configuración de Apache debe actualizarse para que estos cambios surtan efecto. Ábrelo con el siguiente comando:</p>



<pre class="wp-block-code has-text-color" style="color:#0833f3"><code>sudo nano /etc/apache2/sites-available/000-default.conf</code></pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="917" height="562" src="https://linuxete.duckdns.org/wp-content/uploads/2024/02/sites-available.png" alt="" class="wp-image-1110" srcset="https://linuxete.duckdns.org/wp-content/uploads/2024/02/sites-available.png 917w, https://linuxete.duckdns.org/wp-content/uploads/2024/02/sites-available-300x184.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2024/02/sites-available-768x471.png 768w" sizes="auto, (max-width: 917px) 100vw, 917px" /></figure>



<p>Después de la línea inicial añadimos el siguiente texto</p>



<pre class="wp-block-code"><code>&lt;Directory /var/www/&gt;
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
&lt;/Directory&gt;
</code></pre>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="917" height="562" src="https://linuxete.duckdns.org/wp-content/uploads/2024/02/000-default.png" alt="" class="wp-image-1094" srcset="https://linuxete.duckdns.org/wp-content/uploads/2024/02/000-default.png 917w, https://linuxete.duckdns.org/wp-content/uploads/2024/02/000-default-300x184.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2024/02/000-default-768x471.png 768w" sizes="auto, (max-width: 917px) 100vw, 917px" /></figure>



<p>Por ahora, estas líneas están solo dentro del VirtualHost para el puerto 80 ya que aún no tenemos una conexión HTTPS segura.</p>



<p>Reiniciamos apache para los cambios surtan efecto.</p>



<pre class="wp-block-code has-ast-global-color-2-color has-text-color"><code><strong>sudo service apache2 restart</strong></code></pre>



<ul class="wp-block-list">
<li>Con esto se soluciona el problema del plugin «Yoast SEO» al momento de generar el mapa del sitio.</li>



<li>Con esto se soluciona el problema de que no guarda las entradas y las páginas creadas indicando una redirección del archivo JSON invalida.</li>



<li>Con esto se soluciona el problema de «página no encontrada» al modificar o personalizar los enlaces permanentes.</li>



<li>Con esto se soluciona el error del plugin «.htaccess» editor que no muestra ningún resultado al hacer modificaciones</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Comprueba que estas líneas están insertadas y coinciden con los archivos de la ruta <strong>/etc/apache2/sites-available/000-default.conf </strong>como en los archivos de la ruta <strong>/etc/apache2/sites-enabled/000-default.conf</strong></p>
</blockquote>



<h4 class="wp-block-heading">Accede a tu sitio de WordPress desde Internet</h4>



<p>Ahora mismo sólo puedes acceder al sitio desde tu red doméstica. Para cambiar esto, necesitarás una dirección IP estática o un servicio de DNS y administrar el reenvío de puertos desde tu router a tu Raspberry Pi.<br>Muchos proveedores de servicios de Internet asignan direcciones IP dinámicamente y las cambian de vez en cuando. Por lo tanto, para evitar interrupciones en su sitio web autohospedado, se recomienda utilizar un servicio de DNS dinámico. Estos servicios se especializan en el acceso remoto y le permiten apuntar su IP a un nombre de host estático, mientras mantiene viva la conexión. De esta manera, tan pronto como cambie su IP, el servicio DNS registrará el cambio y actualizará el nombre de host.<br>El servicio gratuito que he usado es <a rel="noreferrer noopener" href="https://www.duckdns.org/" target="_blank">Duckdns</a> , pero hay muchas docenas para elegir y todos ofrecen cuentas de inicio bastante similares. Este servicio viene con un cliente de actualización dinámica que deberás instalar en tu sistema para asegurarte de que registra cualquier cambio de IP.<br>Una vez que el nombre de host está registrado y conectado con éxito a tu IP, deberías poder acceder a tu blog desde la web (asegúrese de usar http:// para la URL).<br>ejemplo </p>



<p>http://tu_nombre_registrado.duckdns.org<br></p>



<h2 class="wp-block-heading">Instalar certificados HTTPS</h2>



<p>Se recomienda el siguiente paso, pero no es estrictamente necesario para que tu sitio web funcione. Puedes omitirlo por ahora y volver a él más tarde si deseas usar   HTTP como tu principal protocolo de comunicaciones. Si lo haces, ten en cuenta que la autenticación segura y la comunicación cifrada a través de HTTPS ahora son estándar para todos los sitios web. Tus visitantes pueden recibir una advertencia sobre una conexión insegura cuando intentan acceder a tu sitio web a través de HTTP.</p>



<p class="has-vivid-red-color has-text-color has-link-color wp-elements-7134ccaa5dd1e240d43bf2ccd56dcaf6">Es importante tener abiertos los puertos 80 y 443 de tu raspberry para no tener problemas al instalar los certificados.</p>



<h3 class="wp-block-heading">LetsEncrypt</h3>



<p>La forma más fácil de obtener un certificado SSL reconocido que verificará la autenticidad de su sitio web en el navegador es usar LetsEncrypt Certbot .</p>



<p>Para Apache, puede usar el siguiente comando para instalarlo en su Raspberry Pi:</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo apt-get install python3-certbot-apache</strong></code></pre>



<p>Certbot genera automáticamente un certificado para usted y lo incluye en su configuración de Apache con este comando. Certbot también se asegurará de que el certificado se renueve automáticamente en el futuro, por lo que no debe preocuparse por esto.</p>



<pre class="wp-block-code has-ast-global-color-0-color has-text-color"><code><strong>~$ sudo certbot --apache</strong></code></pre>



<p>Después de ejecutar estos comandos, te solicitará más información. Debes proporcionar una dirección de correo electrónico válida para registrarte, aceptar los Términos de servicio y, lo que es más importante, proporcionar un nombre de dominio válido. Para esto, usa el nombre de host que registraste en<a href="https://www.duckdns.org/"> Duckdns.org</a>.</p>



<p>La última pregunta es si desea redirigir automáticamente el tráfico de http a https. En este caso, como se trata de una instalación nueva, es mejor usar la redirección ( opción 2 ), ya que no hay peligro de romper los enlaces existentes.</p>



<p>Si Certbot le da un error durante la instalación, es posible que primero deba habilitar el reenvío de puertos en su enrutador.</p>



<p>El certificado ahora se instalará en su sistema y se puede encontrar en la siguiente carpeta: /etc/letsencrypt/live/hostname.domain.com/<br>que en mi caso está en /etc/letsencrypt/live/linuxete.duckdns.org/ y dentro se encuentran los archivos <strong>cert.pem chain.pem fullchain.pem privkey.pem README</strong></p>



<p>En ajustes, generales cambia las direcciones de http a https y la dirección completa que nos proporcionó Duckdns.</p>



<figure class="wp-block-image aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="500" src="http://localhost/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-23-06-01-1024x500.png" alt="" class="wp-image-470" srcset="https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-23-06-01-1024x500.png 1024w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-23-06-01-300x146.png 300w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-23-06-01-768x375.png 768w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-23-06-01-1536x750.png 1536w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-de-pantalla-de-2023-06-20-23-06-01.png 1920w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Cambia la dirección de WordPress (URL) y la dirección del sitio.</p>



<p>Asegurate que el equipo donde se encuentra instalado tu WordPress tiene el puerto 443 abierto en tu router para poder navegar a través de https.</p>



<p>Visita tu sitio web en un navegador que use HTTPS y busca el ícono de candado en la URL para verificar que la conexión SSL esté funcionando.</p>



<figure class="wp-block-image aligncenter size-full"><img loading="lazy" decoding="async" width="913" height="986" src="http://localhost/wp-content/uploads/2023/06/Captura-desde-2023-06-20-23-20-52.png" alt="" class="wp-image-471" srcset="https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-desde-2023-06-20-23-20-52.png 913w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-desde-2023-06-20-23-20-52-278x300.png 278w, https://linuxete.duckdns.org/wp-content/uploads/2023/06/Captura-desde-2023-06-20-23-20-52-768x829.png 768w" sizes="auto, (max-width: 913px) 100vw, 913px" /></figure>



<p>¡Enhorabuena!</p>



<p>Ahora eres el propietario de tu sitio web, funcionamiento con una conexión SSL segura y la estructura de enlaces permanentes recomendada.</p>



<h3 class="wp-block-heading">¿Cómo puedo renovar los certificados de Let&#8217;s Encrypt?</h3>



<p><br>En el caso de que tu certificado no se renueve automáticamente, puedes activar manualmente la renovación en cualquier momento ejecutando:</p>



<pre class="wp-block-code"><code>sudo certbot renew</code></pre>



<p>Cuando haya terminado reinicia el apache con:</p>



<pre class="wp-block-code"><code>sudo systemctl reload apache2</code></pre>



<p>Para verificar que el certificado se renovó, ejecuta:</p>



<pre class="wp-block-code"><code>sudo certbot renew --dry-run</code></pre>



<p>Si tienes varios certificados para diferentes dominios y deseas renovar un certificado específico, utiliza:</p>



<pre class="wp-block-code"><code>certbot certonly --force-renew -d tu.dominio.com</code></pre>



<p>La opción &#8211;force-renew indica a Certbot que solicite un nuevo certificado con los mismos dominios que un certificado existente. La opción -d le permite renovar certificados para varios dominios específicos.</p>



<p>Si el comando no arroja errores, la renovación fue exitosa.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://linuxete.duckdns.org/instala-wordpress-en-tu-raspberry-pi-4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
