260 - WordPress en la Raspberry. Una de preguntas y respuestas.

260 - WordPress en la Raspberry. Una de preguntas y respuestas.

Una excelente opción para tener WordPress en la Raspberry, es utilizando Docker o incluso Podman. Te cuento 3 opciones para hacerlo fácil.

1:25
-3:15

Hace ya algún tiempo del tutorial de la Raspberry, y sois varios los que os habéis puesto en contacto, para ver si voy pensando en renovarlo y actualizarlo. Y la verdad es que tenéis toda la razón. No solo por el tiempo transcurrido, sino también por el gran avance experimentado por la Raspberry Pi. De hecho, la llegada de la Raspberry Pi 4 y de la Pi 400, han supuesto un auténtico revulsivo. Y no solo esto. Y es que en este primer tutorial, lo cierto es que no le di a Docker la importancia que tiene. Por esto, la pregunta sobre WordPress en la Raspberry Pi a calado tanto.

Lo cierto es que para aquellos que quieran levantar su propia nube, eso si una nube pequeña utilizando la Raspberry Pi, no pueden, o mejor dicho, no deben dejar de lado a Docker. Se trata de una forma sencilla y fiable, de tener decenas de servicios funcionando para ti, a un coste realmente reducido.

WordPress en la Raspberry

WordPress en la Raspberry. Una de preguntas y respuestas.

¿Como vas con Rust?

Eduardo pregunta,

Hola LorenzoContestando tu pedido si primero al tutorial de Python y también anda informando como te va el tema de aprender Rust me interesa.Mi intención es aprender Python y como mis conocimientos son escasos ya tengo bastante para agregar Rust también. Pero asi como vos dijiste, un lenguaje no se aprende leyendo un tutorial sino se aprende con la manos en la masa. Por eso me ayudaría ese tutorial que hable como encontrar la forma de ejercitar, tareas sencillas de programación, etc, mas que la teoría (que hay por todos lados y mucha es muy buena). Por eso y aunque no esta en mis planes aprender por ahora Rust, si me interesaría conocer como va en tu aprendizaje, que usas para practicas y que te va motivando probar en este proceso.Ah excelente tu blog todo muy bueno. Superior a otros que se dedican a Linux.

Indicarte que recientemente me invitaron en República Web a que contara mi experiencia. Lo comento por si quieres darle una escucha. En las notas de ese podcast, encontrarás diferentes enlaces interesantes, en el caso de que optes por Rust.

Apache vs Ngnix

Carlo pregunta,

Hola Lorenzo!Me parece super buena idea hacer los podcast de preguntas y respuestas, se hacen super amenos! Así pues, te lanzo una duda para el siguente.Qué diferencias hay entre Apache2 y NINGX? Y, en qué casos es mejor usar uno u otro?Gracias y sigue así!Carlo

  • NINGX tiene una estructura mas ligera que Apache
  • Sirviendo contenido estático NINGX supera claramente a Apache, siendo NINGX capaz de resolver el doble de peticiones que Apache.
  • En el caso de contenido dinámico, ambos tienen un comportamiento similar. En el caso de NINGX, no es capaz de resolver el contenido dinámico por si solo, tiene que delegar este trabajo en procesos externos como puede ser php-fpm.
  • Apache soporta todo tipo de sistemas operativos como Linux y BSD, y tiene soporte completo para Microsoft Windows, mientras que NINGX soporta Windows solo de forma parcial.
  • Respecto a la configuración, Apache permite configuración adicional por directorios vía los conocidos archivos .htaccess, mientras que NGNIX esto no lo permite. En este caso, NGINX, prefiere mejor desempeño ante mas granularidad.
  • En el caso de las peticiones, mientras que Apache interpreta las peticiones como recursos físicos en el sistema de archivos, NGINX las interpreta como localizaciones URI. Esto le permite a NGNIX funcionar no solo como un servidor web, sino también como un servidor proxy o un balanceador de carga.
  • Tanto Apache como NGINX son extensibles mediante módulos. En el caso de Apache existen al menos 60 módulos que se pueden cargar de forma dinámica. Sin embargo, en el caso de NGINX, los módulos no son oficiales, son de terceros, y no es posible cargarlos de forma dinámica. La ventaja de NGINX viene por el lado de la seguridad.

