Montar un wordpress con docker

Si, esta es una receta muy sencilla y muy rápida. Quizá no sea perfecta, pero en caso de que quieras montar un servidor wordpress sin preocuparte de instalaciones y milongas, este es el método.

Voy a suponer que ya sabes lo que es docker y docker-compose, es más, voy a dar por hecho que los tienes instalados en el servidor donde quieres instalar wordpress, si eso no es así vete disparado a google y búscalo (me lo agradecerás).

Vamos a hacer una instalación donde la base de datos y los archivos de wordpress estén en directorios de la misma máquina y no dentro del contenedor, de manera que podamos reiniciar y actualizar los contenedores preservando los datos. Para ello creamos una estructura haciendo algo similar a esto (pongo como se hace en linux):

mkdir wordpress
cd wordpress
mkdir db
mkdir archivos
mkdir docker
cd docker

Ahora viene lo bueno, creamos dentro del directorio docker el archivo docker-compose.yml con este contenido:

version: '2'
services:
  db:
    image: mysql:5.7
    volumes:
      - "../db:/var/lib/mysql"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    links:
      - db
    ports:
      - "80:80"
    volumes:
      - ../archivos:/var/www/html
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_PASSWORD: wordpress

Y con esto ya tenemos todo el pescado vendido. Nos metemos en el directorio docker (donde está el docker-compose.yml) y ejecutamos:

docker-compose up -d

Puedes comprobar que todo está funcionando en cualquier momento con el comando docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
 18b4c06458b7        wordpress:latest    "docker-entrypoint.s…"   36 seconds ago      Up 32 seconds       0.0.0.0:80->80/tcp    docker_wordpress_1
 211c0832d549        mysql:5.7           "docker-entrypoint.s…"   39 seconds ago      Up 35 seconds       3306/tcp, 33060/tcp   docker_db_1

Ahora, para instalar, de verdad, el wordpress debemos conectar a http://localhost y podremos comenzar la instalación:

Y después de poner todos los datos tendremos un wordpress funcional en el puerto 80, con el añadido de que para realizar un backup solo tenemos que parar los contenedores y copiar los directorios db y archivos (o llevárnoslos a otro servidor).

Hay muchas mejoras que hacer si queremos que esto esté listo para producción como, por ejemplo, hacer que vaya por https (para eso lo mejor es poner un proxy inverso), pero ya lo veremos un poco más adelante. Por ahora, si queréis parar los servicios solo tenéis que ejecutar, desde el directorio docker la instrucción:

docker-compose stop

Y, lo bueno, es que tu máquina no ha sufrido ningún cambio de configuración ni ha instalado ningún paquete de más… Todo ventajas.

Protege tu .git

Hasta hace poco en mi empresa utilizábamos subversion como repositorio, no somos un equipo grande y las funcionalidades que nos ofrecía el repositorio eran suficiente para nuestros proyectos.
Recientemente, debido a que un cliente nos ha impuesto utilizar git como repositorio principal y dado que nuestra relación con ellos es muy importante, decidimos mover todos nuestros repositorios a git. Tampoco es que vayamos a utilizar extensivamente las ventajas que nos ofrece, pero si que nos obligaría a funcionar de manera más fluida con una herramienta que vamos a necesitar si-o-si.

El caso es que, en nuestra anterior configuración, utilizábamos subversion para mantener el código de producción de algunas webs y al modificar el repositorio hicimos lo propio con git, teniendo una «feliz transición». El problema vino en que, realmente, no eramos conscientes de las diferencias reales que tenían los dos repositorios y dentro de los directorios servidos junto a la web en cuestión se encontraba el directorio .git.

¿Qué significa esto? Pues ni más ni menos que todo el mundo mundial tiene acceso a tu repositorio local y puede, entre otras cosas, acceder a todo el código de lo que hay allí publicado… Y eso no puede ser. ¿Qué hacemos para evitarlo?

Hay varias formas de hacerlo, dependiendo de si tienes o no un .htaccess en tu web o no y de la configuración de tu servidor, en mi caso la solución que implementamos fue añadir las siguientes líneas al archivo de configuración de cada web:

        <Directory /directorio.de.la.web/.git>
		Options FollowSymLinks
		AllowOverride All
		Require all denied
	</Directory>

Esto indica al servidor que todo lo que hay bajo el directorio .git no está autorizado para ser visto… Reiniciamos el servidor o recargamos la configuración y ya tendremos el problema resuelto.

Y con esto y un bizcocho… Podemos empezar nuestra semana.

Año nuevo, consola vieja

Bueno, en realidad no es una «consola» son muuuchas consolas en una. Ya os conté anteriormente como había construido mi mini máquina aracade.Esta vez, viendo que se habían vuelto a poner de moda las versiones «mini» de las consolas retro (que, por cierto, estoy intentando coleccionar) decidí construirme la mía… No sería mucho más barato, pero si que tendría el control de todo lo que metería en la misma. Este es el resultado:

