<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://wiki.ark-hoster.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_API_%D0%B8_%D0%B2%D0%B5%D0%B1-%D1%85%D1%83%D0%BA%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_Bedrock_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0</id>
	<title>Настройка API и веб-хуков для Bedrock сервера - История изменений</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ark-hoster.ru/index.php?action=history&amp;feed=atom&amp;title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_API_%D0%B8_%D0%B2%D0%B5%D0%B1-%D1%85%D1%83%D0%BA%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_Bedrock_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0"/>
	<link rel="alternate" type="text/html" href="https://wiki.ark-hoster.ru/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_API_%D0%B8_%D0%B2%D0%B5%D0%B1-%D1%85%D1%83%D0%BA%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_Bedrock_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0&amp;action=history"/>
	<updated>2026-05-01T13:12:39Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.ark-hoster.ru/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_API_%D0%B8_%D0%B2%D0%B5%D0%B1-%D1%85%D1%83%D0%BA%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_Bedrock_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0&amp;diff=1581&amp;oldid=prev</id>
		<title>Admin: Новая страница: «= Настройка API и веб-хуков для Bedrock сервера =  == 1. Подготовка ==  * Убедитесь, что Bedrock сервер у…»</title>
		<link rel="alternate" type="text/html" href="https://wiki.ark-hoster.ru/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_API_%D0%B8_%D0%B2%D0%B5%D0%B1-%D1%85%D1%83%D0%BA%D0%BE%D0%B2_%D0%B4%D0%BB%D1%8F_Bedrock_%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80%D0%B0&amp;diff=1581&amp;oldid=prev"/>
		<updated>2025-11-03T10:17:38Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «= Настройка API и веб-хуков для Bedrock сервера =  == 1. Подготовка ==  * Убедитесь, что Bedrock сервер у…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Настройка API и веб-хуков для Bedrock сервера =&lt;br /&gt;
