BOOTH通販を始めてみたのですがあまりメールを見ないため、LINE通知が来るようにしてみました。
前提としてBOOTHからのメールはGmailで受信する必要があります。
仕組みとしては新規注文メールが受信されたらGmail側で自動でboothラベルを付け、Google Apps Scriptにて一定時間ごとに監視し、boothラベルの中に未読のメールがあればLINE通知を送信してメールを既読にします。
のくの備忘録サイトです。
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を使うことにしたので別記事にしました。
自動フェイルオーバーやバックアップ周りをやってくれるOperatorです。PgBouncerを使えばPgpoolを入れなくてもプーリングが可能です。
使用しようとしていたCrunchyPGOのPostgreSQLのイメージの権利周りがちょっと問題ありそうなのでfork版のPercona Oparator for PostgreSQLを使用します。
完成しました!!
こちらはちょっと複雑な感じですが、あとでシンプルな構成なk8s+misskey鯖の立て方を別記事で載せるかも?
MisskeyはMisskey本体(web)+PostgreSQL(データーベース)+Redisで動いているのでデーターベースやRedisを冗長化しつつ構成してみます。
前回はpodの作成テストを行いました。
ブロックストレージを使用した分散ストレージを作成したいのでrook/cephを導入します。
RBDプロビジョナーが自動で良い感じに冗長化しつつストレージを管理してくれます(ふわふわ)
Ubuntu22.04LTS + Kubernetes1.28.3
人も登録できるMisskeyサーバーを立てたいな~という気持ちが湧いてきたのでとりあえずKubernetes(k8s)を仮想環境で試そう!というコーナーです。
構想としては
あたりを色々試したいです。
PostgreSQLのチューニングなどは本番環境を動かしてから弄ると思うので、とりあえずk8sの構成のyamlファイルを書いたりなどざっくりと勉強したいです。
メギド所持率チェッカー〆所持チェッカーをreactで書き直してリニューアルしました。
などを追加しました。
reactもTypescriptも初めて触ってかなりレンダリングに無駄があると思うのでちょっとずつ改修していきたいです。
今年はメギド6周年/72ヶ月祝いなので楽しみです🎉
そろそろ触ってみようかな…(消極的)〆所持チェッカーをreactで書き直したいな…と計画中
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
を入れないとホットリロードができないらしいので記述。
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/内のファイルにはアクセス出来なくなります。