この記事ではDevOps・自動化に特化して解説します。AI自動化・DevOps全般は AI自動化ツール完全ガイド2026|ノーコードからコードまで徹底比較 をご覧ください。

Postizとは:27,000スター超のBuffer完全代替OSSとその実力

Postizは「The ultimate social media scheduling tool」を掲げるオープンソースのソーシャルメディア自動投稿プラットフォームだ。GitHubスター数は27,861(2026年4月時点)、フォーク数は4,948を超え、Buffer・Hypefury・Twitter Hunterなどの有料SaaSを自前のサーバーで完全代替できる点が注目されている。

技術スタックはNextJS(フロントエンド)、NestJS(バックエンド)、PostgreSQL(データ)、Redis(キャッシュ)、Temporal(ワークフローエンジン)という構成で、TypeScriptのモノレポ(pnpmワークスペース)として管理されている。ホスト版と自己ホスト版の機能差はなく、AGPL-3.0ライセンスで公開されている。

特徴的なのは認証情報をサーバー側に保存しない設計だ。各ソーシャルプラットフォームの公式OAuthフローを使って直接認証するため、ユーザーIDやパスワードをPostizが管理することはない。セキュリティ要件が厳しいチームでも導入しやすい。

対応19媒体の全リストとAPIサポート状況

PostizはSNS管理ツールの中でも対応媒体数が多い部類に入る。公開時点で以下のプラットフォームに対応している。

カテゴリ 対応プラットフォーム
SNS(一般) Instagram、Facebook、X(Twitter)、Threads、Pinterest
動画 YouTube、TikTok
ビジネス LinkedIn
コミュニティ Reddit、Discord、Slack
分散型SNS Mastodon、Bluesky
開発者向け GitHub(リリースノート投稿)
その他 Dribbble

すべてのプラットフォームで、投稿のスケジュール設定、アナリティクス取得、チームメンバーへのレビュー依頼が共通UIから操作できる。APIキーを.envに設定するだけで有効になるため、使用するプラットフォームだけ設定して運用を始めることが可能だ。

DockerComposeによる本番環境セットアップ

公式リポジトリに含まれるdocker-compose.yamlを使えば、PostgreSQL・Redis・Temporal・Postiz本体を1コマンドで起動できる。

# リポジトリをクローン
git clone https://github.com/gitroomhq/postiz-app.git
cd postiz-app

# 環境変数ファイルを作成
cp .env.example .env

# 本番用スタックを起動(Temporal含む)
docker compose up -d

本番向けdocker-compose.yamlは以下のサービスで構成される。

services:
  postiz:
    image: ghcr.io/gitroomhq/postiz-app:latest
    ports:
      - "4007:4007"
    environment:
      - DATABASE_URL=${DATABASE_URL}
      - REDIS_URL=${REDIS_URL}
      - JWT_SECRET=${JWT_SECRET}
      - FRONTEND_URL=${FRONTEND_URL}
      - NEXT_PUBLIC_BACKEND_URL=${NEXT_PUBLIC_BACKEND_URL}
    depends_on:
      postgres:
        condition: service_healthy
      redis:
        condition: service_healthy
    networks:
      - postiz-network

  postgres:
    image: postgres:17-alpine
    environment:
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: postiz
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - postiz-network

  redis:
    image: redis:7.2-alpine
    volumes:
      - redis_data:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - postiz-network

  temporal:
    image: temporalio/auto-setup:1.28.1
    depends_on:
      - temporal-postgres
      - temporal-elasticsearch
    environment:
      - DB=postgresql
      - DB_PORT=5432
      - POSTGRES_USER=temporal
      - POSTGRES_PWD=temporal
      - POSTGRES_SEEDS=temporal-postgres
      - ENABLE_ES=true
      - ES_SEEDS=temporal-elasticsearch
      - ES_VERSION=v7
    ports:
      - "7233:7233"
    networks:
      - postiz-network
      - temporal-network

volumes:
  postgres_data:
  redis_data:

networks:
  postiz-network:
  temporal-network:

起動後は http://localhost:4007 でフロントエンドにアクセスできる。初回アクセス時にアカウント作成を求められ、そのまま管理者として設定を進めることができる。

.env設定で理解するAI機能と主要設定項目

.env.exampleに記載された設定項目は、Postizの機能範囲を把握する上でわかりやすい指標になる。以下は必須設定と主要オプション設定だ。

# ===== 必須設定 =====
# データベース接続
DATABASE_URL="postgresql://postgres:password@localhost:5432/postiz"

# Redis(キャッシュ・ジョブキュー)
REDIS_URL="redis://localhost:6379"

# JWT認証シークレット(openssl rand -hex 32 で生成)
JWT_SECRET="your-jwt-secret-here"

# アプリURL
FRONTEND_URL="https://your-domain.com"
NEXT_PUBLIC_BACKEND_URL="https://your-domain.com/api"
BACKEND_INTERNAL_URL="http://localhost:3000"

# ===== クラウドストレージ(アバター・メディア保存) =====
# Cloudflare R2(必須)
CLOUDFLARE_ACCOUNT_ID="your-account-id"
CLOUDFLARE_BUCKET_NAME="postiz-media"
CLOUDFLARE_ACCESS_KEY="your-r2-access-key"
CLOUDFLARE_SECRET_ACCESS_KEY="your-r2-secret-key"
CLOUDFLARE_BUCKET_URL="https://your-bucket.r2.cloudflarestorage.com"

# ===== AI機能(任意) =====
# OpenAI(投稿文生成・画像生成)
OPENAI_API_KEY="sk-..."

# ===== メール通知(任意) =====
RESEND_API_KEY="re_..."
EMAIL_FROM_ADDRESS="[email protected]"

# ===== APIレート制限 =====
# デフォルト30リクエスト/時間
API_RATE_LIMIT=30

# ===== ソーシャルプラットフォーム(使用するものだけ設定) =====
X_CLIENT_ID="..."
X_CLIENT_SECRET="..."
LINKEDIN_CLIENT_ID="..."
LINKEDIN_CLIENT_SECRET="..."
REDDIT_CLIENT_ID="..."
REDDIT_CLIENT_SECRET="..."
TIKTOK_CLIENT_ID="..."
TIKTOK_CLIENT_SECRET="..."

OpenAI APIキーを設定すると、投稿文のAI生成・改善提案・画像生成がUIから直接利用できるようになる。設定しない場合は手動入力のみとなるが、スケジューリング・チームコラボ・アナリティクス機能はすべて利用可能だ。

Postizのシステムアーキテクチャ

graph TD A["ユーザー (ブラウザ)"] --> B["Next.js フロントエンド
:4007"] B --> C["NestJS バックエンドAPI
:3000"] C --> D["PostgreSQL
投稿・ユーザー・統合データ"] C --> E["Redis
キャッシュ・ジョブキュー"] C --> F["Temporal
ワークフローエンジン
:7233"] F --> G["投稿スケジューラー
ワーカー"] G --> H["X / Instagram / TikTok
LinkedIn / YouTube
19媒体 API"] C --> I["Cloudflare R2
メディアストレージ"] B --> J["OpenAI API
AI投稿生成"] K["n8n / Make / Zapier"] --> C

Temporalはステートフルなワークフローエンジンで、投稿のスケジュール実行・リトライ・エラーハンドリングを信頼性高く処理する。同様のアーキテクチャはKestraなどのワークフロー基盤でも採用されており、長時間実行タスクの管理に適したパターンだ。

n8n・Make・Zapierとの自動化ワークフロー連携

PostizにはREST APIが用意されており、外部の自動化ツールから投稿を作成・スケジュール管理できる。APIトークンはUIの「Developer Settings」から発行する。

# 投稿をAPIで作成する例(cURL)
curl -X POST "https://your-postiz.com/api/posts" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "本日のAI関連ニュースをお届けします 🤖",
    "integrations": ["instagram_integration_id", "x_integration_id"],
    "scheduledDate": "2026-04-06T08:00:00+09:00",
    "tags": ["AI", "ニュース"]
  }'

# 統合(接続済みアカウント)の一覧取得
curl -X GET "https://your-postiz.com/api/integrations" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

# スケジュール済み投稿の一覧取得
curl -X GET "https://your-postiz.com/api/posts?status=QUEUE" \
  -H "Authorization: Bearer YOUR_API_TOKEN"

n8nとの連携では、RSSフィードや別のAPIからコンテンツを取得してPostiz APIに渡すワークフローが典型的なユースケースになる。OpenOutreachのようなアウトリーチ自動化ツールと組み合わせることで、コンテンツ配信と見込み客獲得を連動させることも可能だ。

投稿ステータスは QUEUE(スケジュール済)、PUBLISHED(公開済)、DRAFT(下書き)、ERROR(エラー)の4種類で管理される。Prismaスキーマで定義されており、直接DBクエリでの状態確認も可能だ。

Buffer・Hypefury・Publertとの機能・価格比較

セルフホスト型ツールと有料SaaSを機能面で比較する。

比較項目 Postiz(自己ホスト) Buffer Hypefury Publer
月額費用 無料(サーバー代のみ) $6〜$120 $19〜$79 $12〜$83
対応媒体数 19+ 8 2〜3(X中心) 15
AI投稿生成 ✅(OpenAI連携) △(一部プランのみ)
セルフホスト ✅(完全対応)
チーム管理 ✅(承認ワークフロー含む) ✅(有料プランのみ)
API・自動化連携 ✅(REST API + n8n/Make/Zapier) ✅(有料のみ)
アナリティクス
Bluesky対応 △(限定的)
Mastodon対応
オープンソース ✅(AGPL-3.0)

Bufferは8媒体・月$6〜という手軽さが強みだが、APIアクセスは有料プランのみ。Hypefuryは主にX(Twitter)に特化しており、Blueskyや分散型SNSへの対応は弱い。PostizはBluesky・Mastodon対応が他ツールより進んでおり、分散型SNSに移行したユーザーを含むコミュニティ運用に向いている。

コスト面では、月$30〜$80程度の有料SaaSを使っているチームであれば、VPS(月$5〜$20)でPostizをセルフホストした方が年間数万円の節約になる計算だ。

AGPLライセンスとセルフホスト運用の注意点

PostizはAGPL-3.0(GNU Affero General Public License)を採用している。AGPL-3.0の主なポイントは以下の通り。

AGPLがGPLと異なる点:

  • ネットワーク経由でサービス提供する場合も、ソースコード公開義務が発生する
  • 自社内でのみ使用する場合(外部にサービス提供しない場合)は公開義務なし
  • Postizを改変してSaaSとして外部提供する場合は、変更後のソースコードを公開する必要がある

社内ツールとして自己ホストして使う分にはAGPLの影響を受けず、無償で自由に利用できる。一方、Postizをベースに機能追加したサービスを外部向けに提供する場合は法務確認が必要だ。

セルフホスト運用での実用的な注意点:

# バックアップの設定例(PostgreSQLダンプ + S3アップロード)
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="postiz_backup_${DATE}.sql"

# PostgreSQLダンプ
docker exec postiz-postgres-1 pg_dump -U postgres postiz > ${BACKUP_FILE}

# Cloudflare R2またはS3にアップロード
aws s3 cp ${BACKUP_FILE} s3://your-backup-bucket/postiz/${BACKUP_FILE} \
  --endpoint-url https://your-account.r2.cloudflarestorage.com

# ローカルの古いバックアップを削除(7日以上)
find . -name "postiz_backup_*.sql" -mtime +7 -delete

echo "バックアップ完了: ${BACKUP_FILE}"

Temporalはワークフローの状態をElasticsearchに保存するため、Elasticsearch用の十分なメモリ(最低2GB推奨)を確保することが重要だ。開発環境ではdocker-compose.dev.yamlを使うことでRedisInsightやpgAdminが付属した開発向けスタックを使える。

アップデートはDockerイメージのタグを更新するだけだが、DBマイグレーション(Prisma)が自動的に実行されるかどうかは起動ログで確認する習慣をつけておくと安心だ。

関連記事: AI自動化ツール完全ガイド2026|ノーコードからコードまで徹底比較

まとめ

Postizは「複数SNSの一括スケジュール管理」という明確な課題に対して、19媒体対応・AI機能・チームコラボ・API連携をオールインワンで提供するOSSだ。月$30〜$80を有料SaaSに支払っているチームにとって、セルフホストへの移行コスト(初期設定1〜2時間)は十分に見合う。

特にBlueskyやMastodonなど分散型SNSへの投稿を含む運用、あるいはn8n等との自動化パイプライン構築を検討している場合は、現時点では有料SaaSより優位な選択肢になる。

参照ソース