# Nitter configuration. Copy this file to nitter.conf, or point # NITTER_CONF_FILE at your copy, and change what you need. # # Each value shown is the default. A missing key or an empty value uses # the default, and unknown keys are ignored. Strings may be # double-quoted. Booleans are true or false, or yes/no, on/off, y/n or # 1/0. # # Generated by make generate from internal/config/options.go and # internal/prefs/prefs.go; change the descriptions and defaults there. [Server] # How Nitter listens, and the public address it puts in links. # Public host name of this instance, with a port if it isn't the default # for the scheme, such as nitter.example.com or localhost:8080. Absolute # links in RSS feeds, embeds, OpenSearch, oEmbed and the preferences URL # are built from it. hostname = "nitter.net" # Instance name, shown in page titles, the navbar, RSS feeds, OpenSearch # and oEmbed. title = "Nitter" # IP address to listen on. 0.0.0.0 listens on every interface; 127.0.0.1 # only accepts connections from the same host, such as a local reverse # proxy. nitter healthcheck connects to this address, or to 127.0.0.1 # when it is unspecified. address = "0.0.0.0" # TCP port to serve plain HTTP on. nitter healthcheck connects to it # too. port = 8080 # Whether visitors reach the instance over HTTPS, usually through a # reverse proxy; Nitter itself always serves plain HTTP. When on, # absolute links use https:// and the preference cookies are marked # Secure, which browsers only keep over HTTPS or on localhost. Turn it # off when serving plain HTTP elsewhere, or preferences won't stick. https = true # Directory of static files served at /: stylesheets, scripts, fonts and # the about page. Themes are the stylesheets in its css/themes. Relative # to the working directory. staticDir = "./public" [Cache] # How long API results stay cached in memory, and how much memory the # cache may use. # Minutes to cache list and community details and community moderators. # Their timelines aren't cached, so this can stay high. listMinutes = 120 # Minutes to cache each generated RSS feed. Feed readers see new tweets # at most this late. rssMinutes = 10 # Memory limit of the cache, in MiB of compressed entries, shared by # profiles, lists, communities, RSS feeds and the rest. Entries are # evicted early when it is full. Must be positive. maxMegabytes = 128 [Config] # Upstream requests, sessions and the features the instance offers. # Secret key that signs proxied video URLs and on-demand translation # requests, so only links this instance generated are served. Set a # unique random value, such as the output of openssl rand -hex 32. With # the default, signatures can be forged: Nitter logs a warning and # leaves onDemandTranslation off. Changing it breaks video links already # handed out, such as those in cached RSS feeds. hmacKey = "secretkey" # Put proxied image and video URLs in paths as base64 (/pic/enc/..., # /video/enc/...) instead of percent-encoding them. Both forms are # always served; this only chooses the one in generated links. base64Media = false # Master switch for RSS. When off, every feed below is off, whatever its # own setting. enableRSS = true # Serve the RSS feeds at //rss. When off, they answer 403 and # aren't linked. enableRSSUserTweets = true # Serve the RSS feeds at //with_replies/rss. When off, they answer # 403 and aren't linked. enableRSSUserReplies = true # Serve the RSS feeds at //reposts/rss. When off, they answer 403 # and aren't linked. enableRSSUserReposts = true # Serve the RSS feeds at //media/rss. When off, they answer 403 # and aren't linked. enableRSSUserMedia = true # Serve the RSS feeds at //articles/rss. When off, they answer 403 # and aren't linked. enableRSSUserArticles = true # Serve the RSS feeds at /search/rss and //search/rss. When off, # they answer 403 and aren't linked. enableRSSSearch = true # Serve the RSS feeds at /i/lists//rss and //lists//rss. # When off, they answer 403 and aren't linked. enableRSSList = true # Serve the RSS feeds at /i/communitynotes/rss and # /i/communitynotes/new/rss. When off, or with guestAuth, they answer # 403 and aren't linked. enableRSSCommunityNotes = true # Show a panel of trending topics with two tabs on the homepage. Trends # are fetched without using a session. enableTrends = false # Label of the first trends tab, which is shown when the homepage loads. trendsTab1Name = "United States" # WOEID (Where On Earth ID) of the place whose trends the first tab # shows. tools/trending-woeids.md lists the ones that return trends; 1 # is worldwide. trendsTab1Woeid = 23424977 # Label of the second trends tab. trendsTab2Name = "Worldwide" # WOEID of the place whose trends the second tab shows, as for # trendsTab1Woeid. trendsTab2Woeid = 1 # Minutes to keep each place's trends before fetching them again. trendsCacheMinutes = 15 # Trends to show per tab, at most. The API returns about 50; a negative # value shows all of them. trendsMaxItems = 15 # Serve /.sessions, a JSON dump of every session's state, pending # requests and rate limits. It identifies the accounts, so don't turn it # on for a public instance. /.health is always served. enableDebug = false # Show a navbar icon linking to the community notes page. It is hidden # with guestAuth regardless. showCommunityNotesNav = true # Show when a tweet was retweeted, linked to the retweet, next to "user # retweeted". showRetweetTime = true # Show "See translation" links, and the translations Twitter provides # for tweets and community notes. enableTranslation = true # Offer Grok translations, made with a cookie session, of tweets and # notes Twitter didn't translate. Needs enableTranslation, cookie # sessions (not guestAuth) and a non-default hmacKey; without them # Nitter logs why and leaves it off. onDemandTranslation = false # Language code onDemandTranslation translates into, such as en, de or # pt-BR. onDemandTranslationLang = "en" # Use guest tokens instead of the account sessions in the sessions file, # which isn't read then. Needs NITTER_GUEST_BEARER_TOKEN. Pages and tabs # guests can't load, such as community notes, are hidden. guestAuth = false # Guest tokens to keep activated at once with guestAuth. Less than 1 # means 1. guestPoolSize = 1 # Address of a nitter-proxy instance, such as localhost:7000, that # forwards Twitter API requests: https://api.x.com/... is requested as # http://localhost:7000/api.x.com/.... Requests to the 1.1 REST API go # directly. http:// is assumed without a scheme. Empty sends everything # directly. apiProxy = "" # Don't generate the x-client-transaction-id header, and authenticate # cookie sessions with the bearer token that doesn't need it. Try this # if cookie sessions fail. disableTid = false # Requests each session may have in flight at once. When every account # session is at the limit, further requests fail until one finishes; # guest requests wait instead. Less than 1 means 2. maxConcurrentReqs = 2 # Attempts at an API request while sessions are rate limited, each with # another session. 1 tries once without retrying; 0 or less fails every # session request as rate limited. maxRetries = 1 # Milliseconds to wait before retrying a rate-limited request. retryDelayMs = 150 # Milliseconds an upstream request may take, from connecting to the end # of the response, before it is abandoned and its connection closed. # Values under 1000 mean 1000. apiTimeoutMs = 15000 [Preferences] # Instance-wide defaults for the preferences on /settings. Visitors' own # settings, kept in cookies, override them. # Theme. The name of a stylesheet in css/themes under staticDir, as the # settings page lists it, such as Nitter, Twitter Dark or Catppuccin # Mocha. theme = "Nitter" # Infinite scrolling (experimental, requires JavaScript). infiniteScroll = false # Make profile sidebar stick to top. stickyProfile = true # Keep navbar fixed to top. stickyNav = true # Support bidirectional text (makes clicking on tweets harder). bidiSupport = false # Hide tweet stats (replies, retweets, likes). hideTweetStats = false # Hide tweet source (iPhone, Android, etc.). hideTweetSource = false # Abbreviate tweet stats (1.2M instead of 1,200,000). abbreviateStats = false # Hide profile banner. hideBanner = false # Hide pinned tweets. hidePins = false # Hide tweet replies. hideReplies = false # Hide related tweets under replies. hideRelated = true # Hide community notes. hideCommunityNotes = false # Auto translate tweets if available. Shows translations without # clicking "See translation". Not offered with guestAuth. autoTranslate = false # Square profile pictures. squareAvatars = false # Use search for timelines as guest (turn off for shadowbanned # accounts). Only applies with guestAuth: profile tweets come from a # search for the user's tweets instead of their timeline. guestSearchFallback = true # Enable mp4 video playback (only for gifs). mp4Playback = true # Enable HLS video streaming (requires JavaScript). hlsPlayback = false # Proxy video streaming through the server (might be slow). When off, # browsers load videos from Twitter's servers directly. proxyVideos = true # Mute videos by default. muteVideos = false # Autoplay gifs. autoplayGifs = true # Compact media gallery (no profile info or text). compactGallery = false # Gallery column size. One of Small, Medium, Large. gallerySize = "Medium" # Default media view. One of Timeline, Grid, Gallery. mediaView = "Timeline" # Twitter -> Nitter. Host name that links to twitter.com, x.com and t.co # in tweets are rewritten to, such as nitter.net. Empty leaves them as # they are. replaceTwitter = "" # YouTube -> Piped/Invidious. Host name of a Piped or Invidious instance # that YouTube links are rewritten to. Empty leaves them as they are. replaceYouTube = "" # Reddit -> Teddit/Libreddit. Host name of a Teddit or Libreddit # instance that Reddit links are rewritten to. Empty leaves them as they # are. replaceReddit = ""