はじめに
エラートラッキングサービスの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.yml
にsystem.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リバースプロキシ経由でドメインアクセスできるように設定できます。
ポイントは:
-
ネットワーク設定: TraefikとSentryが
host.docker.internal
経由で通信すること - YAML構文: Traefik設定ファイルの構文エラーに注意
- DNS設定: ドメイン名が正しく解決されること
これで、セルフホストのSentryをプロダクション環境で安全に運用できます。