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 o en el nuevo canal de Telegram 🙂 . ¡Aprovecha, que no suelen durar mucho tiempo!

  • TCL Plex: un smartphone de 6,53?, Snapdragon 675, 6 GB de RAM, 12 8 GB de capacidad (ampliables), cámara triple de 48+16+2 MP, 3.820 mAh, conector auriculares (!). Está a 219 euros en Amazon (baja de 279).
  • Realme 6: súper nuevo, 6,5?, Helio G90T, 4 GB de RAM, 64 GB de capacidad, cámara cuádruple (48+8+2+2 MP), 4.300 mAh de batería, lector de huella en el lateral, está a 192 euros en AliExpress Plaza con el código ALIVERSARIO27
  • Cargador AUKEY USB-C: con Power Delivery 3.0, potencia de 36W, dos puertos USB-C para cargar móviles o tabletas a toda pastilla. Está a 25,99 euros en Amazon (baja de 38,99).
  • Televisor TD Systems K58DLK10US: una Smart TV de 58 pulgadas con resolución 4K UHD, soporte HDR10, sonido Dolby Digital+, WiFi, sistema operativo Android 9.0. Está a 319 euros en AliExpress (baja de 359).
  • Tocadiscos Victrola Pro: no solo podrás reproducir tus vinilos, sino convertirlos a MP3 si así lo quieres. Incluye software para Mac y PC y cable USB, está a 47,55 euros en Amazon (baja de 58).
  • Kit de elaboración de cerveza: qué mejor que hacer tu propia cerveza ahora que está más difícil comprarla fuera. Elabora 5 litros de cerveza Weissbier trigo, estilo alemán. El kit está a 38,50 euros en Amazon (baja de 59,90).
  • TCL 55DP602: una Smart TV de 50? con resolución 4K UHD, soporte HDR, sonido Dolby Digital Plus, está a 399,85 euros en Amazon. Brutal.
  • Altavoces Edifier Studio R1280T: equipo de dos altavoces para sonido estéreo, hasta 42 W de potencia, conectores RCA y minikack, sensibilidad de 85 dB, mando a distancia. Son estupendos, de hecho los tengo en casa. Están a 70,90 euros en Amazon (bajan de 99,99).
  • LG 65UM7610PLB: una smart TV de 65? con resolución 4K UHD, soporte HDR, palnel IPS, sistema webOS 4.5, asistente de Google y Alexa, sonido DTS Virtual:X. Está a 673,90 euros en Amazon (baja de 999).
  • Realme X2 Pro: 6,5 pulgadas 90 Hz, 12 GB de RAM, 256 GB capacidad, Snapdragon 855+, cámara cuádruple (64+13+8+2 MP), 4.000 mAh, lector bajo pantalla, está a 361 euros en AliExpress Plaza con el código ALIVERSARIO37. En Amazon está a 439 euros.
  • Xiaomi Redmi Note 8: 6,53?, Snapdragon 665, 4 GB de RAM, 64 GB de capacidad, cámara cuádruple (48+8+2+2) y 4.000 mAh de batería. Está a 155,42 euros en Amazon
  • Xiaomi Mi TV Box S: el set top box de Xiaomi con soporte de streaming en 4K, procesador Amlogic S905L (S905X), 2 GB de RAM, 8 GB eMMC, WiFi ac, BT 4.2, HDMI 2.0, mini TOSLINK, control remoto. Está a 49 euros en Amazon.
  • Apple iPhone 11 64 GB: 6,1 pulgadas de pantalla Retina, Apple A13 Bionic, Face ID, cámara dual de 12 +12 Mpíxeles, carga inalámbrica, resistencia IP68, carga rápida, Dolby Atmos. Está a 789 euros en Amazon.
  • Amazon Kindle: el lector de libros electrónicos de Amazon ya cuenta en su versión básica con luz frontal integrada, así que puedes leer en la cama sin lámparas. 6 pulgadas 167 ppp, 4 GB de capacidad, está a 64,99 euros en Amazon (baja de 89,99). El Paperwhite resistente al agua está a 99,99 euros (baja de 129,99).
  • Monument Valley 2: un juego visualmente precioso con una mecánica de puzzles espectacular. Está gratis para Android en Google Play y también gratis para iOS en la App Store.
  • Oppo Reno 2: 6,55?, Snapdragon 730G, 8 GB de RAM, 256 GB de capacidad, cámara cuádruple (48+13+8+2), lector de huella bajo pantalla, 4.000 mAh, cámara frontal «aleta tiburón». Muy curioso , está a 449 euros en Amazon (baja de 499).
  • ASUS ZenBook 14: un portátil de 14? FullHD con un Ryzen 7 3700U, 16 GB de RAM (muy bien), 512 GB de SSD, una Radeon RX Vega 10, sistema operativo Endless OS, teclado español, lector de huella. Está a 649 euros en Amazon.
  • WD Black P10 5TB: una unidad de 5 TB de capacidad perfecta para consola o PC, capacidad estupenda, conexión USB 3.0, tasas de transferencia notables, está a 119,99 euros en Amazon (baja de 140,49).
  • Seagate Expansion 8 TB: otra unidad aún con mayor capacidad, 8 TB (uauh!) con interfaz USB 3.0 (compatible USB 2.0), 3,5 pulgadas y un precio muy bueno (no tanto como el anterior), 139,99 euros en Amazon.
  • HiSense H50AEE6400: una Smart TV de 50? con resolución 4K UHD, soporte HDR, plataforma VIDAA U, modo deporte, está a 349,99 euros en Amazon.
  • ‘World War Z’, ‘Figment’ y ‘Tormentor x Punisher’: Epic Games vuelve a regalar juegos. Tres más con muy buenas críticas, que os podéis descargar desde ya mismo. A por ellos!
  • Apple iPhone 8 256 GB (rojo, reacondicionado): atentos a este modelo, que según Amazon está como nuevo y «funciona como tal», nada menos que 256 GB de capacidad, 4,7 pulgadas, cámara de 12 Mpíxeles, TouchID, resistencia al agua IP67. Está a 399 euros en Amazon.
  • Sharp LC-55UI8762ES: una Smart TV de 55 pulgadas con resolución 4K UHD, soporte HDR+, Smart Aquos Net+, 3 x HDMI, 2 x USB, altavoces Harman Kardon, está a 389,99 euros en Amazon (baja de 799,99).
  • Philips 32PFS5823: una Smart TV modesta de 32 pulgadas y resolución Full HD para quienes no necesitan lo más de lo más. Tiene tecnología Pixel Plus HD, Dolby Audio, y puertos HDMI y USB. Está a 209,99 euros en Amazon (baja de 269).
  • Lenovo IdeaPad C340-14API: un portátil convertible en tablet muy majo de 14? Full HD con un Ryzen 5 3500U, 8 GB de RAM, 256 GB de SSD, Windows 10 y teclado en español por 599,99 euros en Amazon.
  • ASUS ZenBook UM431DA-AM003: un portátil de 14? Full HD con un Ryzen 5 3500U, 8 GB de RAM, 512 GB de SSD, sin sistema operativo, teclado en español, está a 549 euros en Amazon.
  • Humble Bundle Just Drive: un pack de juegos de conducción para quienes quieran disfrutar al volante «virtual». Asetto Corsa, Dirt 4 y Project Cars 2 entre otros por 12 euros en Humble Bundle. Brutal
  • Humble Bundle Stardock: esta empresa lleva años haciendo programas fantásticos de personalización y productividad de Windows 10. Por 13,50 euros tendrás el pack completo, incluidos Windows Blinds, Fences (escritorios virtuales) o Multiplicity (KVM software).
  • Acer Aspire 3: un portátil muy modesto pero curioso, 15,6? FullHD, Core i3-6006U, 4 GB de RAM, 128 GB de SSD, Linux preinstalado, teclado español, está a 239 euros en Amazon, buena opción como portátil de batalla o para niños.
  • AMD Ryzen 2600X: si estáis actualizando vuestro PC o vais a montaros uno nuevo atentos a este micro de 8 núcleos y 16 hilos de ejecución, preparado para overclocking, 95W de TDP, hasta 4,25 GHz. Está a 129 euros en Amazon (baja de 215).
  • Xiaomi Mi 9T: 6,39? AMOLED, Snapdragon 730, 6 GB de RAM, 128 GB de capacidad, cámara triple (48+8+13), cámara frontal retráctil (20 MP), lector de huella bajo pantalla, 4000 mAh. La versión de 64 GB está a 259,99 euros en Amazon (baja de 329).
  • Aspiradora Philips Speedpro: formato escoba, se puede usar como aspiradora vertical o aspiradora de mano, en ambos casos sin cable. Cepillo con succión de 180º, tecnología PowerCyclone 7, hasta 800 l/min de velocidad del aire, está a 149,99 euros en Amazon (baja de 289).
  • Amazon Prime Estudiantes: la suscripción a Amazon Prime está a solo 18 euros al año (60 para usuarios normales) con un periodo gratuito de 90 días de prueba. Ya sabéis, con ella tenéis entrega rápida gratis, prime video y prime music.
  • Xiaomi Redmi Note 8T: 6,3?, Snapdragon 665, 3 GB de RAM, 32 GB de capacidad, cámara cuádruple (48+8+2+2), 4.000 mAh, lector trasero, buena opción recién salida del horno. Está a 179 euros en Amazon.
  • Huawei P40 Lite + Freebuds 3: 6,4?, Kirin 810, 6 GB de RAM, 128 GB de capacidad, cámara cuádruple de 48+8+2+2 MP, 4.200 mAh de batería, regalo de los auriculares valorados en 179 euros. Está a 299 euros en Amazon, espectacular. Una sola pega: lleva Android 10, pero sin servicios y apps de Google.
  • HiSense H65A6500: una Smart TV enorme de 65 pulgadas con resolución 4K UHD, soporte HDR, con la plataforma VIDAA U, modo deportes, WiFi, Precision Color, está a 579,99 euros en Amazon.
  • Intel NUC: un miniPC potente y curiosón. Con un Core i5-7260U, 8 GB de RAM, 240 GB de SSD2, Windows 10, está a 525 euros en Amazon. Buen equipo de trabajo o incluso de salón.
  • Acer Aspire 3 A315-54K: un portátil de 15,6? Full HD con un Core i5-10210U, 8 GB de RAM, 512 GB de SSD, sin sistema operativo, con salida HDMI, RJ45, USB 3.1, lector de tarjetas, está a 499 euros en PcComponentes (en Amazon 708 euros).
  • Smartwatch Huawei GT Fashion: un reloj inteligente con monitor de sueño, ritmo cardíaco, sistema LiteOS, GPS, Bluetooth, y pantalla estupenda. Está a 99 euros en Amazon (en PcComp 147).
  • ASUS TUF Gaming FX505DV: un portátil gaming con pantalla de 15,6? Full HD a 120 Hz, Ryzen 7 3750H, 16 GB de RAM, 512 GB SSD, GeForce RTX 2060 (uauh), sin SO, teclado retroiluminado en español. En eBay está a 999 euros, rebaja brutal.

¿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