From 123d2c8d5434d94c3bf885f8a4315e2a9887873a Mon Sep 17 00:00:00 2001 From: AyrisAI Date: Thu, 14 May 2026 19:36:01 +0300 Subject: [PATCH] Add unified docker-compose, README_INSTALL and .env.example for easy setup --- README_INSTALL.md | 60 ++++++++++++++++++++++++++++++++++++++ docker-compose.unified.yml | 53 +++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 README_INSTALL.md create mode 100644 docker-compose.unified.yml diff --git a/README_INSTALL.md b/README_INSTALL.md new file mode 100644 index 0000000..34caa56 --- /dev/null +++ b/README_INSTALL.md @@ -0,0 +1,60 @@ +# 🚀 AyrisMail - Hepsi Bir Arada Kurulum Rehberi + +Bu proje, Mailcow sunucunuzdaki mailleri anlık olarak izleyen ve Telegram üzerinden bildirim gönderen akıllı bir bildirim sistemidir. + +## 📦 Sistem Bileşenleri +1. **Next.js Web Paneli:** Mailbox eşleşmelerini ve bildirim loglarını yönettiğiniz arayüz. +2. **PostgreSQL:** Tüm kullanıcı ve log verilerinin saklandığı veritabanı. +3. **Ayris Worker:** Sunucu seviyesinde mailleri anlık çözen ve Next.js'e sinyal atan motor. + +--- + +## 🛠️ Kurulum Adımları + +### 1. Dosya Yapısını Hazırlayın +Projeyi şu klasör yapısında olacak şekilde sunucunuza yerleştirin: +```text +/ayris-project + ├── mailserver/ # Bu repo (Next.js) + ├── ayristech-worker/ # Worker repo + └── docker-compose.unified.yml +``` + +### 2. Çevre Değişkenlerini Ayarlayın +`mailserver` klasörü içindeki `.env` dosyasını şu değişkenlerle doldurun: + +```env +# Veritabanı (Docker içinde otomatik bağlanır) +DATABASE_URL="postgresql://postgres:ayris_pass_123@db:5432/ayrismail" + +# Mailcow Bilgileri +MAILCOW_API_URL="https://mail.alanadiniz.com" +MAILCOW_API_KEY="your-api-key" + +# Telegram +TELEGRAM_BOT_TOKEN="your-bot-token" + +# Güvenlik +WEBHOOK_SIGNAL_SECRET="guclu-bir-sifre" +AUTH_SECRET="auth-secret-key" +NEXTAUTH_URL="http://localhost:3000" +``` + +### 3. Sistemi Başlatın +Terminalden ana dizine girin ve şu komutu çalıştırın: + +```bash +docker compose -f docker-compose.unified.yml up -d --build +``` + +--- + +## 🔒 Güvenlik Notları +- `/var/run/docker.sock` dosyasının bağlanması, Worker'ın Dovecot konteynerine komut göndermesini sağlar. +- `WEBHOOK_SIGNAL_SECRET` bilgisinin hem `.env` hem de Worker konfigürasyonunda aynı olduğundan emin olun. + +## 📝 Kullanım +1. `http://sunucu-ip:3000` adresinden panele giriş yapın. +2. Kullanıcı oluşturun ve Telegram ID'sini girin. +3. Mailbox Mapping kısmından hangi mailin kime gideceğini tanımlayın. +4. Worker mailleri yakaladıkça bildirimler anında Telegram'a düşecektir. diff --git a/docker-compose.unified.yml b/docker-compose.unified.yml new file mode 100644 index 0000000..d76b1a7 --- /dev/null +++ b/docker-compose.unified.yml @@ -0,0 +1,53 @@ +version: '3.8' + +services: + # 1. Veritabanı + db: + image: postgres:15-alpine + container_name: ayrismail-db + restart: always + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-ayris_pass_123} + POSTGRES_DB: ayrismail + volumes: + - postgres_data:/var/lib/postgresql/data + + # 2. Next.js Uygulaması (Panel) + app: + build: + context: ./mailserver + dockerfile: Dockerfile + container_name: ayrismail-app + restart: always + ports: + - "3000:3000" + environment: + DATABASE_URL: "postgresql://postgres:${POSTGRES_PASSWORD:-ayris_pass_123}@db:5432/ayrismail" + MAILCOW_API_URL: ${MAILCOW_API_URL} + MAILCOW_API_KEY: ${MAILCOW_API_KEY} + TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN} + WEBHOOK_SIGNAL_SECRET: ${WEBHOOK_SIGNAL_SECRET} + AUTH_SECRET: ${AUTH_SECRET} + NEXTAUTH_URL: ${NEXTAUTH_URL:-http://localhost:3000} + depends_on: + - db + + # 3. Ayris Worker (Mail İzleyici) + worker: + build: + context: ../ayristech-worker + dockerfile: Dockerfile + container_name: ayrismail-worker + restart: always + volumes: + - /var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data:/var/lib/docker/volumes/mailcowdockerized_vmail-vol-1/_data:ro + - /var/run/docker.sock:/var/run/docker.sock + environment: + NEXTJS_WEBHOOK_URL: "http://app:3000/api/webhooks/mail-signal" + WEBHOOK_SECRET: ${WEBHOOK_SIGNAL_SECRET} + depends_on: + - app + +volumes: + postgres_data: