身内用Calckey鯖を無料で立てる

サーバを1㍉も知らない素人が手探りでCalckey鯖を立てた記録。
Gandiで購入したドメインを、メインとメールはCORESERVER、サブドメインはOCI無料枠のCalckeyに割り当てる。Cloudflareは不使用。

CalckeyはMisskey v12の派生で、違いは色々あるが個人的にはキャラ画像等の差替が大きい。

calckey – Codeberg.org ※現在はFirefishの旧リポジトリになっている

ドメイン取得

  • Gandiでドメインを購入
    • 今回選んだドメインのWhoisプライバシーが不完全でレジストリに問い合わせた。マイナードメインの罠

サーバ作成

DNS設定

  1. GandiでDNSレコードを編集
    • メインドメインとメールサーバをCORESERVERに編集
      • @ 10800 IN A (CORESERVERのIP)
      • @ 10800 IN MX 10 (サーバ名).coreserver.jp.
      • @ 10800 IN TXT "v=spf1 ip4:(CORESERVERのIP) ~all"
        • IPとサーバ名はログインサイト設定で確認
        • MXレコードは2個あるので1個削除
    • Calckeyで使うサブドメインのAレコードを追加
      • calc 10800 IN A (OCIのパブリックIP)
    • 後に設定するオブジェクトストレージ用サブドメインを追加
      • files 10800 IN A (OCIのパブリックIP)
  2. DNS浸透を数時間待つ

Calckeyインストール

  1. TerminalでSSH接続
    ssh ubuntu@(OCIのパブリックIP) -i ~/.ssh/(秘密鍵).key
    • ~/.ssh/configに以下を記述すると次回からssh ociで接続可能
      • Host oci
         Hostname (OCIのパブリックIP)
         User ubuntu
         IdentityFile ~/.ssh/(秘密鍵).key
  2. パッケージ更新
    sudo apt update; sudo apt full-upgrade -y; sudo reboot
  3. SSH再接続
  4. Calckeyインストール
    wget https://codeberg.org/calckey/ubuntu-bash-install/raw/branch/main/ubuntu.sh -O ubuntu.sh; sudo bash ubuntu.sh
    • 基本的に全てy、Cloudflareの使用はn
    • iptables(i)を選択
    • 初期値が入っているものはドメイン名以外そのまま
    • example.comを自分のサブドメインに変更
      • 一度違うドメイン名で進めた場合、nginxでエラーになるのでアンインストールする
        sudo apt purge nginx nginx-common nginx-full
    • Misskeyのシェルスクリプトと同様なので以下を参考に
      https://github.com/joinmisskey/bash-install#readme

Calckey管理設定

管理者アカウントを作成し、コントロールパネルで設定

非公開モード

他のサーバと繋がらなくする。

  • 設定 - セキュリティ > インスタンスのセキュリティー > 非公開モード: オン

リモートキャッシュ無効化

サーバのストレージを節約する。

  • 設定 - 全般 > リモートのファイルをキャッシュする: オフ

メール配信

  1. CORESERVERで配信用・個人用にメールアドレスを2つ作成
  2. 設定 > メールサーバー > メール配信機能を有効化する
    • メールアドレス: 配信用アドレス
    • ホスト: (サーバ名).coreserver.jp
    • ポート: 465
    • ユーザー名: 配信用アドレス
    • パスワード: アドレス作成時のパスワード
    • SMTP 接続に暗黙的なSSL/TLSを使用する: オン
  3. 右上ボタンで個人用アドレス宛に配信テスト後、☑で保存

プッシュ通知

  1. キー取得
    1. TerminalでSSH接続
    2. sudo npm install web-push -g
    3. sudo web-push generate-vapid-keys
    4. Public keyとPrivate keyをコピー
  2. 設定 > 全般 > ServiceWorker > ブラウザへのプッシュ通知を有効にする: オン
  3. Public keyとPrivate keyを貼付

botプロテクション

  1. hCaptchaにアクセスしてサインアップ
  2. 出版社向けのhCaptchaを私のウェブサイトまたはアプリに追加しますを選択、アカウント作成
  3. 表示されたサイトキーとシークレットキーをコピー
  4. 設定 - セキュリティ > botプロテクション > hCaptchaを選択
  5. サイトキーとシークレットキーを貼付

オブジェクトストレージ

  • 引き続き以下を参考に設定
    Oracle Cloud Infrastructure Always Freeを使ってタダでMisskeyインスタンスを立てよう | aqz/tamaina
    • OCIメニュー項目名 旧ユーザー設定→現自分のプロファイル
    • 証明書取得時のエラー対策
      1. TerminalでSSH接続
      2. ポート80使用中のnginxを一時停止する
        sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill
      3. sudo certbot certonly -t -n --agree-tos --standalone -d files.(ドメイン名);
      4. nginxを再起動する
        sudo systemctl restart nginx
      5. ※certbotに--nginx追加でもいいらしい

カスタムCSS

Calckeyに全ユーザ用CSSを適用する