デプロイガイド
このガイドでは、SirrChat サーバーの本番環境へのデプロイについて説明します。
システム要件
ハードウェア要件
yaml
最小構成:
CPU: 2コア
RAM: 2GB
ストレージ: 20GB SSD
ネットワーク: 100Mbps
推奨構成:
CPU: 4コア
RAM: 4GB
ストレージ: 100GB SSD
ネットワーク: 1Gbpsソフトウェア要件
yaml
オペレーティングシステム:
- Ubuntu 20.04+
- Debian 11+
- CentOS 8+
- macOS 12+
依存関係:
- Go 1.24+ (ソースからビルドする場合)
- Git
- Makeポート要件
| ポート | サービス | 説明 |
|---|---|---|
| 25 | SMTP | メール受信(オプション) |
| 587 | Submission | メール送信 |
| 465 | SMTPS | 暗号化メール送信 |
| 993 | IMAPS | 暗号化 IMAP |
| 143 | IMAP | IMAP(オプション) |
| 8825 | SMTP Alt | 代替 SMTP ポート |
クイックデプロイ
ワンクリックデプロイスクリプト
クイックデプロイには自動スクリプトを使用:
bash
# デプロイスクリプトをダウンロードして実行
curl -sSL https://raw.githubusercontent.com/mail-chat-chain/mailchatd/main/start.sh | bash
# または最初にダウンロード
wget https://raw.githubusercontent.com/mail-chat-chain/mailchatd/main/start.sh
chmod +x start.sh
sudo ./start.shスクリプトは自動的に以下を実行します:
- システムアーキテクチャを検出して正しいバイナリをダウンロード
- 設定ディレクトリを初期化
- DNS と TLS 証明書を設定(15の DNS プロバイダーをサポート)
- systemd サービスを作成して起動
手動デプロイ
1. システム準備
bash
# システムを更新
sudo apt update && sudo apt upgrade -y
# 依存関係をインストール
sudo apt install -y build-essential git curl wget
# 作業ディレクトリを作成
export SIRRCHAT_HOME="${SIRRCHAT_HOME:-$HOME/.sirrchatd}"
mkdir -p $SIRRCHAT_HOME2. バイナリをダウンロード
bash
# システムアーキテクチャを自動検出
get_system_arch() {
local os=$(uname -s | tr '[:upper:]' '[:lower:]')
local arch=$(uname -m)
case "$arch" in
x86_64|amd64) arch="amd64" ;;
aarch64|arm64) arch="arm64" ;;
*) arch="amd64" ;;
esac
echo "${os}-${arch}"
}
SYSTEM_ARCH=$(get_system_arch)
VERSION="v0.3.1"
# 対応するバージョンをダウンロード
wget https://download.sirrchat.org/sirrchatd-${SYSTEM_ARCH}-${VERSION}
sudo mv sirrchatd-${SYSTEM_ARCH}-${VERSION} /usr/local/bin/sirrchatd
sudo chmod +x /usr/local/bin/sirrchatd
# インストールを確認
sirrchatd --help3. ソースからビルド(オプション)
bash
# リポジトリをクローン
git clone https://github.com/mail-chat-chain/mailchatd.git
cd sirrchatd
# ビルド
make build
# インストール
sudo cp build/sirrchatd /usr/local/bin/設定
基本設定
$SIRRCHAT_HOME/sirrchatd.conf を作成:
conf
# ドメイン設定
$(hostname) = mx1.example.com
$(primary_domain) = example.com
$(local_domains) = $(primary_domain)
# TLS 証明書設定
tls {
loader acme {
hostname $(hostname)
email postmaster@$(hostname)
agreed
challenge dns-01
dns cloudflare {
api_token YOUR_CLOUDFLARE_API_TOKEN
}
}
}
# ストレージ設定
storage.imapsql local_mailboxes {
driver sqlite3
dsn $SIRRCHAT_HOME/imapsql.db
}
# 認証設定
auth.pass_table local_auth {
table file $SIRRCHAT_HOME/users
}
# SMTP サービス
smtp tcp://0.0.0.0:8825 {
hostname $(hostname)
limits {
all rate 20 1s
all concurrency 10
}
dmarc yes
check {
require_mx_record
dkim
spf
}
source $(local_domains) {
deliver_to &local_mailboxes
}
}
# Submission サービス
submission tls://0.0.0.0:465 tcp://0.0.0.0:587 {
hostname $(hostname)
auth &local_auth
source $(local_domains) {
default_destination {
modify {
dkim $(primary_domain) $(local_domains) default
}
deliver_to &remote_queue
}
}
}
# IMAP サービス
imap tls://0.0.0.0:993 tcp://0.0.0.0:143 {
auth &local_auth
storage &local_mailboxes
}DNS プロバイダー設定
サポートされている DNS プロバイダーとその設定:
Cloudflare
conf
dns cloudflare {
api_token YOUR_API_TOKEN
}Amazon Route53
conf
dns route53 {
access_key_id YOUR_ACCESS_KEY
secret_access_key YOUR_SECRET_KEY
}DigitalOcean
conf
dns digitalocean {
api_token YOUR_API_TOKEN
}Google Cloud DNS
conf
dns googleclouddns {
service_account_json /path/to/service-account.json
}サービス管理
Systemd サービス設定
メールサービスを作成
bash
sudo tee /etc/systemd/system/sirrchatd-mail.service > /dev/null <<EOF
[Unit]
Description=SirrChat Mail Server
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=root
Environment="SIRRCHAT_HOME=/root/.sirrchatd"
ExecStart=/usr/local/bin/sirrchatd run
Restart=always
RestartSec=3
LimitNOFILE=65535
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOFサービスを起動して管理
bash
# systemd 設定をリロード
sudo systemctl daemon-reload
# サービスを起動
sudo systemctl start sirrchatd-mail
# ブート時の自動起動を有効化
sudo systemctl enable sirrchatd-mail
# サービスステータスを確認
sudo systemctl status sirrchatd-mail
# ログを表示
sudo journalctl -u sirrchatd-mail -f
# サービスを再起動
sudo systemctl restart sirrchatd-mail監視とメンテナンス
ログ表示
bash
# リアルタイムログを表示
sudo journalctl -u sirrchatd-mail -f
# 最近のエラーログを表示
sudo journalctl -u sirrchatd-mail -p err -n 100
# 今日のログを表示
sudo journalctl -u sirrchatd-mail --since todayヘルスチェックスクリプト
~/check_sirrchat_health.sh を作成:
bash
#!/bin/bash
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m'
echo "=== SirrChat ヘルスチェック ==="
echo "時刻: $(date)"
echo "=============================="
# プロセスステータスを確認
if pgrep -x sirrchatd > /dev/null; then
echo -e "${GREEN}✓${NC} プロセスが実行中"
else
echo -e "${RED}✗${NC} プロセスが実行されていません"
exit 1
fi
# ポートを確認
for port in 587 993 8825; do
if netstat -tlnp 2>/dev/null | grep -q ":$port "; then
echo -e "${GREEN}✓${NC} ポート $port がリスニング中"
else
echo -e "${RED}✗${NC} ポート $port がリスニングしていません"
fi
done
# ディスク容量を確認
DISK_USAGE=$(df -h $SIRRCHAT_HOME | awk 'NR==2 {print $5}' | tr -d '%')
if [ "$DISK_USAGE" -lt 80 ]; then
echo -e "${GREEN}✓${NC} ディスク使用量: ${DISK_USAGE}%"
else
echo -e "${RED}⚠${NC} ディスク使用量が高い: ${DISK_USAGE}%"
fi
echo "=============================="トラブルシューティング
一般的な問題
1. サービスが起動しない
bash
# 設定ファイルの構文を確認
sirrchatd run --config $SIRRCHAT_HOME/sirrchatd.conf
# 詳細なエラーを表示
sudo journalctl -u sirrchatd-mail -n 502. TLS 証明書の問題
bash
# DNS 設定を確認
sirrchatd dns check
# DNS チャレンジを手動でテスト
sirrchatd dns export3. メールを送受信できない
bash
# ポートが開いているか確認
netstat -tlnp | grep -E '25|587|993'
# ファイアウォールを確認
sudo ufw statusセキュリティのベストプラクティス
ファイアウォール設定
bash
# 基本的なファイアウォールルール
sudo ufw default deny incoming
sudo ufw default allow outgoing
# SSH アクセス
sudo ufw allow 22/tcp
# メールサービスポート
sudo ufw allow 587/tcp comment 'Submission'
sudo ufw allow 993/tcp comment 'IMAPS'
sudo ufw allow 8825/tcp comment 'SMTP Alt'
# ファイアウォールを有効化
sudo ufw enableセキュリティチェックリスト
- [ ] ファイアウォールルールが適切に設定されている
- [ ] SSH が鍵認証を使用
- [ ] TLS 証明書が設定され、自動更新されている
- [ ] システムの自動セキュリティ更新が有効
- [ ] ログローテーションが設定されている
- [ ] 定期的なバックアップが実装されている
バックアップの推奨事項
bash
# 設定とデータをバックアップ
BACKUP_DIR="/backup/sirrchatd/$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
# 設定をバックアップ
cp $SIRRCHAT_HOME/sirrchatd.conf $BACKUP_DIR/
# データベースをバックアップ
cp $SIRRCHAT_HOME/*.db $BACKUP_DIR/
# 最後の7日間のバックアップを保持
find /backup/sirrchatd -type d -mtime +7 -exec rm -rf {} +本番環境の推奨事項
データベース選択
- 開発: SQLite(シンプル、追加セットアップ不要)
- 本番環境: PostgreSQL(最高のパフォーマンスと機能)
- 代替: MySQL 8.0+(良好なパフォーマンス)
ストレージバックエンド
- 開発: ファイルシステムストレージ
- 本番環境: S3 互換ストレージ(スケーラブル、耐久性)
監視
- Prometheus メトリクスエンドポイントを有効化
- ディスク容量、メモリ使用量のアラートを設定
- メールキューサイズを監視
- 認証失敗を追跡
関連リソース
- 公式ウェブサイト: https://sirrchat.org
- GitHub リポジトリ: https://github.com/mail-chat-chain/mailchatd
- ドキュメント: https://docs.sirrchat.org
最終更新: 2025年12月