概要
2023年、Twitterはイーロンの炎に包まれた!
TwitterAPIは枯れ、TweetDeckが裂け、全てのツイッタラーが消滅したように見えた。
だが、ツイ廃は死滅していなかった!
下準備
Misskeyを使うサーバを用意する
- Indigoがオススメ
- メモリ2GBプランなら月額814円で利用可能
独自ドメインを取得する
- 自分の場合ムームードメインで取得
サーバ下準備
サーバを建てる
- Indigoの場合、インスタンス名は建てる時しか決めれないので注意
- 出来たらIPアドレスをコピーする
DNS設定
- 取得したドメインに、今回立てたインスタンスのIPを割り当てる
Linuxの基礎設定(Indigoを前提に説明)
- 秘密鍵を指定し、IPアドレスで直接ログイン
$ ssh ubuntu@000.000.000.000 -i ~/.ssh/key/key
Userを作る
- Ubuntuアカウントだと攻撃の可能性があがるため
sudo useradd hirarira
sudo passwd hirarira
usermod -aG hirarira admin
ssh設定
-
hirarira
アカウントしかSSHで入れないようにする -
$ vim /etc/ssh/sshd_config
AllowUsers hirarira PermitRootLogin no port 2222
-
必ず今繋いでるターミナルからはログアウトせず、別のターミナルからSSH出来ることを確認
- ダメな時締め出されちゃうので
GitHub設定
-
ssh-keygen
でKeyを作る - GitHubのconfigのSSH and GPG Keysに公開鍵を登録しとく
-
~/.ssh/config
に以下を記述
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/fafnir_github
-
$ ssh -T git@github.com
でログインを確認
コンピュータ名を変更
sudo vim /etc/hostname
sudo hostnamectl set-hostname fafnir
sudo reboot
Dockerのインストール
$ apt-get install docker
Docker-compose のインストール
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
docker compose version
- 参考
Apacheの停止
- IndigoはデフォルトでApacheが入っているので消す
$ sudo apt-get remove apache2
SSL証明書を用意する
- みんな大好きLet's Encryptを利用
- CertBotを入れる
- CertBot入れる過程で普通のNginxも入るのでこっちは止めておく
- コンテナ化しなくても普通のNginxに以下の設定入れるでも良し
Nginxコンテナを立てる
- NginxコンテナでSSL証明書を配置して、433ポートから3000ポートに転送させる
-
/etc/nginx/keys/
に発行した証明書を配置 - Nginxの
default.conf
はこんな感じで
server {
listen 80;
server_name (SERVER HOST);
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name (SERVER HOST);
ssl_certificate /etc/nginx/keys/fullchain.pem;
ssl_certificate_key /etc/nginx/keys/privkey.pem;
location /status {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location / {
proxy_pass http://127.0.0.1:3000/;
}
}
server {
listen 80 default_server;
listen 443;
server_name (Server IP Address);
return 444;
}
スワップ領域の解放
- やらないとdocker compose buildの段階でフリーズする(メモリ2GBだと)
- 手順はリンク先を参照
Misskeyコンテナを立てる
- 公式がリファレンスを用意してくれてるので従う
-
.config/default.yml
を編集
# Final accessible URL seen by a user.
url: https://example.tld/ # 運用するページのURLを設定
- Build
sudo docker compose build
sudo docker compose run --rm web pnpm run init
- 起動
sudo docker compose up -d
- アクセスできることを確認する
詰まった点
- 画像がアップロード出来ない
- コンテナにrootでログインして共有フォルダのオーナーを
misskey
に変更 - これで正しいやり方化は不明
- コンテナにrootでログインして共有フォルダのオーナーを
まとめ
- TweetDeckが復活したので急いでMisskey鯖立てなくても良かったかもしれん