AI

OSSのヘルプデスク比較:Zammad vs osTicket vs FreeScout でZendesk代替をセルフホストする

オープンソースラボ編集部2026年6月13日

OSSのヘルプデスク比較:Zammad vs osTicket vs FreeScout でZendesk代替をセルフホストする

Zendesk(月$49/エージェント〜)・Freshdesk(月$15/エージェント〜)に対して、Zammad(最もモダンなUIのOSSカスタマーサポートプラットフォーム)・FreeScout(Laravel製・軽量・HelpScout互換)・osTicket(最も古くから使われるOSSチケットシステム)はOSSのヘルプデスク・カスタマーサポートツールです。

OSSヘルプデスクを選ぶ理由

  • コスト: Zendesk 10エージェントで月$490。Zammadセルフホストなら$0(サーバー代のみ)
  • データ主権: 顧客の問い合わせ情報・メール・添付ファイルを自社サーバーで管理
  • カスタマイズ: ワークフロー・トリガー・マクロ・カスタムフィールドを自由に設定
  • 統合: 社内のSlack・LDAP・CRMとのシームレスな連携

主要ツールの概要

Zammad

2016年に公開されたRuby on Rails/Vue.js製のOSSカスタマーサポートプラットフォームです。GitHubスター4.4k+。メール・チャット・電話・WhatsApp・Twitter/X・Facebookを1画面で統合管理できるオムニチャネル対応が特徴。Slackに似たリアルタイムUI・全文検索・SLA管理・ナレッジベース・レポートを備え、Zendesk代替として中規模組織に最も向いています。

# Zammad を Docker Compose でセルフホスト
git clone https://github.com/zammad/zammad-docker-compose
cd zammad-docker-compose

# .env ファイルを作成
cat > .env << 'EOF'
ZAMMAD_FQDN=support.yourcompany.com
POSTGRES_PASS=your-secure-postgres-password
ELASTICSEARCH_ENABLED=true
EOF

# 起動
docker compose up -d

# WebUI: https://support.yourcompany.com
# 初回アクセスでセットアップウィザードが表示される
# Zammad APIでチケットを操作(GitHub Actions / CI通知との統合)
# チケット一覧を取得
curl -H "Authorization: Token token=your-api-token"   "https://support.yourcompany.com/api/v1/tickets?state=open&per_page=25"

# 新規チケットを作成(監視アラートから自動起票)
curl -X POST   -H "Authorization: Token token=your-api-token"   -H "Content-Type: application/json"   "https://support.yourcompany.com/api/v1/tickets"   -d '{
    "title": "本番サーバーのCPU使用率が90%を超えました",
    "group": "IT運用",
    "customer_id": "monitoring@yourcompany.com",
    "article": {
      "subject": "アラート: CPU使用率 91%",
      "body": "サーバー prod-web-01 のCPU使用率が91%に達しました。確認してください。",
      "type": "note",
      "internal": true
    },
    "priority": "3 high",
    "state": "new"
  }'
# Zammad Python APIクライアントでチケット管理を自動化
# pip install zammad_py
from zammad_py import ZammadAPI

client = ZammadAPI(
    url="https://support.yourcompany.com",
    username="admin@yourcompany.com",
    password="admin-password",
)

# オープンチケット一覧を取得
tickets = client.ticket.all()
for ticket in tickets:
    print(f"#{ticket['id']}: {ticket['title']} [{ticket['state']}]")

# チケットにコメントを追加
def add_comment(ticket_id: int, message: str, internal: bool = False):
    client.ticket_article.create(
        params={
            "ticket_id": ticket_id,
            "body": message,
            "type": "note",
            "internal": internal,
            "sender": "Agent",
        }
    )

# SLAを超過しているチケットをSlackに通知
import httpx
from datetime import datetime, timezone

def notify_overdue_tickets(slack_webhook: str):
    overdue = []
    for ticket in client.ticket.search("state:open"):
        created = datetime.fromisoformat(ticket["created_at"].replace("Z", "+00:00"))
        age_hours = (datetime.now(timezone.utc) - created).total_seconds() / 3600
        if age_hours > 24:  # 24時間以上未対応
            overdue.append({
                "id": ticket["id"],
                "title": ticket["title"],
                "age_h": round(age_hours),
            })
    if overdue:
        text = f":warning: SLA超過チケット {len(overdue)}件:
"
        for t in overdue:
            text += f"  • #{t['id']}: {t['title']} ({t['age_h']}時間経過)
"
        httpx.post(slack_webhook, json={"text": text})

FreeScout

2019年に公開されたPHP/Laravel製のOSSヘルプデスクです。GitHubスター2.8k+。HelpScoutのクローンを目指したシンプルなメールサポートツールで、メール受信・返信・割り当て・タグ・メモ・検索の基本機能に絞っています。ZammadやZendeskのような複雑な設定なしに5分でセットアップできます。

# FreeScout をDockerで起動(最軽量構成)
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
  freescout-app:
    image: tiredofit/freescout:latest
    restart: unless-stopped
    ports:
      - "80:80"
    environment:
      VIRTUAL_HOST: support.yourcompany.com
      DB_HOST: freescout-db
      DB_PORT: 3306
      DB_NAME: freescout
      DB_USER: freescout
      DB_PASS: freescout_password
      APP_NAME: "YourCompany Support"
      APP_URL: https://support.yourcompany.com
      MAIL_DRIVER: smtp
      SMTP_HOST: smtp.yourcompany.com
      SMTP_PORT: 587
      MAIL_FROM: support@yourcompany.com
    volumes:
      - freescout_data:/data

  freescout-db:
    image: mariadb:10.11
    environment:
      MYSQL_ROOT_PASSWORD: root-password
      MYSQL_DATABASE: freescout
      MYSQL_USER: freescout
      MYSQL_PASSWORD: freescout_password
    volumes:
      - db_data:/var/lib/mysql

volumes:
  freescout_data:
  db_data:
EOF

docker compose up -d

機能比較表

比較項目ZammadFreeScoutosTicket
UI/UXZendesk風・モダンHelpScout風・シンプル旧来のPHPアプリ
オムニチャネル✅(メール・チャット・SNS)メールのみメール・Web
ナレッジベース✅(拡張)
Slack通知✅(拡張)
SLA管理✅(基本)
APIアクセス✅(RESTful)
GitHub Stars4.4k+2.8k+3k+

Zammadのアラート自動起票はDevOpsカテゴリ/categories/devopsのGrafana/Prometheusのアラートルールと連携して監視系イベントを自動チケット化できます。FreeScoutのメール統合はCommunicationカテゴリ/categories/communicationのPostfix・Mattermost通知と組み合わせて使えます。

FAQ

Q. ZendeskからZammadへの移行はできますか?

A. できます。ZammadはZendesk XMLインポート機能を持っています。手順: ①Zendesk管理 → Support → Export → XML形式でエクスポート②Zammad管理 → Import → Zendesk③ZIPをアップロード→チケット・ユーザー・グループが自動インポート。移行される内容: チケット・コメント・添付ファイル・ユーザー・グループ・タグ。移行されない内容: Zendeskマクロ・トリガー・ビューの一部(Zammadの同等機能に手動設定し直しが必要)。Freshdesk・osTicket・Jira Service Deskからのインポートも対応しています。

Q. Zammadで日本語メールの文字化けを防ぐには?

A. Zammadはデフォルトでメールのエンコーディングを自動検出しますが、一部のISO-2022-JP(JIS)エンコードのメールで文字化けが発生することがあります。対処法: ①Zammad管理 → Email → Channel設定でエンコーディングをUTF-8に統一②メールサーバー側でISO-2022-JPをUTF-8に変換するPostfixフィルターを追加③FreeScoutは日本語対応が弱いため、日本語環境のプライマリにはZammadを推奨します。

Q. Zammadの「トリガー」でメール自動返信を設定するには?

A. Zammad管理 → Trigger → New Triggerで設定します。自動返信トリガーの例: 条件: チケット作成時 + チャンネルがEmail + State = new / アクション: メール送信(送信者: noreply@yourcompany.com、件名: 「[チケット番号] お問い合わせを受け付けました」、本文テンプレート)+ State = open + 担当グループ = カスタマーサポート。SLAトリガー: 作成から4時間経過 + State = open → 優先度を「高」に変更 + 担当者にメール通知。Zendesk Triggerと同等の機能がZammadでも設定できます。

Q. FreeScoutとZammadのどちらを選ぶべきですか?

A. 用途によります。FreeScoutを選ぶとき: ①メールサポートだけで十分(チャット・SNS統合は不要)②エンジニアが少なく設定が簡単なツールが必要③月1000件以下の問い合わせ量④HelpScoutから移行したい。Zammadを選ぶとき: ①複数チャネル(メール・チャット・電話・WhatsApp)を一元管理したい②SLA・レポート・ナレッジベースが必要③エージェント5人以上でチームコラボレーションが必要④ZendeskからのUI移行ユーザーに違和感を少なくしたい。小規模(〜5人・メールのみ)ならFreeScout、中規模以上ならZammadが無難です。

まとめ

ユースケース推奨ツール
Zendesk代替・オムニチャネル・SLA管理Zammad
メールサポート特化・HelpScout代替・軽量FreeScout
伝統的なチケットシステム・PHPホストosTicket

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。