Update readme

This commit is contained in:
2026-01-29 16:10:31 +04:00
parent a26639debe
commit 7ca59cf365
6 changed files with 310 additions and 154 deletions

View File

@@ -1,10 +1,15 @@
# Настройка Debian # 🐧 Настройка Debian
## 1. Установка Debian > Этот гайд описывает установку и настройку Debian для запуска сервисов в контейнерах.
---
## 1⃣ Установка Debian
Стандартная установка Debian Minimal. Занимаем весь виртуальный диск. При установке отключаем графический интерфейс и ставим SSH сервер. Стандартная установка Debian Minimal. Занимаем весь виртуальный диск. При установке отключаем графический интерфейс и ставим SSH сервер.
После установки заходим под root и устанавливаем `sudo`. После установки заходим под `root` и устанавливаем `sudo`:
```bash ```bash
apt install sudo apt install sudo
usermod -aG sudo имя_пользователя usermod -aG sudo имя_пользователя
@@ -12,18 +17,26 @@ usermod -aG sudo имя_пользователя
Перезаходим и дальше работаем под обычным пользователем. Перезаходим и дальше работаем под обычным пользователем.
## 2. Статический IP ---
Смотрим название сетевого интерфейса и устанавливаем resolvconf (для поддержки dns-nameservers):
## 2⃣ Настройка статического IP
Смотрим название сетевого интерфейса и устанавливаем `resolvconf` (для поддержки `dns-nameservers`):
```bash ```bash
ip addr ip addr
sudo apt install resolvconf sudo apt install resolvconf
``` ```
Редактируем настройки
Редактируем настройки:
```bash ```bash
sudo nano /etc/network/interfaces sudo nano /etc/network/interfaces
``` ```
Добавляем настройки: Добавляем настройки:
```
```ini
auto enp0s3 auto enp0s3
iface enp0s3 inet static iface enp0s3 inet static
address 192.168.1.100 address 192.168.1.100
@@ -31,26 +44,41 @@ iface enp0s3 inet static
gateway 192.168.1.1 gateway 192.168.1.1
dns-nameservers 77.88.8.8 8.8.8.8 dns-nameservers 77.88.8.8 8.8.8.8
``` ```
> ⚠️Замените `enp0s3` на название вашего сетевого интерфейса и настройте IP адрес в соответствии с вашей сетевой конфигурацией.
Перезагружаемся: Перезагружаемся:
```bash ```bash
sudo reboot sudo reboot
``` ```
## 3. Установка Podman ---
## 3⃣ Установка Podman
> Мы будем использовать Podman вместо Docker в целях безопасности. Podman не требует запущенного демона для работы и по умолчанию нацелен на работу в rootless режиме, что нам очень интересно. > Мы будем использовать Podman вместо Docker в целях безопасности. Podman не требует запущенного демона для работы и по умолчанию нацелен на работу в rootless режиме, что нам очень интересно.
Устанавливаем Podman и podman-compose:
```bash ```bash
sudo apt install podman podman-compose sudo apt install podman podman-compose
``` ```
Добавляем загрузку контейнеров с параметром `restart: always` при загрузке системы Добавляем загрузку контейнеров с параметром `restart: always` при загрузке системы:
```bash ```bash
systemctl --user enable podman-restart.service systemctl --user enable podman-restart.service
sudo loginctl enable-linger USER sudo loginctl enable-linger USER
``` ```
## 4. Клонируем этот репозиторий для запуска сервисов > ⚠️ Замените `USER` на имя вашего пользователя.
---
## 4⃣ Клонирование репозитория
Клонируем этот репозиторий для запуска сервисов:
```bash ```bash
sudo apt install git sudo apt install git
@@ -59,35 +87,54 @@ cd ~/services
git clone https://github.com/StepanovPlaton/HomeServerServices . git clone https://github.com/StepanovPlaton/HomeServerServices .
``` ```
## 5. Монтирование дисков ---
## 5⃣ Монтирование дисков
Смотрим список разделов с их UUID:
Смотрим список разделов с их UUID
```bash ```bash
sudo blkid sudo blkid
``` ```
Создаём точку монтирования
Создаём точку монтирования:
```bash ```bash
mkdir ~/diskN mkdir ~/diskN
``` ```
Добавляем запись в fstab
Добавляем запись в `fstab`:
```bash ```bash
sudo nano /etc/fstab sudo nano /etc/fstab
``` ```
В конец добавляем
``` В конец добавляем:
```ini
UUID=***-***-***-***-*** /home/USER/diskN ext4 defaults,nofail 0 2 UUID=***-***-***-***-*** /home/USER/diskN ext4 defaults,nofail 0 2
``` ```
Монтируем диск
> ⚠️ Замените `UUID=***-***-***-***-***` на UUID вашего диска и `USER` на имя вашего пользователя.
Монтируем диск:
```bash ```bash
sudo systemctl daemon-reload sudo systemctl daemon-reload
sudo mount -a sudo mount -a
``` ```
Для корректной работы с диском может потребоваться изменить права доступа:
Для корректной работы с диском может потребоваться изменить права доступа.
```bash ```bash
sudo chown -R 1000:1000 path/to/disk sudo chown -R 1000:1000 path/to/disk
podman unshare chown -R 1000:1000 path/to/disk podman unshare chown -R 1000:1000 path/to/disk
``` ```
**Настройка сервисов описана в файле [Services.md](Services.md)** > ⚠️ Замените `path/to/disk` на путь к вашему диску.
---
## 📚 Следующие шаги
**Настройка сервисов описана в файле [Services.md](./Services.md)**

