Cómo instalar Nitter en Docker | Front-end alternativo de Twitter enfocado en privacidad

Front-end alternativo para Twitter

Nitter: Front-end alternativo de Twitter enfocado en privacidad

Instancia autohospe


dada sin JavaScript, sin anuncios y ligera para navegar Twitter protegiendo tu privacidad

Vídeo tutorial en YouTube

Mira el vídeo completo sobre cómo instalar y usar Nitter: Front-end alternativo de Twitter enfocado en privacidad en el canal GENBYTE:

¿Qué es Nitter: Front-end alternativo de Twitter enfocado en privacidad?

Nitter es un front-end alternativo para Twitter (ahora X) desarrollado en Nim, diseñado para ofrecer una experiencia de navegación centrada en la privacidad y el rendimiento. El proyecto actúa como una capa intermedia: todas las peticiones pasan por el backend del servidor, de modo que el cliente nunca se comunica directamente con Twitter. Esto evita el seguimiento por IP, huella digital del navegador y la ejecución de JavaScript. Nitter no requiere cuenta de desarrollador de Twitter, utiliza la API no oficial y sirve páginas considerablemente más ligeras que el sitio original (aproximadamente 60 KB frente a 784 KB). Está licenciado bajo AGPLv3, lo que obliga a que cualquier instancia pública comparta su código modificado.

Navega Twitter sin JavaScript, sin anuncios y sin que Twitter rastree tu IP ni huella digital, todo desde una instancia propia ligera y rápida.

Características principales

Sin JavaScript requerido

Funciona completamente sin JavaScript en el navegador del usuario, eliminando vectores de rastreo y fingerprinting.

Cero anuncios

Elimina toda publicidad y contenido promocional inyectado por Twitter.

Proxy de privacidad

Todas las peticiones pasan por el backend; el cliente nunca contacta directamente con los servidores de Twitter, protegiendo la IP y la huella digital.

API no oficial sin cuenta de desarrollador

Utiliza la API interna de Twitter sin necesidad de registrar una aplicación ni obtener claves de desarrollador.

Extremadamente ligero

Páginas de ~60 KB frente a ~784 KB de twitter.com; las líneas de tiempo cargan 2-4 veces más rápido.

Feeds RSS

Genera feeds RSS por usuario, lista o búsqueda (a menudo deshabilitados en instancias públicas por abuso).

Temas y diseño responsivo

Soporte para múltiples temas visuales y diseño adaptable a móviles.

Licencia AGPLv3

Garantiza que las instancias públicas compartan sus modificaciones; no se permiten instancias propietarias.

Requisitos del sistema

  • Docker y Docker Compose (recomendado para despliegue)
  • Redis o Valkey (para caché y futuras funciones de cuentas)
  • Archivo de configuración nitter.conf (basado en nitter.example.conf)
  • Opcional: proxy inverso (Nginx, Apache) para TLS y exposición segura
  • Para compilación manual: Nim (v2.2.6 usado en Dockerfile), libpcre, libsass-dev

Instalación con Docker Compose

Preparar configuración

Crea el archivo nitter.conf a partir del ejemplo. Si clonas el repositorio: cp nitter.example.conf nitter.conf. Si usas la imagen preconstruida sin clonar, descarga nitter.example.conf desde el repositorio y guárdalo como nitter.conf.

cp nitter.example.conf nitter.conf

Ajustar nitter.conf para Docker Compose

Modifica la opción redisHost en nitter.conf cambiando localhost por nitter-redis (nombre del servicio Redis en compose.yml). Configura también hostname, puerto, clave HMAC, HTTPS (necesario para cookies) y demás parámetros según tu entorno.

Levantar la pila con Docker Compose

El compose.yml incluido define dos servicios: nitter (imagen zedeus/nitter:latest, multi-arquitectura amd64/arm64) y nitter-redis (redis:6-alpine). Monta nitter.conf y sessions.jsonl como volúmenes de solo lectura. Expone el puerto 8080 en 127.0.0.1 (cambiar a 8080:8080 si no usas proxy inverso). Incluye healthchecks, usuario no root, read_only y capacidades mínimas.

docker-compose up -d

Verificar estado

Comprueba que ambos contenedores estén healthy y revisa los logs si hay problemas.

docker-compose ps docker-compose logs -f nitter

Acceder al proyecto

Puerto de la aplicación

Nitter escucha en el puerto 8080 dentro del contenedor. En compose.yml se mapea a 127.0.0.1:8080 en el host, asumiendo uso detrás de un proxy inverso. Si no usas proxy, cambia el mapeo a 8080:8080.

Acceso web

Una vez levantado, la interfaz está disponible en http://localhost:8080 (o en el dominio configurado en el proxy inverso).

Proxy inverso recomendado

La documentación recomienda encarecidamente ejecutar Nitter detrás de Nginx o Apache para seguridad, terminación TLS y rendimiento. El wiki del proyecto incluye guías para Nginx y Apache.

Casos de uso

  • Navegación privada de Twitter sin ejecutar JavaScript ni exponer la IP real.
  • Consumo de líneas de tiempo y perfiles mediante feeds RSS en lectores de noticias.
  • Acceso ligero y rápido a contenido de Twitter en conexiones lentas o dispositivos con recursos limitados.
  • Investigación y análisis de contenido público de Twitter sin crear cuenta ni aceptar términos de servicio de la plataforma.
  • Despliegue en infraestructura propia para control total de datos y cumplimiento de políticas de privacidad organizativas.

Configuración avanzada

Archivo de configuración nitter.conf

Parámetros clave: hostname (dominio público), port (puerto interno, 8080 por defecto), hmacKey (clave secreta para firmar cookies), useHttps (true/false, debe coincidir con la terminación TLS real), redisHost/redisPort (para conectar a Redis/Valkey), enableRSS (true/false), theme (tema por defecto), instanceName, etc. El archivo nitter.example.conf documenta todas las opciones.

Sesiones de usuario (sessions.jsonl)

Para funcionalidades que requieren autenticación en Twitter (ver contenido sensible, perfiles privados si se tiene acceso), se puede generar un archivo sessions.jsonl con credenciales de cuentas de Twitter usando el script get_sessions.py (no incluido en la investigación, consultar wiki). Este archivo se monta en /src/sessions.jsonl:Z,ro en el contenedor nitter.

Systemd (alternativa a Docker)

El README provee una unidad systemd de ejemplo para ejecutar el binario compilado directamente en el host. Requiere usuario nitter, directorio de trabajo /home/nitter/nitter, y Redis corriendo como servicio del sistema. Habilitar con systemctl enable --now nitter.service.

[Unit] Description=Nitter (An alternative Twitter front-end) After=syslog.target After=network.target [Service] Type=simple User=nitter Group=nitter WorkingDirectory=/home/nitter/nitter ExecStart=/home/nitter/nitter/nitter Restart=always RestartSec=15 [Install] WantedBy=multi-user.target

Compilación manual

Requiere Nim, libpcre, libsass-dev y Redis/Valkey. Pasos: crear usuario nitter, clonar repo, nimble -l build -d:danger --mm:refc, nimble -l scss, nimble -l md, copiar config, ajustar nitter.conf, ejecutar ./nitter o usar systemd.

# useradd -m nitter # su nitter $ git clone https://github.com/zedeus/nitter $ cd nitter $ nimble -l build -d:danger --mm:refc $ nimble -l scss $ nimble -l md $ cp nitter.example.conf nitter.conf

Gestión y mantenimiento

Logs y depuración

Nitter imprime errores en stdout. Con systemd: journalctl -u nitter.service (añadir --follow para seguimiento). Con Docker: docker logs --follow <container_id>. No hay sistema de logging estructurado implementado.

journalctl -u nitter.service --follow docker logs --follow <container_id>

Healthchecks integrados

El compose.yml define healthchecks: para nitter, wget a http://127.0.0.1:8080/Jack/status/20 cada 30s (timeout 5s, 2 reintentos); para nitter-redis, redis-cli ping con mismos intervalos. Permiten a Docker Compose reiniciar contenedores no saludables.

Actualizaciones

Para actualizar la imagen preconstruida: docker-compose pull && docker-compose up -d. Si compilas manualmente, repite los pasos de build con el código actualizado y reinicia el servicio.

docker-compose pull && docker-compose up -d

Persistencia de Redis

El volumen nitter-redis:/data en compose.yml persiste los datos de Redis (caché). El comando redis-server --save 60 1 guarda en disco si hay al menos 1 cambio en 60 segundos.

Seguridad del contenedor

El servicio nitter corre como usuario 998:998, con read_only: true, no-new-privileges y cap_drop: ALL. Redis corre como 999:1000 con idénticas restricciones. Reduce superficie de ataque en caso de compromiso.

Stack técnico

  • Nim (v2.2.6 en imagen de build)
  • Docker / Docker Compose
  • Redis 6 Alpine / Valkey (caché)
  • libpcre (expresiones regulares)
  • libsass (compilación SCSS)
  • Alpine Linux (imagen base runtime)
  • OpenSSL / ca-certificates (TLS)

Referencias oficiales

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Comentarios

Entradas populares de este blog

Cómo Instalar y configurar SERVIDOR VPN WIREGUARD en MIKROTIK 🔐 #VPN #Wireguard #Mikrotik #RouterOS

Cómo instalar y configurar DSM SYNOLOGY 7.2.2 en PC | Guía completa, instalación, RAID 1, SMB

Cómo INSTALAR y CONFIGURAR OpenVPN en MIKROTIK. Guía completa paso a paso.