takah.ro
← cd ../blog
• 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 とリアルタイム性を両立しています。