Después de todo esto ¿cuando elegir Apache o NGINX?

  • Si necesitas una elevada granularidad a la hora de compartir directorios. Aquí Apache con los .htaccess, tiene ventaja.
  • En el caso de que quieras algún módulo que solo esté disponible en Apache.
  • Si lo que vas a servir es contenido estático, sin lugar a dudas NGNIX es tu servidor.
  • Para mucho trafico NGINX.

Pero todavía hay una solución mejor, combinar Apache y NGINX. Así tendrías NGINX como proxy inverso, de Apache y NGINX. Donde Apache se encargaría de servir el contenido dinámico, mientras que NGINX haría lo propio con el contenido estático.

Nivelar los MP3

Fernando pregunta,

Hola queria saber como hago para nivelar el volumen de los mp3gracias saludos en ubuntu

De las herramientas que he probado, te puedo comentar dos que he utilizado con relativo éxito,

  • normalize-audio. Esta herramienta la puedes utilizar para ajustar el volumen de diferentes archivos. Lo que hace es analizar todos los archivos y luego aplica los ajustes necesarios en cada uno de los archivos para que todos tengan un nivel estándar.
sudo apt install normalize-audio

normalize-audio -b *.mp3
  • sox.
sudo apt install sox
sox --norm entrada.mp3 salida.mp3

Y por supuesto tienes la opción, mi opción preferida de recurrir a ffmpeg. Aquí tienes distintas opciones,

  • aumentar el volumen en 10dB => ffmpeg -i entrada.mp3 -filter:a "volume=10dB" salida.mp3
  • para normalizar ffmpeg -i entrada.mp3 -filter:a loudnorm salida.mp3

Otra opción derivada de la anterior es utilizar una aplicación en Python llamada ffmpeg-normalize, que utiliza por debajo ffmpeg.

pip3 install --user ffmpeg-normalize
ffmpeg-normalize entrada.mp3 -o salida.mp3 -f -c:a libmp3lame

Mi recomendación es que las pruebes todas con uno o varios archivos y veas cual de ellas, se adapta exactamente a tus necesidades. Por supuesto, tienes una labor de investigación, porque tendrás que revisar parámetros y opciones que ofrecen cada una de las herramientas.

WordPress con Docker en Raspberry

Zicoxy3 pregunta,

HolaTengo un blog sencillito con Bloguer y no me gusta nada la gestión. Posteo de vez en cuando, nada regular, por ello no me merece la pena un hosting…Me gustaría usar WordPress, que ya he usando en el pasado. He visto que se puede hacer con Docker sobre una raspberry y encuentro muy poco al respecto en castellano.Veo que su tuto sobre WordPress en raspberry tiene 3 años, las versiones seguro han cambiado. Por ello ésta petición.Por otro lado, tb me interesa algo como Jekyll, páginas estáticas, pero instaladas en la raspberry.Todo accesible desde el exterior, claro… y para inútiles claro ;).

Para todas las opciones que voy a ofrecer, para tener WordPress en la Raspberry, el archivo de configuración es el mismo, aunque, evidentemente, tu deberías modificarlo con tus propias credenciales. El archivo de configuración se llama wordpress.env y lo tienes que poner en el mismo directorio en el que se encuentre el docker-compose.yml

MYSQL_ROOT_PASSWORD=wordpress
MYSQL_DATABASE=wordpress
MYSQL_USER=wordpress
MYSQL_PASSWORD=wordpress
WORDPRESS_DB_HOST=wpdb
WORDPRESS_DB_USER=wordpress
WORDPRESS_DB_PASSWORD=wordpress
WORDPRESS_DB_NAME=wordpress
WORDPRESS_TABLE_PREFIX=wpdg_
MYSQL_PORT_3306_TCP=3306

La primera de las opciones para tener WordPress en la Raspberry, en un contenedor Docker, viene con Apache, y el docker-compose.yml es el siguiente,

version: '3.0'

services:
  wpdb:
    image: jsurf/rpi-mariadb
    container_name: wpdb
    volumes:
      - ./db_data:/var/lib/mysql
    restart: unless-stopped
    env_file:
      - wordpress.env
    ports:
      - 3306:3306
  wordpress:
    image: wordpress:latest
    container_name: wordpress
    depends_on:
      - wpdb
    restart: unless-stopped
    env_file:
      - wordpress.env
    volumes:
      - ./plugins:/var/www/html/wp-content/plugins
      - ./themes:/var/www/html/wp-content/themes
    ports:
      - 81:80

