Files
obsidian/Smart home.md
2026-01-20 16:11:38 +03:00

454 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Этап 1: Подготовка железа и Proxmox
**1.1 Установка Proxmox**
- Скачайте Proxmox VE ISO с официального сайта
- Создайте загрузочную флешку (Rufus/Etcher)
- Установите Proxmox на мини-ПК
- После установки заходите в веб-интерфейс: `https://IP-адрес:8006`
**1.2 Базовая настройка Proxmox**
bash
```bash
# Подключитесь по SSH к Proxmox
# Отключите enterprise репозиторий (если нет подписки)
nano /etc/apt/sources.list.d/pve-enterprise.list
# Закомментируйте строку (#)
# Добавьте community репозиторий
nano /etc/apt/sources.list
# Добавьте: deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription
# Обновите систему
apt update && apt upgrade -y
```
## Этап 2: Регистрация домена и настройка Cloudflare
**2.1 Регистрация домена на reg.ru**
- Зарегистрируйте домен (например, `mysmarthome.ru`)
- Не настраивайте пока ничего на reg.ru
**2.2 Перенос DNS на Cloudflare**
- Создайте бесплатный аккаунт на cloudflare.com
- Добавьте ваш домен ("Add site")
- Cloudflare покажет nameservers (типа `ns1.cloudflare.com`)
- Зайдите в личный кабинет reg.ru → Управление доменом → DNS-серверы
- Замените DNS-серверы reg.ru на серверы Cloudflare
- Ждите 24 часа (обычно происходит быстрее)
**2.3 Базовая настройка Cloudflare**
- В Cloudflare: SSL/TLS → выберите **"Full (strict)"**
- Включите: "Always Use HTTPS"
## Этап 3: Создание LXC контейнера для Home Assistant
**3.1 Создание LXC через Proxmox**
bash
```bash
# В веб-интерфейсе Proxmox:
# Create CT → выберите:
# - Template: Debian 12
# - RAM: 3072 MB
# - CPU: 2 cores
# - Disk: 32 GB
# - Network: DHCP (запомните IP)
# - Unprivileged: снимите галочку (для Home Assistant нужен privileged)
```
**3.2 Установка Home Assistant в LXC**
bash
```bash
# Подключитесь к LXC через консоль Proxmox
apt update && apt upgrade -y
# Установите зависимости
apt install -y curl wget network-manager apparmor
# Установите Home Assistant через скрипт
curl -Lo installer.sh https://get.hass.io
bash installer.sh
```
Через 10-15 минут Home Assistant будет доступен: `http://IP-LXC:8123`
## Этап 4: Создание VM с Docker
**4.1 Создание Ubuntu VM**
bash
```bash
# В Proxmox веб-интерфейсе:
# Скачайте Ubuntu Server 24.04 ISO
# Create VM:
# - RAM: 10240 MB (10 ГБ)
# - CPU: 4 cores
# - Disk: 200 GB
# - Network: DHCP
```
**4.2 Установка Docker и Portainer**
bash
```bash
# Подключитесь к VM по SSH
# Обновите систему
sudo apt update && sudo apt upgrade -y
# Установите Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
# Добавьте текущего пользователя в группу docker
sudo usermod -aG docker $USER
# Перелогиньтесь
# Установите Docker Compose
sudo apt install docker-compose-plugin -y
# Установите Portainer
docker volume create portainer_data
docker run -d \
-p 9000:9000 \
-p 9443:9443 \
--name=portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
```
Portainer доступен: `https://IP-VM:9443`
## Этап 5: Установка сервисов через Docker Compose
**5.1 Создайте структуру папок**
bash
```bash
mkdir -p ~/docker/{gitea,nextcloud,adguard,vaultwarden,cloudflared}
cd ~/docker
```
**5.2 Gitea**
bash
```bash
cd ~/docker/gitea
nano docker-compose.yml
```
yaml
```yaml
version: "3"
services:
gitea:
image: gitea/gitea:latest
container_name: gitea
restart: always
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea_password
volumes:
- ./data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
depends_on:
- db
db:
image: postgres:15-alpine
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea_password
- POSTGRES_DB=gitea
volumes:
- ./postgres:/var/lib/postgresql/data
```
bash
```bash
docker compose up -d
```
**5.3 Nextcloud**
bash
```bash
cd ~/docker/nextcloud
nano docker-compose.yml
```
yaml
```yaml
version: '3'
services:
db:
image: postgres:15-alpine
restart: always
volumes:
- ./db:/var/lib/postgresql/data
environment:
- POSTGRES_PASSWORD=nextcloud_password
- POSTGRES_DB=nextcloud
- POSTGRES_USER=nextcloud
redis:
image: redis:alpine
restart: always
app:
image: nextcloud:latest
restart: always
ports:
- 8080:80
volumes:
- ./data:/var/www/html
environment:
- POSTGRES_HOST=db
- POSTGRES_PASSWORD=nextcloud_password
- POSTGRES_DB=nextcloud
- POSTGRES_USER=nextcloud
- REDIS_HOST=redis
depends_on:
- db
- redis
```
bash
```bash
docker compose up -d
```
**5.4 AdGuard Home**
bash
```bash
cd ~/docker/adguard
nano docker-compose.yml
```
yaml
```yaml
version: '3'
services:
adguard:
image: adguard/adguardhome:latest
container_name: adguardhome
restart: always
ports:
- "53:53/tcp"
- "53:53/udp"
- "3001:3000/tcp"
volumes:
- ./work:/opt/adguardhome/work
- ./conf:/opt/adguardhome/conf
```
bash
```bash
docker compose up -d
```
**5.5 Vaultwarden**
bash
```bash
cd ~/docker/vaultwarden
nano docker-compose.yml
```
yaml
```yaml
version: '3'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: always
ports:
- "8081:80"
volumes:
- ./data:/data
environment:
- DOMAIN=https://vault.yourdomain.ru
```
bash
```bash
docker compose up -d
```
## Этап 6: Настройка Cloudflare Tunnel
**6.1 Создание туннеля**
- Зайдите в Cloudflare Dashboard
- Zero Trust → Networks → Tunnels → Create a tunnel
- Выберите "Cloudflared" → дайте имя (например, "home-server")
- Cloudflare покажет команду для установки
**6.2 Установка cloudflared на Docker VM**
bash
```bash
# На вашей Ubuntu VM выполните команду из Cloudflare
# Она будет примерно такой:
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
sudo dpkg -i cloudflared.deb
# Авторизуйте туннель (скопируйте команду из Cloudflare)
sudo cloudflared service install <ваш-токен>
```
**6.3 Настройка маршрутов в Cloudflare**
В Cloudflare Dashboard → Tunnels → ваш туннель → Public Hostname:
Добавьте маршруты:
1. **Home Assistant**
- Subdomain: `ha`
- Domain: `yourdomain.ru`
- Service: `http://IP-вашего-LXC:8123`
2. **Nextcloud**
- Subdomain: `cloud`
- Domain: `yourdomain.ru`
- Service: `http://IP-вашей-VM:8080`
3. **Gitea**
- Subdomain: `git`
- Domain: `yourdomain.ru`
- Service: `http://IP-вашей-VM:3000`
4. **Vaultwarden**
- Subdomain: `vault`
- Domain: `yourdomain.ru`
- Service: `http://IP-вашей-VM:8081`
5. **AdGuard Home**
- Subdomain: `adguard`
- Domain: `yourdomain.ru`
- Service: `http://IP-вашей-VM:3001`
6. **Portainer**
- Subdomain: `portainer`
- Domain: `yourdomain.ru`
- Service: `https://IP-вашей-VM:9443`
- ⚠️ Включите "No TLS Verify"
## Этап 7: Финальные настройки
**7.1 Настройка Nextcloud для работы через домен**
bash
```bash
# Подключитесь к контейнеру Nextcloud
docker exec -it nextcloud-app-1 bash
# Добавьте trusted domain
nano /var/www/html/config/config.php
# Добавьте в массив trusted_domains:
'trusted_domains' =>
array (
0 => 'localhost',
1 => 'cloud.yourdomain.ru',
),
# Выйдите и перезапустите
exit
docker restart nextcloud-app-1
```
**7.2 Обновите Vaultwarden с правильным доменом**
bash
```bash
cd ~/docker/vaultwarden
nano docker-compose.yml
# Измените DOMAIN на:
- DOMAIN=https://vault.yourdomain.ru
docker compose down && docker compose up -d
```
## Этап 8: Проверка и тестирование
**8.1 Проверьте доступность сервисов**
- `https://ha.yourdomain.ru` - Home Assistant
- `https://cloud.yourdomain.ru` - Nextcloud
- `https://git.yourdomain.ru` - Gitea
- `https://vault.yourdomain.ru` - Vaultwarden
- `https://adguard.yourdomain.ru` - AdGuard Home
- `https://portainer.yourdomain.ru` - Portainer
**8.2 Проверьте SSL сертификаты** Все должны показывать зеленый замочек (Cloudflare автоматически выдает сертификаты)
## Этап 9: Безопасность
**9.1 Настройте Cloudflare Access (опционально)** Для дополнительной защиты можете добавить авторизацию перед доступом к сервисам
**9.2 Настройте бэкапы в Proxmox**
- Datacenter → Backup → Add
- Настройте автоматические бэкапы VM и LXC
**9.3 Обновите пароли** Замените все пароли в docker-compose файлах на надежные
## Полезные команды для управления
bash
```bash
# Просмотр логов
docker logs -f имя-контейнера
# Перезапуск контейнера
docker restart имя-контейнера
# Обновление образа
cd ~/docker/сервис
docker compose pull
docker compose up -d
# Просмотр всех контейнеров
docker ps -a
# Использование ресурсов
docker stats
```