Refactoring
201
README.md
@@ -25,16 +25,26 @@
|
|||||||
- [Grafana](./grafana/) - Загруженность сервера
|
- [Grafana](./grafana/) - Загруженность сервера
|
||||||
- [Prometheus](./grafana/prometheus.yml)
|
- [Prometheus](./grafana/prometheus.yml)
|
||||||
- [Node Exporter](./grafana/)
|
- [Node Exporter](./grafana/)
|
||||||
|
- [Proxy](./proxy/) - Reverse proxy
|
||||||
|
- [Nginx](./proxy/nginx/)
|
||||||
|
- [DDNS](./proxy/ddns/) - Автоматическое обновление DNS записей у регистратора [рег.ру](https://www.reg.ru)
|
||||||
|
- Let's Encrypt - Автоматическое обновление SSL сертификатов на все домены
|
||||||
- [Samba](./samba/) - Сетевой диск
|
- [Samba](./samba/) - Сетевой диск
|
||||||
- [Syncthing](./syncthing/) - Синхронизация данных между устройствами
|
- [Syncthing](./syncthing/) - Синхронизация данных между устройствами
|
||||||
- [Transmission](./transmission/) - BitTorrent клиент
|
- [Transmission](./transmission/) - BitTorrent клиент
|
||||||
- [AutoSSH](./autossh/) - SSH тунель
|
- [AutoSSH](./autossh/) - SSH тунель
|
||||||
|
- [Gitea](./gitea/) - Git-сервер
|
||||||
|
- [Cloud](./cloud/) - FileBrowser - веб-интерфейс для управления файлами
|
||||||
|
- [Matrix](./matrix/) - сервер Matrix
|
||||||
|
- [Synapse](./matrix/create_config.sh) - Matrix сервер Synapse
|
||||||
|
- [Element](./matrix/docker-compose.yml) - Matrix веб-клиент Element
|
||||||
|
- [Pi-hole](./pihole/) - DNS фильтр (блокировка рекламы, слежки, защита от атак)
|
||||||
|
|
||||||
## О проекте:
|
## О проекте:
|
||||||
|
|
||||||
- **Полнофункциональный домашний сервер**
|
- **Полнофункциональный домашний сервер**
|
||||||
- **Все сервисы настроены через Docker Compose** для легкого управления и быстрого запуска
|
- **Все сервисы настроены через Docker Compose** для легкого управления и быстрого запуска
|
||||||
- Мониторинг системы через Grafana с готовыми дашбордами
|
- **Мониторинг системы через Grafana** с готовыми дашбордами
|
||||||
- **Файловый сервер Samba** для доступа к файлам по сети
|
- **Файловый сервер Samba** для доступа к файлам по сети
|
||||||
- Открытый диск только на чтение
|
- Открытый диск только на чтение
|
||||||
- Доступ на запись только после авторизации
|
- Доступ на запись только после авторизации
|
||||||
@@ -43,29 +53,184 @@
|
|||||||
- **BitTorrent клиент Transmission** с веб-интерфейсом
|
- **BitTorrent клиент Transmission** с веб-интерфейсом
|
||||||
- **SSH туннелирование через AutoSSH**
|
- **SSH туннелирование через AutoSSH**
|
||||||
- Можно пробросить порт на удалённый VPS, автоматически переподключается при потере соединения
|
- Можно пробросить порт на удалённый VPS, автоматически переподключается при потере соединения
|
||||||
|
- **Nginx reverse proxy** для маршрутизации трафика к сервисам
|
||||||
|
- Автоматическое получение и обновление SSL сертификатов через Let's Encrypt
|
||||||
|
- Автоматическое обновление DNS записей у регистратора [рег.ру](https://www.reg.ru)
|
||||||
|
- **Git-сервер Gitea** для хостинга собственных репозиториев
|
||||||
|
- **FileBrowser** - веб-интерфейс для управления файлами через браузер
|
||||||
|
- **Matrix Synapse** - собственный сервер для мессенджера Matrix с веб-клиентом Element
|
||||||
|
- Блокировка рекламы, нежелательной слежки, частичная защита от атак с помощью **Pi-hole**
|
||||||
- Управление Docker через **Portainer с веб-интерфейсом**
|
- Управление Docker через **Portainer с веб-интерфейсом**
|
||||||
- Скрипт для снижения энергопотребления CPU
|
- Скрипт для снижения энергопотребления
|
||||||
- Все **сервисы используют переменные окружения** для гибкой настройки и примеры конфигураций
|
- Все **сервисы используют переменные окружения** для гибкой настройки и примеры конфигураций
|
||||||
- Автоматический перезапуск контейнеров при сбоях
|
- Автоматический перезапуск контейнеров при сбоях
|
||||||
|
|
||||||
|
## Подготовка:
|
||||||
|
|
||||||
|
- Купить белый IP адрес у провайдера
|
||||||
|
- В настройках роутера пробросить 80 и 443 порт на сервер
|
||||||
|
- Купить домен второго уровня у регистратора [рег.ру](https://www.reg.ru)
|
||||||
|
- [В настройках API рег.ру](https://www.reg.ru/user/account/settings/api/) добавить CIDR вашего провайдера (чтобы при смене IP наш скрипт смог обновить DNS записи)
|
||||||
|
- В настройках DNS-серверов зоны указать бесплатные DNS-серверы рег.ру: `ns1.reg.ru`, `ns2.reg.ru`
|
||||||
|
|
||||||
## Запуск:
|
## Запуск:
|
||||||
|
|
||||||
1. **Настройте переменные окружения:**
|
### 1. Portainer
|
||||||
Создайте файл `.env` в директории сервиса с необходимыми переменными по шаблону.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd <service-folder>
|
cd portainer
|
||||||
cp .env.example .env
|
cp .env.example .env && vim .env
|
||||||
```
|
sudo docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
Отредактируйте `.env` под свои задачи.
|
### 2. Grafana
|
||||||
|
|
||||||
2. **Запустите нужные сервисы:**
|
```bash
|
||||||
```bash
|
cd grafana
|
||||||
docker-compose -f portainer/docker-compose.yml up -d
|
cp .env.example .env && vim .env
|
||||||
docker-compose -f grafana/docker-compose.yml up -d
|
sudo docker compose up -d
|
||||||
docker-compose -f samba/docker-compose.yml up -d
|
```
|
||||||
docker-compose -f syncthing/docker-compose.yml up -d
|
|
||||||
docker-compose -f transmission/docker-compose.yml up -d
|
### 3. AutoSSH
|
||||||
docker-compose -f autossh/docker-compose.yml up -d
|
|
||||||
```
|
```bash
|
||||||
|
cd autossh
|
||||||
|
cp .env.example .env && vim .env
|
||||||
|
sudo docker compose up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Samba
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd samba
|
||||||
|
cp .env.example .env && vim .env
|
||||||
|
sudo docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### 5. Transmission
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd transmission
|
||||||
|
cp .env.example .env && vim .env
|
||||||
|
sudo docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. Syncthing
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd syncthing
|
||||||
|
cp .env.example .env && vim .env
|
||||||
|
sudo docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### 7. Gitea
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd gitea
|
||||||
|
cp .env.example .env && vim .env
|
||||||
|
sudo docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Примечание:** Конфигурируется позже, уже в веб-форме.
|
||||||
|
|
||||||
|
### 8. Cloud (FileBrowser)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd cloud
|
||||||
|
cp .env.example .env && vim .env
|
||||||
|
touch filebrowser.db
|
||||||
|
sudo docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9. Matrix
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd matrix
|
||||||
|
cp .env.example .env && vim .env
|
||||||
|
```
|
||||||
|
|
||||||
|
Создаём конфиг [по примеру](./matrix/create_config.sh):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
Создаём пользователя [по примеру](./matrix/create_user.sh).
|
||||||
|
|
||||||
|
### 10. Pi-hole
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd pihole
|
||||||
|
cp .env.example .env && vim .env
|
||||||
|
sudo docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
[Устанавливаем пароль](./pihole/set-password.sh) (оставить пустым для доступа без пароля)
|
||||||
|
|
||||||
|
В разделе Settings > DNS выбираем вышестоящие DNS сервер. Включаем сверху расширенные настройки и в блоке interface settings выбираем пункт `Permit all origins`. В разделе Lists добавляем [списки доменов для блокировки](./pihole/block-lists.txt). Затем обновляем их в Tools > Update Gravity. В настройках ПК (роутера) устанавливаем в качестве DNS наш сервер.
|
||||||
|
|
||||||
|
### 10. Nginx Reverse Proxy (Entrypoint)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd proxy
|
||||||
|
cp .env.example .env && vim .env
|
||||||
|
```
|
||||||
|
|
||||||
|
Создаём конфиг для DynDNS:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker compose -f init-compose.yml up -d --build
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверяем по логам в portainer и в личном кабинете рег.ру что ресурсные записи обновились. Ожидаем пока DNS обновит информацию о наших поддоменах (занимает от 15 минут до 24 часов). Затем создаём SSL сертификаты на каждый домен(-ы) [по примеру](./proxy/create-first-cert-example.sh).
|
||||||
|
|
||||||
|
Настраиваем Nginx:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd nginx/conf.d
|
||||||
|
cp default.conf.example default.conf
|
||||||
|
vim default.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
Запускаем основной контейнер:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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**
|
||||||
|

|
||||||
|
|||||||
@@ -28,9 +28,17 @@ services:
|
|||||||
-L 0.0.0.0:${SSH_TUNNEL_TO:?}:localhost:${SSH_TUNNEL_FROM:?}
|
-L 0.0.0.0:${SSH_TUNNEL_TO:?}:localhost:${SSH_TUNNEL_FROM:?}
|
||||||
${SSH_USER:?}@${SSH_HOST:?}
|
${SSH_USER:?}@${SSH_HOST:?}
|
||||||
-p ${SSH_PORT:-22}
|
-p ${SSH_PORT:-22}
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '0.1'
|
||||||
|
memory: 64M
|
||||||
|
reservations:
|
||||||
|
memory: 32M
|
||||||
networks:
|
networks:
|
||||||
- autossh_network
|
- autossh_network
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
autossh_network:
|
autossh_network:
|
||||||
|
name: autossh_network
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
@@ -24,9 +24,17 @@ services:
|
|||||||
filebrowser users add ${ADMIN_USER:?} ${ADMIN_PASSWORD:?} --perm.admin --scope "." --database /database/filebrowser.db || \
|
filebrowser users add ${ADMIN_USER:?} ${ADMIN_PASSWORD:?} --perm.admin --scope "." --database /database/filebrowser.db || \
|
||||||
filebrowser users update ${ADMIN_USER:?} --password ${ADMIN_PASSWORD:?} --scope "." --database /database/filebrowser.db
|
filebrowser users update ${ADMIN_USER:?} --password ${ADMIN_PASSWORD:?} --scope "." --database /database/filebrowser.db
|
||||||
filebrowser --database /database/filebrowser.db --address 0.0.0.0 --port 80 --root /srv
|
filebrowser --database /database/filebrowser.db --address 0.0.0.0 --port 80 --root /srv
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '1.0'
|
||||||
|
memory: 512M
|
||||||
|
reservations:
|
||||||
|
memory: 256M
|
||||||
networks:
|
networks:
|
||||||
- cloud_network
|
- cloud_network
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
cloud_network:
|
cloud_network:
|
||||||
|
name: cloud_network
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
@@ -19,6 +19,13 @@ services:
|
|||||||
# - ${GITEA_SSH_PORT:?}:2222
|
# - ${GITEA_SSH_PORT:?}:2222
|
||||||
depends_on:
|
depends_on:
|
||||||
- gitea-db
|
- gitea-db
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '1.0'
|
||||||
|
memory: 512M
|
||||||
|
reservations:
|
||||||
|
memory: 256M
|
||||||
networks:
|
networks:
|
||||||
- gitea_network
|
- gitea_network
|
||||||
|
|
||||||
@@ -32,9 +39,17 @@ services:
|
|||||||
- POSTGRES_DB=${GITEA_DB:?}
|
- POSTGRES_DB=${GITEA_DB:?}
|
||||||
volumes:
|
volumes:
|
||||||
- ./db:/var/lib/postgresql/data
|
- ./db:/var/lib/postgresql/data
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '1.0'
|
||||||
|
memory: 512M
|
||||||
|
reservations:
|
||||||
|
memory: 256M
|
||||||
networks:
|
networks:
|
||||||
- gitea_network
|
- gitea_network
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
gitea_network:
|
gitea_network:
|
||||||
|
name: gitea_network
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
@@ -9,6 +9,13 @@ services:
|
|||||||
command:
|
command:
|
||||||
- "--config.file=/etc/prometheus/prometheus.yml"
|
- "--config.file=/etc/prometheus/prometheus.yml"
|
||||||
- "--storage.tsdb.path=/prometheus"
|
- "--storage.tsdb.path=/prometheus"
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '0.5'
|
||||||
|
memory: 512M
|
||||||
|
reservations:
|
||||||
|
memory: 256M
|
||||||
networks:
|
networks:
|
||||||
- grafana_network
|
- grafana_network
|
||||||
|
|
||||||
@@ -24,6 +31,13 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- GF_SECURITY_ADMIN_USER=${GRAFANA_USER:?} # Ваш логин
|
- GF_SECURITY_ADMIN_USER=${GRAFANA_USER:?} # Ваш логин
|
||||||
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:?} # Ваш пароль
|
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:?} # Ваш пароль
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '0.5'
|
||||||
|
memory: 256M
|
||||||
|
reservations:
|
||||||
|
memory: 128M
|
||||||
networks:
|
networks:
|
||||||
- grafana_network
|
- grafana_network
|
||||||
|
|
||||||
@@ -41,6 +55,13 @@ services:
|
|||||||
- "--path.sysfs=/host/sys"
|
- "--path.sysfs=/host/sys"
|
||||||
- "--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)"
|
- "--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)"
|
||||||
- "--collector.systemd"
|
- "--collector.systemd"
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '0.1'
|
||||||
|
memory: 64M
|
||||||
|
reservations:
|
||||||
|
memory: 32M
|
||||||
networks:
|
networks:
|
||||||
- grafana_network
|
- grafana_network
|
||||||
|
|
||||||
@@ -50,4 +71,5 @@ volumes:
|
|||||||
|
|
||||||
networks:
|
networks:
|
||||||
grafana_network:
|
grafana_network:
|
||||||
|
name: grafana_network
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
docker run -it --rm \
|
docker run -it --rm \
|
||||||
-v "$(pwd)/synapse_data:/data" \
|
-v "$(pwd)/data:/data" \
|
||||||
-e SYNAPSE_SERVER_NAME=example.com \
|
-e SYNAPSE_SERVER_NAME=matrix.domain.ru \
|
||||||
-e SYNAPSE_REPORT_STATS=yes \
|
-e SYNAPSE_REPORT_STATS=no \
|
||||||
matrixdotorg/synapse:latest generate
|
matrixdotorg/synapse:latest generate
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
docker exec -it matrix-synapse-1 register_new_matrix_user \
|
docker exec -it matrix-synapse register_new_matrix_user \
|
||||||
-c /data/homeserver.yaml http://localhost:8008
|
-c /data/homeserver.yaml https://matrix.domain.ru
|
||||||
|
|||||||
@@ -9,6 +9,13 @@ services:
|
|||||||
- SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
|
- SYNAPSE_CONFIG_PATH=/data/homeserver.yaml
|
||||||
depends_on:
|
depends_on:
|
||||||
- matrix-db
|
- matrix-db
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '1.0'
|
||||||
|
memory: 512M
|
||||||
|
reservations:
|
||||||
|
memory: 256M
|
||||||
networks:
|
networks:
|
||||||
- matrix_network
|
- matrix_network
|
||||||
|
|
||||||
@@ -23,6 +30,13 @@ services:
|
|||||||
- POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C
|
- POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C
|
||||||
volumes:
|
volumes:
|
||||||
- ./db:/var/lib/postgresql/data
|
- ./db:/var/lib/postgresql/data
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '1.0'
|
||||||
|
memory: 512M
|
||||||
|
reservations:
|
||||||
|
memory: 256M
|
||||||
networks:
|
networks:
|
||||||
- matrix_network
|
- matrix_network
|
||||||
|
|
||||||
@@ -30,9 +44,17 @@ services:
|
|||||||
image: vectorim/element-web:latest
|
image: vectorim/element-web:latest
|
||||||
container_name: matrix-element
|
container_name: matrix-element
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '1.0'
|
||||||
|
memory: 256M
|
||||||
|
reservations:
|
||||||
|
memory: 128M
|
||||||
networks:
|
networks:
|
||||||
- matrix_network
|
- matrix_network
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
matrix_network:
|
matrix_network:
|
||||||
|
name: matrix_network
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
@@ -1,3 +1 @@
|
|||||||
PIHOLE_PASSWORD=password
|
|
||||||
PIHOLE_IP=192.168.32.1
|
PIHOLE_IP=192.168.32.1
|
||||||
PIHOLE_DNS=77.88.8.8;8.8.8.8;8.8.4.4
|
|
||||||
|
|||||||
10
pihole/block-lists.txt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
|
||||||
|
https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/multi.txt
|
||||||
|
https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt
|
||||||
|
https://v.firebog.net/hosts/Easyprivacy.txt
|
||||||
|
https://raw.githubusercontent.com/ElkyBoy/ruadlist-pihole/refs/heads/main/adservers_pihole.txt
|
||||||
|
https://abp.oisd.nl/basic/
|
||||||
|
https://adaway.org/hosts.txt
|
||||||
|
https://v.firebog.net/hosts/RPiList-Malware.txt
|
||||||
|
https://raw.githubusercontent.com/anudeepND/blacklist/master/adservers.txt
|
||||||
|
https://raw.githubusercontent.com/mmotti/pihole-regex/refs/heads/master/regex.list
|
||||||
@@ -9,13 +9,25 @@ services:
|
|||||||
- "53:53/tcp"
|
- "53:53/tcp"
|
||||||
- "53:53/udp"
|
- "53:53/udp"
|
||||||
# - "67:67/udp" # Раскомментируйте, если планируете использовать Pi-hole как DHCP-сервер
|
# - "67:67/udp" # Раскомментируйте, если планируете использовать Pi-hole как DHCP-сервер
|
||||||
- "8080:80/tcp" # Веб-интерфейс будет доступен на порту 8080 (чтобы не занимать 80)
|
- "8080:80/tcp" # Веб-интерфейс будет доступен на порту 8080 (чтобы не занимать 80)
|
||||||
environment:
|
environment:
|
||||||
TZ: 'Europe/Samara' # Укажите ваш часовой пояс
|
TZ: "Europe/Samara" # Укажите ваш часовой пояс
|
||||||
WEBPASSWORD: '${PIHOLE_PASSWORD:?}' # Пароль для входа в админку
|
FTLCONF_LOCAL_IPV4: "${PIHOLE_IP:?}" # IP-адрес вашего хоста (сервера)
|
||||||
FTLCONF_LOCAL_IPV4: '${PIHOLE_IP:?}' # IP-адрес вашего хоста (сервера)
|
|
||||||
PIHOLE_DNS_: '${PIHOLE_DNS:?}' # Вышестоящие DNS-серверы
|
|
||||||
volumes:
|
volumes:
|
||||||
- './etc-pihole:/etc/pihole'
|
- "./etc-pihole:/etc/pihole"
|
||||||
- './etc-dnsmasq.d:/etc/dnsmasq.d'
|
- "./etc-dnsmasq.d:/etc/dnsmasq.d"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: "0.25"
|
||||||
|
memory: 128M
|
||||||
|
reservations:
|
||||||
|
memory: 64M
|
||||||
|
networks:
|
||||||
|
- pihole_network
|
||||||
|
|
||||||
|
networks:
|
||||||
|
pihole_network:
|
||||||
|
name: pihole_network
|
||||||
|
driver: bridge
|
||||||
|
|||||||
@@ -12,6 +12,13 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "${PORTAINER_PORT:?}:9000"
|
- "${PORTAINER_PORT:?}:9000"
|
||||||
command: -H unix:///var/run/docker.sock
|
command: -H unix:///var/run/docker.sock
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '0.25'
|
||||||
|
memory: 128M
|
||||||
|
reservations:
|
||||||
|
memory: 64M
|
||||||
networks:
|
networks:
|
||||||
- portainer_network
|
- portainer_network
|
||||||
|
|
||||||
@@ -20,4 +27,5 @@ volumes:
|
|||||||
|
|
||||||
networks:
|
networks:
|
||||||
portainer_network:
|
portainer_network:
|
||||||
|
name: portainer_network
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
docker compose -f init-compose.yml up -d
|
|
||||||
|
|
||||||
docker compose run --rm --entrypoint "certbot" certbot certonly --webroot \
|
docker compose run --rm --entrypoint "certbot" certbot certonly --webroot \
|
||||||
--webroot-path=/var/www/certbot \
|
--webroot-path=/var/www/certbot \
|
||||||
--email your-email@gmail.com \
|
--email your-email@gmail.com \
|
||||||
--agree-tos \
|
--agree-tos \
|
||||||
--no-eff-email \
|
--no-eff-email \
|
||||||
-d domain.com
|
-d domain.com -d domain2.com
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
domain.com
|
domain.ru
|
||||||
@
|
@
|
||||||
www
|
www
|
||||||
subdomain1
|
git
|
||||||
subdomain2
|
disk
|
||||||
|
matrix
|
||||||
domain2.com
|
chat
|
||||||
@
|
|
||||||
www
|
|
||||||
subdomain1
|
|
||||||
@@ -13,6 +13,13 @@ services:
|
|||||||
- ./ssl/www:/var/www/certbot:ro
|
- ./ssl/www:/var/www/certbot:ro
|
||||||
# Подхватываем новые ssl сертификаты
|
# Подхватываем новые ssl сертификаты
|
||||||
command: /bin/sh -c "while :; do sleep 24h & wait $${!}; nginx -s reload; done & nginx -g 'daemon off;'"
|
command: /bin/sh -c "while :; do sleep 24h & wait $${!}; nginx -s reload; done & nginx -g 'daemon off;'"
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '0.25'
|
||||||
|
memory: 128M
|
||||||
|
reservations:
|
||||||
|
memory: 64M
|
||||||
networks:
|
networks:
|
||||||
- proxy_network
|
- proxy_network
|
||||||
- gitea_network
|
- gitea_network
|
||||||
@@ -27,6 +34,13 @@ services:
|
|||||||
- ./ssl/www:/var/www/certbot
|
- ./ssl/www:/var/www/certbot
|
||||||
# Проверяет сертификаты дважды в сутки. Если осталось менее 30 дней - обновляем
|
# Проверяет сертификаты дважды в сутки. Если осталось менее 30 дней - обновляем
|
||||||
entrypoint: "/bin/sh -c 'trap exit TERM; while :; sleep 30s & wait $${!}; do certbot renew; sleep 12h & wait $${!}; done;'"
|
entrypoint: "/bin/sh -c 'trap exit TERM; while :; sleep 30s & wait $${!}; do certbot renew; sleep 12h & wait $${!}; done;'"
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '0.25'
|
||||||
|
memory: 128M
|
||||||
|
reservations:
|
||||||
|
memory: 64M
|
||||||
networks:
|
networks:
|
||||||
- proxy_network
|
- proxy_network
|
||||||
|
|
||||||
@@ -39,18 +53,26 @@ services:
|
|||||||
- ./ddns/domains.txt:/app/domains.txt
|
- ./ddns/domains.txt:/app/domains.txt
|
||||||
environment:
|
environment:
|
||||||
- TZ=Europe/Samara
|
- TZ=Europe/Samara
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '0.25'
|
||||||
|
memory: 128M
|
||||||
|
reservations:
|
||||||
|
memory: 64M
|
||||||
networks:
|
networks:
|
||||||
- proxy_network
|
- proxy_network
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
proxy_network:
|
proxy_network:
|
||||||
|
name: proxy_network
|
||||||
driver: bridge
|
driver: bridge
|
||||||
gitea_network:
|
gitea_network:
|
||||||
external: true
|
external: true
|
||||||
name: gitea_gitea_network
|
name: gitea_network
|
||||||
cloud_network:
|
cloud_network:
|
||||||
external: true
|
external: true
|
||||||
name: cloud_cloud_network
|
name: cloud_network
|
||||||
matrix_network:
|
matrix_network:
|
||||||
external: true
|
external: true
|
||||||
name: matrix_matrix_network
|
name: matrix_network
|
||||||
|
|||||||
@@ -8,6 +8,13 @@ services:
|
|||||||
- ./ddns/domains.txt:/app/domains.txt
|
- ./ddns/domains.txt:/app/domains.txt
|
||||||
environment:
|
environment:
|
||||||
- TZ=Europe/Samara
|
- TZ=Europe/Samara
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '0.25'
|
||||||
|
memory: 128M
|
||||||
|
reservations:
|
||||||
|
memory: 64M
|
||||||
|
|
||||||
nginx-proxy:
|
nginx-proxy:
|
||||||
image: nginx:alpine
|
image: nginx:alpine
|
||||||
@@ -20,3 +27,10 @@ services:
|
|||||||
# Папки для SSL сертификатов
|
# Папки для SSL сертификатов
|
||||||
- ./ssl/conf:/etc/letsencrypt:ro
|
- ./ssl/conf:/etc/letsencrypt:ro
|
||||||
- ./ssl/www:/var/www/certbot:ro
|
- ./ssl/www:/var/www/certbot:ro
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '0.25'
|
||||||
|
memory: 128M
|
||||||
|
reservations:
|
||||||
|
memory: 64M
|
||||||
|
|||||||
@@ -20,9 +20,17 @@ services:
|
|||||||
-g "acl allow execute always = yes"
|
-g "acl allow execute always = yes"
|
||||||
-g "map archive = yes"
|
-g "map archive = yes"
|
||||||
-g "client max protocol = SMB3"
|
-g "client max protocol = SMB3"
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '0.5'
|
||||||
|
memory: 256M
|
||||||
|
reservations:
|
||||||
|
memory: 128M
|
||||||
networks:
|
networks:
|
||||||
- samba_network
|
- samba_network
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
samba_network:
|
samba_network:
|
||||||
|
name: samba_network
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
BIN
screenshots/cloud.png
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
screenshots/element.png
Normal file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
screenshots/gitea.png
Normal file
|
After Width: | Height: | Size: 236 KiB |
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 101 KiB After Width: | Height: | Size: 211 KiB |
BIN
screenshots/synapse.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
screenshots/syncthing.png
Normal file
|
After Width: | Height: | Size: 262 KiB |
BIN
screenshots/transmission.png
Normal file
|
After Width: | Height: | Size: 696 KiB |
@@ -15,9 +15,17 @@ services:
|
|||||||
- 22000:22000/tcp # Передача данных
|
- 22000:22000/tcp # Передача данных
|
||||||
- 22000:22000/udp # Передача данных (QUIC)
|
- 22000:22000/udp # Передача данных (QUIC)
|
||||||
- 21027:21027/udp # Локальный поиск (Discovery)
|
- 21027:21027/udp # Локальный поиск (Discovery)
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '0.5'
|
||||||
|
memory: 256M
|
||||||
|
reservations:
|
||||||
|
memory: 128M
|
||||||
networks:
|
networks:
|
||||||
- syncthing_network
|
- syncthing_network
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
syncthing_network:
|
syncthing_network:
|
||||||
|
name: syncthing_network
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||
@@ -18,9 +18,17 @@ services:
|
|||||||
- 51413:51413 # Порт для входящих соединений (TCP)
|
- 51413:51413 # Порт для входящих соединений (TCP)
|
||||||
- 51413:51413/udp # Порт для входящих соединений (UDP)
|
- 51413:51413/udp # Порт для входящих соединений (UDP)
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
deploy:
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpus: '0.5'
|
||||||
|
memory: 256M
|
||||||
|
reservations:
|
||||||
|
memory: 128M
|
||||||
networks:
|
networks:
|
||||||
- transmission_network
|
- transmission_network
|
||||||
|
|
||||||
networks:
|
networks:
|
||||||
transmission_network:
|
transmission_network:
|
||||||
|
name: transmission_network
|
||||||
driver: bridge
|
driver: bridge
|
||||||
|
|||||||