• 6 min read
#GoToSocial
#ActivityPub
#OCI
#Astro
#Terraform
OCI Always Free と GoToSocial で作る、ランニングコスト0円の ActivityPub サーバー構築記
Oracle Cloud の永久無料枠(ARM Ampere A1)に軽量 ActivityPub 実装の GoToSocial をデプロイし、Astro ポートフォリオと連携するまでのアーキテクチャ解説。
なぜセルフホスト SNS なのか?
日々の短い技術メモやガジェットの写真、ふとした思考の断片を中央集権型プラットフォームだけに依存せず、自分のドメイン(takah.ro)の資産として蓄積したい——そんな思いから、分散型 SNS プロトコル ActivityPub に対応したおひとりさまサーバー(fed.takah.ro)を構築しました。
技術選定:GoToSocial × OCI Always Free
Mastodon や Misskey と比較して、Go 言語で書かれた GoToSocial は圧倒的に省リソースです。
- アイドル時メモリ使用量: 約 60MB〜90MB
- データベース: SQLite(単一ノード構成ならメンテナンスフリーで高速)
- リバースプロキシ: Caddy 2(Let’s Encrypt による自動 SSL 更新)
services:
gotosocial:
image: superseriousbusiness/gotosocial:latest
container_name: gotosocial
restart: unless-stopped
environment:
GTS_HOST: fed.takah.ro
GTS_ACCOUNT_DOMAIN: takah.ro
GTS_DB_TYPE: sqlite
GTS_DB_ADDRESS: /gotosocial/storage/sqlite.db
volumes:
- ./data:/gotosocial/storage
Astro ポートフォリオとの連携
GoToSocial は Mastodon 互換のクライアント API を備えているため、認証なしで公開ステータス一覧エンドポイント(GET /api/v1/accounts/:id/statuses)から JSON を取得できます。
本サイトでは ビルド時 SSG 取得 と クライアントサイド非同期フェッチ のハイブリッド構成を採用し、Lighthouse パフォーマンススコア 100 とリアルタイム性を両立しています。