wr842nd OpenWRT

 

Presentación

Proyecto de aprovechamiento del router TP-Link TL-WR842ND con instalación de sistema OpenWRT, para la creación de un servidor web dedicado y optimizado para la publicación de páginas web con indexación en Google y captación activa de tráfico orgánico transaccional con oferta variada de servicios profesionales o productos. La principal fuente de ayuda estará basada en diferentes IAs como Claude, DeepSeek, Gemini, Grok o ChatGPT. En mi anterior proyecto con mi router mr3020, descubrí hasta que punto la IA puede equivocarse y comete errores muy serios, pero por desgracia me veo en la necesidad de recurrir a ellas. Será un proceso delicado y tedioso, pero al final la IA me ayuda.

Instrucciones para asistencia IA

Tengo un router con openwrt y necesito ayuda. Primero presento la información básica y situación actual. Más abajo presento la ayuda requerida e instrucciones concretas y obligatorias para la prestación de ayuda.

Situación física del router w842nd

El router TP-Link TL-WR842ND v1 se encuentra conectado por cable rj45 con ip 192.168.1.100 a otro router principal modelo RTF8115VW con ip 192.168.1.1. El router principal está conectado directamente a internet mediante una conexión de fibra y comparte internet con el resto de dispositivos que forman la red local de mi domicilio, tanto por cable como por wifi. El router TP-Link TL-WR842ND v1 funciona como un servidor web profesional que necesita al router principal para tener conexión a internet.

Especificaciones técnicas
  • Modelo TP-Link TL-WR842N/ND v1
  • Arquitectura Atheros AR7241 rev 1
  • Target Platform ath79/generic
  • Firmware: OpenWrt 22.03.7 r20341-591b7e93d3 / LuCI openwrt-22.03 branch git-24.067.02332-4c1ddfb
  • Kernel: 5.10.221
  • Extroot activado con pendrive de 7gbs
Feeds configurados en OpenWRT
  • src/gz openwrt_core https://downloads.openwrt.org/releases/22.03.7/targets/ath79/generic/packages
  • src/gz openwrt_base https://downloads.openwrt.org/releases/22.03.7/packages/mips_24kc/base
  • src/gz openwrt_luci https://downloads.openwrt.org/releases/22.03.7/packages/mips_24kc/luci
  • src/gz openwrt_packages https://downloads.openwrt.org/releases/22.03.7/packages/mips_24kc/packages
  • src/gz openwrt_routing https://downloads.openwrt.org/releases/22.03.7/packages/mips_24kc/routing
  • src/gz openwrt_telephony https://downloads.openwrt.org/releases/22.03.7/packages/mips_24kc/telephony
Paquetes instalados

En esta lista se muestran los paquetes instalados según la respuesta del comando "opkg list-installed". La lista podría no estar actualizada.

  • root@wr842nd:~# opkg list-installed
  • base-files - 1506-r20341-591b7e93d3
  • block-mount - 2022-06-02-93369be0-2
  • busybox - 1.35.0-5
  • ca-bundle - 20230311-1
  • cgi-io - 2022-08-10-901b0f04-21
  • curl - 8.6.0-1
  • ddns-scripts - 2.8.2-26
  • ddns-scripts-services - 2.8.2-26
  • dnsmasq - 2.86-16
  • dropbear - 2022.82-4
  • e2fsprogs - 1.46.5-2
  • firewall4 - 2022-10-18-7ae5e14b-1
  • fstools - 2022-06-02-93369be0-2
  • fwtool - 2019-11-12-8f7fe925-1
  • getrandom - 2021-08-03-205defb5-2
  • hostapd-common - 2022-01-16-cff80b4f-21.3
  • iw - 5.16-1
  • iwinfo - 2022-12-15-8d158096-1
  • jansson4 - 2.13.1-2
  • jshn - 2022-05-15-d2223ef9-1
  • jsonfilter - 2024-01-23-594cfa86-1
  • kernel - 5.10.221-1-2183c0da82cf7f227aeb28af12597c52
  • kmod-ath - 5.10.221+5.15.162-1-1
  • kmod-ath9k - 5.10.221+5.15.162-1-1
  • kmod-ath9k-common - 5.10.221+5.15.162-1-1
  • kmod-cfg80211 - 5.10.221+5.15.162-1-1
  • kmod-crypto-aead - 5.10.221-1
  • kmod-crypto-ccm - 5.10.221-1
  • kmod-crypto-cmac - 5.10.221-1
  • kmod-crypto-crc32c - 5.10.221-1
  • kmod-crypto-ctr - 5.10.221-1
  • kmod-crypto-gcm - 5.10.221-1
  • kmod-crypto-gf128 - 5.10.221-1
  • kmod-crypto-ghash - 5.10.221-1
  • kmod-crypto-hash - 5.10.221-1
  • kmod-crypto-hmac - 5.10.221-1
  • kmod-crypto-manager - 5.10.221-1
  • kmod-crypto-null - 5.10.221-1
  • kmod-crypto-rng - 5.10.221-1
  • kmod-crypto-seqiv - 5.10.221-1
  • kmod-crypto-sha256 - 5.10.221-1
  • kmod-fs-ext4 - 5.10.221-1
  • kmod-gpio-button-hotplug - 5.10.221-3
  • kmod-lib-crc-ccitt - 5.10.221-1
  • kmod-lib-crc16 - 5.10.221-1
  • kmod-lib-crc32c - 5.10.221-1
  • kmod-mac80211 - 5.10.221+5.15.162-1-1
  • kmod-nf-conntrack - 5.10.221-1
  • kmod-nf-conntrack6 - 5.10.221-1
  • kmod-nf-flow - 5.10.221-1
  • kmod-nf-log - 5.10.221-1
  • kmod-nf-log6 - 5.10.221-1
  • kmod-nf-nat - 5.10.221-1
  • kmod-nf-reject - 5.10.221-1
  • kmod-nf-reject6 - 5.10.221-1
  • kmod-nfnetlink - 5.10.221-1
  • kmod-nft-core - 5.10.221-1
  • kmod-nft-fib - 5.10.221-1
  • kmod-nft-nat - 5.10.221-1
  • kmod-nft-offload - 5.10.221-1
  • kmod-nls-base - 5.10.221-1
  • kmod-phy-ath79-usb - 5.10.221-1
  • kmod-ppp - 5.10.221-1
  • kmod-pppoe - 5.10.221-1
  • kmod-pppox - 5.10.221-1
  • kmod-scsi-core - 5.10.221-1
  • kmod-slhc - 5.10.221-1
  • kmod-usb-core - 5.10.221-1
  • kmod-usb-ehci - 5.10.221-1
  • kmod-usb-ledtrig-usbport - 5.10.221-1
  • kmod-usb-storage - 5.10.221-1
  • kmod-usb-storage-extras - 5.10.221-1
  • kmod-usb2 - 5.10.221-1
  • libblkid1 - 2.37.4-1
  • libblobmsg-json20220515 - 2022-05-15-d2223ef9-1
  • libc - 1.2.3-4
  • libcomerr0 - 1.46.5-2
  • libcurl4 - 8.6.0-1
  • libext2fs2 - 1.46.5-2
  • libfreetype - 2.11.1-1
  • libgcc1 - 11.2.0-4
  • libgd-full - 2.3.2-4
  • libiwinfo-data - 2022-12-15-8d158096-1
  • libiwinfo-lua - 2022-12-15-8d158096-1
  • libiwinfo20210430 - 2022-12-15-8d158096-1
  • libjpeg-turbo - 2.1.2-2
  • libjson-c5 - 0.15-2
  • libjson-script20220515 - 2022-05-15-d2223ef9-1
  • liblua5.1.5 - 5.1.5-11
  • liblucihttp-lua - 2023-03-15-9b5b683f-1
  • liblucihttp0 - 2023-03-15-9b5b683f-1
  • libmbedtls12 - 2.28.8-1
  • libmnl0 - 1.0.5-1
  • libnftnl11 - 1.2.1-2
  • libnghttp2-14 - 1.44.0-1
  • libnl-tiny1 - 2021-11-21-8e0555fb-1
  • libopenssl1.1 - 1.1.1w-1
  • libpcre2 - 10.37-1
  • libpng - 1.6.37-11
  • libpthread - 1.2.3-4
  • librt - 1.2.3-4
  • libss2 - 1.46.5-2
  • libstdcpp6 - 11.2.0-4
  • libtiff5 - 4.3.0-4
  • libubox20220515 - 2022-05-15-d2223ef9-1
  • libubus-lua - 2022-06-01-2bebf93c-1
  • libubus20220601 - 2022-06-01-2bebf93c-1
  • libuci20130104 - 2021-10-22-f84f49f0-6
  • libuclient20201210 - 2023-04-13-007d9454-1
  • libucode20220812 - 2022-12-02-46d93c9c-1
  • libustream-wolfssl20201210 - 2022-12-08-9217ab46-2
  • libuuid1 - 2.37.4-1
  • libwebp - 1.2.1-2
  • libwolfssl5.7.2.ee39414e - 5.7.2-stable-1
  • libxml2 - 2.10.4-1
  • libzip-openssl - 1.8.0-4
  • logd - 2021-08-03-205defb5-2
  • lua - 5.1.5-11
  • luci - git-23.093.42303-d58cd69
  • luci-app-firewall - git-24.067.02332-0337416
  • luci-app-opkg - git-24.045.79537-9f5b5dd
  • luci-base - git-24.067.02332-4c1ddfb
  • luci-lib-base - git-20.232.39649-1f6dc29
  • luci-lib-ip - git-23.311.79310-704a335
  • luci-lib-jsonc - git-23.298.74581-7dfbbca
  • luci-lib-nixio - git-24.034.55122-b50146c
  • luci-mod-admin-full - git-19.253.48496-3f93650
  • luci-mod-network - git-24.075.44908-000d7e5
  • luci-mod-status - git-24.087.58505-279cf19
  • luci-mod-system - git-24.067.02339-de5734b
  • luci-proto-ipv6 - git-23.355.78888-e047387
  • luci-proto-ppp - git-24.135.45225-e7a8d09
  • luci-ssl - git-20.244.36115-e10f954
  • luci-theme-bootstrap - git-24.072.69887-4219a92
  • mtd - 26
  • netifd - 2022-08-25-76d2d41b-1
  • nftables-json - 1.0.2-2.1
  • odhcp6c - 2022-08-05-7d21e8d8-18
  • odhcpd-ipv6only - 2023-01-02-4a673e1c-2
  • oniguruma5 - 6.9.7.1-1
  • openssh-sftp-server - 9.8p1-1
  • openwrt-keyring - 2022-03-25-62471e69-3
  • opkg - 2022-02-24-d038e5b6-1
  • php8 - 8.1.30-1
  • php8-fpm - 8.1.30-1
  • php8-mod-ctype - 8.1.30-1
  • php8-mod-curl - 8.1.30-1
  • php8-mod-dom - 8.1.30-1
  • php8-mod-fileinfo - 8.1.30-1
  • php8-mod-gd - 8.1.30-1
  • php8-mod-mbstring - 8.1.30-1
  • php8-mod-session - 8.1.30-1
  • php8-mod-simplexml - 8.1.30-1
  • php8-mod-zip - 8.1.30-1
  • ppp - 2.4.9.git-2021-01-04-3
  • ppp-mod-pppoe - 2.4.9.git-2021-01-04-3
  • procd - 2022-06-01-7a009685-3
  • procd-seccomp - 2022-06-01-7a009685-3
  • procd-ujail - 2022-06-01-7a009685-3
  • px5g-wolfssl - 6.2
  • rpcd - 2022-12-15-7de4820c-1
  • rpcd-mod-file - 2022-12-15-7de4820c-1
  • rpcd-mod-iwinfo - 2022-12-15-7de4820c-1
  • rpcd-mod-luci - 20210614
  • rpcd-mod-rrdns - 20170710
  • shadow-common - 4.8.1-3
  • swconfig - 12
  • uboot-envtools - 2022.01-40
  • ubox - 2021-08-03-205defb5-2
  • ubus - 2022-06-01-2bebf93c-1
  • ubusd - 2022-06-01-2bebf93c-1
  • uci - 2021-10-22-f84f49f0-6
  • uclient-fetch - 2023-04-13-007d9454-1
  • ucode - 2022-12-02-46d93c9c-1
  • ucode-mod-fs - 2022-12-02-46d93c9c-1
  • ucode-mod-ubus - 2022-12-02-46d93c9c-1
  • ucode-mod-uci - 2022-12-02-46d93c9c-1
  • uhttpd - 2023-06-25-34a8a74d-1
  • uhttpd-mod-ubus - 2023-06-25-34a8a74d-1
  • unzip - 6.0-8
  • urandom-seed - 3
  • urngd - 2023-11-01-44365eb1-1
  • usign - 2020-05-23-f1f65026-1
  • wireless-regdb - 2024.07.04-1
  • wpad-basic-wolfssl - 2022-01-16-cff80b4f-21.3
  • zlib - 1.2.11-6
  • zoneinfo-core - 2023c-2
  • root@wr842nd:~#

Esta lista podría no estar actualizada.

Estado actual e historial de operaciones realizadas:
  • Firmware OpenWrt 22.03.7 r20341-591b7e93d3 / LuCI openwrt-22.03 branch git-24.067.02332-4c1ddfb instalado.
  • Extroot activado con pendrive conectado y funcionando de forma estable.
  • LAN configurada con ip estática 192.168.1.100
  • SSID activo en modo master con nombre ew842nd
  • Se ha configurado uhttp para servir Luci en el puerto 8080, liberando así el puerto 80 parar Nginx.
  • Se ha optimizado la configuración de red para uso como servidor web conectado por cable rj45 a router principal con ip 192.168.1.1
  • Se ha creado y activado una partición de memoria SWAP para ayudar a la limitada memoria RAM.
  • Se ha activado Nginx y configurado para servir páginas web en el puerto 80 del directorio raíz /webs (queda pendiente definir usuario que manejará nginx y php)
  • Se ha instalado php8 con varios módulos pero aun está pendiente activarlo de forma correcta.
  • Se ha vuelto a resolver la configuración de red por un problema que sobrescribía la configuración DNS en cada reinicio.
  • Nginx y php parecen finalmente bien configurados y listos para funcionar con usuario webadmin y grupo www-data.
  • Servidor SFTP activado, configurado y funcionando con DropBear para usuario webadmin:www-data en local y remoto.
  • Se ha configurado el servicio DDNS con DuckDNS para el dominio novacros.duckdns.org. Pruebas con éxito.
  • Se ha hecho port forwarding en router principal para los puertos 80, 8080, 443 y 22, pero Movistar bloquea el puerto 22 parar SSH REMOTO.
  • Certificado SSL creado en Let´s Encrypt y gestionado por ACME dentro de OpenWRT (Nginx parece no configurado para usarlo, en su lugar ofrece en navegadores un certificado genérico de OpenWRT que no es seguro)
  • La web https://httpstatus.io/ parece un buen sitio para hacer pruebas con las novacros.duckdns.org
Tareas planificadas:

La siguiente lista debe ser tenida en cuenta como futuras tareas que se realizarán en el router mr3020 pero solo de forma preventiva a la hora de ayudar con la tarea actual que se muestra en el siguiente apartado llamado "Ayuda requerida".

  1. Posible uso de proxy inverso en Nginx.
  2. Instalar UI para Nginx.
  3. Configurar acceso remoto ssh al puerto 2222, ya que Movistar bloquea el puerto 22.
  4. Repositorio de recursos / descargas.
  5. Configuración para permitir acceso remoto a la administración de openwrt, tanto por terminal ssh como acceso a Luci.
  6. Script para automatizar copias de seguridad completas basadas en módulos que posteriormente se unican en un solo archivo restaurable mediante un script adicional, incluyendo todos los archivos del sistema y configuración. Lista para recrear (no restaurar) una copia exacta.
Ayuda requerida:

El objetivo principal y general es convertir este router w842nd con OpenWRT en un servidor web dedicado y optimizado para la publicación de páginas web con indexación en Google y captación activa de tráfico orgánico transaccional con oferta variada de servicios profesionales o productos. El servidor web podrá alojar varias páginas principalmente basadas en gestores de contenido sencillos y ligeros como Bludit o html plano estático. Se buscará el mejor rendimiento posible teniendo en cuenta la limitaciones de hardware y sistema. El router w842nd con IP 192.168.1.100, deberá funcionar como un servidor web profesional que quedará conectado a la red local de mi domicilio y activo de forma permanente, mediante conexión directa por cable de red RJ45 con el router principal de mi domicilio (192.168.1.1), modelo RTF8115VW. Se deberán tener en cuenta aspectos tan importantes como conseguir el mejor rendimiento y la seguridad, creando un entorno de protección para el servidor y su red local contra posible ataques externos. El router ya tiene instalado uhttpd para servidor la interfaz Luci (modificado para servir en el puerto 8080, dejando así libre el puerto 80 para Nginx), pero para la función de servidor web profesional se ha añadido Nginx y PHP, una combinación capaz de soportar, tanto html plano como aplicaciones CMS como Bludit. Lo más importantes es cuidar la integridad del sistema en cada paso de este proyecto a la vez que se exprimen sus posibilidades y se busca la máxima optimización, pero cuidando sobre todo la estabilidad del sistema.