&lt;br /&gt;
== 1. Подготовка ==&lt;br /&gt;
&lt;br /&gt;
* Убедитесь, что Bedrock сервер установлен и работает.&lt;br /&gt;
* Установите Node.js или Python для создания API.&lt;br /&gt;
* Имейте базовые знания веб-разработки.&lt;br /&gt;
* Рекомендуется использовать Ubuntu 24.04 LTS.&lt;br /&gt;
&lt;br /&gt;
== 2. Создание REST API ==&lt;br /&gt;
&lt;br /&gt;
=== Установка Node.js ===&lt;br /&gt;
&lt;br /&gt;
1. Установите Node.js:&lt;br /&gt;
&amp;lt;pre&amp;gt;curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -&lt;br /&gt;
sudo apt install -y nodejs&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Проверьте установку:&lt;br /&gt;
&amp;lt;pre&amp;gt;node -v&lt;br /&gt;
npm -v&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Создание проекта ===&lt;br /&gt;
&lt;br /&gt;
1. Создайте директорию:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo mkdir -p /opt/bedrock-api&lt;br /&gt;
cd /opt/bedrock-api&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Инициализируйте проект:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo npm init -y&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Установите зависимости:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo npm install express body-parser cors axios&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Базовый API сервер ===&lt;br /&gt;
&lt;br /&gt;
1. Создайте файл app.js:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano app.js&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Добавьте содержимое:&lt;br /&gt;
&amp;lt;pre&amp;gt;const express = require(&amp;#039;express&amp;#039;);&lt;br /&gt;
const { spawn } = require(&amp;#039;child_process&amp;#039;);&lt;br /&gt;
const bodyParser = require(&amp;#039;body-parser&amp;#039;);&lt;br /&gt;
const cors = require(&amp;#039;cors&amp;#039;);&lt;br /&gt;
const app = express();&lt;br /&gt;
const port = 3000;&lt;br /&gt;
&lt;br /&gt;
app.use(cors());&lt;br /&gt;
app.use(bodyParser.json());&lt;br /&gt;
&lt;br /&gt;
\# Функция выполнения команд&lt;br /&gt;
function executeCommand(command) {&lt;br /&gt;
    return new Promise((resolve, reject) =&amp;gt; {&lt;br /&gt;
        const proc = spawn(&amp;#039;sudo&amp;#039;, [&amp;#039;systemctl&amp;#039;, ...command.split(&amp;#039; &amp;#039;)]);&lt;br /&gt;
        let output = &amp;#039;&amp;#039;;&lt;br /&gt;
        let error = &amp;#039;&amp;#039;;&lt;br /&gt;
        &lt;br /&gt;
        proc.stdout.on(&amp;#039;data&amp;#039;, (data) =&amp;gt; {&lt;br /&gt;
            output += data.toString();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        proc.stderr.on(&amp;#039;data&amp;#039;, (data) =&amp;gt; {&lt;br /&gt;
            error += data.toString();&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        proc.on(&amp;#039;close&amp;#039;, (code) =&amp;gt; {&lt;br /&gt;
            if (code === 0) {&lt;br /&gt;
                resolve(output);&lt;br /&gt;
            } else {&lt;br /&gt;
                reject(error || `Command failed with code ${code}`);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\# Функция отправки команды в консоль сервера&lt;br /&gt;
function sendServerCommand(command) {&lt;br /&gt;
    return new Promise((resolve) =&amp;gt; {&lt;br /&gt;
        const proc = spawn(&amp;#039;screen&amp;#039;, [&amp;#039;-S&amp;#039;, &amp;#039;minecraft-bedrock&amp;#039;, &amp;#039;-X&amp;#039;, &amp;#039;stuff&amp;#039;, command + &amp;#039;\\n&amp;#039;]);&lt;br /&gt;
        proc.on(&amp;#039;close&amp;#039;, () =&amp;gt; {&lt;br /&gt;
            setTimeout(resolve, 1000);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\# API Endpoints&lt;br /&gt;
&lt;br /&gt;
\# Статус сервера&lt;br /&gt;
app.get(&amp;#039;/api/server/status&amp;#039;, async (req, res) =&amp;gt; {&lt;br /&gt;
    try {&lt;br /&gt;
        const result = await executeCommand(&amp;#039;systemctl is-active minecraft-bedrock&amp;#039;);&lt;br /&gt;
        const status = result.trim() === &amp;#039;active&amp;#039; ? &amp;#039;running&amp;#039; : &amp;#039;stopped&amp;#039;;&lt;br /&gt;
        res.json({ status });&lt;br /&gt;
    } catch (error) {&lt;br /&gt;
        res.json({ status: &amp;#039;stopped&amp;#039;, error: error.message });&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
\# Запуск сервера&lt;br /&gt;
app.post(&amp;#039;/api/server/start&amp;#039;, async (req, res) =&amp;gt; {&lt;br /&gt;
    try {&lt;br /&gt;
        await executeCommand(&amp;#039;systemctl start minecraft-bedrock&amp;#039;);&lt;br /&gt;
        res.json({ success: true, message: &amp;#039;Server started&amp;#039; });&lt;br /&gt;
    } catch (error) {&lt;br /&gt;
        res.status(500).json({ success: false, error: error.message });&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
\# Остановка сервера&lt;br /&gt;
app.post(&amp;#039;/api/server/stop&amp;#039;, async (req, res) =&amp;gt; {&lt;br /&gt;
    try {&lt;br /&gt;
        await executeCommand(&amp;#039;systemctl stop minecraft-bedrock&amp;#039;);&lt;br /&gt;
        res.json({ success: true, message: &amp;#039;Server stopped&amp;#039; });&lt;br /&gt;
    } catch (error) {&lt;br /&gt;
        res.status(500).json({ success: false, error: error.message });&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
\# Перезапуск сервера&lt;br /&gt;
app.post(&amp;#039;/api/server/restart&amp;#039;, async (req, res) =&amp;gt; {&lt;br /&gt;
    try {&lt;br /&gt;
        await executeCommand(&amp;#039;systemctl restart minecraft-bedrock&amp;#039;);&lt;br /&gt;
        res.json({ success: true, message: &amp;#039;Server restarted&amp;#039; });&lt;br /&gt;
    } catch (error) {&lt;br /&gt;
        res.status(500).json({ success: false, error: error.message });&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
\# Выполнение команды&lt;br /&gt;
app.post(&amp;#039;/api/server/command&amp;#039;, async (req, res) =&amp;gt; {&lt;br /&gt;
    const { command } = req.body;&lt;br /&gt;
    &lt;br /&gt;
    if (!command) {&lt;br /&gt;
        return res.status(400).json({ error: &amp;#039;Command is required&amp;#039; });&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    try {&lt;br /&gt;
        await sendServerCommand(command);&lt;br /&gt;
        res.json({ success: true, message: &amp;#039;Command sent&amp;#039; });&lt;br /&gt;
    } catch (error) {&lt;br /&gt;
        res.status(500).json({ success: false, error: error.message });&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
\# Получение логов&lt;br /&gt;
app.get(&amp;#039;/api/server/logs&amp;#039;, (req, res) =&amp;gt; {&lt;br /&gt;
    const fs = require(&amp;#039;fs&amp;#039;);&lt;br /&gt;
    const logFile = &amp;#039;/opt/bedrock/logs/latest.log&amp;#039;;&lt;br /&gt;
    const lines = parseInt(req.query.lines) || 100;&lt;br /&gt;
    &lt;br /&gt;
    try {&lt;br /&gt;
        const content = fs.readFileSync(logFile, &amp;#039;utf-8&amp;#039;);&lt;br /&gt;
        const logLines = content.split(&amp;#039;\\n&amp;#039;).slice(-lines);&lt;br /&gt;
        res.json({ logs: logLines });&lt;br /&gt;
    } catch (error) {&lt;br /&gt;
        res.status(500).json({ error: error.message });&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
\# Информация о сервере&lt;br /&gt;
app.get(&amp;#039;/api/server/info&amp;#039;, async (req, res) =&amp;gt; {&lt;br /&gt;
    const fs = require(&amp;#039;fs&amp;#039;);&lt;br /&gt;
    &lt;br /&gt;
    try {&lt;br /&gt;
        const pid = require(&amp;#039;child_process&amp;#039;).execSync(&amp;#039;pgrep bedrock_server&amp;#039;).toString().trim();&lt;br /&gt;
        const memory = parseInt(require(&amp;#039;child_process&amp;#039;).execSync(`ps -o rss= -p ${pid}`).toString().trim()) / 1024;&lt;br /&gt;
        const cpu = require(&amp;#039;child_process&amp;#039;).execSync(`ps -o %cpu= -p ${pid}`).toString().trim();&lt;br /&gt;
        &lt;br /&gt;
        const props = {};&lt;br /&gt;
        const propsContent = fs.readFileSync(&amp;#039;/opt/bedrock/server.properties&amp;#039;, &amp;#039;utf-8&amp;#039;);&lt;br /&gt;
        propsContent.split(&amp;#039;\\n&amp;#039;).forEach(line =&amp;gt; {&lt;br /&gt;
            if (line &amp;amp;&amp;amp; !line.startsWith(&amp;#039;#&amp;#039;)) {&lt;br /&gt;
                const [key, value] = line.split(&amp;#039;=&amp;#039;);&lt;br /&gt;
                if (key &amp;amp;&amp;amp; value) {&lt;br /&gt;
                    props[key.trim()] = value.trim();&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        &lt;br /&gt;
        res.json({&lt;br /&gt;
            pid,&lt;br /&gt;
            memory: memory.toFixed(2),&lt;br /&gt;
            cpu,&lt;br /&gt;
            properties: props&lt;br /&gt;
        });&lt;br /&gt;
    } catch (error) {&lt;br /&gt;
        res.status(500).json({ error: error.message });&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
app.listen(port, () =&amp;gt; {&lt;br /&gt;
    console.log(`Bedrock API server running on port ${port}`);&lt;br /&gt;
});&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Запустите API:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo node app.js&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 3. Настройка systemd сервиса ===&lt;br /&gt;
&lt;br /&gt;
=== Создание сервиса ===&lt;br /&gt;
&lt;br /&gt;
1. Создайте файл сервиса:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano /etc/systemd/system/bedrock-api.service&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Добавьте конфигурацию:&lt;br /&gt;
&amp;lt;pre&amp;gt;[Unit]&lt;br /&gt;
Description=Bedrock Server API&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
User=root&lt;br /&gt;
WorkingDirectory=/opt/bedrock-api&lt;br /&gt;
ExecStart=/usr/bin/node app.js&lt;br /&gt;
Restart=always&lt;br /&gt;
RestartSec=10&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Запустите сервис:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo systemctl daemon-reload&lt;br /&gt;
sudo systemctl enable bedrock-api&lt;br /&gt;
sudo systemctl start bedrock-api&lt;br /&gt;
sudo systemctl status bedrock-api&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 4. Настройка веб-хуков ===&lt;br /&gt;
&lt;br /&gt;
=== Создание webhook endpoint ===&lt;br /&gt;
&lt;br /&gt;
1. Добавьте в app.js:&lt;br /&gt;
&amp;lt;pre&amp;gt;const axios = require(&amp;#039;axios&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
\# Webhook конфигурация&lt;br /&gt;
const webhookConfig = {&lt;br /&gt;
    url: process.env.WEBHOOK_URL || &amp;#039;https://discord.com/api/webhooks/YOUR_WEBHOOK&amp;#039;,&lt;br /&gt;
    enabled: true&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function sendWebhook(event, data) {&lt;br /&gt;
    if (!webhookConfig.enabled) return;&lt;br /&gt;
    &lt;br /&gt;
    const payload = {&lt;br /&gt;
        content: `🚨 **${event}**\\n\\n${JSON.stringify(data, null, 2)}`&lt;br /&gt;
    };&lt;br /&gt;
    &lt;br /&gt;
    axios.post(webhookConfig.url, payload).catch(err =&amp;gt; {&lt;br /&gt;
        console.error(&amp;#039;Webhook error:&amp;#039;, err.message);&lt;br /&gt;
    });&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\# Webhook endpoint для событий&lt;br /&gt;
app.post(&amp;#039;/api/webhook/event&amp;#039;, (req, res) =&amp;gt; {&lt;br /&gt;
    const { event, data } = req.body;&lt;br /&gt;
    &lt;br /&gt;
    sendWebhook(event, data);&lt;br /&gt;
    res.json({ success: true });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
\# Автоматические webhook события&lt;br /&gt;
app.post(&amp;#039;/api/server/start&amp;#039;, async (req, res) =&amp;gt; {&lt;br /&gt;
    try {&lt;br /&gt;
        await executeCommand(&amp;#039;systemctl start minecraft-bedrock&amp;#039;);&lt;br /&gt;
        sendWebhook(&amp;#039;Server Started&amp;#039;, { timestamp: new Date() });&lt;br /&gt;
        res.json({ success: true, message: &amp;#039;Server started&amp;#039; });&lt;br /&gt;
    } catch (error) {&lt;br /&gt;
        res.status(500).json({ success: false, error: error.message });&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. Аутентификация API ===&lt;br /&gt;
&lt;br /&gt;
=== Добавление токенов ===&lt;br /&gt;
&lt;br /&gt;
1. Обновите app.js:&lt;br /&gt;
&amp;lt;pre&amp;gt;const API_TOKEN = process.env.API_TOKEN || &amp;#039;your-secret-token&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
\# Middleware для проверки токена&lt;br /&gt;
function authenticate(req, res, next) {&lt;br /&gt;
    const token = req.headers[&amp;#039;authorization&amp;#039;]?.replace(&amp;#039;Bearer &amp;#039;, &amp;#039;&amp;#039;) || req.query.token;&lt;br /&gt;
    &lt;br /&gt;
    if (token === API_TOKEN) {&lt;br /&gt;
        next();&lt;br /&gt;
    } else {&lt;br /&gt;
        res.status(401).json({ error: &amp;#039;Unauthorized&amp;#039; });&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
\# Применение к защищенным routes&lt;br /&gt;
app.post(&amp;#039;/api/server/*&amp;#039;, authenticate);&lt;br /&gt;
app.get(&amp;#039;/api/server/logs&amp;#039;, authenticate);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Использование:&lt;br /&gt;
&amp;lt;pre&amp;gt;curl -H &amp;quot;Authorization: Bearer your-secret-token&amp;quot; http://localhost:3000/api/server/status&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 6. Примеры использования ===&lt;br /&gt;
&lt;br /&gt;
=== Получение статуса ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;curl http://localhost:3000/api/server/status&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ответ:&lt;br /&gt;
&amp;lt;pre&amp;gt;{&lt;br /&gt;
  &amp;quot;status&amp;quot;: &amp;quot;running&amp;quot;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Выполнение команды ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;curl -X POST http://localhost:3000/api/server/command \\&lt;br /&gt;
  -H &amp;quot;Content-Type: application/json&amp;quot; \\&lt;br /&gt;
  -H &amp;quot;Authorization: Bearer your-secret-token&amp;quot; \\&lt;br /&gt;
  -d &amp;#039;{&amp;quot;command&amp;quot;: &amp;quot;say Hello from API&amp;quot;}&amp;#039;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Получение логов ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;curl &amp;quot;http://localhost:3000/api/server/logs?lines=50&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 7. Настройка Nginx для API ===&lt;br /&gt;
&lt;br /&gt;
=== Проксирование ===&lt;br /&gt;
&lt;br /&gt;
1. Создайте конфигурацию Nginx:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo nano /etc/nginx/sites-available/bedrock-api&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Добавьте конфигурацию:&lt;br /&gt;
&amp;lt;pre&amp;gt;server {&lt;br /&gt;
    listen 80;&lt;br /&gt;
    server_name api.yourdomain.com;&lt;br /&gt;
&lt;br /&gt;
    location / {&lt;br /&gt;
        proxy_pass http://localhost:3000;&lt;br /&gt;
        proxy_http_version 1.1;&lt;br /&gt;
        proxy_set_header Upgrade $http_upgrade;&lt;br /&gt;
        proxy_set_header Connection &amp;#039;upgrade&amp;#039;;&lt;br /&gt;
        proxy_set_header Host $host;&lt;br /&gt;
        proxy_cache_bypass $http_upgrade;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Активируйте сайт:&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo ln -s /etc/nginx/sites-available/bedrock-api /etc/nginx/sites-enabled/&lt;br /&gt;
sudo nginx -t&lt;br /&gt;
sudo systemctl reload nginx&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 8. Мониторинг через API ===&lt;br /&gt;
&lt;br /&gt;
=== Создание клиента ===&lt;br /&gt;
&lt;br /&gt;
1. Пример JavaScript клиента:&lt;br /&gt;
&amp;lt;pre&amp;gt;const axios = require(&amp;#039;axios&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
const apiClient = axios.create({&lt;br /&gt;
    baseURL: &amp;#039;http://localhost:3000/api&amp;#039;,&lt;br /&gt;
    headers: {&lt;br /&gt;
        &amp;#039;Authorization&amp;#039;: &amp;#039;Bearer your-secret-token&amp;#039;&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
async function checkServerStatus() {&lt;br /&gt;
    try {&lt;br /&gt;
        const response = await apiClient.get(&amp;#039;/server/status&amp;#039;);&lt;br /&gt;
        console.log(&amp;#039;Server status:&amp;#039;, response.data.status);&lt;br /&gt;
    } catch (error) {&lt;br /&gt;
        console.error(&amp;#039;Error:&amp;#039;, error.message);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
setInterval(checkServerStatus, 60000);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 9. Безопасность ===&lt;br /&gt;
&lt;br /&gt;
=== Рекомендации ===&lt;br /&gt;
&lt;br /&gt;
1. Используйте HTTPS для внешнего доступа&lt;br /&gt;
2. Ограничьте доступ по IP&lt;br /&gt;
3. Используйте сильные токены&lt;br /&gt;
4. Регулярно обновляйте зависимости&lt;br /&gt;
&lt;br /&gt;
== 10. Устранение неполадок ===&lt;br /&gt;
&lt;br /&gt;
=== Проблемы с API ===&lt;br /&gt;
&lt;br /&gt;
1. Проверьте логи: &amp;lt;pre&amp;gt;sudo journalctl -u bedrock-api -f&amp;lt;/pre&amp;gt;&lt;br /&gt;
2. Проверьте порт: &amp;lt;pre&amp;gt;sudo netstat -tlnp | grep 3000&amp;lt;/pre&amp;gt;&lt;br /&gt;
3. Проверьте права sudo&lt;br /&gt;
&lt;br /&gt;
== Заключение ==&lt;br /&gt;
&lt;br /&gt;
Настройка API и веб-хуков для Bedrock сервера позволяет интегрировать сервер с внешними системами и автоматизировать управление. REST API предоставляет удобный интерфейс для управления сервером программно.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Для размещения ваших Bedrock серверов с API на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[Выделенные серверы](https://ark-hoster.ru/dedicated/)&amp;#039;&amp;#039;&amp;#039; - для высоконагруженных Bedrock серверов&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;[VPS/VDS серверы](https://ark-hoster.ru/vpsgame/)&amp;#039;&amp;#039;&amp;#039; - для небольших и средних серверов&lt;br /&gt;
&lt;br /&gt;
Наши специалисты помогут с настройкой API и веб-хуков для Bedrock серверов!&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
		
	</entry>
</feed>