Nitterは、Twitterの公式APIをバックエンドとして使いながら、追跡・広告・アルゴリズム推薦を一切排除した軽量オープンソースフロントエンドです。本ガイドでは、Ubuntu環境を前提に、Nim言語によるビルドからsystemdサービス化までの一貫した私有デプロイ手順を解説します。
前提条件と依存パッケージのインストール
以下のコマンドで必要なツールとライブラリをまとめて導入できます:
sudo apt update
sudo apt install -y \
nim \
libpcre3-dev \
libsass-dev \
redis-server \
git \
curl
専用ユーザーとプロジェクトの準備
セキュリティ上の観点から、Nitter専用の非特権ユーザーを作成します:
sudo useradd -r -m -s /bin/bash nitter
sudo -u nitter git clone https://gitcode.com/gh_mirrors/ni/nitter /home/nitter/nitter-app
sudo -u nitter chmod 755 /home/nitter/nitter-app
ビルドと静的アセット生成
プロジェクトディレクトリ内で、以下のステップで実行可能バイナリとCSSを生成します:
cd /home/nitter/nitter-app
sudo -u nitter nimble build -d:release --mm:orc
sudo -u nitter nimble scss
sudo -u nitter nimble md
※ --mm:orc はNim 2.0以降推奨のガベージコレクタオプションであり、-d:danger の代わりに安定性を優先します。
設定ファイルのカスタマイズ
サンプル設定をコピーし、編集します:
sudo -u nitter cp nitter.example.conf nitter.conf
主な編集項目例(nitter.conf):
hostname = "nitter.example.net"
port = 8080
https = false
redisHost = "127.0.0.1"
redisPort = 6379
hmacKey = "a4b8e2f9c7d10a65..." # openssl rand -hex 32 で生成推奨
cacheTTL = 300 # 秒単位のデフォルトキャッシュ有効期限
セッション管理のセットアップ
Twitter API v2の制限により、認証済みセッションが必要です。toolsディレクトリ内のPythonスクリプトを用いて、sessions.jsonl を生成します:
cd tools
pip3 install requests
python3 generate_session.py --output ../sessions.jsonl
生成されたファイルはプロジェクトルートに配置し、所有者をnitterに変更します。
Dockerを利用しない場合のサービス登録
/etc/systemd/system/nitter.service に以下を記述:
[Unit]
Description=Nitter Web Service
After=redis-server.service
[Service]
Type=simple
User=nitter
Group=nitter
WorkingDirectory=/home/nitter/nitter-app
ExecStart=/home/nitter/nitter-app/nitter
Restart=on-failure
RestartSec=10
Environment="PATH=/usr/bin:/bin"
[Install]
WantedBy=multi-user.target
サービスを有効化・起動:
sudo systemctl daemon-reload
sudo systemctl enable nitter
sudo systemctl start nitter
Nginxによるリバースプロキシ設定(HTTPS対応)
/etc/nginx/sites-available/nitter.conf:
server {
listen 443 ssl http2;
server_name nitter.example.net;
ssl_certificate /etc/letsencrypt/live/nitter.example.net/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nitter.example.net/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name nitter.example.net;
return 301 https://$server_name$request_uri;
}
有効化後、sudo nginx -t && sudo systemctl reload nginx を実行。
パフォーマンス最適化のためのRedis調整
/etc/redis/redis.conf で以下の値を推奨設定:
maxmemory 256mb
maxmemory-policy allkeys-lru
timeout 300
その後、sudo systemctl restart redis-server で再起動。
テーマと表示制御
Nitterは?theme=draculaや?nojs=1などのクエリパラメータで即時切り替えが可能です。また、defaultTheme設定で初期テーマを指定できます。カスタムCSSはpublic/css/themes/下に追加可能です。
キャッシュ戦略の微調整
nitter.conf内の時間関連パラメータ:
listMinutes = 5— タイムライン表示のキャッシュ保持時間(分)profileMinutes = 15— プロフィールページのキャッシュ期間rssMinutes = 10— RSSフィード生成間隔httpTimeout = 15— 外部APIへのリクエストタイムアウト(秒)
運用監視の基本設定
ログ出力は標準出力をsystemd journalに流すため、以下でリアルタイム確認可能です:
sudo journalctl -u nitter -f
必要に応じて、/var/log/nitter/配下にファイル出力するようExecStartを修正することもできます。