Tor 上に Misskey インスタンスを立ててみた
はじめに
Tor でも ActivityPub したいと思ったので、Misskey を Tor 上に立ててみました。現状連合先がいないのでほぼ ActivityPub の意味がないです。
成果物
リンク: http://misskey6c32sh6c4hmq6tzd6k2pafovzfoxd3jpujcfpofymy524o6ad.onion/
レポ: https://github.com/p1atdev/onionskey
流れ
-
.onion
ドメインを取る - Misskey を Clone
- Misskey の設定をする
- Docker の設定をする
- 公開
環境
- Misskey v13.14.2
- Docker 24.0.6
- Tor Browser 13.0.6
- Windows 11
Misskey のバージョンについて
最新版の Misskey に Tor Browser (13.0.6 (Mozilla Firefox 115.5.0esr)) がついていけない [1] ため、少し古いバージョンを使う必要があります。
具体的には v2023.11.0 以前のバージョンにする必要があります。
今回は v13.14.2 を使いました。
いつか Tor Browser が Misskey に追いつけば、最新版を使えるようになると思います。
そんな日を願って――
作業
onion ドメインを取る
取ります。
mkp224o を使います。
どうにかして実行ファイルを落としてきて
mkp224o.exe -d domains -n 5 misskey
のようにすると、domains
ディレクトリに .onion
ドメインのフォルダが作成されます。このあと、このフォルダの中のファイルを使うので、使いたいアドレスが生成されるまでこれを繰り返します。
misskey
のように7文字だと、少し時間がかかります。急いでいる人は他の名前にするといいです。
git clone
タグを指定して clone します。
git clone -b 13.14.2 --depth 1 https://github.com/misskey-dev/misskey
Misskey の設定
通常の Misskey の設定とほぼ同じです。
.config/docker_example.env
をコピーして .config/docker.env
を作成します。
# db settings
POSTGRES_PASSWORD=適当なパスワード
POSTGRES_USER=DBユーザー名
POSTGRES_DB=misskey
.config/docker_example.yml
をコピーして .config/default.yml
を作成します。
# 略
# ┌─────┐
#───┘ URL └─────────────────────────────────────────────────────
# Final accessible URL seen by a user.
url: http://さっき生成した.onionドメイン/
# 略
# ┌──────────────────────────┐
#───┘ PostgreSQL configuration └────────────────────────────────
db:
# 略
# Database name
db: misskey
# Auth
user: DBユーザー名
pass: 適当なパスワード
# 略
# Proxy for HTTP/HTTPS
proxy: http://tor:8118
# 略
proxy
で Tor のプロキシを使うようにしていますがいらないかもです。謎です。
追記: プロキシはSOCKS じゃないと意味がないので HTTP トンネルは設定しなくていいです。この記事では SOCKS の対応はしません。
Tor の設定
tor
ディレクトリをルートに作成して Tor 関連のファイルを置いていきます。
tor/torrc
を作成し
HiddenServiceDir /etc/tor/hidden_service/
HiddenServicePort 80 web:3000
#HTTPTunnelPort 0.0.0.0:8118
とします。
web:3000
(misskey) を自身の 80 ポートに向けています。HTTPTunnelPort
を 0.0.0.0:8118
にすることで、他のコンテナから HTTP トンネルを利用できるようにします。
次に、tor/hidden_service
ディレクトリを作成し、さきほど生成した .onion
ドメインのフォルダの中身をコピーします。
tor/hidden_service/hostname
、tor/hidden_service/hs_ed25519_public_key
、tor/hidden_service/hs_ed25519_secret_key
があることを確認します。
Docker の設定
ルートに Dockerfile.tor
、entrypoint_tor.sh
を作成します。
FROM debian:trixie-slim as tor
# Setting up Tor
RUN apt update
RUN apt install -y tor
COPY entrypoint_tor.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
CMD ["tor"]
#!/bin/sh
chmod 700 /etc/tor/hidden_service
exec "$@"
(この書き方 ChatGPT に教えてもらった)
docker-compose.yml
を編集します。
version: "3"
services:
web:
...(略)
redis:
...(略)
db:
...(略)
# meilisearch: ほかはお好みで
tor:
build:
context: .
dockerfile: Dockerfile.tor
restart: always
networks:
- internal_network
- external_network
volumes:
- ./tor:/etc/tor
ここの volumes
の設定で、torrc
とかドメイン情報もろもろをコンテナに渡しています。
公開
初回の場合は公式の解説の通りにやってください。
それ以降は
docker compose up -d --build
で起動します。(--build
いらんかも)
おわり
完了です。お疲れ様でした。
指定したドメインを Tor Browser で開くと Misskey が見れます。
修正履歴
2023/12/19
HTTP トンネルについての記述を修正
-
実際、このバージョンのTor Browser では https://misskey.io/ は正常に使うことができず、「読み込みに失敗しました」と言われる。 ↩︎
Discussion