4.1 KiB
Локальная сеть с доменами .mikan и HTTPS
Система для запуска сервисов в Docker с автоматическим HTTPS, локальными доменами (service.mikan, service.local) и возможностью расширения (Tailscale, публичные домены).
Требования
- Docker + Docker Compose
mkcert— инструкция по установкеbash,coreutils
Быстрый старт
-
Клонируй репозиторий
git clone ... && cd local-dns -
Настрой домен (опционально)
echo "LOCAL_DOMAIN=mikan" > .envЗамени
mikanна желаемый суффикс (например,home). -
Инициализируй CA и базовый сертификат
./scripts/01-init-ca.sh- Создаст доверенный корневой сертификат (
ca/rootCA.pem) - Сгенерирует
default.crtдля nginx-proxy
- Создаст доверенный корневой сертификат (
-
Установи корневой сертификат в систему
Импортируй файлca/rootCA.pemв хранилище доверенных корневых центров сертификации:- Linux:
sudo cp ca/rootCA.pem /usr/local/share/ca-certificates/mkcert-local.crt sudo update-ca-certificates - Windows/macOS: двойной клик по файлу → «Доверять всегда» (macOS) или импорт в «Доверенные корневые центры» (Windows)
- Linux:
-
Запусти инфраструктуру
docker compose up -d -
Добавь сервис
./scripts/add-service.sh giteaСервис будет доступен по:
https://gitea.mikanhttps://gitea.local
+ может пригодиться:
Add-Content -Path "C:\Windows\System32\drivers\etc\hosts" -Value "10.0.0.3 youtrack.mikan" -
Настрой сервис в Docker Compose
Убедись, что вdocker-compose.ymlсервиса указано:services: gitea: environment: - VIRTUAL_HOST=gitea.mikan,gitea.local - VIRTUAL_PORT=3000 # порт внутри контейнера networks: - devnet dns: 10.0.0.2 # обязательно для резолвинга доменов из контейнеров
Важные замечания
DNS из контейнеров
Контейнеры не могут резолвить *.mikan без явного указания DNS:
dns: 10.0.0.2 # IP dnsmasq
Добавляй эту строку во все сервисы, которым нужен доступ к другим по домену.
Обновление сертификатов
При добавлении сервиса через add-service.sh:
- Автоматически обновляется
domains.txt - Генерируется новый
default.crt - Перезагружается
nginx-proxy
Пути
- Сертификаты:
nginx/certs/default.crt - Домены:
domains.txt - Корневой CA:
ca/rootCA.pem
Расширение
Tailscale
Добавь в docker-compose.yml сервис tailscale и объявляй дополнительные домены:
environment:
- VIRTUAL_HOST=gitea.mikan,gitea.local,gitea.yourname.ts.net
Публичный домен
- Купи домен (например,
example.com) - В
.envдобавь:PUBLIC_DOMAIN=example.com - В сервисах укажи:
Сертификат для
environment: - VIRTUAL_HOST=gitea.mikan,gitea.local,gitea.example.com - LETSENCRYPT_HOST=gitea.example.comexample.comполучитacme-companion.
Готово. Теперь все сервисы работают по HTTPS с валидными сертификатами.