nitter Docker & Self-Hosted Deployment

GitHub

Alternative Twitter front-end

14,469 stars Nim 1 file ยท ~1,915 tokens #nim#privacy#self-hosted#twitter#x
RAW Compose
1. Pull Image (DOCKERHUB) docker pull zedeus/nitter
2. Docker Run (1-Click Launch) docker run -d --name nitter -p 8080:8080 --restart always zedeus/nitter:latest
3. Podman Run podman run -d --name nitter -p 8080:8080 --restart always zedeus/nitter:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/zedeus/nitter:latest
5. ORAS Pull (OCI Artifact) oras pull zedeus/nitter:latest
6. Compose Deployment docker compose up -d
compose.yml
Download .yml
services:

  nitter:
    image: zedeus/nitter:latest
    container_name: nitter
    ports:
      - "127.0.0.1:8080:8080" # Replace with "8080:8080" if you don't use a reverse proxy
    volumes:
      - ./nitter.conf:/src/nitter.conf:Z,ro
      - ./sessions.jsonl:/src/sessions.jsonl:Z,ro # Run get_sessions.py to get the credentials
    depends_on:
      - nitter-redis
    restart: unless-stopped
    healthcheck:
      test: wget -nv --tries=1 --spider http://127.0.0.1:8080/Jack/status/20 || exit 1
      interval: 30s
      timeout: 5s
      retries: 2
    user: "998:998"
    read_only: true
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL

  nitter-redis:
    image: redis:6-alpine
    container_name: nitter-redis
    command: redis-server --save 60 1 --loglevel warning
    volumes:
      - nitter-redis:/data
    restart: unless-stopped
    healthcheck:
      test: redis-cli ping
      interval: 30s
      timeout: 5s
      retries: 2
    user: "999:1000"
    read_only: true
    security_opt:
      - no-new-privileges:true
    cap_drop:
      - ALL

volumes:
  nitter-redis: