Не только игровой сервер
Mar. 22nd, 2021 07:07 amПродолжаю настройку домашнего сервера. Хотелось научиться запускать на нём небольшие домашние self-hosted сервисы.
Перво-наперво я себе поставил KeyBase, в котором есть встроенный приватный git, где удобно хранить конфигурацию. Также он менеджер ключей, чатик, и крипто-кошелёк, кто ещё там - стучитесь, законнектимся.
Установил официальный Docker for Windows. На удивление он оказался вполне неплох: на месте и GUI и командная строка и даже docker-compose, которым я и воспользовался.
Несколько лет назад я открыл для себя удивительную софтинку Traefik - хитрую HTTP-прокси, которая умеет интегрироваться с Docker'ом, позволяя на лету конфигурировать виртуальные хосты из запущенных docker-сервисов. Через неё одно удовольствие на лету поднимать/опускать разные микросервисы.
Каждому микросервису выдам свой под-домен. Публичные сервисы будут жить на настоящих под-доменах, а домашние сервисы будут жить в доменах *.home, которыми будет управлять PiHole. Заодно - порежу нафик все шпионские и рекламные домены через PiHole.
Далее пригодился листочек с нарисованной схемой: по одной крышей мы поднимем Traefik как reverse proxy, PiHole как локальный DNS сервер, и Portainer для управления контейнерами. Заводим такой магический "docker-compose.yaml":
version: '3.8'
networks:
whisper: { internal: true }
shout: { }
services:
traefik:
image: traefik:v2.3
container_name: traefik
command:
- "--api"
- "--api.dashboard=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.http.address=:80"
- "--entrypoints.https.address=:443"
networks: [shout, whisper]
ports:
- "80:80"
- "443:443"
labels:
traefik.enable: true
traefik.http.routers.dashboard.rule: "Host(`traefik.nexus.home`) || Host(`traefik.192.168.1.3.xip.io`)"
traefik.http.routers.dashboard.service: "api@internal"
traefik.http.routers.http-catchall.rule: "hostregexp(`{host:.+\\.rocks}`)"
traefik.http.routers.http-catchall.entrypoints: http
traefik.http.routers.http-catchall.middlewares: redirect-to-https
traefik.http.middlewares.redirect-to-https.redirectscheme.scheme: https
traefik.http.middlewares.redirect-to-https.redirectscheme.permanent: true
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
pihole:
image: pihole/pihole:latest
container_name: pihole
networks: [shout]
ports:
- '53:53/tcp'
- '53:53/udp'
- '8053:80'
volumes:
- D:/homelab/etc/pihole:/etc/pihole/
- D:/homelab/etc/dnsmasq.d:/etc/dnsmasq.d/
- D:/homelab/var/log/:/var/log/
- D:/homelab/var/log/lighttpd/:/var/log/lighttpd/
dns:
- 1.1.1.1
- 1.0.0.1
environment:
PROXY_LOCATION: pihole
TZ: 'America/New_York'
restart: unless-stopped
labels:
traefik.enable: true
traefik.port: 80
traefik.http.routers.pihole.rule: "Host(`pihole.nexus.home`) || Host(`pihole.192.168.1.3.xip.io`)"
traefik.docker.network: shout
traefik.http.services.pihole.loadbalancer.server.port: 80
portainer:
image: portainer/portainer
container_name: portainer
labels:
traefik.enable: true
traefik.http.services.portainer.loadbalancer.server.port: 9000
traefik.http.routers.portainer.rule: "Host(`portainer.nexus.home`) || Host(`portainer.192.168.1.3.xip.io`)"
traefik.http.routers.portainer.entrypoints: http
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
networks: [whisper]
Осталась одна тонкость - в .../etc/dnsmasq.d/ кладём конфигурационный файлик с address=/.nexus.home/192.168.1.3. И можно всё поднимать!
Проверяем PiHole через оставленную дырочку по адресу http://localhost:8053/admin и убеждаемся что всё работает. Настраиваем PiHole по вкусу. И устанавливаем `192.168.1.3` как DNS-сервер на локальном сетевом адаптере.
Теперь, когда у нас есть DNS-сервер и обратный прокси - можно смотреть локальные сайты на http://traefik.nexus.home и http://portainer.nexus.home. А если всё работает - выставить наш `192.168.1.3` для DNS на роутере и наслаждаться отсутствием рекламы и доступом к сервисам на *.nexus.home. Правда надо бы не забыть законопатить доступ к сторонним DNS на роутере. А может быть, даже настроить нормальный DoH для домашней сети.
А на досуге надо будет повыбирать DNS провайдера. А выбор там есть: Couldflare c 1.1.1.1 и 1.0.0.1 (которые вроде бы самые шустрые), Google с 8.8.8.8 и 8.8.4.4, Quad9 c 9.9.9.9 и 149.112.112.112, Yandex для любителей посконного с 77.88.8.8 и 77.88.8.1, или платный NextDNS?
Итак, фундамент для домашних сервисов заложен. Можно удовлеворённо выпить кофе и обдумать дальнейшую стратегию.
no subject
Date: 2021-03-22 09:10 pm (UTC)(no subject)
From:(no subject)
From: