Switch to Caddy Docker Proxy labels for automatic HTTPS
Co-authored-by: Junie <junie@jetbrains.com>
This commit is contained in:
@@ -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
|
||||
|
||||
## Лицензия
|
||||
|
||||
|
||||
Reference in New Issue
Block a user