Estuve tentado de imprimir también la carcasa en 3D con mi impresora.. Pero sabía que el resultado iba a ser peor y quería algo que fuese, como mínimo, familiar. La consola es capaz de ejecutar juegos de NES, SNES, Megadrive, Master system, PSX, Neo Geo, Game Boy, GBA, Game Gear y Arcades… Además, he incluido que se puedan ejecutar programas del CPC 464 y de C64 y VIC-20… Vamos, todo lo que puede dar de si una Raspberry Pi 3.

Así que aquí os dejo la lista de «ingredientes» para que los vayáis preparando:

También se puede hacer con una SD de 8Gb, pero entonces podrás meter menos juegos. El resto de lo necesario supongo que ya lo tenéis (cable HDMI,cargador y cable de móvil microusb)

Cuando las tengáis continuamos… No quiero que nos precipitemos… Así tenemos proyecto para el año nuevo.

Por cierto… ¡Feliz 2018!

Usando google drive desde Ubuntu

Una de las cosas a los que los linuxeros estamos acostumbrados es a que las grandes empresas nos «ninguneen» constantemente y oferten servicios multiplataforma solo para windows y mac, aunque el esfuerzo de haberlos hecho para linux pueda ser mínimo. Uno de estos productos, y que uso mucho ya que tengo cuenta de empresa desde hace más de 10 años es google drive.

 

Si accedemos a la página web para descargarnos el software de google, este nos indica que no hay cliente para nuestro sistema «todavía», y lleva diciendo esto desde hace más de cinco años, sin embargo el acceso mediante la API es realmente sencillo (yo lo uso en NoMorePass por ejemplo desde una app para móvil), por eso me extrañaba mucho esta carencia.

Pero, como siempre, la comunidad de software libre viene al rescate y ya hay algunos que han desarrollado el cliente que necesitamos. Esta es la receta para instalarlo:

sudo add-apt-repository ppa:alessandro-strada/ppa
sudo apt-get update
sudo apt-get install google-drive-ocamlfuse

Una vez instalado, hay que crear el directorio donde queremos que se sincronice (por ej. ~/google-drive) y ejecutar (como usuario):

google-drive-ocamlfuse

Esto nos abrirá una ventana en el navegador para autorizar a la aplicación y darle acceso a tu cuenta, si todo va bien terminará apareciendo esta pantalla:

Y el proceso terminará con un «Access token retrieved correctly». A partir de este momento ya puedes montar la unidad con el comando:

google-drive-ocamlfuse ~/google-drive

Para desmontar el directorio basta con escribir:

fusermount -u ~/google-drive

Y eso es todo, yo lo he hecho y aparentemente funciona, ahora queda ver si es operativo o no…

¿Porqué el ciberataque no me importa?

Como diría Pablo Iglesias en el congreso refiriéndose a Rajoy, el «ciberataque» de estos días no me importa lo más mínimo, me trae sin cuidado o, al final, me la bufa.

¿Porqué me la bufa?

Primero, porque ese «ataque» no me afecta en lo más mínimo. Se basa en un factor de infección exclusivo de windows, utilizando una vulnerabilidad conocida hace pocos meses (excepto para la CIA) y que, por tanto, no afecta a los ordenadores Linux con los que trabajo. Así, ante la alarma causada por todos los medios de comunicación y el principio del apocalipsis cibernético augurado, yo me senté tranquilamente a ver el espectáculo.

Segundo, porque hago backups regularmente de TODO ya que no te puedes fiar de nada en esta vida y de un disco duro menos. Aunque algún muñón de colaborador le diese por venir infectado de casa con un windows y se conectase a mi red los daños que podría causar serían mínimos.

Tercero, porque no es nada nuevo, ni nada que no hayamos vivido antes. Todavía recuerdo los famosos ataques por messenger, donde toda la oficina en la que trabajaba empezó a ver como sus ordenadores empezaban a mandar infecciones a sus contactos mientras les impedía seguir trabajando. O aquella vez que cada vez que instalaba windows a mi hermana y lo conectaba a internet no pasaban ni dos minutos hasta que el virus se instalaba de nuevo y me reiniciaba el ordenador (el famoso sasser).

Y, por último, porque ahora que guardo casi todo en la nube y mis passwords están seguras en mi móvil con nomorepass, nada de esto me ha quitado ni un solo minuto de mi tiempo. ¿No hay posibilidades de infecciones en Linux? Si, claro que si, pero si un sistema operativo se ha hecho para gente sin conocimiento (como windows), lo más normal es que gente sin conocimiento lo use (y caiga más fácilmente en trampas) y eso arrastre a muchos otros que tienen que cargar con las deficiencias de un sistema que solo puede parchear un equipo determinado en un país determinado. Los usuarios de Linux suelen estar más informados y las soluciones pueden llegar de cualquier parte del mundo en cualquier momento.