11 KiB
Этап 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:
Добавьте маршруты:
- Home Assistant
- Subdomain:
ha - Domain:
yourdomain.ru - Service:
http://IP-вашего-LXC:8123
- Subdomain:
- Nextcloud
- Subdomain:
cloud - Domain:
yourdomain.ru - Service:
http://IP-вашей-VM:8080
- Subdomain:
- Gitea
- Subdomain:
git - Domain:
yourdomain.ru - Service:
http://IP-вашей-VM:3000
- Subdomain:
- Vaultwarden
- Subdomain:
vault - Domain:
yourdomain.ru - Service:
http://IP-вашей-VM:8081
- Subdomain:
- AdGuard Home
- Subdomain:
adguard - Domain:
yourdomain.ru - Service:
http://IP-вашей-VM:3001
- Subdomain:
- Portainer
- Subdomain:
portainer - Domain:
yourdomain.ru - Service:
https://IP-вашей-VM:9443 - ⚠️ Включите "No TLS Verify"
- Subdomain:
Этап 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 Assistanthttps://cloud.yourdomain.ru- Nextcloudhttps://git.yourdomain.ru- Giteahttps://vault.yourdomain.ru- Vaultwardenhttps://adguard.yourdomain.ru- AdGuard Homehttps://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