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
Копируем ссылку любого нашего клиента Копируем ссылку любого нашего клиента
Создаём инбаунд и клиента на РУ сервере Создаём инбаунд и клиента на РУ сервере
@@ -37,4 +41,7 @@ Network TCP, UDP
inbound Tags (выбираем теги наших инбаундов, которые будут иметь возможность шагать за рубеж) 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` — сертификат
👉 Не перепутай расширения 🚀