Files
obsidian/Smart home/Smart home.md

11 KiB
Raw Permalink Blame History

Этап 1: Подготовка железа и Proxmox

1.1 Установка Proxmox

  • Скачайте Proxmox VE ISO с официального сайта
  • Создайте загрузочную флешку (Rufus/Etcher)
  • Установите Proxmox на мини-ПК
  • После установки заходите в веб-интерфейс: https://IP-адрес:8006

1.2 Базовая настройка Proxmox

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

# В веб-интерфейсе 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

# Подключитесь к 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

# В 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

# Подключитесь к 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

mkdir -p ~/docker/{gitea,nextcloud,adguard,vaultwarden,cloudflared}
cd ~/docker

5.2 Gitea

bash

cd ~/docker/gitea
nano docker-compose.yml

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

docker compose up -d

5.3 Nextcloud

bash

cd ~/docker/nextcloud
nano docker-compose.yml

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

docker compose up -d

5.4 AdGuard Home

bash

cd ~/docker/adguard
nano docker-compose.yml

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

docker compose up -d

5.5 Vaultwarden

bash

cd ~/docker/vaultwarden
nano docker-compose.yml

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

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

# На вашей 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

# Подключитесь к контейнеру 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

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

# Просмотр логов
docker logs -f имя-контейнера

# Перезапуск контейнера
docker restart имя-контейнера

# Обновление образа
cd ~/docker/сервис
docker compose pull
docker compose up -d

# Просмотр всех контейнеров
docker ps -a

# Использование ресурсов
docker stats