BOOTH通販を始めてみたのですがあまりメールを見ないため、LINE通知が来るようにしてみました。

前提としてBOOTHからのメールはGmailで受信する必要があります。

仕組みとしては新規注文メールが受信されたらGmail側で自動でboothラベルを付け、Google Apps Scriptにて一定時間ごとに監視し、boothラベルの中に未読のメールがあればLINE通知を送信してメールを既読にします。

続きを読む

Blueskyも登録してみました。

フィードが便利なのですが、フィードの作れるskyfeedは7日保存だったりたまに重くなるので自鯖に立ててみました。Bluesky公式のfeed-generatorとDockerを使用します。

参考サイト:

Github – ATProto Feed Generator

feed-generatorを使ってBlueskyのCustomFeedを作る

カスタムフィードを作ってみる?

feed-generatorはリアルタイムで全ての投稿が流れてくる中から自鯖のDBにデータを選んで保存し、そのDBからフィードを作成してフィードのjsonを返します。

AT protocolの思想にcraving indexerがBluesky鯖の外部に作成されて分散型でも鯖を跨いでデータを収集し検索や統計に使用されるという要素が有り、フィード作成はその思想の一端を担っている印象です。(現時点まだ鯖間の連合はできないですが…)

続きを読む

Perconaのoperatorではイメージにpgroongaがインストール出来ずZalando Postgres Operatorを使うことにしたので別記事にしました。

Percona Operatorのインストール

自動フェイルオーバーやバックアップ周りをやってくれるOperatorです。PgBouncerを使えばPgpoolを入れなくてもプーリングが可能です。

使用しようとしていたCrunchyPGOのPostgreSQLのイメージの権利周りがちょっと問題ありそうなのでfork版のPercona Oparator for PostgreSQLを使用します。

続きを読む

完成しました!!

こちらはちょっと複雑な感じですが、あとでシンプルな構成なk8s+misskey鯖の立て方を別記事で載せるかも?

MisskeyはMisskey本体(web)+PostgreSQL(データーベース)+Redisで動いているのでデーターベースやRedisを冗長化しつつ構成してみます。

続きを読む

前回はpodの作成テストを行いました。

rook/ceph

ブロックストレージを使用した分散ストレージを作成したいのでrook/cephを導入します。

公式サイト rook

RBDプロビジョナーが自動で良い感じに冗長化しつつストレージを管理してくれます(ふわふわ)

続きを読む

前回はk8sのノード作成まで行ったので、とりあえずDeploymentを使用してpodを作成して動かしてみます。

続きを読む

Ubuntu22.04LTS + Kubernetes1.28.3

人も登録できるMisskeyサーバーを立てたいな~という気持ちが湧いてきたのでとりあえずKubernetes(k8s)を仮想環境で試そう!というコーナーです。

構想としては

  • マスター1台、ワーカー3台
  • rook/cephで分散ストレージクラスを作る
  • PosgreSQLはCrunchy PGOでバックアップ周りや自動フェイルオーバーを、pgpool-IIで負荷分散を行う
  • pgroonga拡張の導入
  • Ingressで証明書周りの設定

あたりを色々試したいです。

PostgreSQLのチューニングなどは本番環境を動かしてから弄ると思うので、とりあえずk8sの構成のyamlファイルを書いたりなどざっくりと勉強したいです。

続きを読む

メギド所持率チェッカー〆所持チェッカーをreactで書き直してリニューアルしました。

  • クラスやスタイルでの絞り込み機能の実装
  • 入手方法、実装日表示
  • 実装日順ソート

などを追加しました。

reactもTypescriptも初めて触ってかなりレンダリングに無駄があると思うのでちょっとずつ改修していきたいです。

今年はメギド6周年/72ヶ月祝いなので楽しみです🎉

そろそろ触ってみようかな…(消極的)〆所持チェッカーをreactで書き直したいな…と計画中

DockerでNode.jsインストール

docker-compose.yaml

version: '3'
services:
  app:
    image: node:20-bookworm-slim
    working_dir: /app
    container_name: nodejs
    ports:
      - "3000:3000"
    tty: true
    environment:
      - WATCHPACK_POLLING=true
    volumes:
      - ./app:/app
      - node_modules:/app/node_modules
    restart: always
    networks:
      - mynetwork
        
volumes:
  node_modules:

networks:
  mynetwork:
    external: true

WATCHPACK_POLLING=trueを入れないとホットリロードができないらしいので記述。

新規Next.jsアプリ作成

sudo docker compose up -dで起動。sudo docker exec -it nextjs /bin/bashでコンテナ内に入ってnpx create-next-app@latestで新規Next.jsアプリを作成

What is your project named? app
Would you like to use TypeScript? No / Yes
Would you like to use ESLint? No / Yes
Would you like to use Tailwind CSS? No / Yes
Would you like to use src/ directory? No / Yes
Would you like to use App Router? (recommended) No / Yes
Would you like to customize the default import alias? No / Yes

こちらを参考にEslintとPrettierの設定をしました。

sudo docker exec -it nodejs npm run devで開発環境が起動できます。

./app/src/app/page.tsxを変更&保存してみてホットリロードが効いていればとりあえず成功です。中身はまた今度…

やってみたかったので

オブジェクトストレージ

Misskeyのドライブにアップロードした画像などのデータは./files/フォルダの中でこんな感じになっています

なんとなくthumbnailはわかりますけどよくわかんないですね…。

オブジェクトストレージといって、ファイルを階層化させず、オブジェクト単位で保存し扱いやすくさせる形式で保存されています。

オブジェクトストレージはサービスによっては保存したファイルの冗長性を高めたり、負荷を分散させたりできます。Amazonのs3だったり、Google Cloud Storageだったり、CDNサービスのCloudflareも最近サービスを始めました。保存の料金だったりデータの転送などに料金がかかったりします(内容によって無料も有り)。料金の見直しなどで別なオブジェクトストレージサーバーに移ることもあるため、現在大抵のオブジェクトストレージはAmazon s3と互換性のある形式で作成されています。

Misskeyでは外部のオブジェクトストレージが使えるので、フリーのs3互換オブジェクトストレージMiniOをインストールして使ってみました。

注意:後からオブジェクトストレージを設定すると今までMisskeyサーバー上に上げていた./files/内のファイルにはアクセス出来なくなります。

続きを読む