HN 日本語サマリー

← 一覧へ戻る
Web開発

Shitter – Nitter のフォーク

Shitter – A Nitter Fork (codeberg.org)

130 pointsby eustoria91 コメント

要約

Shitter は、プライバシーとパフォーマンスに焦点を当てた、無料でオープンソースの代替 Twitter フロントエンドです。JavaScript や広告がなく、すべてのリクエストはバックエンドを経由するため、Twitter による追跡を防ぎます。軽量で、RSS フィード、テーマ、モバイルサポートを備えています。Nitter プロジェクトにインスパイアされており、自己ホスティングやブラウザ拡張機能などのリソースも提供しています。

全文翻訳

[画像: shitter logo]

Shitter - Nitter のフォーク

プライバシーとパフォーマンスに焦点を当てた、無料でオープンソースの代替 Twitter フロントエンド。
Invidious プロジェクトにインスパイアされています。

  • JavaScript や広告なし
  • すべてのリクエストはバックエンドを経由し、クライアントは Twitter と直接通信しません
  • Twitter による IP アドレスや JavaScript フィンガープリントでの追跡を防ぎます
  • Twitter の非公式 API を使用 (開発者アカウント不要)
  • 軽量 ( @nim_lang のおかげで、twitter.com の 784KB に対して 60KB)
  • RSS フィード
  • テーマ
  • モバイルサポート (レスポンシブデザイン)

リソース

ウィキには以下が含まれます。

貢献

このリポジトリではプルリクエストは受け付けていませんが、パッチファイルの形式での貢献は歓迎します。これはイシューに提出でき、マージや作業がより便利です。

なぜ?

JavaScript を有効にしないと Twitter を使用することは不可能であり、2024 年現在ではサインアップが必要です。プライバシーを重視する人々にとって、JavaScript アナリティクスや IP ベースの追跡を防ぐことは重要ですが、VPN や uBlock/uMatrix を使用する以外では不可能です。VPN の背後にいて、強力な広告ブロッカーを使用していても、ブラウザのフィンガープリントで正確に追跡される可能性があり、JavaScript は不要です。これらすべてが、Twitter がユーザーのデータを広告主に送信するかどうかを制御する機能を削除した後、特に重要になりました。

Nitter のインスタンス (例えば VPS 上にホストされているもの) を使用すると、プライバシーを維持しながら JavaScript なしで Twitter を閲覧できます。プライバシーを尊重するだけでなく、Nitter は平均して Twitter の約 15 倍軽量であり、ほとんどの場合、ページをより速く提供します (例: タイムラインの読み込みが 2〜4 倍速くなります)。

スクリーンショット

[画像: nitter screenshot - Framasoft]

インストール

Docker

Docker イメージのページ: https://hub.docker.com/r/mv12star/shitter

注意: 公開されているイメージはマルチアーキテクチャです — mv12star/shitter:latest は amd64/armv7/arm64 でネイティブに実行されます。

Nitter を Docker で実行するには、コンテナを実行する前に Redis を別途インストールして実行する必要があります。Redis も Docker を使用して実行する方法については以下を参照してください。

まず、設定ファイルを作成します。Docker コマンドはこのファイルをコンテナ内にマウントするため、ホスト上に事前に存在する必要があります。リポジトリをクローンした場合:

cp nitter.example.conf nitter.conf

ローカルクローンなしでプリビルドイメージを使用している場合は、代わりに nitter.example.conf をダウンロードして nitter.conf として保存してください。

Nitter を Docker でビルドして実行するには:

docker build -t nitter:latest .
docker run -v $(pwd)/nitter.conf:/src/nitter.conf -d --network host nitter:latest

プリビルド Docker イメージも提供されています:

docker run -v $(pwd)/nitter.conf:/src/nitter.conf -d --network host mv12star/shitter:latest

Nitter と Redis を別々のコンテナとして実行するために docker-compose を使用する場合: nitter.conf で redisHost を localhost から nitter-redis に変更し、以下を実行します:

docker-compose up -d

Docker コマンドは、実行するディレクトリから nitter.conf (および docker-compose の場合は sessions.jsonl) をマウントすることに注意してください。マウントされたファイルが存在しない場合、Docker はサイレントにその場所にディレクトリを作成し、コンテナは not a directory: Are you trying to mount a directory onto a file というエラーで失敗します。そのディレクトリを削除し、上記のようにファイルを作成してください。

systemd

systemd 経由で Nitter を実行するには、このサービスファイルを使用できます。

[Unit]
Description=Nitter (An alternative Twitter front-end)
After=syslog.target
After=network.target

[Service]
Type=simple

# ユーザーとグループを設定
User=nitter
Group=nitter

# 場所を設定
WorkingDirectory=/home/nitter/nitter
ExecStart=/home/nitter/nitter/nitter

Restart=always
RestartSec=15

[Install]
WantedBy=multi-user.target

その後、サービスを有効化して実行します: systemctl enable --now nitter.service

ログ

Nitter は現在 stdout にいくつかのエラーを出力しており、実際のロギングは実装されていません。systemd で Nitter を実行している場合、stdout は次のように確認できます: journalctl -u nitter.service (--follow を追加すると最後の 15 行のみが表示されます)。Docker イメージを実行している場合は、次のように実行できます: docker logs --follow *nitter container id*

ソースからビルド

依存関係
  • libpcre
  • libsass
  • redis/valkey

Nitter をコンパイルするには Nim のインストールが必要です。詳細は nim-lang.org を参照してください。システム全体または作成するユーザーディレクトリにインストールすることが可能です。

SCSS ファイルをコンパイルするには、libsass をインストールする必要があります。Ubuntu および Debian では、libsass-dev を使用できます。

Redis はキャッシュ用、将来的にはアカウント情報用として必要です。2024 年現在、Redis はオープンソースではなくなったため、フォークである Valkey の使用が推奨されます。ほとんどのディストリビューションでは redis または redis-server (Ubuntu/Debian)、あるいは valkey/valkey-server として利用可能です。デフォルト設定で実行すれば問題ありません。Nitter のデフォルト設定は、デフォルトポートと localhost を使用するように設定されています。

以下は nitter ユーザーを作成し、リポジトリをクローンして、SCSS および MD ファイルとともにプロジェクトをビルドする方法です。

# useradd -m nitter
# su nitter
$ git clone https://codeberg.org/shitter/shitter
$ cd nitter
$ nimble -l build -d:danger --mm:refc
$ nimble -l scss
$ nimble -l md
$ cp nitter.example.conf nitter.conf

nitter.conf でホスト名、ポート、HMAC キー、HTTPS (Cookie に正しく設定する必要がある)、および Redis 情報を設定します。Redis を実行するには、redis-server --daemonize yes を実行するか、systemctl enable --now redis (またはディストリビューションによっては redis-server) を実行します。Nitter は ./nitter を実行するか、以下の systemd サービスを使用して実行します。セキュリティとパフォーマンスの理由から、Nginx や Apache のようなリバースプロキシの背後で Nitter を実行する必要があります。

Matrix チャンネル

お気軽に Matrix チャンネル にご参加ください。