From 6ddf69c07b6c492ff2e8b900dff67f8ee2925ae3 Mon Sep 17 00:00:00 2001 From: maebahesioru Date: Wed, 15 Apr 2026 12:34:04 +0900 Subject: [PATCH 1/2] feat: add Nitter service template --- svgs/nitter.svg | 1 + templates/compose/nitter.yaml | 88 +++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 svgs/nitter.svg create mode 100644 templates/compose/nitter.yaml diff --git a/svgs/nitter.svg b/svgs/nitter.svg new file mode 100644 index 0000000000..2fdb49d90b --- /dev/null +++ b/svgs/nitter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/compose/nitter.yaml b/templates/compose/nitter.yaml new file mode 100644 index 0000000000..5a2ebacf03 --- /dev/null +++ b/templates/compose/nitter.yaml @@ -0,0 +1,88 @@ +# documentation: https://github.com/zedeus/nitter +# slogan: Alternative Twitter/X front-end focused on privacy. +# category: social +# tags: twitter,x,privacy,frontend,proxy +# logo: svgs/nitter.svg +# port: 8080 + +# IMPORTANT: You must provide sessions.jsonl with valid Twitter/X session tokens. +# Generate it using: https://github.com/zedeus/nitter/tree/master/tools + +services: + nitter: + image: zedeus/nitter:latest + environment: + - SERVICE_URL_NITTER_8080 + volumes: + - type: bind + source: ./nitter.conf + target: /src/nitter.conf + read_only: true + content: | + [Server] + hostname = "localhost" + title = "Nitter" + address = "0.0.0.0" + port = 8080 + https = false + httpMaxConnections = 100 + staticDir = "./public" + + [Cache] + listMinutes = 240 + rssMinutes = 10 + redisHost = "nitter-redis" + redisPort = 6379 + redisPassword = "" + redisConnections = 20 + redisMaxConnections = 30 + + [Config] + hmacKey = "changeme-random-secret" + base64Media = false + enableRSS = true + maxConcurrentReqs = 2 + maxRetries = 1 + retryDelayMs = 150 + + [Preferences] + theme = "Nitter" + proxyVideos = true + - type: bind + source: ./sessions.jsonl + target: /src/sessions.jsonl + read_only: true + content: "" + depends_on: + nitter-redis: + condition: service_healthy + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "wget -nv --tries=1 --spider http://127.0.0.1:8080/x/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 + command: redis-server --save 60 1 --loglevel warning + volumes: + - nitter-redis:/data + restart: unless-stopped + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 30s + timeout: 5s + retries: 2 + user: "999:1000" + read_only: true + security_opt: + - no-new-privileges:true + cap_drop: + - ALL From f8062d3d5ba96a31cddfccc23584c331dead4f83 Mon Sep 17 00:00:00 2001 From: maebahesioru Date: Wed, 15 Apr 2026 12:37:58 +0900 Subject: [PATCH 2/2] fix: restore correct healthcheck endpoint, add hostname comment --- templates/compose/nitter.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/compose/nitter.yaml b/templates/compose/nitter.yaml index 5a2ebacf03..9c2818d9a2 100644 --- a/templates/compose/nitter.yaml +++ b/templates/compose/nitter.yaml @@ -20,7 +20,7 @@ services: read_only: true content: | [Server] - hostname = "localhost" + hostname = "localhost" # CHANGE THIS to your domain (e.g. nitter.example.com) title = "Nitter" address = "0.0.0.0" port = 8080 @@ -58,7 +58,7 @@ services: condition: service_healthy restart: unless-stopped healthcheck: - test: ["CMD-SHELL", "wget -nv --tries=1 --spider http://127.0.0.1:8080/x/status/20 || exit 1"] + test: ["CMD-SHELL", "wget -nv --tries=1 --spider http://127.0.0.1:8080/Jack/status/20 || exit 1"] interval: 30s timeout: 5s retries: 2