El siguiente paso es encontrar la forma de liberar el puerto 80 que usa mi router principal de Movistar, modelo RTF8115VW, para que pueda la redirección del puerto configurada en el mismo router funcione para la ip de mi router w842nd.

Indicaciones para ayudarme mejor en idioma Español:

Debes responder siempre con información real, sin fingir ni usar contenido falso o inventado, debes confirmar datos y verificar con antelación los recursos que me entregues. Si es necesario modificar configuración existente o crear nueva configuración siempre debes conocer la configuración existente antes. Si es necesario instalar nuevos paquetes o módulos, antes debes asegurarte que dichos paquetes o módulos no estén ya instalados. En general, se debe conocer el estado y configuración del router y su sistema antes de iniciar nuevos procesos de manipulación o cambios en el sistema. Si facilitas URLs debes asegurar que funcionan y están actualizadas, en caso contrario, debes avisarlo. Es obligatorio que trabajes siempre de forma segura, recordando los pasos anteriores para proteger el funcionamiento del router y la estabilidad del sistema openwrt, poniendo especial atención en la pulcritud y limpieza de archivos y configuraciones residuales sean eliminados para que la manipulación del sistema no suponga un deterioro del mismo. Jamás utilizar comandos o URLs falsas. Y es muy importante que tus respuestas muestren los pasos a seguir de uno en uno, es obligatorio que esperes siempre mi respuesta al paso anterior antes de que presentes el paso siguiente. Trabajaremos principalmente con la terminal de comandos en OpenWRT. Tu me dirás que debo hacer y yo ejecutaré tus indicaciones en la terminal o en otros entornos de comunicación. Si es necesario editar un archivo, evita los editores vi o nano, en su lugar utiliza comandos EOF que permitan agilizar el flujo de trabajo. Ten en cuenta que podrías estar retomando la tarea de ayudarme que otra IA anterior dejó sin terminar, así que presta atención a las operaciones que se hayan podido realizar antes de tu intervención. Al final de cada una de tus respuestas añade instrucciones completas y actualizadas de la situación, especificaciones de router, del sistema Openwrt, paquetes instalados, objetivo, operaciones realizadas y siguiente paso pendiente, por si nuestras conexión se pierde y debo pedir a otra IA que siga ayudándome relevando tu tarea. Es obligatorio que respetes esta forma de ayudarme y generar resumen para otras IAs siempre. Recuerda ir paso a paso, comando a comando, sin presentar demasiado contenido de golpe y reduciendo el consumo de tus tokens cuando sea posible. Muy importante: Este router ya tiene un historial de manipulación y trabajo que se ha realizado para que otros servicios funcionen y no podemos editar archivos y cambiar configuraciones sin tener en cuenta el trabajo previo. Debemos respetar, cuidar y proteger el trabajo realizado que ya existe en el router y no cambiar nada a menos que sea necesario. Antes de editar o modificar un archivo o configuración se debe analizar el contenido de ese archivo y configuración, comprender su estado y respetarlo antes de modificarlo. Si existe conflicto primero se debe plantear y buscar una forma de resolver protegiendo siempre la integridad del sistema y su funcionamiento actual.

 

Diario de manipulación

24 Julio 2025

He iniciado el planteamiento con asistencia IA para establecer los cimientos técnicos de este proyecto. Voy a instalar el servidor Nginx para las webs que deseo publicar, pero desplazando a uhttpd al puerto 8080, para liberar el puerto 80, que será utilizado por Nginx junto al puerto 443 para servir las páginas web.

26 Julio 2025

Hoy está siendo un día de mierda. Incluso Claude está cometiendo errores impresionantes a la hora de recordar mis instrucciones. Fallos al recordar las instrucciones y procedimientos lejos de ser seguros u optimizados. Es realmente frustrante, pero el secreto es no poner demasiadas expectativas en este tipo de ayuda artificial. Sigo intentando dejar lista la configuración básica de red y resto del sistema antes de instalar Nginx, PHP, Crear certificados SSL, gestionarlos desde OpenWRT con Certbot y comenzar mis faenas con Bludit. La pasada noche pasé un rato repasando partes de tareas importantes que no debo olvidar, como la importancia de gestionar bien los procesos de php on demand, cuidar las reglas de firewall para proteger el servidor web w842nd cuando esté expuesto a internet o las ventajas de usar un proxy inverso que seguramente hará más lento el servicio web pero lo protegerá mucho de ataques y optimizará el tráfico.

27 Julio 2025

Con los desastres de Gemini y la ayuda de Claude, he resuelto los problemas de red, dejando el sistema con una configuración limpia y preparada para funcionar como servidor web. Además he creado y activado 128mg de memoria SWAP que ahora ayudarán a aliviar la RAM y mejorará el rendimiento general. Hizo falta un método suave y lento para que la creación de la swap no diera problemas, se usó el siguiente comando para crearla la partición con bloques pequeños (Propuesta por Claude): dd if=/dev/zero of=/overlay/swapfile bs=1k count=131072

29 Julio 2025

La configuración DNS para una correcta comunicación con internet era sustituida por el sistema en cada reinicio. Se ha solucionado este problema y ahora estoy buscando la mejor opción para usuario y grupo que manejen Nginx y php.

30 y 31 Julio 2025

Se ha corregido la configuración y el entorno para que el usuario webadmin y el grupo www-data tengan armonía con nginx, php y el directorio /webs/. Ahora todo parece funcionar perfecto y sin problemas.
Se ha configurado el servicio DuckDNS en el router, con el dominio novacros.duckdns.org. Ahora voy a redireccionar puertos en el router principal para comenzar a conectar el w842nd con el exterior. Los puertos 80, 8080 y 443 están redireccionados en el router principal y parecen funcionar bien, pero Movistar creo que está bloqueando el puerto 22 y no me deja conectar en remoto con la terminal de mi w842nd.

1 Agosto 2025

Con ayuda de Grok y Claude he corregido rápidamente lo que para la IA Gemeni 2.5 Flash era algo difícil. Ahora El router funciona genial ofreciendo las webs con Nginx, PHP y certificado SSL de Let´s Encrypt gratuitos que se renovarán automáticamente. Pero he notado que la redirección de http a https en navegador era muy lenta y parece que Claude me ayudara a resolverlo bastante bien.

4 Agosto 2025

Desde el pasado 1 de Agosto he estado lidiando con pruebas de acceso al router, mapeo de puertos y reglas de firewall en mi router principal de Movistar, que está bloqueando el puerto 80 para su propio uso y no puedo usarlo para mi w842nd, aunque lo redireccione correctamente o cree las reglas de firewall adecuadas. El router de Movistar que conecta internet a mi casa, un modelo RTF8115VW está "capado" por Movistar y no permite acceder a las opciones avanzadas que podrían liberal ese puerto. Superar este problema va a ser complicado.

8 Agosto 2025

Después de ver que mi Raspberry PI 3B+ consume menos energía eléctrica que este router w842nd, acabo de levantar una ceja y replantearme todo el proyecto, que originalmente era un reto con openwrt, pero ahora que lo he conseguido, podría fijar la RPI3B+ como mi servidor web definitivo, en lugar del router. Ahhh, fantástico! Así libero a mi w842nd para usarlo en otro reto/proyecto.

error: PROTECTED CONTENT - CONTENIDO PROTEGIDO