Switch to Caddy Docker Proxy labels for automatic HTTPS

Co-authored-by: Junie <junie@jetbrains.com>
This commit is contained in:
2026-11-05 01:32:23 +01:00
co-authored by Junie
parent a23a020138
commit 6ab189adae
3 changed files with 71 additions and 41 deletions
+49 -2
View File
@@ -376,18 +376,65 @@ value: v=DKIM1; k=rsa; p=MIIBojANBgkqhkiG9w0BAQ...
| **Attachment** | Имя, MIME-тип, размер, путь к файлу |
| **Contact** | Имя, email, телефон, компания |
## Деплой на VPS
### Caddy Docker Proxy
Проект использует **Caddy Docker Proxy** для автоматического HTTPS и reverse proxy. Caddy сам генерирует конфиг из `labels` в `docker-compose.prod.yml` — отдельный Caddyfile не нужен.
**Как это работает:**
- Контейнер `mail-server` имеет `labels` с настройками Caddy
- `lucaslorentz/caddy-docker-proxy` следит за Docker через socket и автоматически создаёт виртуальные хосты
- HTTPS-сертификат от Let's Encrypt получается автоматически
**Ключевые labels:**
| Label | Описание |
|-------|----------|
| `caddy: mail.jambotron.com` | Домен, на котором доступен сервис |
| `caddy.route.api.reverse_proxy` | Проксирует `/api/*` на Spring Boot (порт 8080) |
| `caddy.route.static.root` | Корневая директория для Angular фронтенда |
| `caddy.route.static.file_server` | Раздаёт статические файлы Angular |
**Запуск на VPS:**
```bash
# Клонируйте репозиторий
git clone https://gitea.jambotron.com/jambotron_gang/reactive-mail-server.git
cd reactive-mail-server
# Соберите фронтенд
cd frontend && npm install && npx ng build --configuration=production
cd ..
# Запустите
docker compose -f docker-compose.prod.yml up -d --build
```
**Перед запуском:**
1. Замените `mail.jambotron.com` на ваш домен в `docker-compose.prod.yml`
2. Настройте PTR (Reverse DNS) у хостера — IP → `mail.jambotron.com`
3. Добавьте DNS-записи: A (`mail` → IP), MX (`@` → `mail.jambotron.com`), TXT (`v=spf1 ip4:<IP> -all`)
4. Откройте порты: 80, 443, 25 (SMTP relay), 3025 (SMTP приём)
## TODO
- [x] Хэширование паролей (BCrypt)
- [x] Аутентификация (JWT)
- [x] Приём SMTP (SubEtha SMTP встроенный сервер)
- [x] Приём SMTP (встроенный сервер на WebFlux TcpServer)
- [x] IMAP-сервер (встроенный, порт 143)
- [x] Вложения (загрузка/скачивание)
- [x] Поиск по письмам (по теме, телу, отправителю, получателю)
- [x] Angular фронтенд (v22 + Tailwind CSS + Synthwave дизайн)
- [x] Антиспам (чёрный список отправителей)
- [x] DKIM/SPF/DMARC (подпись, верификация, DNS-проверка)
- [ ] TLS шифрование
- [x] SMTP релей (доставка на внешнюю почту)
- [x] Контакты (адресная книга)
- [x] Reply / Forward
- [x] Пагинация писем
- [x] HTML/Markdown режим
- [x] Caddy Docker Proxy (автоматический HTTPS)
- [ ] TLS шифрование SMTP/IMAP
## Лицензия