docs: Remove questionable doc and update initial setup

This commit is contained in:
deytenit committed 2026-01-27 23:02:40 +03:00
1 parent bffdc3ad60
commit c1642dd3a6
2 files changed
+101 -272

No files matched your search

@@ -5,131 +5,156 @@ weight: 1
type: docs type: docs
--- ---
How to set up a fresh Debian host from zero to deployment. # Initial Host Setup
## Add Adam User and Wheel Group **Description:** Hardened setup for a fresh Debian host from zero to deployment.
Adam is a core user on each of the system. ---
It does not has password,
hence only connection via ssh is available, ## 1. System User & Privileges
providing a password-less sudo.
We use the `adam` user for all administrative tasks. To minimize friction while maintaining security, we utilize SSH-key authentication and passwordless `sudo` via the `wheel` group.
### Create the Admin User
```bash ```bash
# Add adam user # Create the user with a bash shell
useradd -m -s '/bin/bash' adam useradd -m -s /bin/bash adam
# Add wheel group for password-less sudo # Create the wheel group (common for cross-distro consistency)
groupadd wheel groupadd wheel
vi /etc/sudoers.d/99-root-ermnvldmr
# Create a modular sudoers file with safety checks
# This allows members of 'wheel' to run sudo without a password
echo "%wheel ALL=(ALL) NOPASSWD: ALL" | sudo visudo -c -f /etc/sudoers.d/99-root-ermnvldmr
# Add adam to the necessary groups
usermod -aG wheel,docker adam
``` ```
Fill file with the content: ---
```visudo ## 2. SSH Hardening & Key Management
%wheel ALL = (ALL) NOPASSWD: ALL
```
Then add _Adam_ user to the group Passwords are disabled. Access is strictly via SSH keys.
### Secure SSH Directory
We set strict permissions immediately to prevent the SSH daemon from rejecting the keys.
```bash ```bash
usermod -a -G wheel adam # Setup directories as root for the adam user
mkdir -p /home/adam/.ssh
chmod 700 /home/adam/.ssh
# Add your public key (Replace [PASTE_PUB_KEY_HERE])
echo "[PASTE_PUB_KEY_HERE]" > /home/adam/.ssh/authorized_keys
chmod 600 /home/adam/.ssh/authorized_keys
chown -R adam:adam /home/adam/.ssh
``` ```
## Configure SSH ### Harden SSH Daemon
Hardening SSHD, Modify the SSH configuration to change the default port and disable password entry.
even stupidly changing port.
```bash ```bash
# Move public ssh key of user adam to the server # Create a dedicated override config
vi /home/adam/.ssh/authorized_keys cat <<EOF > /etc/ssh/sshd_config.d/99-root-ermnvldmr.conf
# Create additional ssh rules
vi /etc/ssh/sshd_config.d/99-root-ermnvldmr.conf
```
With the following content:
```conf
Port 2222 Port 2222
PasswordAuthentication no PasswordAuthentication no
PermitEmptyPasswords no PermitEmptyPasswords no
AllowUsers adam AllowUsers adam
EOF
# Validate syntax before restarting to avoid lockout
sshd -t && systemctl restart ssh
``` ```
## Install Docker ---
Follow the official Docker installation guide for Debian -- ## 3. GitHub Access (Deploy Key)
[docs.docker.com](https://docs.docker.com/engine/install/debian/)
Test Docker installation: Since the repository is hosted on GitHub, the host needs its own identity to pull updates.
```bash ```bash
docker --version # Generate a host-specific SSH key (no passphrase for automation)
docker compose version ssh-keygen -t ed25519 -f /home/adam/.ssh/adam-at-deytenit_github_com_ed25519 -N ""
# Display the public key to be added to GitHub (Settings > Deploy Keys)
cat /home/adam/.ssh/adam-at-deytenit_github_com_ed25519.pub
``` ```
## Clone the root.ermnvldmr.com Repository > [!TIP]
> Add the output above to your [GitHub Repository Deploy Keys](https://www.google.com/search?q=https://github.com/deytenit/root.ermnvldmr.com/settings/keys) with **read access**.
---
## 4. Install Docker Engine
Standard Docker installation for Debian - [Docs: Docker - Install on Debian](https://docs.docker.com/engine/install/debian/).
```bash ```bash
# Clone to your preferred location # Follow official guide: https://docs.docker.com/engine/install/debian/
cd /srv # Once installed, verify (Adam can run this without sudo now)
sudo mkdir root.ermnvldmr.com docker run --rm hello-world
sudo chown adam:adam root.ermnvldmr.com
# Clone the repository
git clone git@github.com:deytenit/root.ermnvldmr.com.git root.ermnvldmr.com
# Run the repository initialization
./init.sh
``` ```
## Setup node ---
> [!IMPORTANT] ## 5. Repository Deployment
> From now on `$NODE` equals node name of the server you are setting up.
> [!NOTE] Clone the infrastructure repository and initialize the node.
> More about root.ermnvldmr.com compositions repository -- [github.com](https://github.com/)
Run node-specific scripts in $NODE/.host/.scripts
in order of their numbering:
```bash ```bash
# For example for node daedalus # Setup the service directory
export REPO_DIR="/srv/root.ermnvldmr.com"
sudo mkdir -p $REPO_DIR
sudo chown adam:adam $REPO_DIR
# Clone as the adam user
sudo -u adam git clone git@github.com:deytenit/root.ermnvldmr.com.git $REPO_DIR
# Initialize node (Set your node name, e.g., daedalus)
export NODE="daedalus"
cd $REPO_DIR
sudo -u adam ./init.sh
# Setting up the base components
./daedalus/.host/.scripts/00-base
# Setting up ufw with rules defined in ./daedalus/.host/ufw
./daedalus/.host/.scripts/10-ufw
# Setting up crowdsec with rules defined in ./daedalus/.host/crowd
./daedalus/.host/.scripts/20-crowd
# Setting up cron with tasks defined in ./daedalus/.host/cron
./daedalus/.host/.scripts/30-cron
``` ```
## Setup Storage Tiers ### Node-Specific Configuration
You need to decide where to store your data tiers: Run the staged initialization scripts in order:
```bash ```bash
# Create storage directories # Run the sequence for your specific node
./$NODE/.host/.scripts/00-base
./$NODE/.host/.scripts/10-ufw
./$NODE/.host/.scripts/20-crowd
./$NODE/.host/.scripts/30-cron
```
---
## 6. Storage & Hardening
Define the data tiers and secure the environment by creating non-root users for containerized services.
```bash
# Create (or mount) storage directories
sudo mkdir -p /srv/com-ermnvldmr-root-$NODE-{tier1,tier2,tier3} sudo mkdir -p /srv/com-ermnvldmr-root-$NODE-{tier1,tier2,tier3}
# Setup tiers for the node # Setup tiers and non-root users
.scripts/ops/setup-tiers $NODE \ sudo -u adam .scripts/ops/setup-tiers $NODE \
/srv/com-ermnvldmr-root-$NODE-tier1 \ /srv/com-ermnvldmr-root-$NODE-tier1 \
/srv/com-ermnvldmr-root-$NODE-tier2 \ /srv/com-ermnvldmr-root-$NODE-tier2 \
/srv/com-ermnvldmr-root-$NODE-tier3 /srv/com-ermnvldmr-root-$NODE-tier3
```
## Setup noroot-users sudo -u adam .scripts/ops/setup-noroot-users $NODE
To harden the containers running on the node,
we create series of noroot-users and shared group
for each project in the compose repository node directory.
```bash
# Setup noroot-users for the node
.scripts/ops/setup-noroot-users $NODE
``` ```
@@ -1,196 +0,0 @@
---
title: "Настройка xray-клиента"
description: "Дружелюбная инструкция по настройке xray-client без какого-либо предназначения"
type: docs
---
Данная инструкция поможет вам пошагово настроить клиент для работы через заданную конфигурацию соединения и особые правила маршрутизации (*routing*).
**Следуйте** каждому шагу внимательно.
> [!NOTE]
> Инструкция предназначена для настройки xray-клиента без дальнейшего предназначения – мы не предоставляем услуги прокси.
## Необходимые данные
- Строка подключения формата:
```
vless://...
```
- Набор правил маршрутизации:
> [!WARNING]
> Данный формат правил **подходит только** для **v2rayN/v2rayNG**!
> **Для happ** правильная строка указана **в самой инструкции**.
```json
[
{"domain":["domain:ru","domain:su","domain:vk.com","domain:yandex.com"],"enabled":true,"locked":false,"outboundTag":"direct","remarks":"Domain RU - Direct"},
{"domain":["geosite:private"],"enabled":true,"locked":false,"outboundTag":"direct","remarks":"Domain Private - Direct"},
{"enabled":true,"ip":["geoip:ru"],"locked":false,"outboundTag":"direct","remarks":"IP RU - Direct"},
{"enabled":true,"ip":["geoip:private"],"locked":false,"outboundTag":"direct","remarks":"IP Private - Direct"}
]
```
## Android (v2rayNG)
> [!IMPORTANT]
> NekoBox (MatsuriDayo) более не рекомендован к использованию из-за малой активности в разработке – **удалите** его.
> [!TIP]
> Наглядный пример настройки — [на видео](/videos/recipes-xray-setup-v2rayng.webm)
### Шаг 1. Установите приложение
- **Скачайте** v2rayNG с [официального репозитория](https://github.com/2dust/v2rayNG/releases).
Обычно нужен файл `v2rayNG_x.x.x_universal.apk`.
- **Установите** скачанный `.apk` файл на Android-устройство.
### Шаг 2. Добавьте конфигурацию
- **Откройте** приложение v2rayNG.
- **Нажмите** "+" в правом верхнем углу.
- **Выберите** `Import config from Clipboard` (предварительно **скопируйте** ссылку конфигурации в буфер обмена).
### Шаг 3. Настройте правила маршрутизации
- **Вернитесь** на главный экран приложения.
- **Нажмите** на "бургер-меню" (три полоски) в левом верхнем углу.
- **Выберите** `Routing Settings`.
- **Нажмите** на три точки в правом верхнем углу.
- **Выберите** `Import ruleset from clipboard` (предварительно **скопируйте** [JSON с правилами](#необходимые-данные)).
- **Нажмите** на Domain strategy и **выберите** `IPOnDemand`.
### Шаг 4. Запустите подключение
- **Вернитесь** на главный экран.
- **Нажмите** кнопку ▶ для запуска соединения.
## Windows / MacOS / Linux (v2rayN)
### Шаг 1. Установите приложение
- **Скачайте** нужную версию приложения с [официального репозитория](https://github.com/2dust/v2rayN/releases):
- Windows: `v2rayN-windows-64-desktop.zip`
- Linux: `v2rayN-linux-64.zip`
- MacOS: `v2rayN-macos-arm64.dmg`
> [!TIP]
> **Чтобы увидеть** все файлы для скачивания **нажмите** на ссылку под файлами.
>
> ![Показать все файлы для скачивания](/images/recipes-xray-setup-v2rayn-download.webp)
#### Windows
- **Распакуйте** файл `.zip` в любое удобное место.
![Контекстное меню – распаковать всё](/images/recipes-xray-setup-v2rayn-windows-unzip.webp)
- **Переместите** распакованную папку в более естественное место –
**вырежте** папку.
![Вырезка распакованной папки](/images/recipes-xray-setup-v2rayn-windows-cut.webp)
- Затем **вставьте** в папку `Документы`.
![Вставка в папку Документы](/images/recipes-xray-setup-v2rayn-windows-paste.webp)
- В перемещённой папке **будет** лежать `v2rayN` приложение.
> [!TIP]
> **Чтобы не потерять** приложение – **отправьте** ярлык на Рабочий Стол.
>
> ![Отправить ярлык на Рабочий Стол](/images/recipes-xray-setup-v2rayn-windows-shortcut.webp)
#### Linux
Если вы **пользуетесь Linux**, я думаю, у вас достаточно знаний, чтобы **настроить всё самостоятельно**.
В этом разделе будут рассмотрены **частые проблемы** и **пути их решения**.
#### MacOS
- **Откройте** файл `.dmg` и **перетащите** приложение в папку "Программы".
- **Откройте** терминал и **выполните** команду:
```
sudo xattr -cr /Applications/v2rayN.app
```
- После первого открытия, **Откройте** системные настройки:
- **Выберете** пункт `Privacy & Security`
- **Прокрутите** вниз до уведомления о блокировке "xray"
- **Нажмите** `Allow Anyway`
### Шаг 2. Добавьте конфигурацию
- **Откройте** v2rayN.
- **Нажмите** `Configurations` в левом верхнем углу окна.
- **Выберите** `Import Share Links from clipboard (Ctrl+V)` (предварительно **скопируйте** конфигурационную ссылку).
![Импортирование Конфигурации](/images/recipes-xray-setup-v2rayn-import-config.webp)
### Шаг 3. Настройте правила маршрутизации
- **Перейдите** в `Settings` → `Routing Settings`.
![Открытие Настроек Маршрутизации](/images/recipes-xray-setup-v2rayn-open-routing.webp)
- В открывшемся окне:
- **Нажмите** `Add` в верхнем левом углу.
- В новом окне в поле Remarks **введите** произвольное имя, например: "RU - Direct".
- В поле Domain strategy **выберите** `IPOnDemand`.
- В вверху окна **нажмите** `Import Rules From Clipboard` (предварительно **скопируйте** [JSON с правилами](#необходимые-данные)).
- В появившемся окне "Do you want to append rules? ..." – **нажмите** `No`.
![Импортирование Правил Маршрутизации](/images/recipes-xray-setup-v2rayn-add-routing.webp)
- **Нажимайте** `Confirm` до тех пор, пока не **вернётесь** в основной интерфейс.
### Шаг 4. Запустите подключение
- **Выберите** созданные правила маршрутизации из второго выпадающего списка снизу.
![Выбор Правил Маршрутизации](/images/recipes-xray-setup-v2rayn-select-routing.webp)
- **Нажмите** `Enable Tun` для запуска соединения (**следуйте** запросам v2rayN).
## iOS / iPadOS (happ)
### Шаг 1. Установите приложение
- **Установите** _happ_ из [App Store](https://apps.apple.com/us/app/happ-proxy-utility/id6504287215).
### Шаг 2. Добавьте конфигурацию
- **Откройте** приложение.
- **Нажмите** "+" в правом верхнем углу.
- **Выберите** `Import from clipboard` (предварительно **скопируйте** ссылку конфигурации в буфер обмена).
![Добавление конфигурации](/images/recipes-xray-setup-happ-import-config.webp)
### Шаг 3. Откройте настройки роутинга
- **Перейдите** по значку шестиренки в левом верхнем углу.
- **Выберите** `Routing Rules`.
![Открытие настроек роутинга](/images/recipes-xray-setup-happ-open-routing.webp)
### Шаг 4. Импортируйте роутинг
- **Нажмите** `...` (три точки) в правом верхнем углу.
- **Выберите** `Import from clipboard` (предварительно **скопируйте** правила, см. ниже).
> [!IMPORTANT]
> Формат правил отличается от v2rayN/v2rayNG!
> Эта строка - эквивалентна правилам сверху.
>
> ```
> happ://routing/add/eyJEbnNIb3N0cyI6eyJkbnMuZ29vZ2xlIjoiOC44LjguOCIsImNsb3VkZmxhcmUtZG5zLmNvbSI6IjEuMS4xLjEifSwiQmxvY2tJcCI6W10sIkZha2VEbnMiOnRydWUsIlJlbW90ZUROU1R5cGUiOiJEb1UiLCJEb21lc3RpY0ROU0lwIjoiOC44LjguOCIsIkRpcmVjdFNpdGVzIjpbImRvbWFpbjpydSIsImRvbWFpbjpzdSIsImRvbWFpbjp2ay5jb20iLCJkb21haW46eWFuZGV4LmNvbSIsImdlb3NpdGU6cHJpdmF0ZSJdLCJHZW9pcFVybCI6Imh0dHBzOlwvXC9naXRodWIuY29tXC9Mb3lhbHNvbGRpZXJcL3YycmF5LXJ1bGVzLWRhdFwvcmVsZWFzZXNcL2xhdGVzdFwvZG93bmxvYWRcL2dlb2lwLmRhdCIsIkdsb2JhbFByb3h5Ijp0cnVlLCJEaXJlY3RJcCI6WyJnZW9pcDpydSIsImdlb2lwOnByaXZhdGUiXSwiUHJveHlTaXRlcyI6W10sIk5hbWUiOiJEZWZhdWx0IiwiR2Vvc2l0ZVVybCI6Imh0dHBzOlwvXC9naXRodWIuY29tXC9Mb3lhbHNvbGRpZXJcL3YycmF5LXJ1bGVzLWRhdFwvcmVsZWFzZXNcL2xhdGVzdFwvZG93bmxvYWRcL2dlb3NpdGUuZGF0IiwiQmxvY2tTaXRlcyI6W10sIkxhc3RVcGRhdGVkIjoxNzU5NDMxODk5LCJVc2VDaHVua0ZpbGVzIjp0cnVlLCJSZW1vdGVETlNEb21haW4iOiJodHRwczpcL1wvY2xvdWRmbGFyZS1kbnMuY29tXC9kbnMtcXVlcnkiLCJEb21haW5TdHJhdGVneSI6IklQSWZOb25NYXRjaCIsIkRvbWVzdGljRE5TRG9tYWluIjoiaHR0cHM6XC9cL2Rucy5nb29nbGVcL2Rucy1xdWVyeSIsIlJlbW90ZUROU0lwIjoiMS4xLjEuMSIsIlByb3h5SXAiOltdLCJEb21lc3RpY0ROU1R5cGUiOiJEb1UifQ==
> ```
![Импортирование правил](/images/recipes-xray-setup-happ-add-routing.webp)
### Шаг 5. Роутинг установлен
- **После** настройки роутинга,
содержимое экрана должно быть похоже на картинку снизу.
- **Вернитесь** на главный экран.
- **Нажмите** кнопку вкключения для запуска соединения.
![Финальный экран](/images/recipes-xray-setup-happ-routing-final.webp)