La segunda de las opciones es con NINGX que a mi, particularmente me gusta mas, pero probablemente por razones sentimentales. Aquí es necesario algo mas de configuración. Tienes que crear el directorio nginx y dentro de él copiar el archivo de configuración wordpress.conf con el siguiente contenido,

server {
    listen 80;
    server_name wp-hakase.co;

    root /var/www/html;
    index index.php;

    access_log /var/log/nginx/hakase-access.log;
    error_log /var/log/nginx/hakase-error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass wordpress:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

Y el archivo docker-compose.yml es el siguiente,

version: '3.0'

services:
  wpnginx:
    image: nginx
    container_name: wpnginx
    ports:
      - 81:80
    volumes:
      - ./nginx:/etc/nginx/conf.d
      - ./logs/nginx:/var/log/nginx
      - ./wordpress:/var/www/html
    depends_on:
      - wordpress
    restart: always 
  wpdb:
    image: jsurf/rpi-mariadb
    container_name: wpdb
    volumes:
      - ./db_data:/var/lib/mysql
    restart: unless-stopped
    env_file:
      - wordpress.env
    ports:
      - 3306:3306
  wordpress:
    image: wordpress:5.6.2-php7.4-fpm
    container_name: wordpress
    depends_on:
      - wpdb
    restart: unless-stopped
    ports:
      - 9000:9000
    env_file:
      - wordpress.env
    volumes:
      - ./wordpress:/var/www/html

Sin embargo, todavía te doy una tercera alternativa. En esta alternativa, igualmente utilizo NINGX, pero además le añado a la instalación wpcli. Para esto, me he creado un Dockerfile que le añade esta potente herramienta. Lo primero es que crees el siguiente archivo wp-su.sh,

#!/bin/sh
sudo -E -u www-data /bin/wp-cli.phar "$@"

y el Dockerfile,

FROM wordpress:5.6.2-php7.4-fpm

# Add sudo in order to run wp-cli as the www-data user 
RUN apt-get update && apt-get install -y sudo less mariadb-client

# Add WP-CLI 
RUN curl -o /bin/wp-cli.phar https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
COPY wp-su.sh /bin/wp
RUN chmod +x /bin/wp-cli.phar /bin/wp

# Cleanup
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

Y por último, tienes que modificar el docker-compose.yml anterior, sustituyendo la siguiente línea,

image: wordpress:5.6.2-php7.4-fpm

por

build .

Por si no conoces wp-cli, indicarte que es una interfaz de WordPress para la línea de comandos. Para que te hagas una idea, instalar un nuevo tema, ahora es tan sencillo como ejecutar la siguiente instrucción,

docker exec wordpress wp theme install quark

Puedes crearte un alias para simplificar todo esto,

alias wpcli="docker exec wordpress wp"

Una vez tengas este alias, listar todos los artículos que tengas es tan sencillo como ejecutar la siguiente instrucción en un terminal,

wpcli post list

IP oculta

Pedro pregunta,

Buenos días, Muchas gracias por todos tus artículos y podcasts. Vamos al turrón.Tengo muchos servicios en docker hospedados en el servidor de mi casa con mi propio dominio. El \»problema\» es que mi dominio apunta a mi casa, de tal manera que se podría saber mi país/ciudad. Tampoco es que sea un gran problema, pero se podria hacer pasar todo el tráfico por una VPN que redireccione a mi casa? o enmascarar mi ip de alguna manera?.De tal forma que todos mis docker seguirían en mi servidor, pero la ip pública de mi dominio seria diferente a la de mi casa.Saludos cordiales,Pedro,

Sinceramente, no creo que puedas ocultar tu IP, y si alguien sabe como hacerlo que me corrija. Al final, tu tienes tus archivos expuestos al mundo exterior, con lo que la IP al final se puede obtener, por muchas redirecciones que se quieran hacer. Pero vamos, a lo mejor existe algún servicio que desconozco, que permite hacerlo, aunque sinceramente lo dudo.

Por otro lado, entiendo que tienes un IP fija, es decir que no utilizas un servicio de DNS dinámica como DuckDNS, porque en ese caso, tampoco te tienes que preocupar, en tanto en cuanto, cada cierto tiempo va a ir cambiando la IP, o no.

Una opción para hacer esto que quieres, aunque ya te digo, que no tiene mucho sentido, es lo que comenté en el episodio 108 del podcast, en el que hablé sobre como exponer tu Raspberry a internet con la red TOR.


Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.

Imagen de portada de Fikret tozak en Unsplash

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *