infra

0

Описание

Общая инфрастуктура проекта

Языки

  • Nginx100%
README.md

Серверная инфраструктура

Общая Docker-инфраструктура сервера. Разворачивается один раз; все проекты подключаются к её внешним сетям.

Сервисы

СервисОбразОписание
socket_proxynginx:alpineПрокси для Docker socket (совместимость Traefik + Docker 29)
traefiktraefik:v3.4.1Reverse proxy, SSL через Let's Encrypt
mariadbmariadb:11Общая БД для PHP-проектов (WordPress и др.)
postgrespostgres:16-alpineОбщая БД для остальных проектов
pgadmindpage/pgadmin4Веб-интерфейс управления БД →
db.yourdomain.com
postfixboky/postfixSMTP-сервер исходящей почты
portainerportainer/portainer-ceУправление контейнерами →
portainer.yourdomain.com

Первый запуск


Подключение нового проекта

1. Добавить внешние сети в docker-compose.yml проекта

Подключай только те сети, которые нужны проекту:

2. Подключить нужные сети к контейнеру приложения

3. Настроить Traefik-маршрутизацию (labels)

4. Создать базу данных (если нужна)

PostgreSQL:

MariaDB:


Настройка исходящей почты в приложении

Postfix доступен внутри Docker по хосту

postfix
, порт
25
(plain SMTP). Никакой авторизации не требуется — трафик изолирован сетью
mail
.

Переменные окружения для типичных фреймворков

Пример Nodemailer


Настройка DNS для исходящей почты

Без этих записей письма попадут в спам.

Шаг 1 — Получить DKIM-ключ

Вывод будет примерно таким:

mail._domainkey IN TXT ( "v=DKIM1; h=sha256; k=rsa; " "p=MIIBIjANBgkq..." )

Шаг 2 — Добавить DNS-записи

ТипИмяЗначение
TXT
yourdomain.com
v=spf1 ip4:<IP_СЕРВЕРА> ~all
TXT
mail._domainkey.yourdomain.com
(содержимое из шага 1)
PTR
<IP_СЕРВЕРА>
mail.yourdomain.com
(настраивается у хостера)

PTR-запись (reverse DNS) настраивается в панели хостера, не в DNS-регистраторе.

Шаг 3 — Проверить результат