Tecnología

Incognitosis, ahora en versión HTTPS

·

Hacía tiempo que estaba pensando en darle una vuelta a las tripas de Incognitosis. Mi afición por Linux me ha permitido trastear con temas de administración de sistemas durante muchos años, y de hecho me encargué de la infraestructura técnica de TPNet mientras ejercí como CTO de esa empresa.

Aquella etapa me convirtió una afición en una profesión, y me dio la oportunidad de investigar mucho, pasar buenos ratos (y malos, lo de que todo funcione perfecto 24/7 genera estrés), aprender y también conocer más en profundidad un tema que luego siempre he tenido vigilado de cerca: el rendimiento web, o web performance.

Nada cambia en Incognitosis salvo por ese letrero verde del navegador que indica que al fin he implementado HTTPS. Viva yo.

De cuando en cuando comparto cosas en Twitter del tipo #sysadminporn, pero lo que hago de forma no transparente es guardar enlaces y tutoriales que me ayudan a comprender por dónde van los tiros en el ámbito de la seguridad y el rendimiento.

Todo milisegundo cuenta

Eso me llevó hace unos años a montar Incognitosis con una configuración singular que dio lugar a aquel megapost titulado ‘WordPress a toda pastilla con Nginx+PageSpeed, MariaDB, HHVM y más en Ubuntu 12.04‘ y en el que sobre todo destacaba el uso de HHVM y PageSpeed para acelerar la carga del blog de forma bastante notable.

Aquello tenía algún problema, porque HHVM es medio inestable con WordPress y tuve que utilizar monit para levantar el servidor hhvm cuando se quedaba tonto. La solución molaba y funcionaba, pero no era óptima.

Eso me hizo migrar a otra plataforma para olvidarme de HHVM. Desde hacía tiempo seguía la evolución de PHP 7, una versión que sin ser tan rápida como HHVM ya ganaba muchos enteros respecto a la anterior, así que quise ponerla en marcha y hacerlo además con otro experimento: Centminmod.

Siempre he sido bastante fan de los scripts que permiten automatizar tareas pesadas en Linux, y en los temas de administración de sistemas esos scripts han sido poderosos aliados durante mucho tiempo. Años atrás hablaba de Tuxlite, pero el desarrollador de esta pequeña maravilla dejó de trabajar en él, así que busqué una solución similar y la encontré en Centmin Mod, un script mucho más ambicioso y potente que eso sí, se basa en Cent OS una distro a la que estoy poco habituado aunque sea básicamente una Fedora en versión “pro”.

Objetivos de la nueva plataforma

Acabé migrando a este sistema hace un año y estaba tan contento, pero lo cierto es que Incognitosis seguía quedándose atrás en algunas cosas. La idea con la nueva renovación técnica de Incognitosis era lograr varias cosas:

  1. HTTPS al poder: para cifrar todas las peticiones entre vosotros, los lectores, y el servidor. En Google lo tienen muy en cuenta para posicionar, por ejemplo, pero mi blog no posiciona bien de todos modos (sigo con PR 3 a pesar de mis esfuerzos). Hay varias razones de peso adicionales para usarlo.
  2. HTTP/2: el nuevo protocolo HTTP/2 que inicialmente tomó como base SPDY pero que luego evolucionó de forma significativa para hacer que todo vaya más rápido gracias a una serie de técnicas muy chulas. El resultado, dicen (veremos) es que la carga de la página mejora de forma notable.
  3. Incognitosis bajo Git: otro de los cambios importantes ahora que mi mujer trabaja habitualmente con Git es el de poder hacer cambios en el blog de forma mucho más pura desde el punto de vista de un desarrollador web, con una versión de preproducción local para hacer pruebas y una versión de producción que será la que veáis vosotros. Todo bajo Git para ir controlando versiones y volviendo a anteriores si las cosas no van como deben. No se trata de usar la última versión de WordPress vía Git, sino solo la del tema y componentes específicos de mi blog.

Seguro que surgen más cosas durante el proyecto, así que iré apuntándolas por aquí. Vamos allá.

Bienvenido, EasyEngine

Hacía tiempo que pensaba reinstalar Centmin Mod de cero para aplicar estos cambios, pero en medio del proceso de investigación —de hecho ya había iniciado las pruebas en el VPS— me encontré con una sorpresa: otro script que permitía hacer básicamente lo que quería y con la misma orientación que Centmin Mod.

Ese script se llama EasyEngine, y es una pequeña maravilla tanto por su simplicidad como por su eficiencia. Está muy enfocado a automatizar instalaciones de WordPress en VPS para que sean realmente óptimas, y con la base tradicional de una plataforma LEMP (Linux, Nginx, MySQL y PHP, la “E” es por lo de la pronunciación de nginx, que es “engine-x“) añade unas cuantas cosas muy, muy chulas.

Por ejemplo, el soporte (si quieres) para HHVM y Pagespeed, además del soporte de varias opciones de cacheo que incluyen plugins como W3 Total Cache, WP Super Cache, FastCGI o la que yo he elegido, que es Redis.

Otra de las cosas que me atrajo de EasyEngine es que está orientado a Ubuntu y a Debian, distros con las que me siento más a gusto, así que acabé reinstalando el SO en uno de mis dos VPS para aplicar allí la instalación de un Ubuntu 16.04 LTS. Tras hacerlo y actualizar todo por si las moscas ejecuté dos comandos:

wget -qO ee rt.cx/ee && sudo bash ee

El primero descarga el script de instalación y prepara el VPS para poder ejecutar, mientras que el segundo es el que parece mágico:

ee site create javipas.com --wpredis --letsencrypt --php7

Ahí lo tenéis. Con esa simple línea de comandos en 15 minutos tenía creado el sitio javipas.com con WordPress, Redis, un certificado de seguridad asignado al sitio para dar soporte (al fin) a HTTPS con LetsEncrypt, y además PHP7, que como dije en la anterior versión se lleva mejor con WordPress que HHVM aunque creo que en rendimiento sigue yendo (algo) mejor HHVM.

En realidad no pude asignar el certificado de LetsEncrypt de primeras porque una de las condiciones para lograrlo es que en el registro del dominio se verifique que ese dominio apunta al servidor donde realizas la petición. O sea, que tenía que migrar todo Incognitosis primero, cambiar las IPs en mi registro de dominios y hacer un

ee site update javipas.com --letsencrypt

cuando estuviera todo hecho para asignar el certificado de una vez por todas. Es lo que hice con un scp entre ambos VPS y una copia de la BBDD (mysqldump al rescate) que también transferí por scp. Tras crear la BBDD en el nuevo VPS e importar la del VPS de origen, estaba todo listo. Por cierto, el script de EasyEngine crea un cronjob para renovar el certificado cada 90 días, cuando caducan los que te da este proyecto. Maravilloso.

O casi.

Tras aplicar el certificado la página de inicio mostraba que todo había ido bien: Incognitosis ya era “segura”. En Chrome aparece el candado en verde y el deseado “Es seguro”, pero al navegar a algún post se mostraba una advertencia: parte del contenido era seguro, pero por ejemplo me avisaba de que las imágenes no lo eran y podían ser usadas para hacer cosas malitas.

El tema es bastante conocido: los llamados contenidos mixtos hacen que parte del sitio esté protegido, pero que haya scripts, imágenes y otros objetos que no lo estén. En ManageWP encontré una buena explicación para resolverlo, y al final acudí a dos cosas: este plugin para corregir la mayoría de fallos, y además, la consola de Google Chrome para analizar qué más recursos estaban fallando.

Encontré dos un poco tontos: el código de Statcounter no estaba actualizado y tuve que copiar y pegar uno con soporte HTTPS, y también había un fallito en Feedburner, que sigo usando para generar los avisos de nuevos posts en Incognitosis por correo (os podéis apuntar al final del post, antes de los comentarios). En el enlace faltaba añadir la “s” del “https://”.

Voilà. Incognitosis ya es seguro a tope. Que viva HTTPS. Ah, y ya que estamos, que viva HTTP/2 (se puede comprobar aquí), que también está activado por defecto y funcionando (ALPN incluido) gracias a Nginx, que desde hace algún tiempo ya da soporte nativo a HTTP/2 en sus versiones estables. Ole.

Lejos de la perfección