View File

@@ -1,38 +1,56 @@
# Настройка OPNsense # 🔒 Настройка OPNsense
## 1. Установка OPNsense > Этот гайд описывает установку и настройку OPNsense в качестве роутера и файрвола для домашней сети.
Ничего не трогаем в момент загрузки. Авторизуемся как `installer`, пароль по умолчанию - `opnsense`. ---
## 1⃣ Установка OPNsense
Ничего не трогаем в момент загрузки. Авторизуемся как `installer`, пароль по умолчанию — `opnsense`.
- Добавляем английскую локаль - Добавляем английскую локаль
- Выбираем ФС - **ZFS RAID0** - Выбираем ФС **ZFS RAID0**
- Предупреждение о недостатке ОЗУ можно пропустить - Предупреждение о недостатке ОЗУ можно пропустить
- Устанавливаем систему - Устанавливаем систему
## 2. Создаём второй сетевой мост ---
Создаём второй сетевой мост для второго порта, подключаем сетевое устройство в ВМ OPNsense. Перезагружаем ВМ OPNsense. ## 2⃣ Создание второго сетевого моста
## 3. Настройка OPNsense Создаём второй сетевой мост в Proxmox для второго порта, подключаем сетевое устройство в ВМ OPNsense. Перезагружаем ВМ OPNsense.
---
## 3⃣ Настройка OPNsense
В меню терминала: В меню терминала:
1. Выбираем **1 - assign interfaces**: ### 1. Назначение интерфейсов
Выбираем **1 - assign interfaces**:
- Назначаем одному порту **WAN** (порт для провайдера, во внешний интернет) - Назначаем одному порту **WAN** (порт для провайдера, во внешний интернет)
- Второму порту **LAN** (порт для локальной сети) - Второму порту **LAN** (порт для локальной сети)
2. Выбираем **2 - set interface ip address**: ### 2. Настройка IP адресов
Выбираем **2 - set interface ip address**:
- Для LAN указываем статический IPv4 (это будет наш Gateway) - Для LAN указываем статический IPv4 (это будет наш Gateway)
- DHCP можно пока не включать, настроим позже - DHCP можно пока не включать, настроим позже
## 4. Обновляем OPNsense ---
1. Открываем web интерфейс по адресу установленному для LAN ## 4⃣ Обновление OPNsense
1. Открываем web интерфейс по адресу, установленному для LAN
2. Заходим **Система > Программное обеспечение > Статус > Проверить наличие обновлений** 2. Заходим **Система > Программное обеспечение > Статус > Проверить наличие обновлений**
3. Потом раздел обновления, снизу кнопка **обновить** 3. Потом раздел обновления, снизу кнопка **обновить**
4. Ждём обновления всех пакетов 4. Ждём обновления всех пакетов
## 5. Устанавливаем плагин Qemu Agent ---
## 5⃣ Установка плагина Qemu Agent
Нужен для управления OPNsense из Proxmox. Нужен для управления OPNsense из Proxmox.
@@ -40,7 +58,9 @@
2. Включаем галочку **показать плагины сообщества** 2. Включаем галочку **показать плагины сообщества**
3. Ставим плагин `os-qemu-guest-agent` 3. Ставим плагин `os-qemu-guest-agent`
## 6. Настраиваем доступ в интернет ---
## 6⃣ Настройка доступа в интернет
Можно воспользоваться стандартным мастером настройки: Можно воспользоваться стандартным мастером настройки:
@@ -49,38 +69,54 @@
3. Устанавливаем логин и пароль провайдера 3. Устанавливаем логин и пароль провайдера
4. Остальное уже должно быть настроено, но можно что-то изменить 4. Остальное уже должно быть настроено, но можно что-то изменить
## 7. Настройка DHCP ---
## 7⃣ Настройка DHCP
В разделе **Службы**: В разделе **Службы**:
- Выключаем **Dnsmasq DNS & DHCP** - Выключаем **Dnsmasq DNS & DHCP**
- Включаем **ISC DHCPv4** - Включаем **ISC DHCPv4**
- В настройках DNS первым сервером указываем IP адрес OPNsense. Сам DNS сервер настроем в следущем шаге - В настройках DNS первым сервером указываем IP адрес OPNsense. Сам DNS сервер настроим в следующем шаге
## 8. Настройка DNS ---
## 8⃣ Настройка DNS
> Для безопасности домашней сети от чрезмерной рекламы и сбора статистики добавим фильтр [AdGuard Home](https://github.com/AdguardTeam/AdGuardHome) > Для безопасности домашней сети от чрезмерной рекламы и сбора статистики добавим фильтр [AdGuard Home](https://github.com/AdguardTeam/AdGuardHome)
> Если для вашей сети достаточно обычного DNS просто включите в настройках **Unbound DNS** >
> Если для вашей сети достаточно обычного DNS, просто включите в настройках **Unbound DNS**
В консоли OPNsense добавим новый репозиторий:
В консоли OPNsense добавим новый репоизторий
```bash ```bash
fetch -o /usr/local/etc/pkg/repos/mimugmail.conf https://www.routerperformance.net/mimugmail.conf fetch -o /usr/local/etc/pkg/repos/mimugmail.conf https://www.routerperformance.net/mimugmail.conf
pkg update pkg update
``` ```
После чего в разделе **Система > ПО > Плагины** появится пакет os-adguardhome-maxit (ставим калочку показать пользовательские пакеты). Устанавливаем его и включаем в разделе **Службы**. Мастер настройки запуститься на IP OPNsense на 3000 порту.
В настройках **указываем внутренний интерфейс LAN** и ставим WebUI AdGuardHome на 3000 порт. В разделе DNS-сервер так же **выбираем только внутренний интерфейс LAN**, порт по умолчанию 53. По какой-то причине AdGuard думает что у нас динамический IP, хотя это не так - игнорируем предупреждение. После чего в разделе **Система > ПО > Плагины** появится пакет `os-adguardhome-maxit` (ставим галочку показать пользовательские пакеты). Устанавливаем его и включаем в разделе **Службы**. Мастер настройки запустится на IP OPNsense на 3000 порту.
В настройках:
- **Указываем внутренний интерфейс LAN** и ставим WebUI AdGuardHome на 3000 порт
- В разделе DNS-сервер также **выбираем только внутренний интерфейс LAN**, порт по умолчанию 53
> ⚠️ По какой-то причине AdGuard думает, что у нас динамический IP, хотя это не так — игнорируем предупреждение.
В настройках добавляем блоклисты по выбору: В настройках добавляем блоклисты по выбору:
- [Hagezi Multi Pro++ — Идеальный баланс. Блокирует почти всё, при этом редко «ломает» сайты](https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/pro.plus.txt)
- [Hagezi Multi Ultimate — Самый жесткий вариант. Блокирует агрессивно, включая глубокую телеметрию. Может потребоваться ручная разблокировка некоторых сервисов (белый список)](https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/ultimate.txt)
- и любые другие на своё усмотрение
## 9. Проброс портов - [Hagezi Multi Pro++](https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/pro.plus.txt) — Идеальный баланс. Блокирует почти всё, при этом редко «ломает» сайты
- [Hagezi Multi Ultimate](https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/ultimate.txt) — Самый жесткий вариант. Блокирует агрессивно, включая глубокую телеметрию. Может потребоваться ручная разблокировка некоторых сервисов (белый список)
- И любые другие на своё усмотрение
---
## 9⃣ Проброс портов
> Для начала нужно освободить 80 порт, потому что на нём по умолчанию доступен сам OPNsense. В разделе **Система > Настройки > Администрирование** заменим 80 порт на 8000 > Для начала нужно освободить 80 порт, потому что на нём по умолчанию доступен сам OPNsense. В разделе **Система > Настройки > Администрирование** заменим 80 порт на 8000
В разделе **Межсетевой экран > NAT > Передаресация портов** добавим правило. В разделе **Межсетевой экран > NAT > Переадресация портов** добавим правило:
- **Interface:** WAN - **Interface:** WAN
- **TCP/IP Version:** IPv4 - **TCP/IP Version:** IPv4
- **Protocol:** TCP - **Protocol:** TCP
@@ -90,8 +126,11 @@ pkg update
- **Redirect target port:** Порт назначения - **Redirect target port:** Порт назначения
- **Pool Options:** Default - **Pool Options:** Default
- **Filter rule association:** Add associated filter rule - **Filter rule association:** Add associated filter rule
- **Это важно:** OPNsense автоматически создаст разрешающее правило в брандмауэре - OPNsense автоматически создаст разрешающее правило в брандмауэре
Для HTTP нужно добавить перенаправления на 8080 порт сервера, для HTTPS на 8443. Базовые порты 80 и 443 недоступны в rootless контейнере. Сохраняем изменения и проверяем в разделе **Межсетевой экран > Правила > WAN**. Для HTTP нужно добавить перенаправления на 8080 порт сервера, для HTTPS на 8443. Базовые порты 80 и 443 недоступны в rootless контейнере. Сохраняем изменения и проверяем в разделе **Межсетевой экран > Правила > WAN**.
Для доступа из домашней сети нужно добавить зеркальный NAT в разделе **Межсетевой экран > Настройки > Дополнительно** ставим галочки **Отображение для перенаправлений портов** и **Автоматический исходящий NAT для отображения** Для доступа из домашней сети нужно добавить зеркальный NAT в разделе **Межсетевой экран > Настройки > Дополнительно** ставим галочки:
- **Отображение для перенаправлений портов**
- **Автоматический исходящий NAT для отображения**

View File

@@ -1,62 +1,76 @@
# Настройка Proxmox # 🖥️ Настройка Proxmox
## 1. Отключаем enterprise репозитории и обновляем пакеты > Этот гайд описывает установку и настройку Proxmox VE для виртуализации OPNsense и Debian.
---
## 1⃣ Отключение enterprise репозиториев и обновление пакетов
В разделе **Сервер > Обновления > Репозитории**: В разделе **Сервер > Обновления > Репозитории**:
- Отключаем всё с упоминанием enterprise - Отключаем всё с упоминанием enterprise
- Добавляем No-Subscription репозиторий - Добавляем No-Subscription репозиторий
Затем обновляем пакеты в терминале сервера: Затем обновляем пакеты в терминале сервера:
```bash ```bash
apt update && apt upgrade apt update && apt upgrade
``` ```
## 2. Загружаем на сервер ISO образы ---
## 2⃣ Загрузка ISO образов
Загружаем на сервер ISO образы:
- Для OPNsense выбираем образ типа **DVD** - Для OPNsense выбираем образ типа **DVD**
- Для Debian нужен minimal образ netinst - Для Debian нужен minimal образ netinst
- Копируем файлы в разделе **Сервер > local > ISO-образы** - Копируем файлы в разделе **Сервер > local > ISO-образы**
## 3. Создаём ВМ с OPNsense ---
## 3⃣ Создание ВМ с OPNsense
Настройки ВМ: Настройки ВМ:
- **Общее > Запуск при загрузке**: Включаем - **Общее > Запуск при загрузке:** Включаем
- **ОС > Гостевая ОС**: Other (OPNsense - это FreeBSD) - **ОС > Гостевая ОС:** Other (OPNsense это FreeBSD)
- **Система > Агент QEMU**: включить (нужен для просмотра информации о системе в гипервизоре) - **Система > Агент QEMU:** включить (нужен для просмотра информации о системе в гипервизоре)
- **Диски > Шина**: SCSI - **Диски > Шина:** SCSI
- **Размер диска**: 16Гб (достаточно) - **Размер диска:** 16Гб (достаточно)
- **ЦП > Тип**: host - **ЦП > Тип:** host
- **ЦП > Кол-во ядер**: 2 - **ЦП > Кол-во ядер:** 2
- **Объём ОЗУ**:б (не менее 1Гб) - **Объём ОЗУ:** 2Гб (не менее 1Гб)
- **Сеть > Модель**: VirtIO - **Сеть > Модель:** VirtIO
- **Сетевой экран**: отключаем (OPNsense сам решает эту задачу) - **Сетевой экран:** отключаем (OPNsense сам решает эту задачу)
- Остальные настройки по умолчанию - Остальные настройки по умолчанию
Выбираем загруженный ISO-образ и запускаем ВМ. Выбираем загруженный ISO-образ и запускаем ВМ.
**Настройка OPNsense описана в файле [OPNsense.md](OPNsense.md)** **Настройка OPNsense описана в файле [OPNsense.md](./OPNsense.md)**
## 4. Создаём ВМ с Debian ---
> По идее Proxmox работает на ядре Linux и построен на Debian, поэтому мы могли бы использовать LXC контейнер, однако для запуска Docker (Podman) внутри LXC нужны разрешения, и модули ядра, не способствующие безопасности. По сути при таком подходе Docker (Podman) будет работать чуть ли не в самом гипервизоре, что плохо. Поэтому используем ВМ ## 4⃣ Создание ВМ с Debian
> По идее Proxmox работает на ядре Linux и построен на Debian, поэтому мы могли бы использовать LXC контейнер, однако для запуска Docker (Podman) внутри LXC нужны разрешения и модули ядра, не способствующие безопасности. По сути при таком подходе Docker (Podman) будет работать чуть ли не в самом гипервизоре, что плохо. Поэтому используем ВМ.
Настройки ВМ: Настройки ВМ:
- **Общее > Запуск при загрузке**: Включаем - **Общее > Запуск при загрузке:** Включаем
- **ОС > Гостевая ОС**: Linux 6.x - **ОС > Гостевая ОС:** Linux 6.x
- **Система > Агент QEMU**: включить (нужен для просмотра информации о системе в гипервизоре) - **Система > Агент QEMU:** включить (нужен для просмотра информации о системе в гипервизоре)
- **Диски > Шина**: SCSI - **Диски > Шина:** SCSI
- **Размер диска**: 48Гб (и более) - **Размер диска:** 48Гб (и более)
- **ЦП > Тип**: host - **ЦП > Тип:** host
- **ЦП > Кол-во ядер**: 4 (и более) - **ЦП > Кол-во ядер:** 4 (и более)
- **Объём ОЗУ**:б (и более) - **Объём ОЗУ:** 4Гб (и более)
- **Сеть > Модель**: VirtIO - **Сеть > Модель:** VirtIO
- **Сетевой экран**: отключаем (нас прикрывает OPNsense) - **Сетевой экран:** отключаем (нас прикрывает OPNsense)
- Остальные настройки по умолчанию - Остальные настройки по умолчанию
> Если мы хотим добавить внешние диски для хранения данных, нужно дать ВМ доступ к ним через USB. В разделе **Оборудование** нужно добавить USB-устройство. Лучше всего дать доступ ВМ к самому USB-порту, тогда любое устройство в него вставленное будет доступно внутри ВМ, но можно также предоставить доступ к конкретному устройству, в какой порт оно не было бы вставлено. > Если мы хотим добавить внешние диски для хранения данных, нужно дать ВМ доступ к ним через USB. В разделе **Оборудование** нужно добавить USB-устройство. Лучше всего дать доступ ВМ к самому USB-порту, тогда любое устройство в него вставленное будет доступно внутри ВМ, но можно также предоставить доступ к конкретному устройству, в какой порт оно не было бы вставлено.
> >
> Чтобы посмотреть подключенные USB-устройства и скорости их работы запускаем команду `lsusb -t` и ищем наши диски (`Class=Mass Storage`) > Чтобы посмотреть подключенные USB-устройства и скорости их работы, запускаем команду `lsusb -t` и ищем наши диски (`Class=Mass Storage`)
**Настройка Debian описана в файле [Debian.md](Debian.md)** **Настройка Debian описана в файле [Debian.md](./Debian.md)**

116
README.md
View File

@@ -1,38 +1,43 @@
# Home Server Services # 🏠 Home Server Services
> **Home Server Services** - это гайд по настройке и полный набор сервисов в Docker для организации домашнего роутера/сервера! > **Home Server Services** это гайд по настройке и полный набор сервисов в Docker для организации домашнего роутера/сервера!
> >
> Главное - это **модульность** и **воспроизводимая установка**. Можно развернуть за 30 минут! > Главное это **модульность** и **воспроизводимая установка**.
![](./screenshots/grafana.jpg) ![Grafana Dashboard](./screenshots/grafana.jpg)
![](./screenshots/portainer.jpg) ![Portainer Interface](./screenshots/portainer.jpg)
## Мой сервер: ---
- CheckWay Sherman Micro ## 📋 Мой сервер
- **CheckWay Sherman Micro**
- [Intel Celeron J1900](https://technical.city/ru/cpu/Core-2-Duo-E8400-protiv-Celeron-J1900) @ 1.99GHz (64 bit) - [Intel Celeron J1900](https://technical.city/ru/cpu/Core-2-Duo-E8400-protiv-Celeron-J1900) @ 1.99GHz (64 bit)
- 8Gb RAM - 8GB RAM
- 120Gb SSD - 120GB SSD
- 2x 1Gbps (WAN+LAN) - 2x 1Gbps (WAN+LAN)
- Proxmox VE 9.1.4 - **Proxmox VE 9.1.4**
- OPNsense 25.7 - **OPNsense 25.7**
- [CrowdSec](https://www.crowdsec.net) - [CrowdSec](https://www.crowdsec.net)
- Debian 13 (Trixie) Minimal - [AdGuard Home](https://github.com/AdguardTeam/AdGuardHome)
- **Debian 13 (Trixie) Minimal**
- [Podman](https://podman.io) - [Podman](https://podman.io)
## О проекте: ---
## 🚀 О проекте
- **Полнофункциональный домашний сервер** - **Полнофункциональный домашний сервер**
- Две одновременно запущенные операционные системы запущенны в гипервизоре Proxmox - Две одновременно запущенные операционные системы в гипервизоре Proxmox
- OPNsense выполняет функции роутера, DHCP и NTP сервера, защищает домашнюю сеть от вторжений с CrowSec - OPNsense выполняет функции роутера, DHCP и NTP сервера, защищает домашнюю сеть от вторжений с CrowSec
- В Debian в Podman запущены контейнеры с сервисами - В Debian в Podman запущены контейнеры с сервисами
- **Все сервисы настроены через Docker Compose (совместим с Podman)** для легкого управления и быстрого запуска - **Все сервисы настроены через Docker Compose** (совместим с Podman) для легкого управления и быстрого запуска
- **Мониторинг системы через Grafana** с готовым дашбордом - **Мониторинг системы через Grafana** с готовым дашбордом
- **Файловый сервер Samba** для доступа к файлам по сети - **Файловый сервер Samba** для доступа к файлам по сети
- Открытый диск только на чтение - Открытый диск только на чтение
- Доступ на запись только после авторизации - Доступ на запись только после авторизации
- **Синхронизация файлов** между устройствами через **Syncthing** - **Синхронизация файлов** между устройствами через **Syncthing**
- Постоянная точка синхронизации позволяет обмениваться файлами между устройствами, даже если они не бывают одновременно в сети - домашний сервер выступает посредником - Постоянная точка синхронизации позволяет обмениваться файлами между устройствами, даже если они не бывают одновременно в сети домашний сервер выступает посредником
- **BitTorrent клиент Transmission** с веб-интерфейсом - **BitTorrent клиент Transmission** с веб-интерфейсом
- **SSH туннелирование через AutoSSH** - **SSH туннелирование через AutoSSH**
- Можно пробросить порт на удалённый VPS, автоматически переподключается при потере соединения - Можно пробросить порт на удалённый VPS, автоматически переподключается при потере соединения
@@ -40,46 +45,67 @@
- Автоматическое получение и обновление SSL сертификатов через Let's Encrypt - Автоматическое получение и обновление SSL сертификатов через Let's Encrypt
- Автоматическое обновление DNS записей у регистратора [рег.ру](https://www.reg.ru) - Автоматическое обновление DNS записей у регистратора [рег.ру](https://www.reg.ru)
- **Git-сервер Gitea** для хостинга репозиториев - **Git-сервер Gitea** для хостинга репозиториев
- **FileBrowser** - веб-интерфейс для управления файлами через браузер - **FileBrowser** веб-интерфейс для управления файлами через браузер
- **Matrix Synapse** - собственный сервер для мессенджера Matrix с веб-клиентом Element - **Matrix Synapse** собственный сервер для мессенджера Matrix с веб-клиентом Element
- Блокировка рекламы, нежелательной слежки, частичная защита от атак с помощью **Pi-hole** - Блокировка рекламы, нежелательной слежки, частичная защита от атак с помощью **AdGuard Home**
- Управление контейнерами через **Portainer** - Управление контейнерами через **Portainer**
- Все **сервисы используют переменные окружения** для гибкой настройки и примеры конфигурации - Все **сервисы используют переменные окружения** для гибкой настройки и примеры конфигурации
## Подготовка: ---
- Купить белый IP адрес у провайдера ## 📝 Подготовка
- Купить домен второго уровня у регистратора [рег.ру](https://www.reg.ru)
- [В настройках API рег.ру](https://www.reg.ru/user/account/settings/api/) добавить CIDR вашего провайдера (чтобы при смене IP наш скрипт смог обновить DNS записи)
- В настройках DNS-серверов зоны указать бесплатные DNS-серверы рег.ру: `ns1.reg.ru`, `ns2.reg.ru`
После этих шагов можно переходить к настройке сервера. **[Первым шагом установим гипервизор Proxmox](./Proxmox.md)** Перед началом установки необходимо выполнить следующие шаги:
## Использование: 1. **Купить белый IP адрес** у провайдера
2. **Купить домен второго уровня** у регистратора [рег.ру](https://www.reg.ru)
3. [В настройках API рег.ру](https://www.reg.ru/user/account/settings/api/) добавить CIDR вашего провайдера (чтобы при смене IP наш скрипт смог обновить DNS записи)
4. В настройках DNS-серверов зоны указать бесплатные DNS-серверы рег.ру: `ns1.reg.ru`, `ns2.reg.ru`
#### После настройки и запуска внутренние сервисы доступны (по умолчанию) по следующим портам: > После выполнения этих шагов можно переходить к настройке сервера. **[Первым шагом установим гипервизор Proxmox](./Proxmox.md)**. Вы также можете установить [Debian с сервисами отдельно, если у вас уже настроен роутер](./Debian.md)
- **Grafana** — порт `3000`: ---
![](./screenshots/grafana.jpg)
- **Portainer** — порт `9000`: ## 🎯 Использование
![](./screenshots/portainer.jpg)
- **Transmission** — порт `9091`: ### Внутренние сервисы
![](./screenshots/transmission.png)
- **Syncthing** — порт `8384`: После настройки и запуска внутренние сервисы доступны (по умолчанию) по следующим портам:
![](./screenshots/syncthing.png)
- **Pi-hole** — порт `8080`: #### Grafana — порт `3000`
![](./screenshots/pihole.png)
#### Внешние сервисы запустятся на указанных в конфиге nginx поддоменах: ![Grafana Dashboard](./screenshots/grafana.jpg)
- **Gitea** #### Portainer — порт `9000`
![](./screenshots/gitea.png)
- **Synapse и Element** ![Portainer Interface](./screenshots/portainer.jpg)
|![](./screenshots/synapse.png)|![](./screenshots/element.png)|
|-|-| #### Transmission — порт `9091`
- **FileBrowser**
![](./screenshots/cloud.png) ![Transmission Interface](./screenshots/transmission.png)
#### Syncthing — порт `8384`
![Syncthing Interface](./screenshots/syncthing.png)
#### Matrix Admin — порт `8009`
![Matrix Admin Interface](./screenshots/synapse-admin.png)
### Внешние сервисы
Внешние сервисы запустятся на указанных в конфиге nginx поддоменах:
#### Gitea
![Gitea Interface](./screenshots/gitea.png)
#### Synapse и Element
| Synapse | Element |
|---------|---------|
| ![Synapse Interface](./screenshots/synapse.png) | ![Element Interface](./screenshots/element.png) |
#### FileBrowser
![FileBrowser Interface](./screenshots/cloud.png)

View File

@@ -1,27 +1,35 @@
# Настройка сервисов # ⚙️ Настройка сервисов
> Этот гайд описывает настройку и запуск всех сервисов в контейнерах.
---
## 1⃣ Portainer — WebUI для управления контейнерами
> Для запуска Portainer требуется активный Docker сокет. В Podman по умолчанию его нет, так как это является потенциальным вектором атаки. Запускайте сокет только для конкретного пользователя (не root!)
## 1. [Portainer](./portainer/) - WebUI для управления контейнерами
> Для запуска Portainer требуется активный Docker сокет. В Podman по-умолчанию его нет, так как это является потенциальным вектором атаки. Запускайте сокет только для конкретного пользователя (не root!)
```bash ```bash
cd portainer cd portainer
cp .env.example .env && vim .env cp .env.example .env && vim .env
systemctl --user enable --now podman.socket systemctl --user enable --now podman.socket
podman-compose up -d podman-compose up -d
podman generate systemd --new --files --name portainer
systemctl --user enable ./container-portainer.service
``` ```
## 2. [Grafana](./grafana/) - Dashboard со статистикой загруженности сервера ---
> Proxmox предоставляет достаточно информации об использовании ресурсов системы, но если вы ставите Debian как контейнеров сервисов отдельно, вам может потребоваться Grafana
## 2⃣ Grafana — Dashboard со статистикой загруженности сервера
> Proxmox предоставляет достаточно информации об использовании ресурсов системы, но если вы ставите Debian как контейнер сервисов отдельно, вам может потребоваться Grafana
```bash ```bash
cd grafana cd grafana
cp .env.example .env && vim .env cp .env.example .env && vim .env
podman-compose up -d podman-compose up -d
podman generate systemd --new --files --name portainer
systemctl --user enable ./container-portainer.service
``` ```
### 3. [AutoSSH](./autossh/) - SSH тунель, проброс портов ---
## 3⃣ AutoSSH — SSH туннель, проброс портов
```bash ```bash
cd autossh cd autossh
@@ -29,8 +37,9 @@ cp .env.example .env && vim .env
podman-compose up -d --build podman-compose up -d --build
``` ```
### 4. [Samba](./samba/) - сетевой диск в локальной сети ---
## 4⃣ Samba — сетевой диск в локальной сети
```bash ```bash
cd samba cd samba
@@ -38,7 +47,7 @@ cp .env.example .env && vim .env
podman-compose up -d podman-compose up -d
``` ```
> Samba работает на 139 и 445 порту, для доступа к ним нужны root права. Чтобы не запускать контейнер от имени root пробросим порты из контейнера на 1139 и 1445 порты соответственно, и добавим правила в iptables для переадресации трафика > Samba работает на 139 и 445 порту, для доступа к ним нужны root права. Чтобы не запускать контейнер от имени root, пробросим порты из контейнера на 1139 и 1445 порты соответственно, и добавим правила в iptables для переадресации трафика:
```bash ```bash
sudo iptables -t nat -A PREROUTING -p tcp --dport 139 -j REDIRECT --to-ports 1139 sudo iptables -t nat -A PREROUTING -p tcp --dport 139 -j REDIRECT --to-ports 1139
@@ -50,7 +59,9 @@ sudo apt install iptables-persistent
sudo netfilter-persistent save # сохранить текущие iptables sudo netfilter-persistent save # сохранить текущие iptables
``` ```
### 5. [Transmission](./transmission/) - qBitTorrent клиент ---
## 5⃣ Transmission — BitTorrent клиент
```bash ```bash
cd transmission cd transmission
@@ -58,9 +69,11 @@ cp .env.example .env && vim .env
podman-compose up -d podman-compose up -d
``` ```
В настройках клиента указанная в `.env` папка доступна по пути `/downloads`. Можно подключиться с помощью [Transmission Remote GUI](https://github.com/transmission-remote-gui/transgui) или [Transmission Qt](https://transmissionbt.com/download.html) > В настройках клиента указанная в `.env` папка доступна по пути `/downloads`. Можно подключиться с помощью [Transmission Remote GUI](https://github.com/transmission-remote-gui/transgui) или [Transmission Qt](https://transmissionbt.com/download.html)
### 6. [Syncthing](./syncthing/) - синхронизация файлов между устройствами ---
## 6⃣ Syncthing — синхронизация файлов между устройствами
```bash ```bash
cd syncthing cd syncthing
@@ -69,7 +82,9 @@ mkdir config && podman unshare chown -R 1000:1000 config
podman-compose up -d podman-compose up -d
``` ```
### 7. [Gitea](./gitea/) ---
## 7⃣ Gitea — Git-сервер
```bash ```bash
cd gitea cd gitea
@@ -80,9 +95,11 @@ mkdir db && podman unshare chown -R 1000:1000 db
podman-compose up -d podman-compose up -d
``` ```
Gitea конфигурируется позже, уже в веб-форме. Обязательно **отключаем самостоятельную регистрацию** и создаём администратора (пользователя по умолчанию). Остальное не трогаем, уже сконфигурировано в `.env` > Gitea конфигурируется позже, уже в веб-форме. Обязательно **отключаем самостоятельную регистрацию** и создаём администратора (пользователя по умолчанию). Остальное не трогаем, уже сконфигурировано в `.env`
### 8. [Cloud (FileBrowser)](./cloud/) ---
## 8⃣ Cloud (FileBrowser) — веб-интерфейс для управления файлами
```bash ```bash
cd cloud cd cloud
@@ -91,13 +108,17 @@ touch filebrowser.db && podman unshare chown -R 1000:1000 filebrowser.db
podman-compose up -d podman-compose up -d
``` ```
### 9. [Matrix](./matrix/) ---
## 9⃣ Matrix — собственный сервер для мессенджера Matrix
```bash ```bash
cd matrix cd matrix
mkdir data && podman unshare chown -R 1000:1000 data mkdir data && podman unshare chown -R 1000:1000 data
podman run -it --rm -v "$(pwd)/data:/data" -e SYNAPSE_SERVER_NAME=MATRIX.DOMAIN.ru -e SYNAPSE_REPORT_STATS=no docker.io/matrixdotorg/synapse:latest generate podman run -it --rm -v "$(pwd)/data:/data" -e SYNAPSE_SERVER_NAME=MATRIX.DOMAIN.ru -e SYNAPSE_REPORT_STATS=no docker.io/matrixdotorg/synapse:latest generate
``` ```
> ⚠️ Замените `MATRIX.DOMAIN.ru` на ваш домен для Matrix сервера.
Меняем базу данных на PostgreSQL и прописываем БД, пользователя, пароль: Меняем базу данных на PostgreSQL и прописываем БД, пользователя, пароль:
```yaml ```yaml
@@ -111,31 +132,37 @@ database:
cp_min: 5 cp_min: 5
cp_max: 10 cp_max: 10
``` ```
```bash ```bash
mkdir db && podman unshare chown -R 1000:1000 db mkdir db && podman unshare chown -R 1000:1000 db
cp .env.example .env && vim .env cp .env.example .env && vim .env
podman-compose up -d podman-compose up -d
``` ```
Создаём пользователя Создаём пользователя:
```bash ```bash
podman exec -it matrix-synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008 podman exec -it matrix-synapse register_new_matrix_user -c /data/homeserver.yaml http://localhost:8008
``` ```
### 10. [Nginx Reverse Proxy (Entrypoint)](./proxy) ---
## 🔟 Nginx Reverse Proxy (Entrypoint)
```bash ```bash
cd proxy cd proxy
cp .env.example .env && vim .env cp .env.example .env && vim .env
``` ```
Создаём конфиг для DynDNS: ### Создание конфига для DynDNS
```bash ```bash
cp ddns/domains.txt.example ddns/domains.txt && vim ddns/domains.txt cp ddns/domains.txt.example ddns/domains.txt && vim ddns/domains.txt
``` ```
Нужно указать ресурсные записи `@` и `www` для доступа к домену второго уровня напрямую. Также нужно добавить домены 3-го уровня для: gitea, cloud (filebrowser), matrix server (synapse), matrix client (element). > Нужно указать ресурсные записи `@` и `www` для доступа к домену второго уровня напрямую. Также нужно добавить домены 3-го уровня для: gitea, cloud (filebrowser), matrix server (synapse), matrix client (element).
### Первоначальная настройка SSL
В первый раз SSL сертификаты нужно создать вручную. В первый раз SSL сертификаты нужно создать вручную.
@@ -145,14 +172,17 @@ cp ddns/domains.txt.example ddns/domains.txt && vim ddns/domains.txt
podman-compose -f init-compose.yml up -d --build podman-compose -f init-compose.yml up -d --build
``` ```
Проверяем по логам в portainer и в личном кабинете рег.ру что ресурсные записи обновились. Ожидаем пока DNS обновит информацию о наших поддоменах (занимает от 15 минут до 24 часов). Проверяем по логам в portainer и в личном кабинете рег.ру, что ресурсные записи обновились. Ожидаем, пока DNS обновит информацию о наших поддоменах (занимает от 15 минут до 24 часов).
Затем создаём SSL сертификаты на каждый домен(-ы) с помощью команды:
Затем создаём SSL сертификаты на каждый домен(-ы) c помощью команды
```bash ```bash
podman-compose run --rm --entrypoint "certbot" certbot certonly --webroot --webroot-path=/var/www/certbot --email your-email@gmail.com --agree-tos --no-eff-email -d domain.com -d domain2.com podman-compose run --rm --entrypoint "certbot" certbot certonly --webroot --webroot-path=/var/www/certbot --email your-email@gmail.com --agree-tos --no-eff-email -d domain.com -d domain2.com
``` ```
Настраиваем Nginx: > ⚠️ Замените `your-email@gmail.com` на ваш email и `domain.com`, `domain2.com` на ваши домены.
### Настройка Nginx
```bash ```bash
cd nginx/conf.d cd nginx/conf.d
@@ -160,7 +190,7 @@ cp default.conf.example default.conf
vim default.conf vim default.conf
``` ```
Запускаем основной контейнер: ### Запуск основного контейнера
```bash ```bash
podman-compose -f init-compose.yml down podman-compose -f init-compose.yml down

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB