1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker ComposeでSentry Self-Hostedを構築してTraefikでリバースプロキシする方法

Posted at

はじめに

エラートラッキングサービスのSentryをセルフホストで運用し、Traefikリバースプロキシ経由でアクセスできるようにする手順をまとめました。

環境

  • Ubuntu 22.04
  • Docker 28.4.0
  • Docker Compose 2.39.2
  • Traefik(既存のリバースプロキシとして稼働中)

構築手順

1. Sentryリポジトリのクローン

git clone https://github.com/getsentry/self-hosted.git sentry-self-hosted
cd sentry-self-hosted

2. ポート設定の変更

デフォルトではポート9000で起動しますが、今回は13070に変更します。

# .envファイルを編集
vim .env

# 以下を変更
SENTRY_BIND=13070

3. ドメイン設定

sentry/config.ymlを編集してドメインを設定:

# 既存の設定の後に追加
system.url-prefix: 'http://sentry.localserver.lan'

sentry/sentry.conf.pyに以下を追加:

# CSRF保護とCORS設定
CSRF_TRUSTED_ORIGINS = ["http://sentry.localserver.lan", "http://localhost:13070"]
ALLOWED_HOSTS = ["sentry.localserver.lan", "localhost", "127.0.0.1", "web"]

4. インストール実行

# レポート送信を無効化してインストール
export REPORT_SELF_HOSTED_ISSUES=0
./install.sh

5. サービス起動

docker compose up -d

6. 管理者ユーザー作成

docker compose exec web sentry createuser \
  --email admin@example.com \
  --password <password> \
  --superuser

Traefik設定

1. services.yml設定

/opt/traefik/dynamic/services.ymlに以下を追加:

http:
  routers:
    sentry-service:
      rule: "Host(`sentry.gpuserver.lan`)"
      service: sentry-service
      entryPoints:
        - web

  services:
    sentry-service:
      loadBalancer:
        servers:
          - url: "http://sentry-self-hosted-nginx-1:80"

2. DockerネットワークをTraefikに接続

# TraefikをSentryのネットワークに接続
docker network connect sentry-self-hosted_default traefik

3. DNS設定

ルーターまたはDNSサーバーに以下のレコードを追加:

  • ホスト名: sentry
  • ドメイン: localserver.lan
  • IPアドレス: サーバーのIP

または/etc/hostsに追加:

192.168.2.xx sentry.localserver.lan

フロントエンド統合

React統合例

import * as Sentry from "@sentry/react";

Sentry.init({
  dsn: process.env.REACT_APP_SENTRY_DSN,
  environment: process.env.NODE_ENV,
  integrations: [
    Sentry.browserTracingIntegration(),
    Sentry.replayIntegration({
      maskAllText: false,
      blockAllMedia: false,
    }),
  ],
  tracesSampleRate: 1.0,
  replaysSessionSampleRate: 0.1,
  replaysOnErrorSampleRate: 1.0,
});

トラブルシューティング

1. CSRF Validation Failed エラー

sentry/config.ymlsystem.url-prefixが正しく設定されているか確認:

system.url-prefix: 'http://sentry.localserver.lan'

2. Traefik YAML構文エラー

services.ymlに余分な空白がないか確認。特に行末の空白に注意。

3. DNS解決できない

# DNS確認
dig sentry.localserver.lan

# 解決できない場合は/etc/hostsに追加
echo "192.168.2.xx sentry.localserver.lan" | sudo tee -a /etc/hosts

4. 完全リセットが必要な場合

# サービス停止
docker compose down

# ボリューム削除(データが全て削除されます)
docker volume rm sentry-clickhouse sentry-data sentry-kafka \
  sentry-postgres sentry-redis sentry-symbolicator sentry-seaweedfs

# ネットワーク削除
docker network rm sentry-self-hosted_default

# 再インストール
./install.sh

まとめ

以上の手順で、Sentry Self-Hostedをポート13070で起動し、Traefikリバースプロキシ経由でドメインアクセスできるように設定できます。

ポイントは:

  1. ネットワーク設定: TraefikとSentryがhost.docker.internal経由で通信すること
  2. YAML構文: Traefik設定ファイルの構文エラーに注意
  3. DNS設定: ドメイン名が正しく解決されること

これで、セルフホストのSentryをプロダクション環境で安全に運用できます。

参考リンク

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?