Actualización (26/04/2017): pues la cosa no era para tanto. Los dos GET aparecen porque en GTmetrix usaba la URL no segura en lugar de meter directamente la segura, https://javipas.com. Al hacerlo desaparece el primer GET que redirige a la versión segura. ¡Hurra!

La migración a la nueva infraestructura ha traído un problemilla: ha empeorado el tiempo de carga. No creo que lo notéis mucho, pero aquí he cometido algún error que ha hecho que en algún lado esté metiendo redirecciones que no deberían estar ahí. Un test rápido en GTmetrix lo demuestra:

Ahí lo tenéis: esos dos GET deberían ser uno que además debería ser bastante más rápido. Pierdo casi un segundo en el acceso al dominio, algo que también viene motivado porque la región de pruebas es Canadá.

El tiempo de carga no es malo, pero desde luego tampoco es una maravilla, sobre todo cuando hace tiempo que traté de trabajar en minimizar la carga de la página y en hacer que todo fuese más suave. Como comenté por aquí, hay compromisos con temas como la tipografía, y aunque en general estoy contento con el rendimiento, me gustaría afinar en unas cuantas opciones para ganar más en rendimiento y hacer la página más ligerita.

Sé que podría lograr bajar a la mitad el tiempo (o menos), pero eso lleva (redundante e irónicamente) tiempo. Tiempo que no me sobra, sobre todo cuando uno se da cuenta de que para lograr la migración al final he invertido un par de días de vacaciones (a ratos) entre investigar (mucho de esto), probar, cagarla y volver a probar.

El servidor va totalmente sobrado con las visitas normales. Tengo margen de crecimiento, así que ale, a ver si un efecto Menéame me tira esto. Lo dudo.

Quedan además muchos flecos por atar, como la seguridad del servidor (medio controlado, pero aquí haré quizás un post adicional si os interesa), el tema de controlar con Git la versión de WordPress (ídem, caerá post cuando lo haga) y esos ajustes finos de Nginx, Redis, PHP y MySQL que ayudan a rebajar milisegundos, pero sea como fuere, aquí tenéis un Incognitosis cifradito y con ese soporte HTTPS que hacía tiempo que tenía que haber aplicado.

Puede que en el proceso algo no vaya como debe, así que si detectáis fallos o cosas raras, avisad. Y si hay algún gurú del #webperformance que quiera darme consejitos (yo aquí soy un principante con mucho interés), por favor, que comente. Todo por hacer que esto vaya más rápido y mejor.

Ale. Bienvenidos a Incognitosis en versión HTTPS.


Incognichollos

Esta es una selección con las mejores ofertas tecnológicas actualizadas casi diariamente, como expliqué aquí. Aunque estés en un post “antiguo” las ofertas son de última hora, los Incognichollos los actualizo aparte. También puedes seguir los Incognichollos en Twitter. Aprovecha, que no suelen durar mucho tiempo:

  • Portátil Huawei Matebook 13: atentos a este maquinón, versión “lite” del Mateboox X. Con pantalla de 13 pulgadas 2K (1440p), un Core i5-8265U, 8 GB de RAM, 256 GB de capacidad, una GeForce MX150 y lector de huella dactilar. Lo tenéis a 745 euros en AliExpress. La batería de 41,7 Whr es algo limitada quizás, pero es que claro, es súper delgado (14,9 mm) y ligero (1,28 kg).
  • Portátil gaming Lenovo Legio Y530 + Monitor Lenovo L24q: un pack llamativo: el portátil de 15,6”, Core i5-8300H, 8 GB/1 TB (HDD), GTX 1050, Windows 10. Monitor 24 pulgadas 2560×1440 pixels. Muy bien todo por 793,50 euros en Amazon, y cambio SSD asumible
  • Tarjeta gráfica XFX Radeon RX-580: una gráfica seria, tipo GTX 1060, pero que se beneficia de esos 8 GB de memoria gráfica. Está a 199 euros en Amazon, nada mal.
  • Monitor Acer K192HQL: como pantalla auxiliar modesta es curiosa: 18,5 pulgadas con resolución 1366×768, entrada VGA. Muy, muy modesto, pero está en versión reacondicionada en Amazon por 50,5 euros
  • Apple Watch 4: el reloj inteligente de Apple en su versión Sport de 44 mm en color gris espacial (sin conectividad LTE). Hasta 2 días de autonomía, GPS integrado, sensor de frec cardiaca. Está a 399,99 euros en eBay
  • Convertible Lenovo Miix 700: curioso este portátil 2-en-1 reacondicionado (garantía Amazon). 12 pulgadas, Core M7-6Y75, 8 GB de RAM, 256 GB de SSD, Windows 10 pero teclado alemán QWERTZ. Si no os importa, brutal a 398,63 € (insisto, reacondicionado).
  • Xiaomi Mi Notebook Ruby: un portátil curioso. 15,6 pulgadas 1920×1200, Core i3-8130U, 4 GB de RAM, 128 GB de SSD (ampliables), USB 3.0, HDMI, Gigabit Ethernet, lector de tarjetas. Está a 477 euros en Banggood con el cupón B12G304
  • Pala pádel Royal Padel EFE Carbon Amarilla: offtopic, como juego al pádel se me ha ocurrido poner esta oferta que me tienta hasta a mí. Hablan muy bien de esta pala que cuesta 109 euros en Amazon en lugar de los 329 de otras tiendas (comprobado). Chollazo.
  • iPad 9,7 pulgadas (2018): el modelo más reciente con soporte para el Apple Pencil. Color gris espacial, 32 GB de capacidad y con WiFi. Está a 269,99 euros en eBay, el precio más bajo que he visto. En Amazon está a 309 euros.
  • Bolígrafo Xiaomi Mijia Pen + 3 recambios: el boli de 0,5 mm con tecnología suiza (o eso dicen) que enamora. Yo ya he comprado varios, y la verdad es que molan, y por este precio, más. El boli + tres recambios sale por 3,24 en AliExpress.
  • PC Medion Akoya PCC722: atentos que aquí tenéis un equipo sobre el que luego crecer mucho (un SSD y gráfica modesta por ej) y bien: Core i3-8100, 8 GB de RAM, 1 TB de disco HDD, sin sistema operativo. Está a 319 euros en Amazon.
  • Samsung Galaxy Tab A: buena tableta Android con pantalla de 10,1 pulgadas FullHD, procesador octa-core, 2 GB de RAM, 32 GB de capacidad, ANdroid 7.0 actualizable, color blanco. Está a 167,50 euros en Amazon.
  • Hub USB-C 7 en 1: para los que solo tenéis puertos USB-C en el portátil, este es un súper-dongle. Salida HDMI, 3xUSB 3.0, USB-C, lector SD y micro SD. Todo por 20,99 euros en Amazon con el cupón LGUZWW3D.
  • iPad Pro (2017): el de segunda generación, no el más reciente, pero atentos, CPU Apple A10X Fusion, 12,9 pulgadas, 256 GB de capacidad, WiFi y un precio estupendo, 881,39 euros en Amazon
  • iPhone XR: el telefonazo “económico” de Apple baja un poco de precio. Pantalla de 6,1 pulgadas (LCD), cámara de 12 MP, Face ID, CPU APple A12 Bionic, carga inalámbrica, resistencia al agua. Está a 749 euros en Amazon en color azul.
  • Intel NUC: un miniPC que solo incluye placa y procesador: tienes que comprar aparte RAM y SSD. Aún así curioso por formato y puertos. LLega con un Celeron J3455 y con HDMI, VGA, USB3, Ethernet y puertos M.2 y DDR3. Está a 119 euros en Amazon
  • Xiaomi PocoPhone F1: el móvil súper chollo de los últimos meses baja también en Amazon. 6,18 pulgadas, Snapdragon 845, 6GB de RAM y 128 GB de capacidad (ole) además de cámara dual 12+5 MP. Está a 305 euros en Amazon.
  • Xiaomi Mi Mix 3: el súper teléfono sin marcos baja de precio: con pantalla de 6,39” deslizable para la cámara selfie y Snapdragon 845, 6 GB de RAM 128 GB de ROM y cámara dual 12+12. Estupenda opción por 436,86 euros en AliExpress (aplicad cupón de 7 euros en la página).
  • PC Lenovo IdeaCentre AIO 330-20AST: un Todo-en-uno modesto pero estupendo para ahorrar espacio en el escritorio. 19,5”, CPPU AMD A6-9200, 4 GB de RAM; 1 TB de HDD, gráfica AMD Radeon R4, Windows 10, ratón y teclado. Todo por 259,99 euros en Amazon.
  • Móvil ProTruly D7: pantalla 5,5 pulgadas, Helio P20, 3 GB de RAM, 32 GB de capacidad (ampliables) pero atentos a la cámara VR de 26 MP que permite grabar vídeos en modo “panorama 360”, o eso promete. Está a 92,53 euros en Banggood. Curioso es, desde luego.
  • Nokia 8: pantalla de 5,3 pulgadas, Snapdragon 835, 6 GB de RAM, 128 GB de capacidad (y ampliables, uauh) y cámara dual 13+13. Curioso lo de su pantalla con 700 nits de brillo máximo. Está a 240 euros en Banggood. En Amazon esta versión está a 410 euros.
  • Acer RT280KABMIIPX: monitor de 28 pulgadas con panel TN, resolución UHD (3840×2160), 1 ms de respuesta, 2 x HDMI (2.0), 1 x HDMI (1.2), altavoces integrados. Está a 262 euros en Amazon Italia envío incluido.
  • Xiaomi Notebook Air 13,3”: el portátil con una CPU algo más antigua, el Core i5-7200U. Por lo demás, impresionante por sus 8 GB de RAM, 256 GB de capacidad y GeForce MX150 además de lector de huella. Brutal por 603,90 euros en Banggood con el cupón 12CRI01.
  • Reloj inteligente Huawei Watch GT: pantalla AMOLED 1,39” (454×454), GPS/Galileo, sensor de frec. cardiaca, notificaciones, sumergible. Está a 150 euros en AliExpress por 150 euros con el cupón HuaweiGT (en Amazon 199).
  • Mando Bluetooth para juegos móviles IPega PG-9076: con su soporte para el móvil, pero que también sirve para la tableta o el portátil, por ejemplo. Está a 16,98 euros en GearBest.
  • Xiaomi Notebook Air 13,3 pulgadas: precio/prestaciones casi sin parangón. 13,3 pulgadas FullHD, Core i7-8550U, 8 GB de RAM, 256 GB SSD, GeForce MX150, HDMI. Está a 763,76 euros en Banggood con el cupón 19BGA729.
  • Portátil Lenovo Ideapad 330-15IKB: 15,6 pulgadas HD (1366×768), Core i3-6006U, 4 GB de RAM, 500 GB de HDD y sin sistema operativo, así que perfecto para #Linux. Tiene Ethernet lector SD, USB, USB-C, HDMI ¡y grabadora de DVD! Está a 299 euros en Amazon.
  • Colorful iGame RTX 2060: esta marca es algo así como la Gigabyte china: toda una RTX 2060 con 6 GB de GDDR6 a un precio brutal, 352,56 euros en Banggood con el cupón fee6c3.
  • Xiaomi MiBand 3: con pantalla de 0,78 pulgadas (128×80 píxeles), batería de 110 mAh con autonomía de 20 días, sumergible hasta 50 metros y con Bluetooth 4.2. Envío desde España, está a 22,49 euros en Amazon.
  • Monitor gaming Aopen 24HC1QRPbidpx: atentos a su diseño curvo, diagonal de pantalla de 23,6 pulgadas, Full HD pero sobre todo soporte 144 Hz. Tiene entradas HDMI, DVI y DisplayPort y soporte para FreeSync. A jugar chicos. Está en Amazon a 179,99 euros.
  • Impresora Epson EcoTank ET-2650: no usa cartuchos de tinta, sino depósitos recargables que salen (teóricamente) mucho más baratos. Es una multifunción de inyección con WiFi. Está a 159 euros en Amazon  En PCComponentes cuesta 205 euros, por ej.
  • Xiaomi Mi A2 Lite: el telefonazo chollo por excelencia, 5,84 pulgadas, Snapdragon 625, 4 GB de RAM, 64 GB de capacidad, cámara dual 12+5 MP, batería de 4.000 mAh, sin NFC eso sí pero aún así triunfada. Atentos porque el modelo de 3 GB y 32 GB es impresionante en precio: 150 euros en GearBest. Pero es que atención: en Amazon está a 162 euros ahora mismo.
  • Pendrive USB Kingston DataTraveler 128 GB: atentos a esta llave USB con nada menos que 128 GB de almacenamiento por un precio absurdo: 18,32 euros en Amazon. El modelo de 64 GB está a 9,62 euros en Amazon, también muy interesante. Si no os gusta ese diseño, el pendrive SanDisk Ultra de 128 GB está a 19,99 euros en Amazon.
  • Disco duro externo Maxtor 4 TB: yo me compré hace tiempo uno igual por 130 euros. COn conexión USB 3.0-3.1 y sin necesidad de alimentación externa. La rebaja en precio es bastante importante, así que ahí lo dejo: ahora está a 96,89 euros en Amazon.
  • Fire TV Stick: el dongle HDMI de Amazon compatible con todo tipo de servicios de streaming mola por el mandito a distancia. Está  a 39,99 euros en Amazon.
  • Monitor HP 32s: si necesitáis un monitor grande, atentos al modelo de HP de 32 pulgadas con resolución FullHD, conectores VGA y HDMI por 251 euros en Amazon.
  • Huawei Mate 20 Pro: el súper teléfono de Huawei, incluso por encima del P20 Pro. Pantalla de 6,39 pulgadas, Kirin 980, 8 GB de RAM, 128 GB de capacidad, 4.200 mAh y una cámara triple que está entre las tres mejores del mercado. Está a 739,99 euros en eBay.
  • SSD SanDisk 1 TB: una unidad de estado sólido SATA de 1 TB a 131,43 euros en Amazon. No hay mucho más que decir. Otra opción: la unidad Crucial MX500 también de 1 TB por 121,92 euros en Amazon.
  • Monitor gaming BenQ XL2411P ZOWIE: un monitor estupendo para jugones con diagonal de 24 pulgadas, resolución 1080p, conectores HDMI y DisplayPort y sobre todo soporte de tasa de refresco de hasta 144 Hz. Fantástico por 247 euros en Amazon, el precio más bajo que he visto nunca.
  • Smart TVTelevisión Sharp 65 pulgadas 4K: si tenéis otras necesidades atentos, porque aquí tenemos un pedazo televisor con todo lo que se le puede pedir a un cacharro de este tipo. 65 pulgadas, 4K, HDR, 3 puertos HDMI, 2 USB, y sonido Harman Kardon. Todo por 799,99 euros en Amazon.
  • Xiaomi Mi 8 (Global): con dos años de garantía en España, envío inmediato. Pantalla AMOLED de 6,21 pulgadas FHD+, Snapdragon 845, 6 GB de RAM, 64 GB de capacidad, cámara trasera 12+12 MP, cámara frontal de 20 MP, lector de huellas trasero, batería de 3.400 mAh. Está en color negro a 363,22 euros en Banggood.
  • Smartwatch Huawei Watch 2: un reloj inteligente con Android Wear 2.0 y con pantalla de 1,2 pulgadas. Tiene GPS, es resistente al agua y tiene batería de 420 mAh. Está a 164 euros en Amazon Italia, envío incluido.
  • Forza Horizon 4: el juegazo de coches está de rebajas: 31,89 euros en CDKeys. Por poner otro buen chollo, el Grand Theft Auto V para PC está a 10,79 euros en CDKeys.
  • Monitor Acer V6 V226HQL: monitor de 21,5 pulgadas Full HD (1920 x 1080) con entradas VGA, DVI y HDMI. Atentos al precio: 83,48 euros en AliExpress Plaza, envío desde España y garantía de dos años.
  • Patinete Eléctrico Ninebot ES1 No. 9: otro patinete similar al anterior pero algo menos potente. Hasta 20 km/h y hasta 25 km de autonomía, muy bien también por su precio, 288,51 euros en GearBest con dos años de garantía en España. Desactivad el seguro de envío, eso sí.

¿Quieres recibir un correo de aviso cuando publique nuevas entradas?

Standard

6 comentarios en “Incognitosis, ahora en versión HTTPS

  1. Gracias Javier!

    Recordar que había hecho este procedimiento en el mio me hizo revisar la implementación que hice.

    Tenia 2 errores (uno de ellos que mi montaje de Piwik para estadísticas no estaba funcionando).

    Solucionados ya!

Comentarios cerrados