2026-01-14 16:24:35 -06:00
2026-01-15 00:14:56 +04:00
2026-01-15 00:14:56 +04:00
2026-01-15 00:14:56 +04:00
2026-01-15 00:14:56 +04:00
2026-01-15 00:14:56 +04:00
2026-01-14 16:22:41 -06:00
2026-01-15 00:14:56 +04:00
2026-01-15 00:14:56 +04:00
2026-01-15 00:14:56 +04:00
2026-01-15 00:14:56 +04:00
2026-01-15 00:14:56 +04:00
2026-01-15 00:14:56 +04:00
2026-01-14 14:05:34 -06:00
2026-01-02 05:41:37 +04:00
2026-01-01 18:32:31 -06:00
2026-01-14 16:24:35 -06:00

Home Server Services

Home Server Services - это полный набор сервисов в Docker для организации домашнего сервера!

Главное - это модульность и воспроизводимая установка. Можно развернуть за 15 минут!

Мой сервер:

  • CheckWay POS88
    • Intel Celeron J1900 @ 1.99GHz (64 bit)
    • 4Gb RAM
    • 120Gb SSD
    • Не греется, не шумит, мало потребляет
  • Debian 13 (Trixie) Minimal

Сервисы:

  • Portainer - Управление контейнерами
  • Grafana - Загруженность сервера
  • Proxy - Reverse proxy
    • Nginx
    • DDNS - Автоматическое обновление DNS записей у регистратора рег.ру
    • Let's Encrypt - Автоматическое обновление SSL сертификатов на все домены
  • Samba - Сетевой диск
  • Syncthing - Синхронизация данных между устройствами
  • Transmission - BitTorrent клиент
  • AutoSSH - SSH тунель
  • Gitea - Git-сервер
  • Cloud - FileBrowser - веб-интерфейс для управления файлами
  • Matrix - сервер Matrix
    • Synapse - Matrix сервер Synapse
    • Element - Matrix веб-клиент Element
  • Pi-hole - DNS фильтр (блокировка рекламы, слежки, защита от атак)

О проекте:

  • Полнофункциональный домашний сервер
  • Все сервисы настроены через Docker Compose для легкого управления и быстрого запуска
  • Мониторинг системы через Grafana с готовыми дашбордами
  • Файловый сервер Samba для доступа к файлам по сети
    • Открытый диск только на чтение
    • Доступ на запись только после авторизации
  • Синхронизация файлов между устройствами через Syncthing
    • Постоянная точка синхронизации позволяет обмениваться файлами между устройствами, даже если они не бывают одновременно в сети - домашний сервер выступает посредником
  • BitTorrent клиент Transmission с веб-интерфейсом
  • SSH туннелирование через AutoSSH
    • Можно пробросить порт на удалённый VPS, автоматически переподключается при потере соединения
  • Nginx reverse proxy для маршрутизации трафика к сервисам
    • Автоматическое получение и обновление SSL сертификатов через Let's Encrypt
    • Автоматическое обновление DNS записей у регистратора рег.ру
  • Git-сервер Gitea для хостинга собственных репозиториев
  • FileBrowser - веб-интерфейс для управления файлами через браузер
  • Matrix Synapse - собственный сервер для мессенджера Matrix с веб-клиентом Element
  • Блокировка рекламы, нежелательной слежки, частичная защита от атак с помощью Pi-hole
  • Управление Docker через Portainer с веб-интерфейсом
  • Скрипт для снижения энергопотребления
  • Все сервисы используют переменные окружения для гибкой настройки и примеры конфигураций
  • Автоматический перезапуск контейнеров при сбоях

Подготовка:

  • Купить белый IP адрес у провайдера
  • В настройках роутера пробросить 80 и 443 порт на сервер
  • Купить домен второго уровня у регистратора рег.ру
  • В настройках API рег.ру добавить CIDR вашего провайдера (чтобы при смене IP наш скрипт смог обновить DNS записи)
  • В настройках DNS-серверов зоны указать бесплатные DNS-серверы рег.ру: ns1.reg.ru, ns2.reg.ru

Запуск:

1. Portainer

cd portainer
cp .env.example .env && vim .env
sudo docker compose up -d

2. Grafana

cd grafana
cp .env.example .env && vim .env
sudo docker compose up -d

3. AutoSSH

cd autossh
cp .env.example .env && vim .env
sudo docker compose up -d --build

4. Samba

cd samba
cp .env.example .env && vim .env
sudo docker compose up -d

5. Transmission

cd transmission
cp .env.example .env && vim .env
sudo docker compose up -d

6. Syncthing

cd syncthing
cp .env.example .env && vim .env
sudo docker compose up -d

7. Gitea

cd gitea
cp .env.example .env && vim .env
sudo docker compose up -d

Примечание: Конфигурируется позже, уже в веб-форме.

8. Cloud (FileBrowser)

cd cloud
cp .env.example .env && vim .env
touch filebrowser.db
sudo docker compose up -d

9. Matrix

cd matrix
cp .env.example .env && vim .env

Создаём конфиг по примеру:

sudo docker compose up -d

Создаём пользователя по примеру.

10. Pi-hole

cd pihole
cp .env.example .env && vim .env
sudo docker compose up -d

Устанавливаем пароль (оставить пустым для доступа без пароля)

В разделе Settings > DNS выбираем вышестоящие DNS сервер. Включаем сверху расширенные настройки и в блоке interface settings выбираем пункт Permit all origins. В разделе Lists добавляем списки доменов для блокировки. Затем обновляем их в Tools > Update Gravity. В настройках ПК (роутера) устанавливаем в качестве DNS наш сервер.

11. Nginx Reverse Proxy (Entrypoint)

cd proxy
cp .env.example .env && vim .env

Создаём конфиг для DynDNS:

cp ddns/domains.txt.example ddns/domains.txt && vim ddns/domains.txt

Нужно указать ресурсные записи @ и www для доступа к домену второго уровня напрямую. Также нужно добавить домены 3-го уровня для: gitea, cloud (filebrowser), matrix server (synapse), matrix client (element).

В первый раз SSL сертификаты нужно создать вручную.

Запускаем DDNS скрипт и HTTP сервер для Let's Encrypt:

sudo docker compose -f init-compose.yml up -d --build

Проверяем по логам в portainer и в личном кабинете рег.ру что ресурсные записи обновились. Ожидаем пока DNS обновит информацию о наших поддоменах (занимает от 15 минут до 24 часов). Затем создаём SSL сертификаты на каждый домен(-ы) по примеру.

Настраиваем Nginx:

cd nginx/conf.d
cp default.conf.example default.conf
vim default.conf

Запускаем основной контейнер:

sudo docker compose -f init-compose.yml down
sudo docker compose up -d --build

Использование:

После настройки и запуска внутренние сервисы доступны (по умолчанию) по следующим портам:

  • Grafana — порт 3000:

  • Portainer — порт 9000:

  • Transmission — порт 9091:

  • Syncthing — порт 8384:

Внешние сервисы запустятся на указанных в конфиге nginx поддоменах:

  • Gitea
  • Synapse и Element
  • FileBrowser
Description
No description provided
Readme 3.8 MiB
Languages
Python 68.8%
Shell 25.8%
Dockerfile 5.4%