Compare commits

11 Commits
main ... main

Author SHA1 Message Date
1e5d9d2777 Обновить remna.md
Signed-off-by: Reisber <admin@reisber.space>
2026-04-01 23:41:31 +00:00
41846064fe Добавить remna_node.md
Signed-off-by: Reisber <admin@reisber.space>
2026-04-01 23:39:56 +00:00
7122a5fc41 Обновить remna.md
Signed-off-by: Reisber <admin@reisber.space>
2026-04-01 22:05:02 +00:00
59f3634d1f Добавить remna.md
Signed-off-by: Reisber <admin@reisber.space>
2026-04-01 21:55:06 +00:00
fc3445ab70 Обновил conf dhcp
Signed-off-by: Reisber <admin@reisber.space>
2026-03-23 08:20:45 +00:00
de0c08f03b Окак
Signed-off-by: Reisber <admin@reisber.space>
2026-03-22 21:50:37 +00:00
346369f585 Переписал на 13 деб
Signed-off-by: Reisber <admin@reisber.space>
2026-03-22 21:45:39 +00:00
742725b961 Обновить NEBULA/nebula.md
Signed-off-by: Reisber <admin@reisber.space>
2026-03-22 21:21:59 +00:00
ff7749acba Обновить NEBULA/nebula.md
Signed-off-by: Reisber <admin@reisber.space>
2026-03-22 21:18:10 +00:00
4dc2a4c8ef Обновить NEBULA/nebula.md
Signed-off-by: Reisber <admin@reisber.space>
2026-03-22 20:55:10 +00:00
7e2d426e7b Обновить proxy.md
Signed-off-by: Reisber <admin@reisber.space>
2026-03-17 14:00:01 +00:00
5 changed files with 1020 additions and 155 deletions

View File

@@ -1,5 +1,5 @@
# И так. Я решил поднять небулу # И так. Я решил поднять небулу
## Мной, в качестве сервера выбран debian 12 (6Cores, 12GB RAM + 160gb SSD) ## Мной, в качестве сервера выбран debian 13 (16Cores, 32GB RAM + 2tb SSD)
## Обязательно проверяйте, чтобы у вашего хостера/home-server была виртуализация ## Обязательно проверяйте, чтобы у вашего хостера/home-server была виртуализация
### Начало установки ### Начало установки
## Для начала установим MariaDB сервер да и nginx ## Для начала установим MariaDB сервер да и nginx
@@ -26,13 +26,13 @@ curl -fsSL https://downloads.opennebula.io/repo/repo2.key| gpg --dearmor -o /etc
``` ```
Затем скачаем саму небулу Затем скачаем саму небулу
``` ```
echo "deb https://downloads.opennebula.io/repo/6.10/Debian/12 stable opennebula" | tee /etc/apt/sources.list.d/opennebula.list echo "deb https://downloads.opennebula.io/repo/7.1/Debian/13 stable opennebula" | sudo tee /etc/apt/sources.list.d/opennebula.list
``` ```
Обновим и установим репозитроий с небулой Обновим и установим репозитроий с небулой
``` ```
apt-get update -y apt-get update -y
apt-get install opennebula opennebula-sunstone opennebula-gate opennebula-flow -y apt-get install opennebula opennebula-fireedge opennebula-gate opennebula-flow -y
``` ```
После успешной установки запустим следующую команду для установки необходимых зависимостей После успешной установки запустим следующую команду для установки необходимых зависимостей
@@ -66,19 +66,15 @@ cat /var/lib/one/.one/one_auth
``` ```
После этого После этого
``` ```
systemctl start opennebula opennebula-sunstone systemctl start opennebula opennebula-fireedge opennebula-flow opennebula-gate
systemctl enable opennebula opennebula-sunstone systemctl enable opennebula opennebula-fireedge opennebula-flow opennebula-gate
``` ```
Думали всё? Думали всё?
Начинаем дебажить Начинаем дебажить
В целом, нам, для начала, необходимо создать Host. Это место, где будут крутиться наши виртуалки В целом, нам, для начала, необходимо создать Host. Это место, где будут крутиться наши виртуалки
Имя хоста обязательно должно совпадать с записью в `/etc/hosts`, так-же, если хост находится на одном с небулой сервере, то необходимо что-бы он был с ip 127.0.0.1 Имя хоста обязательно должно совпадать с записью в `/etc/hosts`, так-же, если хост находится на одном с небулой сервере, то необходимо что-бы он был с ip 127.0.0.1
Далее Далее
```
su - oneadmin -c "ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa"
su - oneadmin -c "cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys"
chmod 600 /var/lib/one/.ssh/authorized_keys
```
Проверим возможность Oneadmin общаться с самим собой Проверим возможность Oneadmin общаться с самим собой
``` ```
su - oneadmin su - oneadmin
@@ -87,13 +83,11 @@ ssh -o StrictHostKeyChecking=no localhost
Если нас пустило без пароля - шик Если нас пустило без пароля - шик
Пишем Пишем
``` ```
apt-get install -y qemu-kvm libvirt-daemon-system libvirt-clients virtinst bridge-utils
usermod -a -G libvirt,kvm oneadmin usermod -a -G libvirt,kvm oneadmin
``` ```
После этого мы почти готовы поднимать VM, но ещё не совсем После этого мы почти готовы поднимать VM, но ещё не совсем
``` ```
ln -s /usr/bin/qemu-system-x86_64 /usr/bin/qemu-kvm-one ln -s /usr/bin/qemu-system-x86_64 /usr/bin/qemu-kvm-one
chown -R oneadmin:oneadmin /var/lib/one/datastores
systemctl restart libvirtd systemctl restart libvirtd
``` ```
Далее `nano /etc/libvirt/qemu.conf` Далее `nano /etc/libvirt/qemu.conf`
@@ -111,18 +105,9 @@ systemctl restart libvirtd
chown -R oneadmin:oneadmin /var/lib/one/datastores chown -R oneadmin:oneadmin /var/lib/one/datastores
chmod -R 770 /var/lib/one/datastores chmod -R 770 /var/lib/one/datastores
``` ```
После этого, ради работы VNC установим FireBridge
```
apt-get install opennebula-fireedge
echo "$(openssl rand -base64 32)" > /etc/one/fireedge_key
chown oneadmin:oneadmin /etc/one/fireedge_key
chmod 600 /etc/one/fireedge_key
systemctl enable opennebula-fireedge
systemctl start opennebula-fireedge
``` ```
Установим "гуакд" Установим "гуакд"
``` ```
apt-get install -y opennebula-guacd
systemctl enable --now opennebula-guacd systemctl enable --now opennebula-guacd
``` ```
Проверим его работоспособность Проверим его работоспособность
@@ -137,137 +122,4 @@ nano /etc/one/sunstone-server.conf
:public_fireedge_endpoint: http://ip_addr_of_your_server(Domain):2616 :public_fireedge_endpoint: http://ip_addr_of_your_server(Domain):2616
:fireedge_verify_ssl: false :fireedge_verify_ssl: false
``` ```
Затем нагенерим самописные-серты для fireedge
```
# Create the directory
mkdir -p /etc/one/ssl
cd /etc/one/ssl
# Generate a self-signed certificate (valid for 365 days)
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout opennebula.key -out opennebula.crt \
-subj "/C=US/ST=State/L=City/O=OpenNebula/CN=ip_addr_of_your_server"
# Ensure the oneadmin user can read them
chown -R oneadmin:oneadmin /etc/one/ssl
chmod 600 /etc/one/ssl/opennebula.key
chmod 644 /etc/one/ssl/opennebula.crt
```
Далее
```
nano /etc/one/fireedge-server.conf
```
Там проверяем, что
```
:host: 127.0.0.1
:port: 2617 меняем порт на 2617
```
```
nano /etc/nginx/sites-available/fireedge
```
Вставляем туда
```
server {
listen 2616 ssl;
server_name ip_addr_of_your_server;
ssl_certificate /etc/one/ssl/opennebula.crt;
ssl_certificate_key /etc/one/ssl/opennebula.key;
location / {
proxy_pass http://127.0.0.1:2617;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
Потом
```
ln -s /etc/nginx/sites-available/fireedge /etc/nginx/sites-enabled/
rm /etc/nginx/sites-enabled/default
systemctl restart nginx
systemctl restart opennebula-fireedge
```
И в целом всё
Ваша небула будет доступна через браузер **http://your-server-ip:9869**
iptables -A INPUT -p tcp --dport 5900:6000 -j ACCEPT
# Но это ведь слишком скучно. Хочется домен, хочется ходить без порта.
Генерим конфигурационный файл для нашего облачка
```
nano /etc/nginx/sites-available/sunstone.conf
```
И вставим туда
```
server {
server_name nebula.reisber.space;
location / {
proxy_pass http://127.0.0.1:9869;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# Для WebSocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600;
proxy_send_timeout 3600;
proxy_request_buffering off;
proxy_buffering off;
}
location /fireedge/ {
proxy_pass http://127.0.0.1:2617; # порт FireEdge
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_read_timeout 3600;
proxy_send_timeout 3600;
proxy_buffering off;
}
}
```
Сохраним и проверим наш конфиг, а так-же растартнем nginx
```
nginx -t
systemctl restart nginx
```
После этого получим серт через Certbot (да, это правда особо не нужно, но лень каждый раз смотреть, что соединение не безопасно)
```
certbot --nginx -d pu-pu-pu-pu-pu-pu.domain.com
```
Вот и всё, мы прекрасны
Для загрузки ISO лучше всего использовать scp
```scp pupu.iso oneadmin@server:/var/lib/one/datastores/0/```
Или грузить всё в домашнюю директорию рута и оттуда
Перед этим нужно подредачить настройки хранилища
```
onedatastore show 1 (ID_ХРАНИЛИЩА)
Если видим дискомфортное количество или просто "/" в `RESTRICTED_DIRS`
То:
```
onedatastore update 1
```
И просто сносим RESTRICTED_DIRS
После этого, через WEB-GUI можно будет добавлять ISO по их пути на сервере
```
sudo mv ~/pupu.iso /var/lib/one/datastores/0/
sudo chown oneadmin:oneadmin /var/lib/one/datastores/0/pupu.iso
```

470
NEBULA/nebula2.0.md Normal file
View File

@@ -0,0 +1,470 @@
# 🚀 OpenNebula на Debian 13 (Full Setup + Networking)
<p align="center">
<img src="https://img.shields.io/badge/OpenNebula-7.1-blue?style=for-the-badge">
<img src="https://img.shields.io/badge/Debian-13-red?style=for-the-badge">
<img src="https://img.shields.io/badge/KVM-required-important?style=for-the-badge">
<img src="https://img.shields.io/badge/status-working-success?style=for-the-badge">
</p>
> ⚡ Полный production-ready гайд
> 🧠 Подходит для homelab / VPS / infra
---
# 📚 Содержание
- [📋 Требования](#-требования)
- [🧰 Базовая установка](#-базовая-установка)
- [🗄️ MariaDB](#-mariadb)
- [🌐 Hostname](#-hostname)
- [📦 Установка OpenNebula](#-установка-opennebula)
- [🛠️ Конфигурация](#-конфигурация)
- [🧪 Отладка](#-отладка)
- [🌐 Сеть и интернет для VM](#-сеть-и-интернет-для-vm)
- [🎉 Готово](#-готово)
---
# 📋 Требования
- 🖥️ Debian 13
- ⚠️ KVM (обязательно)
- 💾 Рекомендуется:
- 4 CPU
- 8GB RAM
- SSD
---
# 🧰 Базовая установка
```bash
apt update
apt install nginx certbot python3-certbot-nginx -y
apt install mariadb-server curl gnupg2 -y
```
📌 Пакеты:
- `nginx` — под веб (FireEdge / прокси)
- `certbot` — SSL
- `mariadb` — база OpenNebula
---
# 🗄️ MariaDB
```bash
mysql
```
```sql
CREATE DATABASE opennebula;
GRANT ALL PRIVILEGES ON opennebula.*
TO 'oneadmin' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;
```
⚠️ `/etc/mysql/` — здесь конфиги MariaDB
---
# 🌐 Hostname
```bash
hostname opennebula
```
📌 Файл: `/etc/hosts`
```bash
nano /etc/hosts
```
Добавь:
```
<YOUR_IP> opennebula
```
---
# 📦 Установка OpenNebula
## 🔐 GPG ключ
```bash
curl -fsSL https://downloads.opennebula.io/repo/repo2.key \
| gpg --dearmor -o /etc/apt/trusted.gpg.d/opennebula.gpg
```
---
## 📥 Репозиторий
Файл: `/etc/apt/sources.list.d/opennebula.list`
```bash
echo "deb https://downloads.opennebula.io/repo/7.1/Debian/13 stable opennebula" \
| tee /etc/apt/sources.list.d/opennebula.list
```
---
## 🔄 Установка
```bash
apt update
apt install opennebula opennebula-fireedge \
opennebula-gate opennebula-flow -y
```
---
## ⚙️ Зависимости
```bash
/usr/share/one/install_gems
```
📌 Скрипт ставит ruby-зависимости
---
# 🛠️ Конфигурация
Файл: `/etc/one/oned.conf`
```bash
nano /etc/one/oned.conf
```
### ❌ Было:
```ini
DB = [ BACKEND = "sqlite",
TIMEOUT = 2500 ]
```
### ✅ Стало:
```ini
DB = [ BACKEND = "mysql",
SERVER = "localhost",
PORT = 0,
USER = "oneadmin",
PASSWD = "password",
DB_NAME = "opennebula",
CONNECTIONS = 25,
COMPARE_BINARY = "no" ]
```
---
## 🔑 Пароль oneadmin
```bash
cat /var/lib/one/.one/one_auth
```
---
## ▶️ Сервисы
```bash
systemctl start opennebula opennebula-fireedge \
opennebula-flow opennebula-gate
systemctl enable opennebula opennebula-fireedge \
opennebula-flow opennebula-gate
```
---
# 🧪 Отладка
## SSH доступ
```bash
su - oneadmin
ssh -o StrictHostKeyChecking=no localhost
```
---
## Группы
```bash
usermod -a -G libvirt,kvm oneadmin
```
---
## KVM
```bash
ln -s /usr/bin/qemu-system-x86_64 /usr/bin/qemu-kvm-one
systemctl restart libvirtd
```
📌 Файл: `/etc/libvirt/qemu.conf`
```bash
nano /etc/libvirt/qemu.conf
```
```ini
user = "oneadmin"
group = "oneadmin"
dynamic_ownership = 1
```
---
## AppArmor
```bash
apt install apparmor-utils -y
aa-complain /usr/sbin/libvirtd
systemctl restart libvirtd
```
---
## Datastore
```bash
chown -R oneadmin:oneadmin /var/lib/one/datastores
chmod -R 770 /var/lib/one/datastores
```
---
## Guacd
```bash
systemctl enable --now opennebula-guacd
ss -tlnp | grep 4822
```
---
## Sunstone
Файл: `/etc/one/sunstone-server.conf`
```yaml
:private_fireedge_endpoint: http://localhost:2616
:public_fireedge_endpoint: http://<YOUR_IP_OR_DOMAIN>:2616
:fireedge_verify_ssl: false
```
---
# 🌐 Сеть и интернет для VM
# OpenNebula guide up internet for VM
---
## 1. Создание bridge
```bash
apt install bridge-utils -y
```
📌 Файл: `/etc/network/interfaces`
```bash
nano /etc/network/interfaces
```
```ini
# Внутренний мост для OpenNebula
auto br1
iface br1 inet static
address 192.168.100.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
```
---
## 2. Применение сети
```bash
systemctl restart networking
```
---
## 3. NAT (интернет для VM)
### Включаем forwarding
📌 Файл: `/etc/sysctl.d/99-opennebula-nat.conf`
```bash
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-opennebula-nat.conf
sysctl -p /etc/sysctl.d/99-opennebula-nat.conf
```
---
### iptables
📌 Узнать интерфейс:
```bash
ip route | grep default
```
```bash
iptables -t nat -F
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i br1 -o eth0 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
```
---
### Сохранение
```bash
apt install iptables-persistent -y
```
---
## 4. Проброс портов
```bash
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 2222 \
-j DNAT --to-destination 192.168.100.10:22
```
---
## 5. Сеть в OpenNebula
- Network → Virtual Network
- Mode: **Bridged**
- Bridge: `br1`
📌 Addresses → `+ Address Range`
---
## 6. DNS (bind9)
```bash
apt install bind9 -y
```
📌 Файл: `/etc/bind/named.conf.options`
```bash
nano /etc/bind/named.conf.options
```
```ini
options {
directory "/var/cache/bind";
forwarders {
8.8.8.8;
8.8.4.4;
};
dnssec-validation auto;
listen-on { 127.0.0.1; 192.168.100.1; };
listen-on-v6 { none; };
};
```
```bash
systemctl restart bind9
```
---
## 7. DHCP
```bash
apt install isc-dhcp-server -y
```
📌 Интерфейс:
```bash
nano /etc/default/isc-dhcp-server
```
```
INTERFACESv4="br1"
```
---
📌 Конфиг: `/etc/dhcp/dhcpd.conf`
```bash
nano /etc/dhcp/dhcpd.conf
```
```conf
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.2 192.168.100.254;
option routers 192.168.100.1;
option domain-name-servers 192.168.100.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.100.255;
default-lease-time 600;
max-lease-time 7200;
abandon-lease-time 0;
}
```
---
```bash
systemctl restart isc-dhcp-server
systemctl status isc-dhcp-server
```
---
# 🎉 Готово!
## ✅ У тебя теперь:
- OpenNebula
- NAT + интернет для VM
- DHCP + DNS
- Полная инфраструктура
---
## 💡 Debug
```bash
journalctl -u opennebula -f
journalctl -u libvirtd -f
journalctl -u isc-dhcp-server -f
```
---
<p align="center">
made with ❤️ for infra geeks
</p>

View File

@@ -24,8 +24,12 @@ SNI: то, что вы получили из вывода последнего
Get New Cert Get New Cert
Подтверждаем и проверяем наш новый, рабочий инбаунд Подтверждаем и проверяем наш новый, рабочий инбаунд
``` ```
Так-же в качестве транспорта можно использовать xHTTP (все поля не трогать). Клиент для xHTTP (v2RayN) для TCP (NekoBox).
### Для настройки Double-Proxy ### Для настройки Double-Proxy
Копируем ссылку любого нашего клиента Копируем ссылку любого нашего клиента
Создаём инбаунд и клиента на РУ сервере Создаём инбаунд и клиента на РУ сервере
@@ -38,3 +42,6 @@ inbound Tags (выбираем теги наших инбаундов, кото
outbound tag, (выбираем наш аутбаунд) outbound tag, (выбираем наш аутбаунд)
``` ```
Сохраняем, рестартим xray и радуемся жизни Сохраняем, рестартим xray и радуемся жизни

239
remna.md Normal file
View File

@@ -0,0 +1,239 @@
# 🖥 Установка Remna на основную ноду и настройка агентов
---
## 🟢 Установка панели на сервер
### 1⃣ Установка Docker
```bash
sudo curl -fsSL https://get.docker.com | sh
```
---
### 2⃣ Установка обязательных файлов
Создаем директорию проекта:
```bash
mkdir /opt/remnawave && cd /opt/remnawave
```
Скачиваем необходимые файлы:
```bash
curl -o docker-compose.yml https://raw.githubusercontent.com/remnawave/backend/refs/heads/main/docker-compose-prod.yml
```
---
### 3⃣ Настройка `.env` файла
Создаем секретные ключи и пароли:
```bash
sed -i "s/^JWT_AUTH_SECRET=.*/JWT_AUTH_SECRET=$(openssl rand -hex 64)/" .env \
&& sed -i "s/^JWT_API_TOKENS_SECRET=.*/JWT_API_TOKENS_SECRET=$(openssl rand -hex 64)/" .env
sed -i "s/^METRICS_PASS=.*/METRICS_PASS=$(openssl rand -hex 64)/" .env \
&& sed -i "s/^WEBHOOK_SECRET_HEADER=.*/WEBHOOK_SECRET_HEADER=$(openssl rand -hex 64)/" .env
```
Рекомендуется изменить пароль PostgreSQL:
```bash
pw=$(openssl rand -hex 24) \
&& sed -i "s/^POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$pw/" .env \
&& sed -i "s|^\(DATABASE_URL=\"postgresql://postgres:\)[^\@]*\(@.*\)|\1$pw\2|" .env
```
Открой `.env` и отредактируй:
```text
FRONT_END_DOMAIN
SUB_PUBLIC_DOMAIN
```
- **FRONT_END_DOMAIN** — домен панели, например: `panel.yourdomain.com`
- **SUB_PUBLIC_DOMAIN** — обычно тот же домен + `/api/sub`, например: `panel.yourdomain.com/api/sub`
Файл находится здесь:
```bash
cd /opt/remnawave && nano .env
```
---
### 4⃣ Запуск контейнеров
```bash
docker compose up -d && docker compose logs -f -t
```
---
## 🔄 Настройка Reverse Proxy
### 1⃣ Установка зависимостей
```bash
apt-get install cron socat
```
Установка acme.sh:
```bash
curl https://get.acme.sh | sh -s email=EMAIL && source ~/.bashrc
```
> Используй валидный email.
---
### 2⃣ Создание папки для сертификатов
```bash
mkdir -p /opt/remnawave/nginx && cd /opt/remnawave/nginx
```
Выпуск сертификата (не используйте `.ru`, `.su`, `.рф`):
```bash
acme.sh --issue --standalone -d 'DOMAIN' \
--key-file /opt/remnawave/nginx/privkey.key \
--fullchain-file /opt/remnawave/nginx/fullchain.pem \
--alpn --tlsport 8443
```
> Можно использовать Nginx Proxy Manager для других сервисов.
---
### 3⃣ Конфигурация Nginx
Открываем файл:
```bash
cd /opt/remnawave/nginx && nano nginx.conf
```
Вставляем следующий конфиг:
```nginx
upstream remnawave {
server remnawave:3000;
}
server {
server_name REPLACE_WITH_YOUR_DOMAIN;
listen 443 ssl reuseport;
listen [::]:443 ssl reuseport;
http2 on;
location / {
proxy_http_version 1.1;
proxy_pass http://remnawave;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# SSL Configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_certificate "/etc/nginx/ssl/fullchain.pem";
ssl_certificate_key "/etc/nginx/ssl/privkey.key";
ssl_trusted_certificate "/etc/nginx/ssl/fullchain.pem";
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 208.67.222.222 208.67.220.220 valid=60s;
resolver_timeout 2s;
# Gzip Compression
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types
application/atom+xml
application/geo+json
application/javascript
application/x-javascript
application/json
application/ld+json
application/manifest+json
application/rdf+xml
application/rss+xml
application/xhtml+xml
application/xml
font/eot
font/otf
font/ttf
image/svg+xml
text/css
text/javascript
text/plain
text/xml;
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
server_name _;
ssl_reject_handshake on;
}
```
---
### 4⃣ Создание Docker Compose для Nginx
```bash
cd /opt/remnawave/nginx && nano docker-compose.yml
```
Вставляем:
```yaml
services:
remnawave-nginx:
image: nginx:1.28
container_name: remnawave-nginx
hostname: remnawave-nginx
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
- ./fullchain.pem:/etc/nginx/ssl/fullchain.pem:ro
- ./privkey.key:/etc/nginx/ssl/privkey.key:ro
restart: always
ports:
- '0.0.0.0:443:443'
networks:
- remnawave-network
networks:
remnawave-network:
name: remnawave-network
driver: bridge
external: true
```
---
### 5⃣ Запуск Nginx контейнера
```bash
docker compose up -d && docker compose logs -f -t
```

297
remna_node.md Normal file
View File

@@ -0,0 +1,297 @@
# 🚀 RemnaNode Setup Guide
> Полное руководство по установке и настройке ноды RemnaNode с использованием Docker
> Минимум боли — максимум эстетики ✨
---
## 📦 Установка Docker
Если Docker ещё не установлен — выполни:
```bash
sudo curl -fsSL https://get.docker.com | sh
```
---
## 📁 Шаг 1 — Создание директории проекта
```bash
mkdir /opt/remnanode && cd /opt/remnanode
```
---
## Шаг 2 — Добавление Node
1. Перейди в:
```
Nodes → Management
```
2. Нажми кнопку ** Add Node**
3. Заполни форму
### ⚠️ Важно
- Поле **Node Port** используется **только** для внутренних API-запросов между Panel и Node
- Этот порт **не используется** нигде больше
После заполнения:
- Нажми **Copy docker-compose.yml**
---
## 🧾 Шаг 3 — Создание `docker-compose.yml`
```bash
cd /opt/remnanode && nano docker-compose.yml
```
Вставь скопированную конфигурацию и сохрани файл.
---
## ▶️ Шаг 4 — Запуск контейнеров
```bash
docker compose up -d && docker compose logs -f -t
```
---
## ✅ Шаг 5 — Завершение настройки
1. Вернись в панель
2. Нажми **Next**
3. Выбери нужный **Config Profile**
4. Нажми **Create**
---
## 🔒 Важно
> Обязательно закрой `NODE_PORT` в firewall
> Разреши доступ **только для IP панели**
---
# ⚙️ Advanced Usage
---
## 🌐 Кастомные GeoSite и GeoIP
### ⚠️ Важно
- Названия `*-zapret.dat` — **пример**
- Категория `:zapret` — **пример**
- Реальные значения могут отличаться
### Серверный routing
- Влияет **только на сервер**
- **Не влияет** на DIRECT подключения клиентов
---
## 📂 Подключение файлов
Монтируй файлы в контейнер:
```yaml
services:
remnanode:
container_name: remnanode
hostname: remnanode
image: remnawave/node:latest
restart: always
network_mode: host
environment:
- NODE_PORT=2222
- SECRET_KEY="supersecretkey"
volumes:
- './geo-zapret.dat:/usr/local/share/xray/geo-zapret.dat'
- './ip-zapret.dat:/usr/local/share/xray/ip-zapret.dat'
```
### ⚠️ Осторожно
- **Не** монтируй всю директорию
- Монтируй **только отдельные файлы**
---
## 🧠 Использование в Xray config
```json
"routing": {
"rules": [
{
"type": "field",
"domain": [
"ext:geo-zapret.dat:zapret"
],
"inboundTag": [
"VLESS_TCP_REALITY"
],
"outboundTag": "NOT_RU_OUTBOUND"
},
{
"type": "field",
"ip": [
"ext:ip-zapret.dat:zapret"
],
"inboundTag": [
"VLESS_TCP_REALITY"
],
"outboundTag": "NOT_RU_OUTBOUND"
}
]
}
```
---
# 📜 Логи Node
## 📁 Подключение логов
```yaml
services:
remnanode:
container_name: remnanode
hostname: remnanode
image: remnawave/node:latest
restart: always
network_mode: host
environment:
- NODE_PORT=2222
- SECRET_KEY="supersecretkey"
volumes:
- '/var/log/remnanode:/var/log/remnanode'
```
---
## 🧠 Конфиг Xray
```json
"log": {
"error": "/var/log/remnanode/error.log",
"access": "/var/log/remnanode/access.log",
"loglevel": "warning"
}
```
---
## 📂 Создание директории
```bash
mkdir -p /var/log/remnanode
```
---
## 🔄 Logrotate
### Установка
```bash
sudo apt update && sudo apt install logrotate
```
### Конфиг
```bash
nano /etc/logrotate.d/remnanode
```
Вставь:
```conf
/var/log/remnanode/*.log {
size 50M
rotate 5
compress
missingok
notifempty
copytruncate
}
```
### Проверка
```bash
logrotate -vf /etc/logrotate.d/remnanode
```
---
# 🔐 SSL сертификаты для Xray
## ⚠️ Внимание
> Это нужно **только если используешь TLS**
> Например: `VLESS-Vision-TLS`
> Для Reality — **не требуется**
---
## 📂 Монтирование сертификатов
```yaml
remnawave:
image: remnawave/backend:latest
container_name: 'remnawave'
hostname: remnawave
restart: always
ports:
- '127.0.0.1:3000:3000'
env_file:
- .env
networks:
- remnawave-network
volumes:
- '/opt/remnawave/nginx:/var/lib/remnawave/configs/xray/ssl'
depends_on:
remnawave-db:
condition: service_healthy
remnawave-redis:
condition: service_healthy
```
---
## Как это работает
- Panel автоматически читает файлы
- Отправляет сертификаты на Node
- Используется директория:
```
/var/lib/remnawave/configs/xray/ssl/
```
---
## 🧠 Использование в Xray
```json
"certificates": [
{
"keyFile": "/var/lib/remnawave/configs/xray/ssl/privkey.key",
"certificateFile": "/var/lib/remnawave/configs/xray/ssl/fullchain.pem"
}
]
```
---
## ⚠️ Важно
- `.key` — приватный ключ
- `.pem` — сертификат
👉 Не перепутай расширения 🚀