Cómo instalar Nitter en Docker | Front-end alternativo de Twitter enfocado en privacidad
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.
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.
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.
Verificar estado
Comprueba que ambos contenedores estén healthy y revisa los logs si hay problemas.
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.
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.
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.
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.
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
- Repositorio oficial en GitHub: https://github.com/zedeus/nitter
- Sitio web del proyecto: https://nitter.net
- Imagen Docker en Docker Hub: https://hub.docker.com/r/zedeus/nitter
- Wiki: lista de instancias públicas: https://github.com/zedeus/nitter/wiki/Instances
- Wiki: extensiones de navegador: https://github.com/zedeus/nitter/wiki/Extensions
- Wiki: guía de Nginx: https://github.com/zedeus/nitter/wiki/Nginx
- Wiki: guía de Apache: https://github.com/zedeus/nitter/wiki/Apache
- Canal Matrix de la comunidad: https://matrix.to/#/#nitter:matrix.org
- Licencia AGPL-3.0: https://www.gnu.org/licenses/agpl-3.0.html
Comentarios
Publicar un comentario