Compare commits
72 Commits
464589c8ea
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 8f3d1fa86d | |||
| 2ef1c4b148 | |||
| 4289ecc8e9 | |||
| 486cd9ea52 | |||
| 887d1998d7 | |||
| af844b4007 | |||
| 749155fcab | |||
| e5b911ca81 | |||
| 3be27e2f4a | |||
| 341f1a0185 | |||
| f6a48ad404 | |||
| 048967695e | |||
| 4c21cb56f8 | |||
| 5bcc27bcb3 | |||
| fb62c3778a | |||
| 529eabb00d | |||
| 13116bc03c | |||
| 111a505a1b | |||
| 928e49b8fa | |||
| af91845e38 | |||
| 75b3e91d1d | |||
| d6d55b7bc5 | |||
| 1df8658ef3 | |||
| b831a8496f | |||
| 9410f41c1a | |||
| 9cf1adb7e3 | |||
| edc6ca3300 | |||
| efb47a5628 | |||
| c532441dd7 | |||
| 7e13bb2ae3 | |||
| 30cb746391 | |||
| a467d3a5f0 | |||
| e80a953683 | |||
| f967d99fed | |||
| 66aca4e702 | |||
| c300ef0f0a | |||
| 663dac0a38 | |||
| 2ce2834aba | |||
| f6dcb27565 | |||
| cdd8574f8a | |||
| e5c660e99d | |||
| 38f8ffbe2e | |||
| deb8363f23 | |||
| 09fc6d45b7 | |||
| af8a36aa92 | |||
| 1b5c4653bb | |||
| 28f98acf77 | |||
| ab5ce23e4d | |||
| 175c447dd6 | |||
| 9dbabadc20 | |||
| 2c51a095a3 | |||
| 5c202cc664 | |||
| cdcce3204f | |||
| 38ec6559f8 | |||
| 6fcab99ce3 | |||
| 976df2143e | |||
| 1494fdb95f | |||
| d3a7a24f2d | |||
| e9e9f1b157 | |||
| a255ab849a | |||
| ed1ad17077 | |||
| 8b20ac3597 | |||
| 99f9a7489e | |||
| fb33f0d197 | |||
| 00d29441e0 | |||
| 632707446e | |||
| 95015ed808 | |||
| 67ecde53bf | |||
| 5252a17263 | |||
| 14c01b0ded | |||
| ee256d36a2 | |||
| b8a8b3f2e6 |
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"theme": "moonstone",
|
||||
"theme": "system",
|
||||
"cssTheme": "Blue Topaz"
|
||||
}
|
||||
Vendored
+6
-6
@@ -9,14 +9,14 @@
|
||||
"colorGroups": [],
|
||||
"collapse-display": false,
|
||||
"showArrow": true,
|
||||
"textFadeMultiplier": 0,
|
||||
"nodeSizeMultiplier": 1.39824742268041,
|
||||
"lineSizeMultiplier": 1,
|
||||
"textFadeMultiplier": 0.2,
|
||||
"nodeSizeMultiplier": 1.82062647754137,
|
||||
"lineSizeMultiplier": 1.71471631205674,
|
||||
"collapse-forces": false,
|
||||
"centerStrength": 0.518713248970312,
|
||||
"repelStrength": 10,
|
||||
"centerStrength": 0.280901722391084,
|
||||
"repelStrength": 6.59067882472138,
|
||||
"linkStrength": 1,
|
||||
"linkDistance": 250,
|
||||
"scale": 0.5854447980613412,
|
||||
"scale": 1.2273915140938336,
|
||||
"close": false
|
||||
}
|
||||
+1
-3
@@ -32,7 +32,5 @@
|
||||
"debugMode": false,
|
||||
"useInternalPlugins": false
|
||||
},
|
||||
"HomeLab/Proxmox/Gitea.md": "LiGitlab",
|
||||
"HomeLab/Proxmox/HAOS.md": "LiHome",
|
||||
"! Tasks - planned action.md": "LiListTodo"
|
||||
"HomeLab/! Tasks - planned action.md": "LiListTodo"
|
||||
}
|
||||
Vendored
+65
-35
@@ -4,35 +4,63 @@
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "33a2a97b96bd8220",
|
||||
"id": "07a826a4e91de77c",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "bfbd778442b4387f",
|
||||
"id": "59e95575b246226f",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "OMV - Guides/omv-notification gmail-guide.md",
|
||||
"file": "HomeLab/PVE - General - Description.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "omv-notification gmail-guide"
|
||||
"title": "PVE - General - Description"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "3e946cdf2e3a05ab",
|
||||
"id": "8b120fb1370cad0c",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "OMV - Guides/omv-notification gmail-guide.md",
|
||||
"file": "HomeLab/LXC - HomePage.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "omv-notification gmail-guide"
|
||||
"title": "LXC - HomePage"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "9e3de6fdbaf270bf",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "HomeLab/PVE - General - Description.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "PVE - General - Description"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "b0621f0563bd94d8",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "HomeLab/VE - HAOS - HomeAssistant.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "VE - HAOS - HomeAssistant"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -69,7 +97,7 @@
|
||||
"state": {
|
||||
"type": "search",
|
||||
"state": {
|
||||
"query": "[\"tags\"]",
|
||||
"query": "tag:#omv_share_folders",
|
||||
"matchingCase": false,
|
||||
"explainSearch": false,
|
||||
"collapseAll": false,
|
||||
@@ -202,38 +230,40 @@
|
||||
"obsidian-excalidraw-plugin:New drawing": false
|
||||
}
|
||||
},
|
||||
"active": "bfbd778442b4387f",
|
||||
"active": "59e95575b246226f",
|
||||
"lastOpenFiles": [
|
||||
"! Tasks - planned action.md",
|
||||
"HomeLab/Proxmox/PBS Proxmox Backup Server.md",
|
||||
"OMV - Guides/omv-qbittorrent-guide.md",
|
||||
"OMV - Guides/omv-notification gmail-guide.md",
|
||||
"HomeLab/Proxmox/Proxmox - settings.md",
|
||||
"HomeLab/Proxmox/PVE Proxmox - Installation.md",
|
||||
"HomeLab/Services - description.md",
|
||||
"HomeLab/guide-nfs-omv-pve-pbs.md",
|
||||
"OMV - Guides",
|
||||
"HomeLab/PVE - Description.md",
|
||||
"HomeLab/Alice - root.md",
|
||||
"HomeLab/wireshark.md",
|
||||
"HomeLab/Docker - General.md",
|
||||
"HomeLab/Docker - qBittorent.md",
|
||||
"HomeLab/! Tasks - planned action.md",
|
||||
"HomeLab/PVE - General - Description.md",
|
||||
"HomeLab/LXC - HomePage.md",
|
||||
"HomeLab/LXC - Jellyfin.md",
|
||||
"HomeLab/LXC - Nginx Proxy Manager.md",
|
||||
"HomeLab/LXC - npm_keenetic_setup.md",
|
||||
"HomeLab/LXC - PBS Proxmox Backup Server.md",
|
||||
"HomeLab/OMV - Open Media Vault.md",
|
||||
"HomeLab/OMV - Guide-NFS-Share (PVE-PBS).md",
|
||||
"HomeLab/LXC- Gitea.md",
|
||||
"HomeLab/LXC - Valtwarden.md",
|
||||
"HomeLab/HomeLab AI Analisys.md",
|
||||
"Pasted image 20261029215430.png",
|
||||
"README.md",
|
||||
"Untitled.md",
|
||||
"SBC - Hardware/Radxa E52C.md",
|
||||
"SBC - Hardware/Radxa E25.md",
|
||||
"SBC - Hardware/Pasted image 20260901214038.png",
|
||||
"SBC - Hardware/Pasted image 20260517222623.png",
|
||||
"SBC - Hardware/Radxa E25.md",
|
||||
"HomeLab AI Analisys.md",
|
||||
"Network/Settings.md",
|
||||
"SBC - Hardware/ssd1306-rpi5-guide.md",
|
||||
"Hermes/hermes-desktop-connect-guide.md",
|
||||
"Hermes/Hermes Agent - Настройка.md",
|
||||
"Hermes/guide-hermes-lxc-server-desktop.md",
|
||||
"VPN/amnezia-vpn-keenetic-kn1011.md",
|
||||
"VPN/Amnezia for Keenetic.md",
|
||||
"HomeLab/Valtwarden.md",
|
||||
"HomeLab/wireshark.md",
|
||||
"VPN/VPN (WireGuard & 3x-UI VLESS Reality).md",
|
||||
"SBC - Hardware/Raspberry PI5 + 3.2 SPI TFT (ILI9341).md",
|
||||
"Git/Git.md",
|
||||
"HomeLab/VE - HAOS - HomeAssistant.md",
|
||||
"HomeLab/LXC - Alpine-Nextcloud.md",
|
||||
"HomeLab/OMV-qbittorrent-guide.md",
|
||||
"jfn.embeddevio.netcraze.pro.md",
|
||||
"HomeLab/OMV-Backups-Guide.md",
|
||||
"Linux/Files/GPIO_diagram.jpg",
|
||||
"OMV - Guides",
|
||||
"SBC - Hardware",
|
||||
"HomeLab/Proxmox/HAOS.md",
|
||||
"HomeLab/Proxmox/Gitea.md",
|
||||
"HomeLab/Docker - qBittorent.md",
|
||||
"Hermes/oled_cpu_mon.py",
|
||||
"Hermes",
|
||||
"HomeLab/Files/Pasted image 20260427212721.png",
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
---
|
||||
title: "Точечные маршруты Telegram API через AmneziaWG VPN"
|
||||
date: 2026-10-19
|
||||
tags: [telegram, vpn, amneziawg, routing, network, hermes]
|
||||
---
|
||||
|
||||
# Telegram API через AmneziaWG VPN: точечные маршруты
|
||||
|
||||
**Проблема:** ISP блокирует Telegram API (ConnectTimeout на `api.telegram.org`). AmneziaWG VPN на `192.168.1.147` обходит DPI, но направлять **весь** трафик Hermes LXC (`192.168.1.44`) через VPN нельзя — провайдер LLM (polza.ai) перестаёт работать при полном туннелировании.
|
||||
|
||||
**Решение:** точечные статические маршруты — только подсети Telegram API через VPN-шлюз, остальной трафик напрямую через Keenetic.
|
||||
|
||||
## Сеть
|
||||
|
||||
| Устройство | IP | Роль |
|
||||
|---|---|---|
|
||||
| Keenetic Giga | 192.168.1.1 | Основной шлюз (default gateway) |
|
||||
| Hermes LXC | 192.168.1.44 | Hermes Agent (TUI, gateway) |
|
||||
| VPN-шлюз LXC | 192.168.1.147 | Docker + AmneziaWG (awg0) |
|
||||
|
||||
## Подсети Telegram API
|
||||
|
||||
```
|
||||
149.154.160.0/20
|
||||
91.108.56.0/22
|
||||
91.108.4.0/22
|
||||
91.108.8.0/22
|
||||
```
|
||||
|
||||
## Команды
|
||||
|
||||
```bash
|
||||
# Добавить маршруты (вручную)
|
||||
ip route add 149.154.160.0/20 via 192.168.1.147
|
||||
ip route add 91.108.56.0/22 via 192.168.1.147
|
||||
ip route add 91.108.4.0/22 via 192.168.1.147
|
||||
ip route add 91.108.8.0/22 via 192.168.1.147
|
||||
|
||||
# Проверить
|
||||
ip route get 149.154.166.110
|
||||
# → 149.154.166.110 via 192.168.1.147 dev eth0 src 192.168.1.44
|
||||
|
||||
curl -v --connect-timeout 10 https://api.telegram.org
|
||||
# → TLS handshake (успех)
|
||||
```
|
||||
|
||||
## Автоматическое восстановление после перезагрузки
|
||||
|
||||
Файл: `/etc/network/if-up.d/telegram-vpn-routes`
|
||||
|
||||
```bash
|
||||
#!/bin/sh
|
||||
ip route add 149.154.160.0/20 via 192.168.1.147 2>/dev/null
|
||||
ip route add 91.108.56.0/22 via 192.168.1.147 2>/dev/null
|
||||
ip route add 91.108.4.0/22 via 192.168.1.147 2>/dev/null
|
||||
ip route add 91.108.8.0/22 via 192.168.1.147 2>/dev/null
|
||||
```
|
||||
|
||||
```bash
|
||||
chmod +x /etc/network/if-up.d/telegram-vpn-routes
|
||||
```
|
||||
|
||||
## Проверка работы Telegram backend в Hermes
|
||||
|
||||
```bash
|
||||
journalctl -u hermes-gateway --no-pager -n 20 | grep telegram
|
||||
```
|
||||
|
||||
Успешное подключение:
|
||||
```
|
||||
[Telegram] Connected to Telegram (polling mode)
|
||||
```
|
||||
|
||||
Если контейнер `amneziawg-client` на 1.147 упал:
|
||||
|
||||
```bash
|
||||
ssh 192.168.1.147 "docker start amneziawg-client"
|
||||
```
|
||||
|
||||
## Важно
|
||||
|
||||
- **Только Telegram** идёт через VPN. Polza.ai, web_search, и остальной трафик Hermes — напрямую через Keenetic.
|
||||
- Если контейнер `amneziawg-client` на 1.147 не работает — Telegram backend не сможет подключиться (маршруты есть, но awg0 нет).
|
||||
- При добавлении новых подсетей Telegram API обновить и скрипт `/etc/network/if-up.d/telegram-vpn-routes`.
|
||||
@@ -1,3 +1,4 @@
|
||||
#polza #api
|
||||
Описание на Habr:
|
||||
|
||||
AI провайдер: polza.ai
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
# Гайд: Установка Hermes Agent на LXC Debian и подключение с Windows Desktop
|
||||
|
||||
> Схема: Debian LXC (сервер Hermes) ↔ Windows ПК (Hermes Desktop)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#hermes #guide
|
||||
# Подключение Hermes Desktop (Windows) к серверу
|
||||
|
||||
Общая схема:
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
#hermes #hermes_hindsight_lxc_guide #guide
|
||||
# Настройка памяти Hindsight для ИИ-агента Hermes в LXC
|
||||
|
||||
Это руководство содержит инструкции по установке, конфигурированию и запуску долгосрочной памяти **Hindsight** (от Vectorize.io) для ИИ-агента **Hermes Agent** (от Nous Research) внутри изолированного контейнера LXC с использованием API-провайдера **Polza AI**.
|
||||
|
||||
---
|
||||
|
||||
## 1. Ресурсная сетка для LXC (Polza AI Оптимизация)
|
||||
|
||||
Так как инференс LLM и вычисление эмбеддингов полностью делегированы на сервера [Polza AI](https://polza.ai/), локальные требования к контейнеру минимальны:
|
||||
|
||||
* **Процессор (CPU):** 2 ядра (vCPU) — достаточно для работы PostgreSQL и маршрутизации запросов.
|
||||
* **Оперативная память (RAM):** 2 ГБ — около 1 ГБ займет ОС и Hermes, еще 1 ГБ зарезервирует PostgreSQL для кэширования векторных индексов.
|
||||
* **Дисковая подсистема (Storage):** 10–15 ГБ (желательно на NVMe/SSD для быстрого I/O при поиске по индексам `pgvector`).
|
||||
* **Сеть:** Обязателен исходящий доступ в интернет для выполнения API-запросов к эндпоинтам Polza AI.
|
||||
|
||||
---
|
||||
|
||||
## 2. Пошаговая установка в контейнере
|
||||
|
||||
Зайдите в консоль вашего LXC-контейнера и выполните следующие шаги:
|
||||
|
||||
```bash
|
||||
# 1. Обновление системы и установка зависимостей
|
||||
apt update && apt upgrade -y
|
||||
apt install -y python3 python3-pip postgresql postgresql-contrib git curl
|
||||
|
||||
# 2. Установка расширения pgvector для PostgreSQL
|
||||
# (Необходимо для хранения долгосрочной векторной памяти)
|
||||
apt install -y postgresql-15-pgvector || apt install -y postgresql-16-pgvector
|
||||
|
||||
# 3. Настройка базы данных
|
||||
su - postgres -c "psql -c "CREATE USER hindsight_user WITH PASSWORD 'secure_password_here';""
|
||||
su - postgres -c "psql -c "CREATE DATABASE hindsight_memory OWNER hindsight_user;""
|
||||
su - postgres -c "psql -d hindsight_memory -c "CREATE EXTENSION IF NOT EXISTS vector;""
|
||||
|
||||
# 4. Установка Hermes Agent и плагина Hindsight
|
||||
pip3 install hermes-agent-cli
|
||||
hermes plugins install hindsight
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Конфигурация (~/.hermes/hindsight/config.json)
|
||||
|
||||
Создайте или отредактируйте конфигурационный файл плагина. Замените `sk-polza-ВАШ_КЛЮЧ_ИЗ_КОНСОЛИ` на ваш реальный токен из личного кабинета Polza AI.
|
||||
|
||||
```json
|
||||
{
|
||||
"memory_enabled": false,
|
||||
"hindsight": {
|
||||
"mode": "local_embedded",
|
||||
"database": {
|
||||
"host": "127.0.0.1",
|
||||
"port": 5432,
|
||||
"user": "hindsight_user",
|
||||
"password": "secure_password_here",
|
||||
"dbname": "hindsight_memory"
|
||||
},
|
||||
"llm_provider": {
|
||||
"type": "openai_compatible",
|
||||
"base_url": "https://polza.ai/api/v1",
|
||||
"api_key": "sk-polza-ВАШ_КЛЮЧ_ИЗ_КОНСОЛИ",
|
||||
"model": "nousresearch/hermes-3-llama-3.1-70b"
|
||||
},
|
||||
"embedding_provider": {
|
||||
"type": "openai_compatible",
|
||||
"base_url": "https://polza.ai/api/v1",
|
||||
"api_key": "sk-polza-ВАШ_КЛЮЧ_ИЗ_КОНСОЛИ",
|
||||
"model": "openai/text-embedding-3-small"
|
||||
},
|
||||
"auto_recall": true,
|
||||
"auto_retain": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
*Отключение стандартной памяти:* Команда `hermes tools disable memory` предотвратит дублирование контекста и сэкономит входящие токены.
|
||||
|
||||
---
|
||||
|
||||
## 4. Настройка автозапуска через systemd
|
||||
|
||||
Чтобы демон памяти автоматически поднимался при перезапуске LXC-контейнера, создайте системную службу.
|
||||
|
||||
Создайте файл `/etc/systemd/system/hindsight-daemon.service`:
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=Hindsight Memory Daemon for Hermes Agent
|
||||
After=postgresql.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
ExecStart=/usr/local/bin/hermes memory daemon start
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user-target
|
||||
```
|
||||
|
||||
Активируйте и запустите службу:
|
||||
```bash
|
||||
systemctl daemon-reload
|
||||
systemctl enable hindsight-daemon.service
|
||||
systemctl start hindsight-daemon.service
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Использование и команды ИИ-агента
|
||||
|
||||
При включенных параметрах `auto_recall` и `auto_retain` Hermes работает полностью автономно. Но вы можете управлять памятью и вручную в окне чата:
|
||||
|
||||
* **Ручное сохранение факта:**
|
||||
> *"Запомни, что тестовый сервер развернут на порту 8080 с конфигурацией дебага."*
|
||||
*(Hermes вызовет инструмент `hindsight_retain`)*
|
||||
|
||||
* **Извлечение контекста:**
|
||||
> *"На каком порту мы тестировали сервер?"*
|
||||
*(Hermes выполнит поиск через `hindsight_recall`)*
|
||||
|
||||
* **Синтез знаний (Рефлексия):**
|
||||
Периодически запускайте процесс консолидации памяти, чтобы объединить разрозненные факты и очистить базу от устаревшего "шума":
|
||||
```bash
|
||||
hermes memory reflect --force
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. Логи и Диагностика в LXC
|
||||
|
||||
Если агент теряет контекст, проверьте следующие точки отказа внутри контейнера:
|
||||
|
||||
* **Статус демона памяти:** `systemctl status hindsight-daemon.service`
|
||||
* **Просмотр логов Hindsight:** `tail -f ~/.hermes/logs/hindsight-embed.log`
|
||||
* **Проверка подключения к PostgreSQL:** `psql -U hindsight_user -d hindsight_memory -h 127.0.0.1`
|
||||
* **Проверка доступности шлюза Polza AI:** `curl -I https://polza.ai/api/v1/models`
|
||||
@@ -1,5 +1,4 @@
|
||||
# General Action
|
||||
## HomeLab
|
||||
|
||||
AI анализ:
|
||||
> [!note]- ai prompt
|
||||
> Роль: девопс инженер, эксперт в области linux и сетевой инфраструктуры HomeLab.
|
||||
@@ -38,72 +37,75 @@ AI анализ:
|
||||
> 4. В Proxmox VE прокинута SMB Public папка c NAS WD, с автомонтированием папки mnt/share в fstab. Каталог mnt/share подключен к следующим LXC (docker и jellyfin) В docker контейнере она используется как рабочий каталог для qBittorrent. Jellyfin использует ее как медиатеку с фильмами и музыкой. Так же к NUC подключен Sonoff USB - ZigBee dongle который проброшен в VM HomeAssistan. SSH доступ к Proxmox: вход по паролю - запрещен, прописаны rsa25595 ключи, стандартный порт изменен.
|
||||
>
|
||||
|
||||
>
|
||||
>
|
||||
>Основные аспекты: 1. Для доступа из внешнего мира в роутере переадресация портов: Проброшены TCP/UDP порты к UI Proxmox VE, HomeAssistant VM, Gitea и Jellyfin LXC. 2 В роутере разделение на VLAN и подсети не настроено. Роутер имеет возможность настройки системы доменных для использования сервисов. 3 NAS планирую менять на что-то более надежное с возможностью RAID-1. Резервное копирование пока не настроено.
|
||||
|
||||
OpenMediaVault - настройка сервиса HomeLab. Я только собрал NAS на с RAID1 8TB на Intel(R) Celeron(R) CPU 1037U @ 1.80GHz с 4GB DDR. Создал Multiple Device подготовил File Systems включил SMB CIFTS сервис и подключил папку как сетевой диск. Давай подробно разберем что нужно сделать при первоначальной настройке OMV пройдемся по шагам. Определим необходимые для меня сервисы, которые я пл
|
||||
|
||||
Улучшения:
|
||||
1. Перенести Gitea на OMV
|
||||
2. **Backup**. Настроить резервное копирование через PBS (на внешний диск или NAS?)
|
||||
1. [ ] Backup - Telegram
|
||||
2. [x] OMV - Backup на внешний диск
|
||||
3. [x] NAS - отключить бэкапы с внешнего HDD
|
||||
1. [x] Backup - настроить расписание снятие Snapshot (раз в неделю) на NAS
|
||||
2. [x] Backup - синхронизация важных папок (Gitea, HomeAssistant)
|
||||
3. [x] Backup - Garbage Collection. Настроить автоматическую очистку диска
|
||||
4. [x] Backup - Prune. Настроить автоматическое удаление старых копий
|
||||
3. **Security**. Безопасность
|
||||
1. [ ] Заменить прямой проброс портов на WireGuard
|
||||
2. [ ] ИЛИ использовать LXC NginxProxyManager как реверс-прокси с SSL и ограничением доступа по IP через авторизацию
|
||||
1. [ ] Разобраться с SSL сертификатом
|
||||
3. [ ] Обратный прокси Traefik в LXC контейнер как systemd unit (LXC позволяет изолировать трафик от ОС)
|
||||
4. [ ] Сегментация сети VLAN
|
||||
---
|
||||
|
||||
|
||||
1.
|
||||
2. Matrix - мессенджер
|
||||
3. **Telegraph**
|
||||
1. Статья про мою HomeLab:
|
||||
2. Статья про Harness memory
|
||||
3. Статья по настройке MCP для GItea
|
||||
4.
|
||||
4. **Security**. Безопасность
|
||||
1. [ ] Alice - получить root
|
||||
2. [ ] Drawio - удалить из контейнера
|
||||
3. [ ] Gitea
|
||||
1. [ ] Перенести Gitea на OMV - share подготовлена
|
||||
2. [x] внести в домен
|
||||
2. [ ] Vaultwarden - отдельный сегмент сети???
|
||||
3. [x] Удалить лишние заметки с доменными именами от KeeDNS
|
||||
4. [ ] Проработка шаблонов заметок по HomeLab
|
||||
5. [ ] Подумать о связке NPM + домен `embeddevio.space` на Reg.ru
|
||||
6. [ ] LXC NginxProxyManager как реверс-прокси с SSL и ограничением доступа по IP через авторизацию
|
||||
1. [x] Разобраться с SSL сертификатом - использую KeeDNS
|
||||
2. [x] Описать как настроить NPM
|
||||
3. [ ] step-ca (Smallstep CA) - свой центр сертификации ???
|
||||
7. [ ] SSL сертификат для Proxmox
|
||||
8. [ ] Обратный прокси Traefik в LXC контейнер как systemd unit (LXC позволяет изолировать трафик от ОС)
|
||||
9. [ ] Сегментация сети VLAN
|
||||
1. [ ] VLAN10 - сервера, NUC, NAS
|
||||
2. [ ] VLAN20 - IoT устройства
|
||||
3. [ ] VLAN30 - Гостевая (обычная сеть)
|
||||
4. [ ] firewall - настройка межсетевого экрана
|
||||
5. [ ] Fail2ban - установка (нужна ли)
|
||||
4. **Services**
|
||||
1. [ ] Внедрение мониторинга
|
||||
10. [ ] Fail2ban - установка (нужна ли)
|
||||
5. **Services**
|
||||
1. [ ] HomePage
|
||||
1. [ ] настройка доступа из вне - ок.
|
||||
2. [ ] добавить Vaultvarden
|
||||
3. [ ] добавление новых сервисов
|
||||
4. [ ] Проработка панели ()
|
||||
2. [ ] Внедрение мониторинга
|
||||
1. [ ] Netdata - метрики в реальном времени и оповещения в Telegram. Или разверните **Prometheus + Grafana** (но это ресурсоемко).
|
||||
2. [ ] Zabbix - cсистема мониторинга?
|
||||
|
||||
- [ ] **Software**:
|
||||
- [ ] HomeLab - перевести на систему доменных имен от Netcrazy ???
|
||||
|
||||
- [ ] Медиа серверы:
|
||||
- [x] Jellyfin - установить
|
||||
- [x] Jellyfin - настроить SMB Share (NAS) + FSTAB (Youtube пример [настройки](https://www.youtube.com/watch?v=nmxj0A_1ZDo)))
|
||||
- [x] Jellyfin - kinopoisk добавить ([ссылка на github]())
|
||||
- [ ] Jellyfin - добавить онлайн радио ([m3u плейлисты на github](https://github.com/junguler/m3u-radio-music-playlists))
|
||||
- [ ] Jellyfin - добавить в HomePage
|
||||
- [x] Jellyfin - добавить онлайн радио ([m3u плейлисты на github](https://github.com/junguler/m3u-radio-music-playlists))
|
||||
- [x] Jellyfin - добавить в HomePage
|
||||
- [ ] Jellyfin - настроить ssh подключение (по ключу) + добавить в конфиг
|
||||
- [ ] jellyseerr - подумать об использовании
|
||||
- [ ] Kavita - управление и чтение книгами
|
||||
- [ ] qBittorrent
|
||||
- [ ] переезд на NAS в OpenMediaVault
|
||||
- [x] Установить. Настроить
|
||||
- [ ] Вопрос с отдачей ??
|
||||
- [x] Прокинуть SMB папку для закачек
|
||||
- [x]
|
||||
- [ ] Разобраться с маршрутизацией VPN на роутере - <font color="#ff0000">не получается </font>
|
||||
- [ ] Директории Linux - изучить
|
||||
|
||||
- [ ] **Hardware**:
|
||||
- [x] Rack - спроектировать кронштейн для NAS
|
||||
- [ ] Rack - определиться с местом
|
||||
- [x] NAS - подумать о использовании SSD
|
||||
- [ ] Подобрать что-то готовое?
|
||||
|
||||
## Development
|
||||
- [ ] Buildroot:
|
||||
- [ ]
|
||||
- [ ] Разработка CPU-Monitor
|
||||
- [ ] PCB на ESP32 + 2 OLED SSD1306
|
||||
|
||||
## Music
|
||||
- The Eagles - Hotel California
|
||||
-
|
||||
#### Services
|
||||
- [ ] `vaultwarden` - сервис хранения паролей (установить) или выбрать другой
|
||||
#### Service
|
||||
- [ ] `traefik` - обратный прокси
|
||||
- [ ] [Введение в Traefic](https://habr.com/ru/articles/508636/)
|
||||
- [ ] `homepage` - настроить (https://gethomepage.dev/)
|
||||
@@ -115,11 +117,35 @@ OpenMediaVault - настройка сервиса HomeLab. Я только со
|
||||
- [ ] Нормально оформить
|
||||
- [ ] `AdGuard` донастроить
|
||||
- [ ] `Immich` - сервис для управления фото и видео (наподобие Google Photo) - если будет NAS
|
||||
- [ ] `Alpine Nextcloude` - облачное хранилище.
|
||||
- [ ] `WordPress` - установить, посмотреть
|
||||
|
||||
---
|
||||
### Closed
|
||||
- [x] Память и навыки для ботов (Агентов) - сделано
|
||||
- [x] Vaultvarden - установить.
|
||||
1. [x] Настроить https - выполнено
|
||||
2. [x] Расширение для браузера - выполнено
|
||||
3. [x] Приложение на телефон - выполнено
|
||||
- [x] `Alpine Nextcloude` - облачное хранилище LXC в PVE а OMV использование как хранилку
|
||||
- [x] Настроить доступ к VPN (пока через шлюз 192.168.1.147)
|
||||
1. Свой Amnezia WG в отдельном docker контейнере 192.168.1.144
|
||||
- [x] Hingsight - подключить к ИИ + гайд подключения #hermes_hindsight_lxc_guide
|
||||
- [x] Описать как настроить Nextcloude c NPM
|
||||
- [x] HomeLab - для основных сервисов назначены домены 4 го порядка Netcrazy
|
||||
- [x] Заменить прямой проброс портов на WireGuard
|
||||
- [x] qBittorrent
|
||||
- [x] переезд на NAS в OpenMediaVault
|
||||
- [x] Установить. Настроить
|
||||
- [x] Вопрос с отдачей ??
|
||||
- [x] Прокинуть SMB папку для закачек
|
||||
- [x] **Backup**. Настроить резервное копирование через PBS (на внешний диск или NAS?)
|
||||
- [x] Разобраться с репликацией и бэкапами Proxmox
|
||||
1. [x] OMV - Backup на внешний диск
|
||||
2. [x] NAS - отключить бэкапы с внешнего HDD
|
||||
1. [x] Backup - настроить расписание снятие Snapshot (раз в неделю) на NAS
|
||||
2. [x] Backup - синхронизация важных папок (Gitea, HomeAssistant)
|
||||
3. [x] Backup - Garbage Collection. Настроить автоматическую очистку диска
|
||||
4. [x] Backup - Prune. Настроить автоматическое удаление старых копий
|
||||
- [x] Установить Proxmox Backup Server.
|
||||
1. [x] Подключить HDD для бэкапов
|
||||
2. [x] Связать PBS и PVE
|
||||
@@ -127,7 +153,6 @@ OpenMediaVault - настройка сервиса HomeLab. Я только со
|
||||
4. [x] Backup - Garbage Collection. Настроить автоматическую очистку диска
|
||||
5. [x] Backup - Prune. Настроить автоматическое удаление старых копий
|
||||
- [x] Установить Kompas 3D
|
||||
- [x] Разобраться с репликацией и бэкапами Proxmox
|
||||
- [x] DrawIO - установить в docker
|
||||
- [x] Установить в Docker - Homelable - визуализация сетевой инфраструктуры
|
||||
- [x] XRAY/VLESS - каскадный VPN - работает, но при доступе через мобильный интернет - нет
|
||||
@@ -137,6 +162,10 @@ OpenMediaVault - настройка сервиса HomeLab. Я только со
|
||||
- [x] Настроить WireGuard - <font color="#00b050">выполнено - настроен на роутере</font>
|
||||
- [x] Описать необходимые настройки
|
||||
- [x] Поменять порт? - смена порта не помогло.
|
||||
- [ ] **Hardware**:
|
||||
- [x] Rack - спроектировать кронштейн для NAS
|
||||
- [x] Rack - определиться с местом
|
||||
- [x] NAS - подумать о использовании SSD
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
Описание: [Community](https://hackalice.me/)
|
||||
|
||||
Колонка: YNDX- 00025 - Яндекс Станция Лайт 2
|
||||
|
||||
|
||||
1. Установка git
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install git
|
||||
```
|
||||
|
||||
2. Установка eQuasar - конфигурация nginx для перехвата запросов Quasar. Она отвечает за `get_sync_info` с включённым network ADB и возвращает `{"hasUpdate":false}` на `check_updates`, а остальные запросы проксирует дальше.
|
||||
```bash
|
||||
git clone https://git.gay/iwakura/eQuasar.git
|
||||
cd eQuasar
|
||||
```
|
||||
|
||||
3. Установка nginx ещё не установлен на Ubuntu/Debian:
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install -y nginx
|
||||
```
|
||||
|
||||
4. Копирование файлов из репозитория в пути, которые использует eQuasar
|
||||
```bash
|
||||
sudo install -d /opt/fakequasar
|
||||
sudo cp -r copymetoroot/opt/fakequasar/certs /opt/fakequasar/
|
||||
sudo install -d /etc/nginx/sites-enabled
|
||||
sudo cp copymetoroot/etc/nginx/sites-enabled/quasar \
|
||||
/etc/nginx/sites-enabled/quasar
|
||||
sudo nginx -t
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
5. Установка dnsmasq - легковесного DNS / DHCP TFTP сервера ([wiki](https://ru.wikipedia.org/wiki/Dnsmasq) )
|
||||
```bash
|
||||
sudo apt install dnsmasq
|
||||
```
|
||||
|
||||
6. Создать файл конфигурации `nano /etc/dnsmasq.d/quasar.conf`
|
||||
```bash
|
||||
# вписать этот конфиг в файл
|
||||
port=53
|
||||
no-resolv
|
||||
server=8.8.8.8
|
||||
server=1.1.1.1
|
||||
|
||||
# не слушать на IPv6-интерфейсах
|
||||
listen-address=192.168.1.125
|
||||
bind-interfaces
|
||||
|
||||
# quasar.yandex.net — на eQuasar (v4), AAAA пустой
|
||||
address=/quasar.yandex.net/192.168.1.125
|
||||
address=/quasar.yandex.net/::
|
||||
|
||||
# quasar.yandex.ru — то же самое
|
||||
address=/quasar.yandex.ru/192.168.1.125
|
||||
address=/quasar.yandex.ru/::
|
||||
|
||||
# scbh.yandex.net — то же самое
|
||||
address=/scbh.yandex.net/192.168.1.125
|
||||
address=/scbh.yandex.net/::
|
||||
|
||||
# блокируемые домены (пустой ответ = недоступны)
|
||||
address=/strm.yandex.ru/
|
||||
address=/strm.yandex.ru/::
|
||||
address=/rpc.alice.yandex.net/
|
||||
address=/rpc.alice.yandex.net/::
|
||||
address=/uniproxy.alice.yandex.net/
|
||||
address=/uniproxy.alice.yandex.net/::
|
||||
address=/alice.yandex.net/
|
||||
address=/alice.yandex.net/::
|
||||
address=/alice-ats.yandex.net/
|
||||
address=/alice-ats.yandex.net/::
|
||||
address=/alice-ats-test.yandex.net/
|
||||
address=/alice-ats-test.yandex.net/::
|
||||
```
|
||||
|
||||
Перезагрузить dnsmasq
|
||||
`systemctl restart dnsmasq`
|
||||
|
||||
7. В настройках роутера, для сети, в DNS указать IP: контейнера
|
||||
@@ -1,13 +0,0 @@
|
||||
Описание на Habr:
|
||||
|
||||
Настройки находятся в `/opt/homepage/config/`
|
||||
|
||||
#filesystem #linux
|
||||
Директория `/opt` в Linux, сокращение от *optional* - аналог `Programm Files` установка стороннего ПО.
|
||||
Стандартный путь `/usr/bin` - но тут файлы разбрасываются по разным системным папкам (бинарники в bin, библиотеки в lib)
|
||||
|
||||
Традиция для LXC скриптов.
|
||||
|
||||
Иконки тут: https://github.com/homarr-labs/dashboard-icons
|
||||
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
#git #nextcloude #lxc #settings
|
||||
|
||||
### IP: 192.168.1.80:443
|
||||
[cloude.embeddevio.netcraze.pro]()
|
||||
|
||||
## Install
|
||||
Community description: https://community-scripts.org/categories?category=files-and-downloads&preview=alpine-nextcloud
|
||||
```bash
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/alpine-nextcloud.sh)"
|
||||
```
|
||||
## Creds
|
||||
При первом запуске тут:
|
||||
```bash
|
||||
cat /root/nextcloud.creds
|
||||
```
|
||||
После первого запуска необходимо сменить пароль
|
||||
```
|
||||
ncAdmin
|
||||
YnD36WDuTgh2P
|
||||
```
|
||||
`NxC@R4_hOm3`
|
||||
|
||||
Учетка Тани:
|
||||
`Tatiana`
|
||||
`Wt0chk@_4!`
|
||||
|
||||
### Settings
|
||||
1. Для доступа необходимо выполнить настройку безопасного https доступа к Nextcloude через NPM
|
||||
1. Открыть файл конфигурации: `nano /etc/nextcloud/config.php`
|
||||
2. Найти секцию `trusted_domains` и добавить туда параметры NPM (cм пример ниже)
|
||||
```bash
|
||||
'trusted_domains' =>
|
||||
array (
|
||||
0 => 'localhost',
|
||||
1 => '192.168.1.80',
|
||||
2 => 'cloude.embeddevio.netcraze.pro',
|
||||
),
|
||||
'trusted_proxies' =>
|
||||
array (
|
||||
0 => '192.168.1.60', // <- ВНИМАНИЕ: Замените этот IP на IP-адрес вашего Nginx Proxy Manager!
|
||||
),
|
||||
'overwritehost' => 'cloude.embeddevio.netcraze.pro',
|
||||
'overwriteprotocol' => 'https',
|
||||
```
|
||||
|
||||
2. Сохранить изменения и перезапустить Nexcloude
|
||||
```bash
|
||||
systemctl restart apache2 || systemctl restart nginx || rc-service apache2 restart || rc-service nginx restart
|
||||
```
|
||||
|
||||
|
||||
### Настройка внешнего хранилища Nexcloude
|
||||
#cloude-storage
|
||||
1. Создать NFS шару на OMV
|
||||
1. В настройках NFS `rw,subtree_check,all_squash,anonuid=33,anongid=33`
|
||||
2. Смена владельца/группы и прав доступа
|
||||
1. `chown -R 33:33 /srv/dev-disk-by-uuid-89fa7fa2-3064-4836-92ca-9cc3c832ce66/cloude-storage/`
|
||||
2. `chmod -R 777 /srv/dev-disk-by-uuid-89fa7fa2-3064-4836-92ca-9cc3c832ce66/cloude-storage/`
|
||||
2. Подключаем NFS папку к PVE через UI #nfs-to_pve
|
||||
3. Пробрасываем папку из PVE в контейнер через точку монтирования #nfs-to-lxc
|
||||
4. Перезагружаем контейнер `pct <ID> reload`
|
||||
5. Подключение NFS хранилища в Nextcloude
|
||||
1. Изменить файл конфигурации `nano /etc/nextcloud/config.php`
|
||||
1. Прописать директорию: `'datadirectory' => '/var/lib/nextcloud/data'`
|
||||
2. Перезагрузить `nginx` и `php-fpm85` выполнив команды:
|
||||
1. `rc-service nginx restart` и `rc-service php-fpm85 restart`
|
||||
3. Создание проверочного файла в директории NFS шары
|
||||
1. Выполнить команду в консоли Nextcloude: `su -s /bin/sh nextcloud -c 'echo "# Nextcloud data directory" > /mnt/cloude-storage/.ncdata'`
|
||||
2. Убедиться что файл успешно создан: `cat /mnt/cloude-storage/.ncdata`
|
||||
6. Troubleshutting - Возможные проблемы
|
||||
1. `Ваш каталог данных доступен для чтения другими пользователями.`
|
||||
1. Открыть файл конфигурации: `nano /etc/nextcloud/config.php`
|
||||
2. Добавить строчку `'check_data_directory_permissions' => false,`
|
||||
2. Перезагрузить `nginx` и `php-fpm85` выполнив команды:
|
||||
1. `rc-service nginx restart` и `rc-service php-fpm85 restart`
|
||||
@@ -0,0 +1,46 @@
|
||||
#homepage #lxc #settings #guide
|
||||
### IP: 192.168.1.92
|
||||
|
||||
**PVE - LXC Script Installation**
|
||||
```bash
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/homepage.sh)"
|
||||
```
|
||||
|
||||
**Описание для разработчика:**
|
||||
https://gethomepage.dev/configs/settings/
|
||||
|
||||
**Иконки для использования:**
|
||||
https://github.com/homarr-labs/dashboard-icons
|
||||
|
||||
Настройки находятся в `/opt/homepage/config/`
|
||||
|
||||
How to connect
|
||||
1. **Подключение Proxmox**
|
||||
- https://gethomepage.dev/configs/proxmox/
|
||||
2. **Подключение Jellyfin**
|
||||
- https://gethomepage.dev/widgets/services/jellyfin/#info-widgets
|
||||
|
||||
|
||||
PVE creds
|
||||
>token-id `api@pam!monitor`
|
||||
>API `ce356c78-d4d4-43d5-97a0-79ca0f84f856`
|
||||
|
||||
|
||||
Jellyfin creds
|
||||
8b9dfc9e19cb4ae9be44a557e86f88df
|
||||
|
||||
```bash
|
||||
curl -k -H "Authorization: PVEAPIToken=homepage@pve!monitor=b51f4eab-c923-41b4-9e05-6f6abe9f65b5" https://192.168.1.116:8006
|
||||
```
|
||||
|
||||
#filesystem #linux
|
||||
Директория `/opt` в Linux, сокращение от *optional* - аналог `Programm Files` установка стороннего ПО.
|
||||
Стандартный путь `/usr/bin` - но тут файлы разбрасываются по разным системным папкам (бинарники в bin, библиотеки в lib)
|
||||
|
||||
1. Настройка доступа к панели через NPM:
|
||||
1. Открыть файл `/opt/homepage/.env`
|
||||
2. Добавить `HOMEPAGE_ALLOWED_HOSTS=homepage.mydomain.com,localhost:3000,192.168.1.92:3000`
|
||||
3. Перезапустить сервис `systemctl restart homepage`
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
#jellyfin #lxc #jellyfin_lxc_guide #guide
|
||||
### IP: 192.168.1.76:8096
|
||||
[jfn.embeddevio.netcraze.pro](https://jfn.embeddevio.netcraze.pro)
|
||||
pwd:
|
||||
# Table of Content
|
||||
* [Введение](#Description)
|
||||
* [Установка программы](# Install Alpine)
|
||||
# Description
|
||||
Менеджер паролей — это приложение, которое безопасно хранит ваши логины, пароли, заметки и другие секреты в зашифрованной форме и помогает автоматически подставлять данные при входе в сайты/приложения. Преимущества: сильные уникальные пароли для каждого сервиса, генерация случайных паролей, синхронизация между устройствами, централизованное хранилище паролей и ssh-ключей, а также история изменений.
|
||||
|
||||
# Creds
|
||||
==Jellyfin creds for HomePage== `8b9dfc9e19cb4ae9be44a557e86f88df `
|
||||
==jellyfin server== `http://89.109.8.114:55240` или `jfn.embeddevio.netcraze.pro`
|
||||
|
||||
|
||||
# Install
|
||||
Community description:
|
||||
```bash
|
||||
var_os='ubuntu' bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/jellyfin.sh)"
|
||||
```
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
#nginx_proxy_manager #npm #settings #lxc #guide
|
||||
|
||||
### IP: 192.168.1.101:81
|
||||
Описание на Habr:
|
||||
|
||||
**PVE - LXC Script Installation**
|
||||
```bash
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/nginxproxymanager.sh)"
|
||||
```
|
||||
### Description
|
||||
Это обратный прокси (Reverse Proxy).
|
||||
Основан на веб-сервере Nginx
|
||||
Сервис используется для организации доступа к приложениям через единую точку входа. В качестве точки входа может быть как доменное имя, так и IP адрес, с дальнейшей маршрутизацией до конечного приложения.
|
||||
|
||||
### Peculiar Properties
|
||||
- Встроенный Веб - интерфейс
|
||||
- Настройка переадресации доменов, кастомизация 404 страниц
|
||||
- Наличие сервиса Let's Encrypt для выпуска бесплатных SSL сертификатов с возможностью самоподписания
|
||||
- Функционал по обеспечению безопасности (Access-control list)
|
||||
### AI Configuration Promt
|
||||
```
|
||||
Ты — опытный системный администратор и сетевой инженер. Помоги мне пошагово настроить **нативный Nginx как обратный прокси** в уже созданном **непривилегированном LXC-контейнере** на Proxmox PVE. Не предлагай Nginx Proxy Manager, Docker и другие GUI-решения. Нужен именно Nginx, установленный пакетом в LXC.
|
||||
|
||||
**Контекст моей инфраструктуры:**
|
||||
|
||||
- Роутер: Keenetic Giga KN-1011, есть белый IP.
|
||||
|
||||
- WireGuard уже настроен на Keenetic. Через VPN я захожу в домашнюю сеть и управляю Proxmox и внутренними сервисами.
|
||||
|
||||
- Есть доменные имена от KeeneticDNS. Хочу использовать их для публикации отдельных сервисов через Nginx.
|
||||
|
||||
- Proxmox PVE установлен. Веб-интерфейс Proxmox (8006) **нельзя** выставлять в интернет; доступ к нему — только через WireGuard/локальную сеть.
|
||||
|
||||
- Непривилегированный LXC-контейнер для Nginx уже создан. ОС внутри пока не настраивал.
|
||||
|
||||
- Цель: Nginx в LXC как единая точка входа для публикации конкретных сервисов по доменным именам, с HTTPS. Управление Proxmox и чувствительными сервисами — только через VPN.
|
||||
|
||||
|
||||
**Что мне нужно от тебя:**
|
||||
|
||||
1. Веди меня **строго пошагово**, не выдавай всю инструкцию сразу. После каждого шага давай команды, ожидаемый результат и checkpoint. Не переходи к следующему шагу, пока я не подтвержу, что предыдущий выполнен.
|
||||
|
||||
2. В начале задай все уточняющие вопросы, которые нужны: версия ОС в LXC, IP-адрес LXC, IP и порты сервисов, которые нужно опубликовать, точные доменные имена KeeneticDNS, нужно ли публиковать сервисы наружу или только внутри VPN, есть ли поддержка DNS API у KeeneticDNS для ACME DNS-01.
|
||||
|
||||
3. Предложи и обоснуй схему получения SSL-сертификатов: Let's Encrypt через HTTP-01, DNS-01 или внутренний CA. Учти, что KeeneticDNS может не поддерживать ACME DNS API. Если DNS-01 невозможен — предложи безопасный обходной путь. Не открывай лишние порты без необходимости.
|
||||
|
||||
4. Помоги спланировать сеть и проброс портов на Keenetic: какие порты открыть на LXC, какие правила сделать на роутере, как проверить DNS и hairpin NAT. Напомни, что порт 8006 Proxmox остаётся закрытым.
|
||||
|
||||
5. Настрой базовую безопасность LXC: обновления, пользователи, SSH только из LAN/VPN, firewall внутри LXC, минимальный набор пакетов.
|
||||
|
||||
6. Установи и настрой Nginx: отдельные server-блоки, редирект HTTP→HTTPS, proxy_pass, необходимые заголовки `Host`, `X-Real-IP`, `X-Forwarded-For`, `X-Forwarded-Proto`, поддержка WebSocket, `client_max_body_size`, таймауты, логи. Добавь разумные security headers. Если уместно — предложи basic auth или ограничение по IP для чувствительных сервисов.
|
||||
|
||||
7. Настрой автоматическое продление сертификатов и проверку `certbot renew --dry-run` или аналог.
|
||||
|
||||
8. Дай команды проверки: `nginx -t`, `curl -I`, проверка сертификата, проверка извне и изнутри, проверка WebSocket, просмотр логов.
|
||||
|
||||
9. Предупреди о типичных ошибках: конфликт KeenDNS с портами 80/443, hairpin NAT, права в непривилегированном LXC, SELinux/AppArmor, обновления Nginx, уязвимости.
|
||||
|
||||
10. В конце помоги сделать backup конфигов и краткий чек-лист эксплуатации.
|
||||
|
||||
|
||||
**Формат ответа:**
|
||||
|
||||
- Сначала — уточняющие вопросы.
|
||||
|
||||
- Затем — план из пронумерованных этапов.
|
||||
|
||||
- Далее — только первый этап с командами в code blocks, ожидаемым результатом и checkpoint.
|
||||
|
||||
- Пиши на русском, кратко и точно. Если шаг опасен или необратим — явно предупреди.
|
||||
|
||||
|
||||
Начни с уточняющих вопросов и плана.
|
||||
|
||||
Этот ответ сгенерирован AI, только для справки.
|
||||
```
|
||||
### Settings
|
||||
1. Первичная настройка маршрутизатора (роутера)
|
||||
1. Включить правило переадресации портов 443 и 80 для доступа к NPM - требуется Let s Encrypt
|
||||
(необходимо для доступа из внешнего мира и самоподписания SSL):
|
||||
1. Вход - провайдер
|
||||
2. Выход: NPM - Nginx Proxy Manager
|
||||
3. Протокол: TCP/UDP
|
||||
4. Открываемый порт: 443
|
||||
5. Повторить п.1 - 4 но только для порта 80 - протокол только TCP
|
||||
2. Для работы необходимо иметь доменное имя:
|
||||
1. В данном случае настройка описана с использованием доменного имени от KeenDNS
|
||||
2. Альтернативный вариант - использование зарегистрированного домена.
|
||||
1. Зарегистрировал домен `embeddevio.space` на Reg.ru
|
||||
3. Добавление сервисов домашней сети:
|
||||
1. Hosts - Proxy Hosts - Add Proxy Host
|
||||
1. Domain Names: `domaine_name.embeddevio.netcraze.pro`
|
||||
2. Sheme: выбираем схему на которой работает ваш сервис `http` или `https`
|
||||
3. Forward Hostname / IP: `192.168.1.44` - IP адрес сервиса
|
||||
4. Forward Port: `80` `443` or `8086` порт Вашего сервиса
|
||||
5. Чек-боксы:
|
||||
1. `Chache Assets` - кеширование статических файлов (обычно оставляют вкл)
|
||||
2. `Block Common Exploits` - базовая защита от веб-атак
|
||||
3. `Websockets Support` - поддержка протокола вебсокет (чаты/дашборды и пр. в реальном времени)
|
||||
6. Вкладка SSL
|
||||
1. `SSL Certificate` Запросить (добавить) новый или выбрать существующий
|
||||
2. `Force SSL` - Перенаправляет все http на https - рекомендуется включить
|
||||
3. `HSTS Enable` - HTTP Strict Transport Security - защита от перехвата трафика (включать с осторожностью)
|
||||
4. `HTTP/2 Support` - Включение протокола HTTP/2 для ускорения загрузки
|
||||
5. `HSTS Sub-domains`
|
||||
2. Выполнив шаги п.1 добавить Ваши сервисы. Стоит учитывать, что некоторые, добавляемые сервисы требуют внутренней настройки (например Nextcloude и HomePage)
|
||||
### Подробный гайд по настройке:
|
||||
[NPM Keenetic Setup](obsidian://open?vault=wikipedia&file=HomeLab%2FLXC%20-%20npm_keenetic_setup)
|
||||
+4
-2
@@ -1,6 +1,8 @@
|
||||
#PBS #Backup
|
||||
#PBS #Backup #lxc
|
||||
|
||||
Установка:
|
||||
### IP: 192.168.1.116:81
|
||||
|
||||
**PVE - LXC Script Installation**
|
||||
```bash
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/proxmox-backup-server.sh)"
|
||||
```
|
||||
@@ -1,10 +1,17 @@
|
||||
#vaultwarden #lxc #vaultwarden_lxc_guide #guide
|
||||
### IP: 192.168.1.123:8000
|
||||
[vwd.embeddevio.netcraze.pro]()
|
||||
|
||||
# Table of Content
|
||||
* [Введение](#Description)
|
||||
* [Установка программы](# Install Alpine)
|
||||
# Description
|
||||
Менеджер паролей — это приложение, которое безопасно хранит ваши логины, пароли, заметки и другие секреты в зашифрованной форме и помогает автоматически подставлять данные при входе в сайты/приложения. Преимущества: сильные уникальные пароли для каждого сервиса, генерация случайных паролей, синхронизация между устройствами, централизованное хранилище паролей и ssh-ключей, а также история изменений.
|
||||
|
||||
[Установка Vaultwarden — простая альтернатива Bitwarden на своем сервере](https://prohomelab.com/posts/vaultwarden/)
|
||||
|
||||
### Guide
|
||||
1. Скачиваем/сами составляем `docker-compose.yml`.
|
||||
2. Создаём папку для данных и задаём на нее права.
|
||||
3. Запускаем `docker compose up -d`.
|
||||
4. Настраиваем reverse-proxy (обязательно) и TLS (Let’s Encrypt / SWAG / Traefik). Без ssl сертификата приложение нормально не функционирует.
|
||||
5. Настраиваем `ADMIN_TOKEN`, выключаем свободную регистрацию пользователей(если нужно), делаем бэкапы.
|
||||
# Install Alpine
|
||||
Community description: https://community-scripts.org/categories?category=authentication-and-security&preview=vaultwarden
|
||||
```bash
|
||||
var_os='alpine' bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/vaultwarden.sh)"
|
||||
```
|
||||
@@ -0,0 +1,94 @@
|
||||
#npm #ssl #keenetic #npm_keenetic_setup #guide
|
||||
# Настройка Nginx Proxy Manager (NPM) в связке с Keenetic
|
||||
|
||||
Руководство по переносу маршрутизации трафика и управлению SSL-сертификатами Let's Encrypt с роутера Keenetic (при наличии белого IP) на специализированный реверс-прокси **Nginx Proxy Manager**, развернутый в LXC-контейнере.
|
||||
|
||||
---
|
||||
## Архитектурная схема
|
||||
|
||||
```
|
||||
[Интернет]
|
||||
↓ (порты 80, 443)
|
||||
[Роутер Keenetic] (Проброс портов / NAT)
|
||||
↓
|
||||
[LXC: Nginx Proxy Manager] (Терминация SSL, маршрутизация)
|
||||
├── → https://ha.domain.link → [LXC: Home Assistant] (порт 8123)
|
||||
├── → https://nas.domain.link → [TrueNAS / Synology] (порт 5001)
|
||||
└── → https://proxmox.domain.link → [Proxmox VE] (порт 8006)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Шаг 1. Подготовка роутера Keenetic
|
||||
|
||||
Поскольку обработкой SSL и субдоменов теперь будет заниматься NPM, на роутере нужно отключить встроенное проксирование и настроить прямой проброс портов.
|
||||
|
||||
1. **Отключение встроенного проксирования KeenDNS:**
|
||||
* Перейдите в **Сетевые правила** → **KeenDNS**.
|
||||
* Удалите (или отключите) все правила из секции **«Доступ к веб-ресурсам домашней сети»**, чтобы Keenetic не перехватывал субдомены 4-го порядка.
|
||||
2. **Проброс портов (NAT):**
|
||||
* Перейдите в **Сетевые правила** → **Переадресация**.
|
||||
* Создайте два правила для вашего интерфейса «Провайдер» (основной интернет-канал):
|
||||
* **HTTP:** Внешний порт `80` → IP-адрес вашего LXC NPM → Внутренний порт `80`.
|
||||
* **HTTPS:** Внешний порт `443` → IP-адрес вашего LXC NPM → Внутренний порт `443`.
|
||||
|
||||
---
|
||||
|
||||
## Шаг 2. Выпуск Wildcard-сертификата в NPM (DNS Challenge)
|
||||
|
||||
Чтобы не открывать порт 80 для каждой проверки Let's Encrypt и автоматически защитить все субдомены вида `*.yourdomain.keenetic.link`, настроим проверку через DNS API.
|
||||
|
||||
> 💡 **Примечание:** Так как Keenetic не всегда предоставляет полноценный API-доступ сторонним утилитам для доменов `*.keenetic.link`, для выпуска Wildcard-сертификата в NPM рекомендуется использовать связку со сторонним бесплатным DNS-провайдером (например, **Cloudflare**, перенеся туда управление зоной, либо используя Cloudflare-сертификат).
|
||||
> Если вы остаетесь на чистом `keenetic.link`, используйте метод проверки **HTTP Challenge** (через порт 80).
|
||||
|
||||
### Инструкция для выпуска общего Wildcard-сертификата (через DNS API Cloudflare/других):
|
||||
1. Откройте веб-интерфейс NPM (обычно порт `81`).
|
||||
2. Перейдите во вкладку **SSL Certificates** → **Add SSL Certificate** → **Let's Encrypt**.
|
||||
3. Заполните поля:
|
||||
* **Domain Names:** `yourdomain.keenetic.link` и затем на следующей строчке `*.yourdomain.keenetic.link`.
|
||||
* Включите тумблер **Use a DNS Challenge**.
|
||||
* В списке **DNS Provider** выберите вашего провайдера (например, Cloudflare).
|
||||
* Вставьте ваш секретный API-токен в текстовое поле конфигурации ниже.
|
||||
4. Согласитесь с условиями Let's Encrypt и нажмите **Save**. В течение 1–2 минут сертификат будет готов.
|
||||
|
||||
---
|
||||
|
||||
## Шаг 3. Добавление прокси-хоста (на примере Home Assistant)
|
||||
|
||||
1. В интерфейсе NPM перейдите во вкладку **Hosts** → **Proxy Hosts** → **Add Proxy Host**.
|
||||
2. Во вкладке **Details** заполните параметры:
|
||||
* **Domain Names:** `ha.yourdomain.keenetic.link` (замените `ha` на ваш субдомен 4-го порядка).
|
||||
* **Scheme:** `http` *(большинство сервисов внутри локальной сети работают по HTTP)*.
|
||||
* **Forward Name/IP:** Локальный IP-адрес вашего Home Assistant (например, `192.168.1.100`).
|
||||
* **Forward Port:** Порт сервиса (для HA по умолчанию `8123`).
|
||||
* Включите тумблеры: **Block Common Exploits** и **Websockets Support** *(критически важно для работы Home Assistant!)*.
|
||||
3. Перейдите во вкладку **SSL**:
|
||||
* В выпадающем списке **SSL Certificate** выберите выпущенный ранее Wildcard-сертификат.
|
||||
* Включите тумблеры: **Force SSL** (для автоматического редиректа с HTTP на HTTPS) и **HTTP/2 Support**.
|
||||
4. Нажмите **Save**.
|
||||
|
||||
---
|
||||
|
||||
## Шаг 4. Настройка доверенного прокси в Home Assistant
|
||||
|
||||
Home Assistant по умолчанию блокирует запросы от обратных прокси-серверов в целях безопасности. Без этого шага при попытке войти через веб-интерфейс вы получите ошибку **«400: Bad Request»**.
|
||||
|
||||
1. Откройте конфигурационный файл Home Assistant (`configuration.yaml`).
|
||||
2. Добавьте или отредактируйте следующий блок кода:
|
||||
|
||||
```yaml
|
||||
http:
|
||||
use_x_forwarded_for: true
|
||||
trusted_proxies:
|
||||
- 192.168.1.50 # !!! ЗАМЕНИТЕ НА РЕАЛЬНЫЙ IP-АДРЕС ВАШЕГО LXC-КОНТЕЙНЕРА С NPM !!!
|
||||
```
|
||||
|
||||
3. Сохраните файл и **перезапустите** Home Assistant через панель разработчика или перезагрузив контейнер HA.
|
||||
|
||||
---
|
||||
|
||||
## Чек-лист проверки работоспособности
|
||||
- [ ] Порты 80 и 443 проброшены на Keenetic в сторону IP NPM.
|
||||
- [ ] При переходе по адресу `https://ha.yourdomain.keenetic.link` открывается окно авторизации Home Assistant.
|
||||
- [ ] В адресной строке браузера горит значок «замочка» (сертификат валиден, выпущен Let's Encrypt).
|
||||
- [ ] Мобильное приложение Home Assistant Companion успешно подключается снаружи по новому адресу.
|
||||
@@ -1,4 +1,10 @@
|
||||
#git #gitea #lxc #settings
|
||||
# IP: 192.168.1.111:3000
|
||||
https://git.embeddevio.netcraze.pro/
|
||||
|
||||
| usr | embeddev.iot@gmail.com |
|
||||
| --- | -------------------------- |
|
||||
| psw | GiT@R4_hOm3 |
|
||||
### Зеркалирование c GitHub
|
||||
1. GitHub - Получить PAT Personal Access Token
|
||||
1. Settings - Password and Authentication - Develop settings - Personal access tokens - Tokens(classic)
|
||||
@@ -1,17 +0,0 @@
|
||||
#nginx_proxy_manager #npm
|
||||
|
||||
Описание на Habr:
|
||||
### Description
|
||||
Это обратный прокси (Reverse Proxy).
|
||||
Основан на веб-сервере Nginx
|
||||
Сервис используется для организации доступа к приложениям через единую точку входа. В качестве точки входа может быть как доменное имя, так и IP адрес, с дальнейшей маршрутизацией до конечного приложения.
|
||||
|
||||
### Peculiar Properties
|
||||
- Встроенный Веб - интерфейс
|
||||
- Настройка переадресации доменов, кастомизация 404 страниц
|
||||
- Наличие сервиса Let's Encrypt для выпуска бесплатных SSL сертификатов с возможностью самоподписания
|
||||
- Функционал по обеспечению безопасности (Access-control list)
|
||||
|
||||
### Settings
|
||||
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
#omv #settings #nfs-share #pve #pbs #nfs #mount #lxc
|
||||
|
||||
# Гайд: Разшаривание NFS на OMV и подключение к PVE + PBS
|
||||
|
||||
> Инфраструктура: OMV 8 (192.168.1.73), Proxmox VE, Proxmox Backup Server (отдельная VM/CT)
|
||||
@@ -17,7 +19,7 @@
|
||||
**Services → NFS → Shares → Add**
|
||||
|
||||
| Поле | Значение |
|
||||
|------|---------|
|
||||
| ------------- | --------------------------------------------------------------- |
|
||||
| Shared folder | `/путь/к/шаре` (создать заранее через Storage → Shared Folders) |
|
||||
| Client | `192.168.1.0/24` — вся локальная сеть |
|
||||
| Options | `rw,subtree_check,no_root_squash` |
|
||||
@@ -48,8 +50,8 @@ cat /etc/exports
|
||||
|
||||
## 2. Подключение NFS к PVE и проброс в LXC
|
||||
|
||||
### 2.1. Создание PVE Storage для NFS
|
||||
|
||||
### 2.1. Создание PVE Storage для NFS через UI
|
||||
#nfs-to_pve
|
||||
**Datacenter → Storage → Add → NFS**
|
||||
|
||||
| Поле | Значение |
|
||||
@@ -76,7 +78,7 @@ pvesm status | grep nfs-omv
|
||||
---
|
||||
|
||||
### 2.2. Монтирование NFS на хосте PVE (для LXC)
|
||||
|
||||
При подключении NFS через UI - отдельно точку монтирования создавать не нужно
|
||||
Создаём точку монтирования на **хосте Proxmox**:
|
||||
|
||||
```bash
|
||||
@@ -125,7 +127,7 @@ df -h | grep nfs
|
||||
---
|
||||
|
||||
### 2.3. Проброс NFS-шары в LXC контейнер
|
||||
|
||||
#nfs-to-lxc
|
||||
Редактировать конфиг контейнера `/etc/pve/lxc/<CT_ID>.conf`:
|
||||
|
||||
```bash
|
||||
@@ -0,0 +1,42 @@
|
||||
#omv #nas
|
||||
# IP: 192.168.1.73
|
||||
#OpenMediaVault https://omv.embeddevio.netcraze.pro/
|
||||
|
||||
`admin`
|
||||
`OmV@R4_hOm3`
|
||||
|
||||
# Spec:
|
||||
> **Система:** OMV 8.5.9-1 (Synchrony) / Debian 13 Trixie
|
||||
> **Hardware:** RAID1 8TB на Intel(R) Celeron(R) CPU 1037U @ 1.80GHz с 4GB
|
||||
> **Docker:** Qbittorrent
|
||||
---
|
||||
|
||||
# Description on File System and Shared Folder:
|
||||
Настройка шары папок описано тут: #omv_share_folders
|
||||
|
||||
1. `/dev/md0` - EXT4 - RAID1 на 8TB
|
||||
1. `Media` - каталог для хранения медиафайлов
|
||||
1. Расшарен по NFS и SMB для Jellyfin и Qbittorrent
|
||||
2. Древо каталогов:
|
||||
1. `Shared Music` - Каталог Музыки
|
||||
2. `Movies ` - Каталог Фильмов
|
||||
3. `Shared Video ` - Каталог сериалов
|
||||
4. `watch` - каталог "ожидания" для торрент файлов (QBittorrent)
|
||||
5. `incomplete` - незавершенные закачки торрент
|
||||
3. `Media` через NFS примонтирован к PVE - `/mnt/pve/OMV-Media`
|
||||
1. `OMV-Media` используется в LXC Jellyfin через точку монтирования mp1: `/mnt/pve/OMV-Media` проброшен в `mnt/share`
|
||||
1. Каталоги Jellyfin:
|
||||
1. `/mnt/share/Shared Music ` - Каталог Музыки
|
||||
2. `/mnt/share/Movies ` - Каталог Фильмов
|
||||
3. `/mnt/share/Shared Video` - Каталог Сериалов
|
||||
2. `pbs-storage` - бэкапы Proxmox Backup Server
|
||||
1. по NFS смонтирован в `/mnt/pve/pbs-storage` в PVE
|
||||
2. в PBS примонтирован через mp1 и доступен как `/mnt/backup-omv`
|
||||
3. `git-storage` - каталог для Git репозитория #git-storage
|
||||
4. `cloude-storage` - каталог для сервиса Nexcloude #cloude-storage
|
||||
1.
|
||||
2. `/dev/md1` - EXT4 - Внешний USB для бэкапов OMV
|
||||
1. `omv_backup` - `/dev/sdd1` - OMV-Backup
|
||||
|
||||
---
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
#omv #gmail #notification
|
||||
# Настройка уведомление на почту gmail
|
||||
#omv #gmail #notification #backup #lxc
|
||||
# Настройка бэкапов системы на внешний HDD
|
||||
|
||||
> **Система:** OMV 8.5.9-1 (Synchrony) / Debian 13 Trixie
|
||||
---
|
||||
|
||||
1. System - Notification -settings
|
||||
1. Установить плагин
|
||||
1. `openmediavault-backup`
|
||||
2. Подключить внешний HDD (ext4)
|
||||
1.
|
||||
3. System - Backup
|
||||
4. System - Notification -settings
|
||||
1. Enable - `check`
|
||||
2. SMTP server - `smtp.gmail.com`
|
||||
3. SMTP port: `587`
|
||||
@@ -18,5 +23,4 @@
|
||||
|
||||
---
|
||||
|
||||
|
||||
Самый простой способ — без Docker. qBittorrent есть в репозиториях Debian 13.
|
||||
@@ -0,0 +1,194 @@
|
||||
#homelab #proxmox #Gitea #homeassistant #haos #adguard #wireguard #debian #lxc #pve #omv #jellyfin #nas #portaineer #pbs #homepage #qbittorrent
|
||||
|
||||
## HomeServer:
|
||||
**Home Network IP:** 192.168.1.XXX
|
||||
**External IP:** <font color="#ff0000">89.109.8.114</font>
|
||||
|
||||
### Внешний доступ к лабе:
|
||||
Администрирование - WireGuard
|
||||
|
||||
Keenetic: embeddevio.netcraze.pro
|
||||
Домен на reg.ru: https://embeddevio.space/
|
||||
|
||||
==Доменные имена Nginx Proxy Manager:==
|
||||
#Nextcloude https://cloude.embeddevio.netcraze.pro/
|
||||
#Jellyfin https://jfn.embeddevio.netcraze.pro/
|
||||
#OpenMediaVault https://omv.embeddevio.netcraze.pro/
|
||||
#Vaultvarden https://vwd.embeddevio.netcraze.pro/
|
||||
#HomeAssistant https://ha.embeddevio.netcraze.pro/
|
||||
|
||||
|
||||
==Старые доменные имена от netcraze==
|
||||
Proxmox: https://proxmox.embeddevio.netcraze.pro
|
||||
HomeAssistant: https://ha.embeddevio.netcraze.pro
|
||||
NAS: https://nas.embeddevio.netcraze.pro
|
||||
Qbittorrent: https://qbt.embeddevio.netcraze.pro
|
||||
|
||||
|
||||
## HomeLab Table
|
||||
1. **Keenetic** - http://192.168.1.1/
|
||||
2. **NUC - Proxmox VE** - [192.168.1.116:8006](https://192.168.1.116:8006/)
|
||||
1. VM (Vitrual Macheens)
|
||||
1. ==100 - HomeAssistant OS== - http://192.168.1.43:8123/
|
||||
2. LXC (Linux Containeers)
|
||||
1. ==101 - Gitea== - http://192.168.1.111:3000/
|
||||
2. ==102 - AdGuard== - http://192.168.1.148/
|
||||
3. ==103 - Debian== Embeddev
|
||||
1. ==*Hermes Agent*== - http://192.168.1.44:9119/
|
||||
2. 3x-ui Xray Vless Reality - https://192.168.1.44:5324/SY9zL3JA9b8qPhnE7r/
|
||||
4. ==104 - Homepage== http://192.168.1.92:3000/
|
||||
5. ==105 - Docker ==
|
||||
1. Portaineer - https://192.168.1.147:9443/
|
||||
2. Homelable - http://192.168.1.147:3000/
|
||||
3. Drawio - http://192.168.1.147:8080/
|
||||
4. AmneziaWG - no ui
|
||||
6. ==106 - Nginxproxymanager== - http://192.168.1.101:81/
|
||||
7. ==107 - Jellyfin== - http://192.168.1.76:8096/
|
||||
8. ==108 - Proxmox Backup Server== - https://192.168.1.91:8007/
|
||||
9. ==109 - Debian== HealtyChel - под вопросом
|
||||
10. 110
|
||||
3. **NAS - OpenMediaVault** - http://192.168.1.73/
|
||||
1. Qbittorrent - http://192.168.1.73:8080/
|
||||
2. Immich
|
||||
4. **Raspberry PI5**
|
||||
|
||||
## Hardware info
|
||||
#### NUC8i3BEH
|
||||
``` bash
|
||||
# dmidecode 3.6
|
||||
Getting SMBIOS data from sysfs.
|
||||
SMBIOS 3.2.1 present.
|
||||
|
||||
Handle 0x0001, DMI type 1, 27 bytes
|
||||
System Information
|
||||
Manufacturer: Intel(R) Client Systems
|
||||
Product Name: NUC8i3BEH
|
||||
Version: J72753-304
|
||||
Serial Number: G6BE92400LXJ
|
||||
UUID: 48ea7e15-d51a-aa83-aea7-1c697a03fe73
|
||||
Wake-up Type: Power Switch
|
||||
SKU Number: BOXNUC8i3BEH
|
||||
Family: Intel NUC
|
||||
|
||||
Physical Memory Array
|
||||
Location: System Board Or Motherboard
|
||||
Use: System Memory
|
||||
Error Correction Type: None
|
||||
Maximum Capacity: 32 GB
|
||||
Error Information Handle: Not Provided
|
||||
Number Of Devices: 2
|
||||
|
||||
Handle 0x003C, DMI type 17, 40 bytes
|
||||
Memory Device
|
||||
Array Handle: 0x003B
|
||||
Error Information Handle: Not Provided
|
||||
Total Width: 64 bits
|
||||
Data Width: 64 bits
|
||||
Size: 8 GB
|
||||
Form Factor: SODIMM
|
||||
Set: None
|
||||
Locator: SODIMM1
|
||||
Bank Locator: Memory Channel A
|
||||
Type: DDR4
|
||||
Type Detail: Synchronous
|
||||
Speed: 2667 MT/s
|
||||
Manufacturer: Samsung
|
||||
Serial Number: 338CC169
|
||||
Asset Tag: 9876543210
|
||||
Part Number: M471A1K43CB1-CTD
|
||||
Rank: 1
|
||||
Configured Memory Speed: 2400 MT/s
|
||||
Minimum Voltage: 1.2 V
|
||||
Maximum Voltage: 1.2 V
|
||||
Configured Voltage: 1.2 V
|
||||
|
||||
Handle 0x003D, DMI type 17, 40 bytes
|
||||
Memory Device
|
||||
Array Handle: 0x003B
|
||||
Error Information Handle: Not Provided
|
||||
Total Width: 64 bits
|
||||
Data Width: 64 bits
|
||||
Size: 8 GB
|
||||
Form Factor: SODIMM
|
||||
Set: None
|
||||
Locator: SODIMM2
|
||||
Bank Locator: Memory Channel B
|
||||
Type: DDR4
|
||||
Type Detail: Synchronous
|
||||
Speed: 2667 MT/s
|
||||
Manufacturer: Samsung
|
||||
Serial Number: 338CC19A
|
||||
Asset Tag: 9876543210
|
||||
Part Number: M471A1K43CB1-CTD
|
||||
Rank: 1
|
||||
Configured Memory Speed: 2400 MT/s
|
||||
Minimum Voltage: 1.2 V
|
||||
Maximum Voltage: 1.2 V
|
||||
Configured Voltage: 1.2 V
|
||||
```
|
||||
#### OpenMediaVault
|
||||
```bash
|
||||
root@openmediavault:~# dmidecode -t system
|
||||
# dmidecode 3.6
|
||||
Getting SMBIOS data from sysfs.
|
||||
SMBIOS 2.7 present.
|
||||
|
||||
Handle 0x0001, DMI type 1, 27 bytes
|
||||
System Information
|
||||
Manufacturer: Gigabyte Technology Co., Ltd.
|
||||
Product Name: To be filled by O.E.M.
|
||||
Version: To be filled by O.E.M.
|
||||
Serial Number: To be filled by O.E.M.
|
||||
UUID: 03aa02fc-0414-0590-4d06-2f0700080009
|
||||
Wake-up Type: Power Switch
|
||||
SKU Number: To be filled by O.E.M.
|
||||
Family: To be filled by O.E.M.
|
||||
|
||||
# dmidecode 3.6
|
||||
Getting SMBIOS data from sysfs.
|
||||
SMBIOS 2.7 present.
|
||||
|
||||
Handle 0x0007, DMI type 16, 23 bytes
|
||||
Physical Memory Array
|
||||
Location: System Board Or Motherboard
|
||||
Use: System Memory
|
||||
Error Correction Type: None
|
||||
Maximum Capacity: 32 GB
|
||||
Error Information Handle: Not Provided
|
||||
Number Of Devices: 2
|
||||
|
||||
Handle 0x0040, DMI type 17, 34 bytes
|
||||
Memory Device
|
||||
Array Handle: 0x0007
|
||||
Error Information Handle: Not Provided
|
||||
Total Width: Unknown
|
||||
Data Width: Unknown
|
||||
Size: No Module Installed
|
||||
Form Factor: DIMM
|
||||
Set: None
|
||||
Locator: ChannelB-DIMM0
|
||||
Bank Locator: BANK 2
|
||||
Type: Unknown
|
||||
Type Detail: None
|
||||
|
||||
Handle 0x0041, DMI type 17, 34 bytes
|
||||
Memory Device
|
||||
Array Handle: 0x0007
|
||||
Error Information Handle: Not Provided
|
||||
Total Width: 64 bits
|
||||
Data Width: 64 bits
|
||||
Size: 4 GB
|
||||
Form Factor: DIMM
|
||||
Set: None
|
||||
Locator: ChannelA-DIMM0
|
||||
Bank Locator: BANK 0
|
||||
Type: DDR3
|
||||
Type Detail: Synchronous
|
||||
Speed: 1333 MT/s
|
||||
Manufacturer: Hynix/Hyundai
|
||||
Serial Number: 01815948
|
||||
Asset Tag: 9876543210
|
||||
Part Number: HMT351U6CFR8C-H9
|
||||
Rank: 2
|
||||
Configured Memory Speed: 1333 MT/s
|
||||
```
|
||||
@@ -6,44 +6,14 @@ Proxmox Community Scripts [Proxmox Community-scripts](https://community-scripts.
|
||||
|
||||
![[Pasted image 20260426160841.png]]
|
||||
|
||||
## HomeLab map
|
||||
1. NUC - Proxmox VE
|
||||
1. VM (Vitrual Macheens)
|
||||
1. 100 - HomeAssistant OS
|
||||
2. LXC (Linux Containeers)
|
||||
1. 101 - Gitea
|
||||
2. 102 - AdGuard
|
||||
3. 103 - Debian
|
||||
1. 3x-ui Xray Vless Reality
|
||||
4. 104 - Homepage
|
||||
5. 105 - Docker
|
||||
1. Portaineer
|
||||
2. Drawio
|
||||
3. qbittorrent
|
||||
6. 106 - Nginxproxymanager
|
||||
7. 107 - Jellyfin
|
||||
8. 108 - Proxmox Backup Server
|
||||
2. Keenetic
|
||||
3. NAS - OpenMediaVault
|
||||
1. Immich
|
||||
2. Qbittorrent
|
||||
|
||||
|
||||
|
||||
## Network route table
|
||||
**Home Network IP:** 192.168.1.XXX
|
||||
**External IP:** <font color="#ff0000">89.109.8.114</font>
|
||||
|
||||
### NAS - OpenMediaVault
|
||||
IP: 192.168.1.73
|
||||
Характеристики:
|
||||
Установленные сервисы
|
||||
Share Folders:
|
||||
1. Каталог `Media` по NFS смонтирован в `/mnt/pve/OMV-Media` в PVE
|
||||
1. В LXC контейнере (107) Jellyfin через mp1: `/mnt/pve/OMV-Media` проброшен в `mnt/share`
|
||||
2. Каталог `pbs-storage` по NFS смонтирован в `/mnt/pve/pbs-storage` в PVE
|
||||
1. Через mp:1 проброшен в LXC контейнере (108) PBS и примонтирован `/mnt/backup-omv`
|
||||
|
||||
## Wifi:
|
||||
EMBNET2G / 5G
|
||||
`Ae19co90$!eT`
|
||||
|
||||
|
||||
Тест работы AdGuard: https://adblock-tester.com/
|
||||
@@ -52,29 +22,23 @@ Keeneetic: `emb` `3haMJf9ZdNpCktq`
|
||||
## HomeLab system map table
|
||||
|
||||
| Home Service | State | SSH | Port Internal | Port External | <center>IP or DNS</center> | <center>user</center> | <center>psw</center> | Include <br>Services | <center>Proxmox <br>VE Script</center><br> |
|
||||
| ------------------------- | ------------------------------------------ | ------------ | ------------- | ------------- | ------------------------------------------------ | --------------------- | -------------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ------------------------- | ------------------------------------------ | ------------ | ------------- | ------------- | --------------------------------------------- | --------------------- | -------------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
||||
| **Keenetic** | <center>✔️</center> | | | | http://mrtrand.keenetic.pro | admin | 1eU$_RhMp8 | | |
|
||||
| **Proxmox UI** | <center>✔️</center> | | 8006 | 8002 | 192.168.1.116 | root | Px@R4_hOm3 | | |
|
||||
| **Proxmox SSH** | <center>✔️</center> | key <br>only | 58220 | 2202 | 192.168.1.116 | | | | |
|
||||
| **Proxmox Backup Server** | | | 8007 | | https://192.168.1.91:8007/ | root | Px@R4_hOm3 | | `bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/proxmox-backup-server.sh)"` |
|
||||
| **Home Assistant** | <center>✔️</center> | | 8123 | 8003 | 192.168.1.43<br>http://ha.mrtrand.keenetic.pro | embeddevio | Sm@R4_hOm3<br> | | `bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/haos-vm.sh)"` |
|
||||
| **Home Assistant** | <center>✔️</center> | | 8123 | 8003 | 192.168.1.43 | embeddevio | Sm@R4_hOm3<br> | | `bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/vm/haos-vm.sh)"` |
|
||||
| **Debian** | <center>✔️</center> | key <br>only | | | 192.168.1.44 | | | 3x-UI | `bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/debian.sh)"` |
|
||||
| **Gitea** | <center>✔️</center> | | 3000 | 8004 | 192.168.1.111<br>http://git.mrtrand.keenetic.pro | | | | `bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/gitea.sh)"` |
|
||||
| **Gitea** | <center>✔️</center> | | 3000 | 8004 | 192.168.1.111<br> | | | | `bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/gitea.sh)"` |
|
||||
| **AdGuard Home** | <center>✔️ требуется донастройка?</center> | | 3000 | | 192.168.1.148 | embeddevio | Ad@R4_hOm3 | | `bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/adguard.sh)"` |
|
||||
| **Docker<br>Portainer** | <center>✔️</center> | | 9443 | | 192.168.1.147 | admin | Dokr@R4_hOm3 | | `bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/docker.sh)"` |
|
||||
| **Homepage** | | | 3000 | | 192.168.1.92:3000 | | | | `bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/homepage.sh)"` |
|
||||
| **Jellyfin** | <center>✔️</center> | | 8096 | 55240 | [192.168.1.76:8096](http://192.168.1.76:8096) | embeddevio | JiF@R4_hOm3 | | `var_os='ubuntu' bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/jellyfin.sh)"` |
|
||||
| Alpine Nextcloude | <center>❌</center> | | | | | | | | |
|
||||
| Nginx Proxy Manager | <center>+-</center> | | | | 192.168.1.101:81 | embeddevio | NgX@R4_hOm3 | | `bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/nginxproxymanager.sh)"` |
|
||||
| **Alpine Nextcloude** | <center>✔️</center> | | | | 192.168.1.80:81 | | | | |
|
||||
| Nginx Proxy Manager | <center>✔️</center> | | не настроен | | 192.168.1.101:81 | embeddevio | NgX@R4_hOm3 | | `bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/nginxproxymanager.sh)"` |
|
||||
| **OpenMediaVault** | <center>✔️</center> | | | | 192.168.1.73 | admin/embeddevio | OmV@R4_hOm3 | | |
|
||||
| | | | | | | root | digitex1990 | | |
|
||||
|
||||
**Планы:**
|
||||
- [ ] SSL сертификат для Proxmox
|
||||
- [ ] Нужна регистрация на хостинге (каком)
|
||||
- [ ] Нужен Nginx ?
|
||||
[192.168.1.76:8096](http://192.168.1.76:8096)
|
||||
|
||||
### Proxmox Application & Services
|
||||
|
||||
| Service | Location | Connect | Description | usr/psw | Repositories |
|
||||
+1
-9
@@ -1,4 +1,4 @@
|
||||
![[Proxmox HA manual install-1776339003771.webp]]
|
||||
#haos #vm #pve #guide ![[Proxmox HA manual install-1776339003771.webp]]
|
||||
## Install HAOS with Automatization Script
|
||||
|
||||
|
||||
@@ -15,20 +15,12 @@
|
||||
системные требования довольно минимальны - следующие _предложения_ следует скорректировать в соответствии с вашими потребностями
|
||||
|
||||
- Общие: Что угодно
|
||||
|
||||
- ОС: Не используйте носители
|
||||
|
||||
- Система: Машина - q35; BIOS - OVMF (UEFI); Хранилище EFI - Что угодно, что вы обычно используете для хранения; Снимите флажок "предварительно зарегистрировать ключи"
|
||||
|
||||
- Диски: Удалите все существующие диски, мы добавим образ qcow2 позже
|
||||
|
||||
- CPU: 4 ядра (или сколько хотите)
|
||||
|
||||
- Память: 4096 (или сколько хотите)
|
||||
|
||||
- Сеть: Что угодно, что вы обычно делаете
|
||||
|
||||
|
||||
Пока не запускайте виртуальную машину.
|
||||
|
||||
## Прикрепить образ qcow2
|
||||
@@ -1,4 +1,4 @@
|
||||
#mount #umount
|
||||
#mount #umount #pve #settings #mount #flash #smb #lxc
|
||||
|
||||
### Mount USB Flash in LXC - прокидывание USB флешки в LXC контейнер
|
||||
Управление осуществляется из Shell гипервизора Proxmox
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
#haos #mqtt #zigbee #esphome
|
||||
#haos #mqtt #zigbee #esphome #homeassistant
|
||||
|
||||
# IP: 192.168.1.43:8123
|
||||
[ha.embeddevio.netcraze.pro]()
|
||||
|
||||
### Install HAOS in Proxmox with Automatization Script
|
||||
[Installation Guide](https://smarthomescene.com/guides/how-to-install-home-assistant-on-proxmox-the-easy-way/)
|
||||
@@ -34,3 +37,4 @@
|
||||
```
|
||||
|
||||
|
||||
Настройки SSH через расширение
|
||||
@@ -1,3 +1,4 @@
|
||||
#omv #settings #docker #lxc #qbittorrent #nfs #mount #lxc
|
||||
# Установка qBittorrent на OpenMediaVault 8.5.9-1 (Synchrony)
|
||||
|
||||
> **Система:** OMV 8.5.9-1 (Synchrony) / Debian 13 Trixie
|
||||
@@ -127,9 +128,7 @@ journalctl -u qbittorrent-nox | grep -i password
|
||||
**1.1. Установка omv-extras (плагин OMV)**
|
||||
|
||||
Через веб-интерфейс:
|
||||
|
||||
> **System → Plugins** → установить `openmediavault-omvextrasorg`
|
||||
|
||||
Или через CLI (если плагина нет в списке):
|
||||
|
||||
```bash
|
||||
@@ -274,7 +273,7 @@ ufw allow 6881/udp comment 'qBittorrent Torrent UDP'
|
||||
---
|
||||
|
||||
## Интеграция с OMV — shared folders
|
||||
|
||||
#omv_share_folders
|
||||
Чтобы скачанные файлы были доступны по SMB/NFS:
|
||||
|
||||
**Через веб OMV:**
|
||||
+66
-46
@@ -1,78 +1,98 @@
|
||||
#ssh #open-ssh
|
||||
|
||||
Директория `/user/.ssh/`
|
||||
|
||||
``` python
|
||||
# Read more about SSH config files: https://linux.die.net/man/5/ssh_config
|
||||
|
||||
Host RP3_192.168.1.110
|
||||
HostName 192.168.1.110
|
||||
User emb
|
||||
HostName 192.168.1.110
|
||||
User emb
|
||||
|
||||
Host rp5_wifi
|
||||
HostName 192.168.1.45
|
||||
User emb
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
HostName 192.168.1.46
|
||||
User emb
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
|
||||
# [NO USED] OLD HomeServer External IP
|
||||
Host ha-server
|
||||
HostName 89.109.8.114
|
||||
User emb
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
Port 2202
|
||||
HostName 89.109.8.114
|
||||
User emb
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
Port 2202
|
||||
|
||||
# Proxmox - HomeServer
|
||||
# Proxmox - HomeServer
|
||||
Host homelab
|
||||
HostName 192.168.1.116
|
||||
User root
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
Port 58220
|
||||
HostName 192.168.1.116
|
||||
User root
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
Port 58220
|
||||
|
||||
# HomeAssistant on Proxmox
|
||||
Host homelab_haos
|
||||
HostName 192.168.1.43
|
||||
User root
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
HostName 192.168.1.43
|
||||
User root
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
|
||||
# Debian on Proxmox
|
||||
Host homelab_deb
|
||||
HostName 192.168.1.44
|
||||
User root
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
HostName 192.168.1.44
|
||||
User root
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
# hermes agent - проброс портов
|
||||
LocalForward localhost:9119 127.0.0.1:9119
|
||||
|
||||
# Debian on Proxmox HealtyChel
|
||||
Host homelab_debhc
|
||||
HostName 192.168.1.125
|
||||
User root
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
# hermes agent - проброс портов
|
||||
LocalForward localhost:9119 127.0.0.1:9119
|
||||
|
||||
# Docker LXC on Proxmox
|
||||
Host homelab_docker
|
||||
HostName 192.168.1.147
|
||||
User root
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
HostName 192.168.1.147
|
||||
User root
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
|
||||
# HomePage LXC on Proxmox
|
||||
Host homelab_page
|
||||
HostName 192.168.1.92
|
||||
User root
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
Port 22
|
||||
HostName 192.168.1.92
|
||||
User root
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
Port 22
|
||||
|
||||
# Gitea LXC on Proxmox
|
||||
Host homelab_git
|
||||
HostName 192.168.1.111
|
||||
User root
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
Port 22
|
||||
# Port 8004
|
||||
HostName 192.168.1.111
|
||||
User root
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
Port 22
|
||||
# Port 8004
|
||||
|
||||
# Radxa E25 SBC
|
||||
Host radxa
|
||||
HostName 192.168.1.142
|
||||
User radxa
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
Port 22
|
||||
HostName 192.168.1.142
|
||||
User radxa
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
Port 22
|
||||
|
||||
# OpenMediaVault
|
||||
Host homelab_omv
|
||||
HostName 192.168.1.73
|
||||
User root
|
||||
IdentityFile ~/.ssh/id_ed25519
|
||||
IdentitiesOnly yes
|
||||
Port 22
|
||||
```
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 1.3 MiB |
@@ -0,0 +1,96 @@
|
||||
## Description
|
||||
![[Pasted image 20261029215430.png|295]]
|
||||
|
||||
|
||||
Radxa E52C https://docs.radxa.com/en/e/e52c
|
||||
Radxa Github https://github.com/radxa
|
||||
Radxa Schematic: https://dl.radxa.com/e/e52c/hw/radxa_e52c_v1.2_schematic.pdf
|
||||
|
||||
Radxa Wiki: https://wiki.radxa.com/Rock3/installusb-install-radxa-e25
|
||||
https://wikidevi.wi-cat.ru/Radxa_E25_(D2E8)
|
||||
Forum Radxa Community: https://forum.radxa.com/
|
||||
Документация и файлы: https://dl.radxa.com/cm3i/e25/
|
||||
|
||||
# Images:
|
||||
|
||||
|
||||
## Debian microSD Installation Guide
|
||||
1. Скачать образ системы (Debian or OpenWRT)
|
||||
2. С помощью Balena Etcher записать образ на microSD
|
||||
3. Подключить питание к TypeC и Ethernet
|
||||
1. Debian: установить SSH соединение:
|
||||
1. user: `radxa`
|
||||
2. psw: `radxa`
|
||||
2. OpenWRT
|
||||
1. usr: `root`
|
||||
2. psw: `password`
|
||||
3. ip: 192.168.1.1
|
||||
4. Обновить систему:
|
||||
```bash
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
```
|
||||
При возникновении проблем с репозиториями
|
||||
```bash
|
||||
sudo sed -i '/bullseye-backports/d' /etc/apt/sources.list /etc/apt/sources.list.d/* 2>/dev/null
|
||||
```
|
||||
При возникновении необходимости **downgrade** выполнить принудительное обновлениt:
|
||||
```bash
|
||||
sudo apt dist-upgrade --allow-downgrades
|
||||
```
|
||||
Перезагрузить систему
|
||||
```bash
|
||||
sudo systemctl -r reboot
|
||||
```
|
||||
Удалить неиспользуемые пакеты:
|
||||
```bash
|
||||
sudo apt autoremove -y
|
||||
```
|
||||
|
||||
### Setting with rsetup
|
||||
Настройка SBC с помощью стандартной утилиты `rsetup`
|
||||
|
||||
|
||||
## OpenWRT microSD Installation Guide
|
||||
IP-адрес по умолчанию:
|
||||
192.168.1.1
|
||||
Пароль root по умолчанию:
|
||||
password
|
||||
|
||||
|
||||
## EMMC Installation Guide
|
||||
1. Скачайте и распакуйте на свой компьютер следующие компоненты:
|
||||
1. **Утилиту RKDevTool** (версии 2.84 или новее) и **Драйвер DriverAssitant** от Rockchip.
|
||||
2. **Файл загрузчика (MiniLoader)**: обычно это файл вида `RK356x_SPL_Loader_v1.XX.bin`
|
||||
3. **Образ системы**: скачайте нужный дистрибутив с [официального сайта Radxa](https://docs.radxa.com/en/rock3/e25). Распакуйте архив, чтобы получить чистый файл
|
||||
4.
|
||||
```bash
|
||||
apt update && apt upgrade -y
|
||||
apt install -y docker.io
|
||||
```
|
||||
|
||||
2. Настройка автозапуска
|
||||
```bash
|
||||
systemctl enable docker
|
||||
systemctl start docker
|
||||
```
|
||||
|
||||
3. Установка Docker Compose
|
||||
```bash
|
||||
apt install -y docker-compose
|
||||
```
|
||||
|
||||
## Manual
|
||||
1. Просмотр списка образов
|
||||
```bash
|
||||
docker image ls
|
||||
```
|
||||
|
||||
2. Загрузка образа из Docker Hub
|
||||
```bash
|
||||
docker pull redis:7-alpine
|
||||
```
|
||||
|
||||
3. Запуск докер контейнера
|
||||
```bash
|
||||
docker compose up -d
|
||||
```
|
||||
@@ -0,0 +1,8 @@
|
||||
Gitea Hermes token
|
||||
ea5b73c654a2d836341e67a2e78e5ac959961006
|
||||
|
||||
hermes webhook
|
||||
3MfprNofyxdPWUuEM368vLW3aMru5nQYGUDfBTg9YM0
|
||||
|
||||
|
||||
http://192.168.1.111:3000/embeddevio/awg-dash.git
|
||||
@@ -0,0 +1,406 @@
|
||||
# AmneziaVPN в Docker: полный гайд
|
||||
|
||||
**Цель:** поднять в Docker контейнере клиент AmneziaVPN (AmneziaWG 3.1), подключить его по пользовательскому `.conf` от Amnezia Premium и сделать его VPN-шлюзом для домашней сети.
|
||||
|
||||
**Автор:** Hermes Agent • Среда: LXC-контейнер (Docker 29.4.1, ядро Proxmox 6.17.13-2-pve)
|
||||
|
||||
---
|
||||
|
||||
## 1. Что потребуется
|
||||
|
||||
| Компонент | Значение |
|
||||
|-----------|----------|
|
||||
| Хост | Linux с Docker 20.10+ (тестировалось: LXC 29.4.1) |
|
||||
| `/dev/net/tun` | Должен существовать и быть открыт |
|
||||
| `ip_forward` | `1` |
|
||||
| `.conf` файл | Amnezia Premium / AmneziaWG 3.1 конфиг |
|
||||
| Версии | `amneziawg-go` v3.1.20260828, `amneziawg-tools` v3.1.20260812 |
|
||||
|
||||
Пример `.conf` (Amnezia Premium, конфиг 3.1):
|
||||
```ini
|
||||
[Interface]
|
||||
Address = 100.85.175.118/32
|
||||
DNS = 100.64.0.1, 8.8.4.4
|
||||
PrivateKey = fSdjHMi8tAzL2wbNxsylQW1FAIXdn2/ODPGWr569J/w=
|
||||
Jc = 5
|
||||
Jmin = 10
|
||||
Jmax = 80
|
||||
H1 = 1
|
||||
H2 = 2
|
||||
H3 = 3
|
||||
H4 = 4
|
||||
HeaderProtectionKey = 8H1SggRhZ8iT8ZYZlS/RPf6SItoxb8OeXX2rNwMgc3M=
|
||||
RekeyAfterTime = 100-120
|
||||
RekeyTimeout = 3-8
|
||||
RejectAfterTime = 150-180
|
||||
KeepaliveTimeout = 7-13
|
||||
MaxHandshakeAttempts = 15-20
|
||||
ContentPaddingAddition = 10-100
|
||||
[Peer]
|
||||
PublicKey = FfgUO6z0plGUntTW3T8fsFsZ250GcQZEKlCgj1fkRFc=
|
||||
PresharedKey = +Is1eWUUQ5UXYD8E7zigG32KaThcGC/YolOVS7LeDGU=
|
||||
AllowedIPs = 0.0.0.0/0, ::/0
|
||||
Endpoint = 78.17.149.78:8344
|
||||
PersistentKeepalive = 25-35
|
||||
```
|
||||
|
||||
> ⚠️ **НЕ** выкладывай `.conf` ни в чат, ни на сторонние сайты. Его приватный ключ — твой доступ. Файл копируется только на сервер.
|
||||
|
||||
---
|
||||
|
||||
## 2. Подготовка хоста
|
||||
|
||||
```bash
|
||||
# Проверить Tun-устройство и форвардинг
|
||||
ls -la /dev/net/tun
|
||||
cat /proc/sys/net/ipv4/ip_forward # должно быть 1
|
||||
|
||||
# Включить форвардинг (если 0)
|
||||
echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
|
||||
# Проверить Docker
|
||||
docker --version
|
||||
```
|
||||
|
||||
**На LXC (виртуальном контейнере Proxmox)** убедись, что:
|
||||
- `/dev/net/tun` существует (создаётся через настройки LXC)
|
||||
- `net.ipv4.ip_forward=1` установлен (в Proxmox: LXC → Options → Features)
|
||||
|
||||
---
|
||||
|
||||
## 3. Скачивание репозиториев
|
||||
> ⚠️ Сборку ведём из **локальных** копий репозиториев (COPY в Dockerfile), так как DNS внутри build-контейнера нестабилен.
|
||||
|
||||
```bash
|
||||
mkdir -p /root/awg-src
|
||||
cd /root/awg-src
|
||||
|
||||
# Правильный DNS на хосте LXC
|
||||
echo "nameserver 8.8.8.8" > /etc/resolv.conf
|
||||
|
||||
git clone --depth 1 --branch v3.1.20260828 https://github.com/amnezia-vpn/amneziawg-go.git
|
||||
git clone --depth 1 --branch v3.1.20260812 https://github.com/amnezia-vpn/amneziawg-tools.git
|
||||
```
|
||||
|
||||
**Проверка тегов** (актуальные на момент сборки):
|
||||
```bash
|
||||
git ls-remote --tags https://github.com/amnezia-vpn/amneziawg-go.git | tail
|
||||
# v3.1.20260813, v3.1.20260814, v3.1.20260828
|
||||
git ls-remote --tags https://github.com/amnezia-vpn/amneziawg-tools.git | tail
|
||||
# v3.0.20260805, v3.1.20260812
|
||||
```
|
||||
|
||||
> Найдите **последний** тег v3.1.* — они выходят часто и содержат исправления DPI-обхода.
|
||||
|
||||
---
|
||||
|
||||
## 4. Директория сборки
|
||||
```bash
|
||||
mkdir -p /root/awg-builder
|
||||
cp -r /root/awg-src/amneziawg-go /root/awg-builder/
|
||||
cp -r /root/awg-src/amneziawg-tools /root/awg-builder/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Dockerfile
|
||||
**`/root/awg-builder/Dockerfile`**
|
||||
```dockerfile
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
FROM golang:alpine AS go-build
|
||||
|
||||
RUN apk add --no-cache make gcc musl-dev linux-headers
|
||||
|
||||
COPY amneziawg-go /src/amneziawg-go
|
||||
RUN cd /src/amneziawg-go && make && cp amneziawg-go /go/bin/
|
||||
|
||||
COPY amneziawg-tools /src/amneziawg-tools
|
||||
RUN cd /src/amneziawg-tools/src && make && cp wg /go/bin/awg
|
||||
|
||||
FROM alpine:3.21
|
||||
|
||||
RUN apk add --no-cache iptables ip6tables iproute2 bash openresolv
|
||||
|
||||
COPY --from=go-build /go/bin/amneziawg-go /usr/bin/
|
||||
COPY --from=go-build /go/bin/awg /usr/bin/
|
||||
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
RUN chmod +x /entrypoint.sh
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
```
|
||||
|
||||
> **Почему `cp wg /go/bin/awg`**: в `amneziawg-tools` бинарь надёжнее назвать `awg`. Это клиентская утилита управления интерфейсом.
|
||||
|
||||
**Healthcheck** (необязателен): добавить в Dockerfile ```HEALTHCHECK``` — можно пропустить, статус смотрим через `awg show`.
|
||||
|
||||
---
|
||||
|
||||
## 6. entrypoint.sh
|
||||
Скрипт: поднимает интерфейс, загружает конфиг (с фолбэком на минимальный), настраивает policy routing и NAT.
|
||||
|
||||
**`/root/awg-builder/entrypoint.sh`**
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
CONFIG_DIR=/config
|
||||
|
||||
for f in "${CONFIG_DIR}"/*.conf; do
|
||||
[ -f "$f" ] || continue
|
||||
IFACE=$(basename "$f" .conf)
|
||||
echo "Starting AmneziaWG interface: ${IFACE}"
|
||||
|
||||
modprobe amneziawg 2>/dev/null || true
|
||||
if ! ip link show "${IFACE}" 2>/dev/null | grep -q UP; then
|
||||
ip link add "${IFACE}" type amneziawg 2>/dev/null || {
|
||||
echo "[*] Using userspace amneziawg-go"
|
||||
amneziawg-go "${IFACE}" 2>/dev/null || true
|
||||
sleep 1
|
||||
}
|
||||
fi
|
||||
|
||||
TMPF=$(mktemp)
|
||||
grep -v -E '^(Address|DNS)' "$f" > "$TMPF"
|
||||
|
||||
if ! awg setconf "${IFACE}" "$TMPF" 2>/dev/null; then
|
||||
echo "[!] Trying minimal config"
|
||||
{
|
||||
echo "[Interface]"
|
||||
grep -E '^PrivateKey' "$f"
|
||||
echo "ListenPort = 51820"
|
||||
echo ""
|
||||
echo "[Peer]"
|
||||
grep -E '^(PublicKey|PresharedKey|AllowedIPs|Endpoint|PersistentKeepalive)' "$f"
|
||||
} | awg setconf "${IFACE}" /dev/stdin 2>/dev/null || {
|
||||
echo "[!] FATAL: cannot parse config"
|
||||
rm -f "$TMPF"
|
||||
continue
|
||||
}
|
||||
fi
|
||||
rm -f "$TMPF"
|
||||
|
||||
IP=$(grep ^Address "$f" | head -1 | cut -d= -f2 | tr -d ' ' | cut -d, -f1)
|
||||
[ -n "$IP" ] && ip addr add "$IP" dev "${IFACE}" 2>/dev/null || true
|
||||
ip link set "${IFACE}" up
|
||||
echo "[*] ${IFACE} UP: ${IP}"
|
||||
done
|
||||
|
||||
# --- Policy routing: только forwarded LAN-трафик через VPN ---
|
||||
mkdir -p /etc/iproute2
|
||||
if ! grep -q "awg-vpn" /etc/iproute2/rt_tables 2>/dev/null; then
|
||||
echo "100 awg-vpn" >> /etc/iproute2/rt_tables 2>/dev/null || true
|
||||
fi
|
||||
|
||||
ip route add 0.0.0.0/0 dev awg0 table 100 2>/dev/null || true
|
||||
|
||||
# Пометить forwarded LAN-трафик (не на LAN) меткой 100
|
||||
iptables -t mangle -C PREROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MARK --set-mark 100 2>/dev/null || \
|
||||
iptables -t mangle -A PREROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -j MARK --set-mark 100 2>/dev/null || true
|
||||
|
||||
# Пакеты с меткой 100 → таблица awg-vpn (через awg0)
|
||||
ip rule add fwmark 100 lookup 100 priority 5000 2>/dev/null || true
|
||||
|
||||
# NAT для LAN через туннель
|
||||
iptables -t nat -C POSTROUTING -s 192.168.1.0/24 -o awg0 -j MASQUERADE 2>/dev/null || \
|
||||
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o awg0 -j MASQUERADE 2>/dev/null || true
|
||||
|
||||
echo 1 > /proc/sys/net/ipv4/ip_forward 2>/dev/null || true
|
||||
|
||||
echo "[*] AmneziaWG client running"
|
||||
awg show 2>/dev/null || true
|
||||
|
||||
sleep infinity
|
||||
```
|
||||
|
||||
> **Как работает policy routing**:
|
||||
> - Локальный (исходящий) трафик **самого LXC** (SSH и т.д.) → идёт напрямую через `eth0`
|
||||
> - Только **forwarded** трафик из LAN → помечается меткой → направляется в таблицу `awg-vpn` → уходит через `awg0`
|
||||
> - Это сохраняет доступ к управлению LXC, не ломая VPN-шлюз
|
||||
|
||||
---
|
||||
|
||||
## 7. Редактирование сети под свою подсеть
|
||||
|
||||
В скрипте выше я использовал `192.168.1.0/24` — это **основной LAN сегмент**, который пойдёт через VPN.
|
||||
|
||||
**Если нужна отдельная VPN-подсеть** (например `192.168.2.0/24`), замени в двух местах:
|
||||
- `iptables -t mangle ... -s 192.168.1.0/24` → `-s 192.168.2.0/24`
|
||||
- `iptables -t nat ... -s 192.168.1.0/24 ... -o awg0` → `-s 192.168.2.0/24`
|
||||
|
||||
Подробнее про отдельную подсеть см. раздел «Расширенный сценарий» ниже.
|
||||
|
||||
---
|
||||
|
||||
## 8. Запуск
|
||||
|
||||
1. **Создай директорию конфига** и положи туда `.conf`:
|
||||
```bash
|
||||
mkdir -p /root/awg-config
|
||||
cp /путь/к/de.conf /root/awg-config/awg0.conf
|
||||
# ↑ имя файла = имя интерфейса (awg0)
|
||||
```
|
||||
|
||||
2. **Собери образ:**
|
||||
```bash
|
||||
cd /root/awg-builder
|
||||
docker build -t amneziawg-client:latest .
|
||||
```
|
||||
|
||||
3. **Запусти контейнер:**
|
||||
```bash
|
||||
docker run -dit \
|
||||
--name=amneziawg-client \
|
||||
-v /root/awg-config:/config \
|
||||
--network=host \
|
||||
--device=/dev/net/tun:/dev/net/tun \
|
||||
--cap-add=NET_ADMIN \
|
||||
--cap-add=SYS_MODULE \
|
||||
--restart always \
|
||||
amneziawg-client:latest
|
||||
```
|
||||
|
||||
4. **Проверь:**
|
||||
```bash
|
||||
docker ps --filter name=amneziawg-client # Up, restart always
|
||||
docker logs amneziawg-client # интерфейс UP, handshake
|
||||
docker exec amneziawg-client awg show # самый наглядный статус
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 9. Проверка работоспособности
|
||||
|
||||
```bash
|
||||
# Статус интерфейса и handshake (главное)
|
||||
docker exec amneziawg-client awg show
|
||||
# Должно быть: "latest handshake: N seconds ago" и ненулевые transfer
|
||||
|
||||
# Внешний IP с самого LXC (через awg0):
|
||||
curl -s ifconfig.me
|
||||
# Это будет IP VPN-провайдера
|
||||
|
||||
# Статус NAT/маршрутизации
|
||||
docker exec amneziawg-client iptables -t mangle -L PREROUTING -n -v
|
||||
docker exec amneziawg-client iptables -t nat -L POSTROUTING -n -v
|
||||
|
||||
# Проверка forwarded трафика из LAN:
|
||||
# с устройства в 192.168.1.0/24, у которого шлюз = 192.168.1.147
|
||||
curl -s ifconfig.me
|
||||
# Тоже IP VPN-провайдера
|
||||
```
|
||||
|
||||
**Полезный признак нормальной работы:**
|
||||
```
|
||||
peer: FfgUO6z0plGUntTW3T8fsFsZ250GcQZEKlCgj1fkRFc=
|
||||
latest handshake: 42 seconds ago ← периодически обновляется
|
||||
transfer: 1.24 MiB received, 3.2 MiB sent ← данные идут
|
||||
```
|
||||
|
||||
Если `latest handshake` отсутствует и `received = 0` — пакеты не доходят до сервера. Причины: файрвол роутера блокирует UDP, неверный Endpoint в `.conf`, фильтрация DPI.
|
||||
|
||||
---
|
||||
|
||||
## 10. Включение шлюза для LAN
|
||||
|
||||
Когда туннель поднят, чтобы устройства LAN пошли через VPN, на **роутере** меняют шлюз по умолчанию или статический маршрут:
|
||||
|
||||
**Keenetic (веб-интерфейс):**
|
||||
1. `Интернет-центр → Маршрутизация → Статические маршруты`
|
||||
2. Добавить:
|
||||
- Сеть назначения: `0.0.0.0`
|
||||
- Маска: `0.0.0.0`
|
||||
- Шлюз: `192.168.1.147`
|
||||
- (или конкретная VPN-подсеть, если не вся LAN)
|
||||
|
||||
**На телефоне (временная проверка):**
|
||||
- Wi-Fi → IP-настройки → Статический → Маршрутизатор = `192.168.1.147`
|
||||
|
||||
---
|
||||
|
||||
## 11. Питфоллы и их решение
|
||||
|
||||
| Проблема | Причина | Решение |
|
||||
|----------|---------|---------|
|
||||
| `Unknown device type. Falling back to userspace` | Нет модуля ядра amneziawg | Нормально; userspace (amneziawg-go) работает |
|
||||
| `Line unrecognized: S3=145` | Старая версия `awg`, не знает v3.1 параметры | Собрать свежую amneziawg-tools v3.1.x (п.3) |
|
||||
| `Address=/DNS=` line error | `awg setconf` не понимает `wg-quick` директивы | Убрать `Address`/`DNS` из `setconf` (см. entrypoint) |
|
||||
| `/proc/sys/...ip_forward: Read-only` | Ограничение LXC / контейнера | Включить заранее на хосте (п.2) |
|
||||
| Диск забит (`no space left on device`) | Сборки и образы жрут место | `docker system prune`, расширить диск |
|
||||
| `gcc not found` при сборке tools | Нет компилятора | `apk add gcc musl-dev` в Dockerfile |
|
||||
| `linux/types.h` нет | Нужны linux-headers | `apk add linux-headers` |
|
||||
| `cockpit`/быстрые списки GitHub таймаут | DNS внутри build-контейнера | Клонировать на хосте, `COPY` в Dockerfile |
|
||||
|
||||
---
|
||||
|
||||
## 12. Расширенный сценарий: отдельная VPN-подсеть (вариант B)
|
||||
|
||||
Нужно, чтобы не вся LAN уходила в VPN, а только отдельные устройства в своей подсети (`192.168.2.0/24`).
|
||||
|
||||
**На LXC добавить alias-IP шлюза:**
|
||||
```bash
|
||||
ip addr add 192.168.2.1/32 dev eth0
|
||||
# persistence: netplan / LXC interface
|
||||
```
|
||||
|
||||
**entrypoint.sh — расширить маршрутизацию:**
|
||||
```bash
|
||||
# Вторая подсеть → тоже через VPN
|
||||
iptables -t mangle -A PREROUTING -s 192.168.2.0/24 ! -d 192.168.2.0/24 -j MARK --set-mark 100
|
||||
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o awg0 -j MASQUERADE
|
||||
```
|
||||
|
||||
**DHCP сервер для 192.168.2.0/24** (dnsmasq на LXC или Docker):
|
||||
```
|
||||
interface=eth0
|
||||
dhcp-range=192.168.2.100,192.168.2.200,255.255.255.0,24h
|
||||
dhcp-option=3,192.168.2.1
|
||||
dhcp-option=6,100.64.0.1,8.8.8.8
|
||||
```
|
||||
|
||||
**Keenetic — статический маршрут:**
|
||||
- Сеть: `192.168.2.0`, маска `255.255.255.0`, шлюз `192.168.1.147`
|
||||
|
||||
**Keenetic — гостевая сеть с другой подсетью:**
|
||||
- Создать вторую SSID, IP `192.168.2.1/24`, DHCP `192.168.2.x`
|
||||
|
||||
---
|
||||
|
||||
## 13. Обновление версий AWG
|
||||
|
||||
Поскольку AmneziaWG 3.x развивается быстро (новые теги), при проблемах с DPI-блокировками:
|
||||
|
||||
```bash
|
||||
# Узнать свежие теги
|
||||
git ls-remote --tags https://github.com/amnezia-vpn/amneziawg-go.git | tail
|
||||
git ls-remote --tags https://github.com/amnezia-vpn/amneziawg-tools.git | tail
|
||||
|
||||
# Пересобрать из свежих копий
|
||||
cd /root/awg-src/amneziawg-go && git fetch --tags && git checkout v3.1.XXXXXXX
|
||||
cd /root/awg-src/amneziawg-tools && git fetch --tags && git checkout v3.1.XXXXXXX
|
||||
cp -r /root/awg-src/amneziawg-*/* /root/awg-builder/
|
||||
docker build -t amneziawg-client:latest /root/awg-builder/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 14. Безопасность и данные
|
||||
|
||||
- **Приватный ключ** в `.conf` не попадает в логи/память ассистента — только в файл на сервере.
|
||||
- Не выкладывай `.conf` в чат, репозитории, скриншоты.
|
||||
- `.conf` читается из `/root/awg-config/awg0.conf` только контейнером.
|
||||
- Права: `chmod 600 /root/awg-config/awg0.conf`.
|
||||
|
||||
---
|
||||
|
||||
## Итоговая структура файлов
|
||||
|
||||
```
|
||||
/root/awg-config/awg0.conf ← твой .conf (private)
|
||||
/root/awg-builder/Dockerfile
|
||||
/root/awg-builder/entrypoint.sh
|
||||
/root/awg-builder/amneziawg-go/ ← исходники (3.1.20260828)
|
||||
/root/awg-builder/amneziawg-tools/ ← исходники (3.1.20260812)
|
||||
/root/awg-src/ ← свежие клоны (для апдейтов)
|
||||
```
|
||||
|
||||
**Контейнер:** `amneziawg-client` = полностью автономный AWG-шлюз, ставится как `--restart always`, не зависит от остальных Docker-сервисов.
|
||||
Reference in New Issue
Block a user