💡 Полезные Советы

Uptime Kuma: Селфхост-мониторинг для ваших сервисов

25.05.26
32

Если у вас крутится зоопарк собственных сервисов, рано или поздно встает вопрос: как узнать, что всё работает, до того, как пользователи (или вы сами) обнаружат ошибку 502?

Uptime Kuma - это легковесный, опенсорсный аналог UptimeRobot, который можно развернуть на своем железе за пару минут. У него красивый интерфейс, поддержка десятков видов уведомлений и богатый функционал для создания публичных статус-страниц.

Для каких проектов подходит Uptime Kuma?

Этот инструмент универсален и отлично вписывается в самые разные сценарии:

  • Домашние лаборатории (Homelab): Идеально для серверов на базе Raspberry Pi или виртуалок в Proxmox. Можно мониторить локальные DNS-фильтры, прокси-менеджеры, умный дом и базы данных, API.
  • Сайты и пет-проекты: Контроль доступности ваших блогов, лендингов и веб-приложений извне
  • Проверка открытых TCP-портов. Удобно, если вы держите, например, сервер по Counter-Strike и хотите знать, когда он "прилег".
  • Контроль SSL-сертификатов: Kuma умеет заранее предупреждать, что сертификат сайта скоро протухнет.

Как установить?

Самый простой, надежный и чистый способ развернуть Uptime Kuma - использовать Docker.

Создайте директорию для проекта, а внутри - файл docker-compose.yml со следующим содержимым:

version: '3.3' # В новый версиях Docker не обязательно указывать!
services:
 uptime-kuma:
   image: louislam/uptime-kuma:1
   container_name: uptime-kuma
   volumes:
     # Обязательно пробрасываем volume, чтобы статистика не пропала при рестарте контейнера.
     # Хранить данные лучше на надежном носителе (например, eMMC или HDD).
     - ./uptime-kuma-data:/app/data
     # Раскомментируйте строку ниже, если планируете мониторить другие Docker-контейнеры
     # - /var/run/docker.sock:/var/run/docker.sock
   ports:
     - "3001:3001"
   restart: unless-stopped

После этого запускаем контейнер:

docker-compose up -d

Готово! Теперь интерфейс доступен по адресу: http://<IP_вашего_сервера>:3001.

Базовая настройка: с чего начать?

При первом входе система попросит создать учетную запись администратора. Дальше начинается самое интересное:

  1. Добавление мониторов:
       Нажмите "+ Новый монитор". Выберите тип (HTTP/HTTPS для сайтов, Ping для хостов, TCP Port для баз данных или игр). Укажите адрес и интервал проверок.
       Лайфхак: Если у вас бывают микроразрывы сети и выскакивают ошибки вроде ECONNRESET, увеличьте параметр "Количество повторных попыток" (Retries) до 2-3. Это избавит от ложных срабатываний.
  2. Настройка уведомлений (Алертов):
       Зайдите в настройки монитора -> "Настроить уведомления". Uptime Kuma поддерживает всё: от Email и Webhooks до Telegram и Discord. Проще всего создать Telegram-бота через BotFather, вписать его токен в Kuma и получать моментальные пуши о падении сервисов прямо в мессенджер.

  3. Публичные страницы статуса (Status Pages):
       В верхнем меню есть кнопка "Страницы статуса". Там можно собрать красивый дашборд с зелеными полосками аптайма, добавить свой логотип, разделить сервисы по группам (например, "Внешние сайты" и "Внутренняя инфраструктура") и выставить это всё в открытый доступ, чтобы ваши пользователи всегда видели актуальное состояние проектов.

Работа с инцидентами (Ручное информирование)

Автоматика - это хорошо, но иногда сервер уходит в оффлайн по вашей инициативе. Например, вы планируете провести обслуживание Raspberry Pi 5 (Сервера), обновить ядро или восстановить систему из бэкапа на eMMC диске. Чтобы на странице статуса не появилась пугающая красная полоса "Недоступен", в Uptime Kuma есть механизм Инцидентов.

На странице статуса нажмите зеленую кнопку "Создать инцидент". Перед вами появится форма:

  • Название инцидента: Краткая суть (например, "Плановое техническое обслуживание" или "Проблемы с хостинг-провайдером").
  • Содержание инцидента: Подробное описание ситуации. Поле поддерживает синтаксис Markdown, так что текст можно красиво отформатировать, добавить списки или ссылки.
  • Стиль: Выпадающий список позволяет выбрать визуальное оформление плашки, которая появится на дашборде.
    • ИНФО - нейтральное уведомление (полезно для плановых работ).
    • ВНИМАНИЕ - желтый алерт (сервис работает нестабильно).
    • ОШИБКА - красный алерт (всё упало, мы уже чиним).
    • ОСНОВНОЙ / СВЕТЛЫЙ / ТЕМНЫЙ - системные цвета для кастомизации под дизайн вашей страницы.

Как только работы завершатся, инцидент можно "Закрыть", и он уйдет в историю, а пользователи увидят, что проблема решена.

Глоссарий

  • Аптайм (Uptime): Время непрерывной работы вычислительной системы или сервиса с момента последней загрузки. Выражается в процентах (например, 99.9% - отличный показатель).
  • Даунрайм (Downtime): Время простоя, когда сервис недоступен для пользователей по техническим причинам.
  • Дашборд (Dashboard): Информационная панель (доска), на которую выводятся ключевые показатели и графики в удобном для чтения виде. В Uptime Kuma это "Страницы статуса".
  • Монитор (Monitor): Отдельная задача проверки в Uptime Kuma, которая регулярно опрашивает конкретный сервис (сайт, IP-адрес, порт) на предмет его "жизни".
  • Инцидент (Incident): Событие, приводящее к прерыванию работы сервиса или снижению качества его работы. На статус-страницах используется для информирования пользователей о текущих проблемах или плановых работах.
  • Пинг (Ping): Базовая сетевая утилита для проверки целостности и качества соединений. Отправляет эхо-запрос к узлу сети и фиксирует время ответа.
  • Self-hosted (Селфхост): Практика самостоятельного размещения и обслуживания программного обеспечения на собственных серверах, а не использования облачных решений от сторонних компаний.

Uptime Kuma работает по принципу "настроил и забыл", потребляет минимум ресурсов.

Бонус: Мониторинг с Grafana и Prometheus

Встроенные публичные "Страницы статуса" в Uptime Kuma отлично подходят для пользователей вашего сайта. Но если вы лично хотите видеть максимально подробную картину с графиками задержек до миллисекунды, историю SSL-сертификатов и глубокую аналитику - данные нужно выводить в Grafana.

Uptime Kuma спроектирована по всем канонам современного мониторинга и умеет отдавать свои метрики в формате базы данных Prometheus (по адресу http://<ваш-ip>:3001/metrics).

Как это работает на практике:

  • Вы разворачиваете контейнер с базой данных Prometheus и указываете ему забирать метрики из Uptime Kuma (добавив блок в prometheus.yml).

    Пример:

    global:
      scrape_interval: 15s
    
    scrape_configs:
      - job_name: 'node-exporter'
        static_configs:
          - targets: ['node-exporter:9100']
    
      - job_name: 'cadvisor'
        static_configs:
          - targets: ['cadvisor:8080']
    
      - job_name: 'uptime-kuma'
        basic_auth:
          username: 'Ваш логин'
          password: 'Ваш пароль'
        static_configs:
          - targets: ['uptime-kuma:3001']
  • Разворачиваете контейнер с Grafana и подключаете к ней Prometheus как источник данных (Data Source).
  • Импортируете готовый шаблон дашборда (например, введя ID 18278 или 25062 в разделе Import).

В результате вы получаете роскошную, интерактивную панель управления с детализацией каждого пинга, которую можно тонко настраивать под себя. Это идеальный вариант для главной страницы вашей внутренней панели управления инфраструктурой.

Полное руководство: Установка и настройка AdGuard Home на Raspberry Pi через Docker (с обходом конфликта портов)

20.05.26
106

Чистый интернет во всей домашней сети, блокировка мобильной рекламы, защита от трекеров и полное скрытие DNS-запросов от провайдера - всё это можно реализовать силами одной лишь Raspberry Pi или другим устройством на Linux.

Долгое время королем сетевой блокировки считался Pi-hole, но сегодня индустрия двинулась дальше. AdGuard Home - более современное решение: оно написано на Go, работает "из коробки" с шифрованием (DoH, DoT, DoQ) и поддерживает мощный Adblock-синтаксис фильтров.

В этой статье мы разберем, как правильно развернуть AdGuard Home в Docker на Raspberry Pi, как решить частую проблему занятого 53-го порта (особенно если у вас стоят другие сервисы вроде v2rayA/Xray) и как правильно настроить систему для RU-сегмента.

Подготовка: Решаем проблему 53-го порта

Главная сложность при установке любого DNS-сервера в Docker - борьба за порт 53. Этот порт необходим для работы DNS, но в современных дистрибутивах Linux (включая Raspberry Pi OS и Ubuntu) он часто уже занят системным резолвером (systemd-resolved), встроенным dnsmasq или прокси-глушилками (например, движком Xray).

Перед стартом проверим, свободен ли порт. Выполните команду в терминале малинки:

sudo ss -tulpn | grep :53

Сценарий 1: Порт занят службой systemd-resolved

Если в выводе вы увидели этот процесс, его нужно отключить, чтобы освободить порт для Docker:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
sudo rm /etc/resolv.conf
echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf

Сценарий 2: Порт частично занят другими сервисами (Xray, VPN, dnsmasq)

Если вы увидели, что на порту 53 висят другие важные службы (например, на локальных адресах 127.2.0.17 или 10.42.0.1), отключать их нельзя - это сломает ваши туннели или внутреннюю сеть.

Решение: Мы заставим AdGuard Home слушать порт 53 только на основном IP-адресе вашей Raspberry Pi, который смотрит в домашнюю сеть.

Узнайте локальный IP-адрес малинки:

hostname -I

(Допустим, ваш адрес 192.168.1.50. Запомните его, он пригодится при написании Docker Compose).

Шаг 1: Развертывание через Docker Compose (Предполагается, что у Вас уже установлен и настроен Docker)

Создадим отдельную директорию для проекта и конфигурационный файл:

mkdir -p ~/adguard && cd ~/adguard
nano docker-compose.yml

Вставьте в файл следующий конфиг. Внимание: замените 192.168.1.50 на реальный IP-адрес вашей Raspberry Pi!

services:
  adguardhome:
    image: adguard/adguardhome
    container_name: adguardhome
    restart: unless-stopped
    ports:
      # Привязываем DNS к конкретному IP малинки, чтобы избежать конфликтов
      - "192.168.1.50:53:53/tcp"
      - "192.168.1.50:53:53/udp"
      # Веб-панель управления
      - "80:80/tcp"
      # Порт для первичной инициализации      
      - "3000:3000/tcp"  
    volumes:
      - ./work:/opt/adguardhome/work
      - ./conf:/opt/adguardhome/conf

Сохраните файл (Ctrl+O, затем Enter) и закройте редактор (Ctrl+X).

Запускаем контейнер:

docker compose up -d

Шаг 2: Первичная настройка AdGuard Home

Откройте браузер и перейдите по адресу: http://<IP_ВАШЕЙ_МАЛИНКИ>:3000.

Перед вами откроется приветственный мастер установки:

  1. Веб-интерфейс: Оставляйте "Все интерфейсы" и порт 80.
  2. DNS-сервер: Оставляйте "Все интерфейсы" и порт 53.

    Примечание: Внутри контейнера AdGuard должен слушать всё, Docker сам перенаправит трафик с внешнего IP на внутренний.

  3. Нажмите Далее, придумайте логин и надежный пароль для администратора.

После завершения панель управления станет доступна по обычному адресу: http://<IP_ВАШЕЙ_МАЛИНКИ>.

Шаг 3: Настройка шифрования (DNS-over-HTTPS / QUIC)

По умолчанию AdGuard отправляет запросы в сеть в открытом виде. Провайдер может их перехватывать, анализировать и подменять (так работают базовые блокировки сайтов). Защитим наш трафик.

  • В панели управления перейдите в Настройки -> Настройки DNS.
  • В поле Апстрим DNS-серверы удалите всё и вставьте этот список быстрых и зашифрованных серверов:

    https://dns.cloudflare.com/dns-query
    quic://dns.adguard-dns.com
    tls://dns.quad9.net
    https://dns.google/dns-query
  • Ниже в режиме маршрутизации выберите "Параллельные запросы" - AdGuard будет опрашивать все серверы одновременно и выбирать самый быстрый ответ. Это ускорит загрузку сайтов.
  • В поле Серверы начальной загрузки (Bootstrap DNS) вставьте обычные IP-адреса. Они нужны системе только для того, чтобы в первый раз узнать координаты зашифрованных серверов:

    9.9.9.10
    149.112.112.10
    2620:fe::10
    2620:fe::fe:10
    1.1.1.1
    1.0.0.1
    8.8.8.8
    9.9.9.9
  • Нажмите Проверить апстримы и, если всё ок, нажмите Применить.

Шаг 4: Подключаем лучшие фильтры для рунета (и где искать пропавшие списки)

Чтобы не перегружать оперативную память Raspberry Pi и не вызывать "поломку" нормальных сайтов, списки блокировок нужно подбирать аккуратно. В последних версиях AdGuard Home разработчики сильно почистили встроенные каталоги.

Перейдите в Фильтры -> Черные списки DNS -> Добавить черный список

Рекомендуемый сбалансированный набор:

  • Общие: AdGuard DNS filter (включен по умолчанию, отлично режет базовую рекламу и трекеры) и OISD Blocklist Full (идеальный агрегатор без ложных срабатываний)..
  • Региональные: AdGuard Russian filter и RU AdList (без них реклама Яндекса, Mail.ru и локальных сетей будет пролетать).
  • Безопасность: Phishing URL Blocklist (PhishTank and OpenPhish), Malicious URL Blocklist (URLhaus) (Они надежно защитят домашнюю сеть от фишинга и вирусов.), WindowsSpyBlocker (глушит телеметрию Windows, не ломая обновления системы).

Куда пропал список для России и защита от трекеров?

Если вы не нашли в меню "Региональные" привычный российский фильтр - не пугайтесь. Дело в том, что разработчики AdGuard перенесли все актуальные DNS-блокировки для России (и правила против трекеров) прямо в базовый AdGuard DNS filter. Технически, вы уже защищены от отечественной рекламы "из коробки".

Как добавить кастомные списки вручную (Для продвинутых):

Для максимальной, бескомпромиссной фильтрации специфического мусора в рунете и телеметрии, добавьте пару легендарных списков вручную.
Нажмите "Добавить свой список" и введите:

Нажмите "Сохранить", и AdGuard сам скачает актуальные правила.

Заключение: Направляем трафик

Теперь, когда ваш персональный DNS-сервер готов, нужно направить на него трафик.

У вас есть два пути:

  1. Для всего дома: Зайдите в настройки вашего домашнего роутера, найдите параметры DHCP и в поле Primary DNS (Основной DNS) введите IP-адрес вашей Raspberry Pi. Перезагрузите роутер. Теперь все устройства (телефоны, ТВ, ноутбуки) защищены автоматически.
  2. Для одного устройства: Если не хотите трогать роутер, зайдите в сетевые настройки конкретного ПК или смартфона и укажите IP малинки в качестве DNS вручную.

Что в итоге?

Вы получили полный контроль над своим сетевым трафиком. Вкладка "Журнал запросов" в AdGuard Home наглядно покажет, какие устройства и куда пытаются "стучаться" в фоновом режиме. Если какой-то нужный вам сайт или банк случайно заблокируется - вы сможете внести его в белый список прямо из лога в один клик.

Часто задаваемые вопросы (FAQ)

Почему AdGuard Home не блокирует рекламу внутри видео на YouTube, VK или Rutube?

Потому что эти платформы используют технологию серверной вклейки рекламы (SSAI - Server-Side Ad Insertion). Рекламные ролики и основное видео склеиваются на серверах корпораций и отдаются на ваше устройство с одного и того же домена единым зашифрованным потоком. DNS-фильтр работает на уровне доменов: он либо заблокирует весь видеопоток целиком, либо пропустит его вместе с рекламой. Для блокировки in-stream рекламы вам всё еще понадобятся браузерные расширения (например, uBlock Origin) или модифицированные клиенты (ReVanced).

У меня перестал открываться нужный сайт (Сбербанк, Госуслуги, Кинопоиск). Как починить?

Такое иногда случается - это типичное "ложное срабатывание" одного из черных списков. Не паникуйте! Откройте веб-панель AdGuard Home, перейдите в раздел "Журнал запросов". Найдите там свежую красную строчку с заблокированным доменом вашего сервиса и просто нажмите кнопку "Разблокировать". Сайт моментально заработает.

Что произойдет, если Raspberry Pi зависнет или я выдерну ее из розетки?

Это важный нюанс, о котором нужно помнить. Если вы указали малинку в настройках роутера как единственный DNS-сервер для всего дома, то при её отключении у всех устройств в квартире "пропадет" интернет. Сайты просто перестанут открываться (хотя мессенджеры по прямым IP могут работать). Если вы планируете выключить сервер надолго, не забудьте вернуть в настройках роутера автоматическое получение DNS от провайдера.

Что будет, если дома отключится электричество? Придется ли запускать всё заново?

Нет. В конфигурации нашего Docker-файла прописано правило restart: unless-stopped. Это значит, что как только Raspberry Pi получит питание и загрузится, AdGuard Home запустится автоматически, и интернет у всех устройств в доме восстановится.

Можно ли использовать AdGuard Home одновременно с VPN или обходом DPI (например, v2rayA / Xray)?

Да, они прекрасно работают на одном сервере. Более того, это классическая связка для современного домашнего сервера. Главное правило - грамотно настроить порты (как описано в нашей инструкции), чтобы движок VPN и Docker-контейнер с AdGuard не пытались одновременно занять 53-й порт на всех сетевых интерфейсах. Привязка AdGuard к локальному IP-адресу полностью решает эту проблему.

Глоссарий терминов

  • DNS (Domain Name System) - "телефонная книга" интернета. Переводит понятные человеку адреса (например, riopass.ru) в числовые IP-адреса серверов (например, 192.168.1.1), которые понимают компьютеры.
  • Апстрим DNS (Upstream DNS) - вышестоящий сервер в интернете. Когда вы вводите адрес сайта, а ваш домашний AdGuard Home не знает его IP-адреса, он обращается именно к апстрим-серверам (например, к серверам Cloudflare или Google) за ответом.
  • Серверы начальной загрузки (Bootstrap DNS) - обычные, нешифрованные серверы (например, 1.1.1.1). Они нужны вашему AdGuard только в самую первую секунду работы: чтобы перевести буквенный адрес шифрованного апстрим-сервера (типа dns.cloudflare.com) в цифры и установить с ним защищенное соединение.
  • DNS-over-HTTPS (DoH) / DNS-over-QUIC (DoQ) - современные протоколы шифрования. Заворачивают ваши DNS-запросы в непроницаемый криптографический туннель. Благодаря им ваш интернет-провайдер не видит, на какие сайты вы заходите, и не может подменить ответ (например, выдать страницу-заглушку о блокировке).
  • Порт 53 - стандартная "дверь" в сетевом оборудовании, через которую проходит весь нешифрованный DNS-трафик.
  • DHCP (Dynamic Host Configuration Protocol) - служба на вашем домашнем роутере, которая автоматически раздает IP-адреса и настройки сети (включая адрес нашего нового DNS-сервера) всем подключающимся телефонам, телевизорам и компьютерам.
  • Docker / Docker Compose - система контейнеризации. Позволяет запускать программы (например, AdGuard Home) в изолированной среде со всеми необходимыми зависимостями, чтобы они не конфликтовали с основной операционной системой (Raspberry Pi OS).
  • systemd-resolved - встроенная в Linux системная служба для управления сетевыми именами. Часто является главной головной болью при настройке собственных DNS-серверов, так как намертво занимает порт 53.
  • v2rayA / Xray - мощные современные инструменты для маршрутизации трафика и обхода систем глубокого анализа пакетов (DPI). Часто устанавливаются на тот же сервер, что и AdGuard Home, для создания комплексного домашнего шлюза.
  • SSAI (Server-Side Ad Insertion) - серверная вклейка рекламы. Технология, из-за которой AdGuard Home и другие сетевые блокировщики не могут вырезать рекламу внутри видеороликов на YouTube или VK Video. Видео и реклама отдаются с одного домена единым зашифрованным потоком.
  • Ложные срабатывания (False Positives) - ситуация, когда из-за слишком агрессивных списков фильтрации под блокировку попадает полезный домен. Из-за этого может сломаться верстка сайта или перестать работать авторизация в приложении банка.
  • Локальный IP-адрес - внутренний адрес устройства в вашей домашней сети (обычно начинается на 192.168.x.x или 10.x.x.x). Доступ к нему есть только у устройств, подключенных к вашему домашнему Wi-Fi, из интернета напрямую до него не добраться.

Свой VPN в 2026 году: настройка VPS и Outline VPN за 15 минут

04.05.26
405

Сегодня мы разберем одно из самых удобных решений для селф-хостинга - установку Outline VPN. Он работает на базе зашифрованного протокола Shadowsocks, который изначально создавался для обхода Великого китайского файрвола. Главный плюс Outline - невероятно простое управление доступом для всех ваших устройств, семьи и друзей через удобный графический интерфейс.

Что такое Outline, кому он принадлежит и почему это надежно?

Outline - это не просто очередное VPN-приложение, а проект с открытым исходным кодом, который разрабатывается Jigsaw - технологическим инкубатором внутри корпорации Google (Alphabet). Изначально Outline создавался специально для журналистов, правозащитников и новостных организаций, чтобы обеспечить им безопасный доступ к информации в странах с жесткой интернет-цензурой.

Почему Outline считается надежным и безопасным:

  •  Протокол маскировки: В основе Outline лежит протокол Shadowsocks. Он не просто шифрует данные, но и маскирует их. Для систем блокировок (DPI) ваш трафик выглядит не как VPN-соединение, а как обычный, нечитаемый "белый шум". Это позволяет успешно обходить даже "Великий китайский файрвол".
  • Независимый аудит: Поскольку код проекта полностью открыт (Open Source), его регулярно проверяют независимые компании в сфере кибербезопасности (например, Radically Open Security и Cure53). В нем нет скрытых "бэкдоров".
  • Отсутствие логов (No-logs policy): Outline Manager и серверная часть технически не собирают и не хранят историю ваших веб-запросов. Вы контролируете свой сервер, и никто (даже Google) не имеет доступа к вашему трафику. Менеджер собирает лишь статистику объема переданных мегабайт, чтобы вы могли контролировать лимиты.

Скриншот приложения клиента:

Задача 1: Аренда сервера (VPS)

Для начала нам нужен виртуальный сервер за пределами РФ (не у хостера, который аффилирован с российскими компаниями или имеет российские стыки. Это не паранойя - это реальная техническая проблема, и она влияет и на приватность, и на обход блокировок, и на SEO‑репутацию IP).

  • Локация: Для пользователей из РФ идеальный баланс между пингом и стабильностью дают Германия, Нидерланды или Швеция. Выберите любого удобного зарубежного хостинг-провайдера (Hetzner, DigitalOcean, Vultr, Linode, OVHcloud или проверенных посредников).

    Можем посоветовать реселлера koara.io :

    Можете использовать нашу реферальную ссылку: https://koara.cloud/?from=1893 

    Промокод: sale_1893

  •    Тариф: Арендуйте самый дешевый тариф (обычно хватает 1 vCPU и 1-2 GB RAM).
  •    Операционная система: Строго чистая Ubuntu 22.04 (и выше) или Debian 12 (и выше).
  •    Виртуализация: Строго KVM.

После оплаты хостер выдаст вам IP-адрес сервера и пароль пользователя root.

Задача 2: Базовая безопасность сервера (Отказ от паролей)

Оставлять сервер с доступом по паролю в интернете - плохая идея. Его начнут атаковать боты-брутфорсеры в первые же минуты. Мы настроим доступ по криптографическому SSH-ключу.

Откройте PowerShell (если у вас Windows) или терминал (Linux/macOS) и выполните следующие шаги:

0. Первая кровь - смена пароля root

Подключитесь к серверу через терминал:
ssh root@ВАШ_IP

Введите команду passwd для смены пароля.

Важно: Не используйте простые слова. Мы рекомендуем генерировать пароль длиной не менее 13 символов. Для создания надежного пароля воспользуйтесь генератором на нашем сайте https://riopass.ru/. Такой пароль методом брутфорса будут взламывать десятилетиями.

На домашнем ПК:

  1. Генерация ключа:

    Введите команду:

    ssh-keygen -t ed25519 -f "$HOME\.ssh\vpn_key" -C "outline-server"

    Нажмите дважды Enter, когда система попросит ввести пароль (passphrase). В вашей папке .ssh появятся два файла: vpn_key (ваш секретный ключ) и vpn_key.pub (публичный ключ для сервера).

  2. Копирование публичного ключа на сервер:

    Выведите содержимое публичного ключа на экран и скопируйте его:

    cat "$HOME\.ssh\vpn_key.pub"
    Теперь подключитесь к вашему новому серверу по паролю, который дал хостер:
    ssh root@ВАШ_IP_АДРЕС

    Cоздайте папку для ключей и запишите туда скопированный ключ:

    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    nano ~/.ssh/authorized_keys

    Вставьте ваш ключ (ssh-ed25519...) в редактор, сохраните файл (Ctrl+O, Enter, Ctrl+X) и выдайте права:
    chmod 600 ~/.ssh/authorized_keys

  3. Отключение входа по паролю:

    Теперь скажем серверу пускать только владельца ключа. Откройте конфигурацию SSH:

    nano /etc/ssh/sshd_config

    Найдите и измените следующие строки:

    PasswordAuthentication no
    PermitRootLogin prohibit-password
    KbdInteractiveAuthentication no

    Перезапустите службу SSH, чтобы применить настройки:

    systemctl restart ssh

    Готово! Ваш сервер теперь защищен.

Задача 3: Установка Outline VPN

Архитектура Outline состоит из двух программ: Manager (для управления сервером на вашем ПК) и Client (для подключения к VPN на телефоне или ПК).

  1. Подготовка Outline Manager:
    1. Скачайте Outline Manager с официального сайта (getoutline.org) и установите на свой компьютер. Если сайт блокируется, то перейдите в официальный репозиторий на GitHub

      Прямо на главной странице в описании (файл README.md) собраны прямые ссылки на загрузку Outline Manager (для Windows, macOS, Linux) и Outline Client для всех платформ.

    2. Откройте программу и выберите плитку "Настроить Outline где угодно" (Set up Outline anywhere).
    3. Программа выдаст вам длинную команду, которая начинается с sudo bash -c .... Скопируйте её
  2. Установка на сервер:
    1. Вернитесь в терминал (PowerShell), где вы подключены к вашему серверу.
    2. Вставьте скопированную команду и нажмите Enter.

      Примечание: Если скрипт спросит, установить ли Docker, соглашайтесь (нажмите Y и Enter).

    3. Установка займет пару минут. В конце терминал выдаст зеленый текст — это ваши конфигурационные данные (API URL и сертификат), которые выглядят примерно так: {"apiUrl":"https://...","certSha256":"..."}. Скопируйте весь этот блок.
  3. Привязка сервера к Менеджеру:

    1. Вернитесь в Outline Manager.
    2. Вставьте скопированный из терминала зеленый блок во второе поле ввода и нажмите "Готово".

    Сервер настроен! Теперь перед вами панель управления вашим VPN.

Этап 4: Подключение устройств и раздельное туннелирование

Создание ключей и подключение:

  1. В Outline Manager нажмите "Добавить новый ключ". Вы можете переименовать его (например, "Мой iPhone" или "Ноутбук жены").

  2. Нажмите кнопку "Поделиться" рядом с ключом. Скопируйте полученный код доступа (начинается на ss://...). Но не забудьте про ПРЕФИКСЫ - https://riopass.ru/tips/117/ без них могут блокировать соединение.
  3. Скачайте приложение Outline Client на ваш телефон (из Google Play / App Store) или компьютер.

Чтобы безопасно подключиться к интернету, используйте этот сервер.

1. Скачайте и установите на устройство приложение Outline:

iOS: https://itunes.apple.com/app/outline-app/id1356177741
macOS: https://itunes.apple.com/app/outline-app/id1356178125
Windows: https://s3.amazonaws.com/outline-releases/client/windows/stable/Outline-Client.exe
Linux: https://support.getoutline.org/client/getting-started/install-linux/
Android: https://play.google.com/store/apps/details?id=org.outline.android.client
Дополнительная ссылка для Android: https://s3.amazonaws.com/outline-releases/client/android/stable/Outline-Client.apk

2. Получите ключ доступа, который начинается с ss://, а затем скопируйте его.

3. Откройте клиент Outline. Если ваш ключ доступа определился автоматически, нажмите "Подключиться". Если этого не произошло, вставьте ключ в поле и нажмите "Подключиться".

Теперь у вас есть доступ к свободному интернету. Чтобы убедиться, что вы подключились к серверу, введите в Google Поиске фразу "Какой у меня IP-адрес". IP-адрес, указанный в Google, должен совпадать с IP-адресом в клиенте Outline.

Дополнительные сведения можно найти на странице https://getoutline.org/.

Откройте Client. Он автоматически распознает скопированный ключ из буфера обмена. Нажмите "Добавить сервер" и затем "Подключить". И не забудьте про ПРЕФИКСЫ - https://riopass.ru/tips/117/ 

Раздельное туннелирование (Split Tunneling):

В отличие от Amnezia, десктопный клиент Outline пропускает через VPN весь трафик устройства по умолчанию.

 

Поздравляем! Теперь у вас есть собственный, надежный VPN. Остались вопросы? Пишите на почту техподдержки riopass.ru, разберем любые ошибки!

FAQ: Частые вопросы и решение проблем

В: Провайдер всё-таки заблокировал мой Outline. Подключение идет, но интернета нет. Что делать?
О: Протокол Shadowsocks, на котором базируется Outline, иногда подвергается ковровым блокировкам со стороны ТСПУ (особенно во время массовых ограничений). Роскомнадзор может блокировать конкретный порт на вашем сервере.

  • Решение: Зайдите в Outline Manager, нажмите на настройки сервера и измените "Порт для новых ключей доступа" на случайный (например, 8443, 443 или любой от 1024 до 65535). После этого создайте новый ключ доступа для своего устройства — часто это полностью решает проблему.

В: Можно ли поделиться своим VPN с семьей или друзьями?
О: Да, и Outline создан именно для этого! Вы можете создать десятки независимых ключей в Outline Manager. Вы будете видеть, сколько гигабайт трафика потратил каждый пользователь, и сможете удалить ключ в один клик.
Но помните: Чем больше людей одновременно качают тяжелые файлы через ваш единственный IP-адрес, тем выше риск привлечь внимание систем блокировки. Делитесь доступом с умом.

В: Скорость через VPN сильно упала. Как исправить?
О: Ваш магистральный провайдер пытается "зашейпить" (искусственно ограничить) трафик. Попробуйте сменить порт в настройках сервера (как описано выше) или перевыпустить ключи. Если это не помогает регулярно, возможно, вам стоит рассмотреть установку протокола Xray/Reality (см. нашу инструкцию по Amnezia VPN).

В: Почему периодически обрывается прямое подключение к серверу по SSH?
О: Чаще всего это банальный таймаут - сервер сам разрывает соединение из-за долгого бездействия (если вы ничего не вводите в консоль). Если падает активное подключение, это может означать, что провайдер видит факт SSH-соединения с зарубежным IP и обрывает его. В тяжелых случаях поможет смена хостинг-провайдера на менее "засвеченного" у систем фильтрации.

В: Мой российский провайдер увидит, какие сайты я посещаю через Outline?
О: Нет. Провайдер будет видеть только то, что вы передаете нечитаемый зашифрованный поток данных на неизвестный зарубежный IP-адрес. Ваши DNS-запросы, история посещений и скачанные файлы надежно спрятаны.

Глоссарий

  • VPS (Virtual Private Server): Виртуальный выделенный сервер. Грубо говоря, это изолированная часть мощного компьютера (сервера) в дата-центре, которую вы арендуете и полностью контролируете.
  • SSH (Secure Shell): Сетевой протокол, позволяющий безопасно подключаться к удаленному серверу и управлять им с помощью текстовых команд в терминале.
  • Shadowsocks: Открытый протокол шифрования данных, изначально разработанный в Китае для обхода государственной цензуры. В отличие от классических VPN, он маскирует трафик под обычное HTTPS-соединение.
  • DPI (Deep Packet Inspection): Технология глубокого анализа сетевых пакетов. Провайдеры используют её для проверки того, какие именно данные вы передаете, чтобы блокировать неугодные протоколы и сайты.
  • ТСПУ (Технические средства противодействия угрозам): Оборудование, которое Роскомнадзор обязывает устанавливать всех российских провайдеров. Именно эта "черная коробка" занимается фильтрацией (DPI) и блокировкой сайтов.
  • Раздельное туннелирование (Split Tunneling): Настройка, позволяющая пустить часть интернет-трафика (например, заблокированные сайты) через VPN, а другую часть (например, банковские приложения) - напрямую через вашего провайдера.
  • Брутфорс (Brute-force): Хакерский метод угадывания паролей путем их сплошного автоматического перебора. Именно поэтому мы отключили вход по паролю в Задаче 2.
  • Docker: Программная платформа, которая упаковывает приложения (в нашем случае серверную часть Outline) и все их зависимости в изолированные контейнеры. Это позволяет легко развернуть VPN на сервере одной командой, не засоряя саму операционную систему.
  • KVM (Kernel-based Virtual Machine): Технология аппаратной виртуализации, позволяющая создать на сервере полностью изолированную виртуальную машину со своим ядром ОС. В отличие от более дешевой технологии контейнеризации (например, OpenVZ), KVM гарантирует, что Docker и Outline будут работать без сбоев.
  • Open Source (Открытый исходный код): Модель разработки программного обеспечения, при которой любой желающий (в том числе независимые аудиторы безопасности) может посмотреть, как написан код программы. Это гарантия того, что в приложении нет скрытых шпионских модулей.
  • Ping (Пинг): Время в миллисекундах, за которое пакет данных доходит от вашего компьютера до сервера и возвращается обратно. Чем он ниже, тем отзывчивее будет интернет через VPN.
  • Root: Главный администратор (суперпользователь) в системах на базе Linux, имеющий абсолютные, неограниченные права на изменение любых настроек сервера.
  • SSH-ключ (Криптографический ключ): Альтернатива обычному паролю. Это связка из двух файлов (приватного и публичного). Приватный ключ надежно хранится только на вашем устройстве, а публичный - на сервере. Войти на сервер может только обладатель приватного ключа.
  • Бэкдор (Backdoor): Буквально "черный ход" или программная "закладка". Это преднамеренно скрытая уязвимость или специальный алгоритм в коде программы, который позволяет разработчикам, хакерам или спецслужбам получить несанкционированный доступ к устройству, обойти шифрование и незаметно перехватывать трафик в обход стандартных систем защиты. Благодаря тому, что код Outline полностью открыт (Open Source), независимые аудиторы могут проверить его и гарантировать, что в нем нет подобных скрытых угроз.

Почему Яндекс Алиса не видит Wi-Fi? Коварство режима WPA2/WPA3 или "Отсутствует подключение к интернету".

27.04.26
158

Купили новую Яндекс Станцию, крутую умную лампочку или датчик, а они в упор не видят вашу домашнюю сеть, хотя смартфон рядом работает идеально? Скорее всего, вы стали жертвой "прогресса" в настройках безопасности вашего роутера.

Сегодня разберем, почему современный стандарт WPA3 (и даже его "переходный" режим) - это главный враг дешевых Wi-Fi модулей, и почему для стабильной работы IoT-устройств нужно принудительно откатываться на WPA2-PSK.

Суть проблемы: Смешанный режим (Transition Mode)

В настройках современных роутеров часто красуется вариант WPA2-PSK/WPA3-SAE. На бумаге это выглядит идеально: новые устройства (iPhone, современные ноутбуки) используют защищенный WPA3, а старые - привычный WPA2.

Но на практике этот "микс" превращается в невидимую стену для умных устройств и старых говно-принтеров. И вот три технические причины, почему это происходит.

1. Конфликт защищенных кадров управления (PMF)

Для стандарта WPA3 обязательна технология PMF (Protected Management Frames, стандарт 802.11w). Она защищает служебный трафик между роутером и клиентом от перехвата.

В смешанном режиме роутер выставляет флаг PMF в состояние Optional (необязательно). Но микропрограммы (прошивки) многих бюджетных Wi-Fi модулей (например, на чипах ESP8266 или старых Realtek) написаны крайне негибко. Видя в эфире этот флаг, устройство часто просто не понимает, как начать «рукопожатие» (handshake), и впадает в ступор. Оно видит сеть, но не может к ней подключиться или вовсе считает её "битой".

2. Непонятные "теги" в эфире

Роутер постоянно рассылает служебные пакеты - Beacon frames (маяки), в которых сообщает: "Я такой-то роутер, умею вот такие шифрования". В смешанном режиме в эти пакеты добавляются новые информационные элементы (IE) для поддержки SAE (протокол аутентификации WPA3).

Старые сетевые стеки IoT-устройств, встречая в заголовке пакета неизвестный им тип авторизации, часто ведут себя неадекватно. Вместо того чтобы проигнорировать непонятный кусок кода и работать по старинке, они просто отбрасывают весь SSID. В итоге в приложении для настройки вы видите пустой список сетей.

3. Экономия на "железе"

Производители умных девайсов стремятся к максимальному удешевлению. В них стоят чипы, софт для которых писался 5–7 лет назад. Обновлять их под поддержку WPA3 дорого и технически сложно из-за малого объема памяти. В итоге мы имеем современный роутер за 900 рублей, вещающий на "языке будущего", и колонку Яндекс за ~3000-5000 рублей, которая понимает только "язык прошлого".

Как починить?

  1. Если ваш умный дом капризничает, алгоритм действий простой:
  2. Зайдите в админку роутера.
  3. Найдите настройки беспроводного режима для частоты 2.4 ГГц (именно на ней работает 99% умных устройств).
  4. В поле "Шифрование" или "Режим безопасности" выберите чистый WPA2-PSK.
  5. Тип шифрования - строго AES (забудьте про TKIP, это уже история).
  6. Сохраните настройки и перезагрузите роутер.

А как же безопасность?

Многих пугает отказ от WPA3. Но давайте будем реалистами:

  • WPA2-PSK (AES) с длинным и сложным паролем по-прежнему остается крайне надежным стандартом. Взлом такой сети методом перебора в домашних условиях практически нецелесообразен.
  • Большинство атак на домашние сети происходят через уязвимости в WPS (который лучше вообще выключить) или через фишинг, а не путем прямого взлома шифрования WPA2.

Если вы строите умный дом, стабильность важнее модных протоколов. Пока индустрия IoT не перейдет на новые чипы, WPA2-PSK остается "золотым стандартом", обеспечивающим коннект всего - от китайской розетки за 300 рублей до топовой Яндекс Станции.

Часто задаваемые вопросы (FAQ)

1. Пострадает ли скорость интернета на телефоне или ноутбуке, если я переключу роутер на WPA2-PSK?

Нет. Тип шифрования (WPA2 или WPA3) не влияет на пропускную способность. Ваш iPhone, современный Android или ноутбук будут скачивать файлы и грузить видео точно так же быстро. Разница заключается исключительно во внутренних протоколах безопасности, а не в скорости передачи данных.

2. У меня современный двухдиапазонный роутер. Обязательно ли переводить сеть 5 ГГц тоже на старый WPA2?

Абсолютно не обязательно! Умный дом почти всегда работает только на частоте 2.4 ГГц. Идеальный и самый безопасный сценарий настройки выглядит так:

  • Сеть 5 ГГц оставьте на WPA3 (или в смешанном режиме) для современных смартфонов, планшетов и ПК.
  • Сеть 2.4 ГГц жестко переведите в классический WPA2-PSK(AES) специально для колонок, лампочек и датчиков.
  • Важно: при этом обязательно дайте сетям разные имена (SSID), отключив функцию Smart Connect (Band Steering), чтобы устройства не путались.

3. Я переключил роутер на WPA2, но Яндекс Станция (или пылесос) всё равно не видит сеть. Что еще проверить?

Если смена шифрования не помогла, проблема кроется в других настройках 2.4 ГГц:

  • Канал Wi-Fi: Убедитесь, что роутер не перескочил на 12 или 13 канал. Многие китайские устройства аппаратно их не видят из-за региональных ограничений. Жестко зафиксируйте в настройках канал от 1 до 11.
  • Ширина канала: Поменяйте ширину канала с 40 МГц на 20 МГц - это сделает сигнал более дальнобойным и стабильным для слабых антенн умного дома.
  • Изоляция AP: Проверьте, что выключена изоляция клиентов (AP Isolation), иначе ваш смартфон просто не сможет "достучаться" до колонки в локальной сети, чтобы передать ей пароль.

4. Насколько вообще безопасно использовать WPA2 сегодня? Меня не взломают?

Вполне безопасно. Стандарт WPA2 с алгоритмом AES и надежным длинным паролем (от 12 символов, включающим буквы разного регистра и цифры) взломать "в лоб" прямым перебором практически нереально. Для домашней сети этого уровня защиты более чем достаточно. Гораздо важнее зайти в настройки роутера и навсегда отключить функцию WPS - именно через её уязвимости чаще всего и ломают домашние сети, независимо от того, WPA2 у вас или WPA3.

5. Можно ли подключить умный дом через гостевую Wi-Fi сеть?

Можно, и с точки зрения безопасности это отличная практика (вы изолируете китайские датчики и камеры от ваших личных компьютеров и NAS-хранилищ). Но есть нюанс: в гостевых сетях по умолчанию часто включена та самая "Изоляция клиентов". На время первичного подключения устройства через приложение на телефоне эту изоляцию придется временно отключить, а когда колонка появится в сети - можно включать обратно.
P.S: Но лучше создать отдельную VLAN-сеть для IoT с гибкими правилами межсетевого экрана, если ваш роутер поддерживает продвинутые функции.

Глоссарий

  • AES (Advanced Encryption Standard): Современный, быстрый и криптографически стойкий алгоритм симметричного шифрования. Является стандартом по умолчанию для сетей WPA2. Обеспечивает высокую безопасность без потери скорости передачи данных.
  • Beacon frame (Фрейм-маяк / Маячок): Регулярный служебный широковещательный пакет, который роутер постоянно отправляет в радиоэфир. Он сообщает устройствам вокруг: "Я здесь, моя сеть называется так-то, я поддерживаю такие-то типы шифрования и скорости".
  • ESP8266 / ESP32: Крайне популярные, дешевые микроконтроллеры с поддержкой Wi-Fi. На их базе собирается подавляющее большинство бюджетных устройств умного дома (реле Sonoff, китайские смарт-розетки, датчики и лампочки).
  • Handshake (Рукопожатие): Процесс первоначального обмена данными между клиентским устройством (например, колонкой) и роутером. Во время "рукопожатия" устройства подтверждают знание пароля и генерируют уникальные ключи для шифрования текущего сеанса связи. В WPA2 это называется 4-way handshake (четырехэтапное рукопожатие).
  • IE (Information Elements / Информационные элементы): Специальные блоки данных внутри пакета Beacon frame. В них закодированы технические возможности роутера, которые он транслирует в эфир (например, поддержка протокола SAE).
  • IoT (Internet of Things / Интернет вещей): Концепция вычислительной сети физических предметов, оснащенных технологиями для взаимодействия друг с другом. В бытовом понимании - это элементы умного дома (колонки, пылесосы, климат-контроль, датчики).
  • PMF (Protected Management Frames / 802.11w): Стандарт защиты служебных кадров управления Wi-Fi (например, команд на подключение или отключение от сети). Исключает атаки типа деаутентификации. В WPA2 эта защита опциональна, а в WPA3 - обязательна.
  • SAE (Simultaneous Authentication of Equals): Протокол аутентификации, используемый в стандарте WPA3 вместо устаревшего механизма PSK. Надежно защищает сеть от атак по словарю (брутфорса) и перехвата ключей, даже если пароль от Wi-Fi короткий или словарный.
  • SSID (Service Set Identifier): Имя вашей Wi-Fi сети, которое отображается в списке доступных подключений на телефоне или компьютере.
  • TKIP (Temporal Key Integrity Protocol): Устаревший и уязвимый протокол шифрования, использовавшийся в старом стандарте WPA. Сегодня использовать его категорически не рекомендуется из-за дыр в безопасности и ограничения скорости (режет скорость до 54 Мбит/с).
  • Transition Mode (Смешанный режим / Переходный режим): Режим работы роутера (обычно обозначается как WPA2-PSK/WPA3-SAE), при котором он одновременно обслуживает старые устройства по стандарту WPA2 и новые по WPA3. Является главной причиной сбоев при подключении дешевых IoT-устройств и старых принтеров.
  • WPA2-PSK (Wi-Fi Protected Access II - Pre-Shared Key): Классический стандарт защиты домашних беспроводных сетей, использующий предварительно согласованный ключ (пароль). Самый совместимый и стабильный стандарт на сегодняшний день для устройств умного дома.
  • WPA3 (Wi-Fi Protected Access 3): Актуальный и самый современный стандарт безопасности Wi-Fi, пришедший на смену WPA2 в 2018 году. Обеспечивает максимальную защиту криптографии, но имеет плохую обратную совместимость со старым или дешевым оборудованием.
  • WPS (Wi-Fi Protected Setup): Функция, позволяющая подключиться к Wi-Fi нажатием кнопки на роутере без ввода пароля. Известна своими критическими уязвимостями (взлом PIN-кода). Для безопасности домашней сети эту функцию рекомендуется полностью отключать в настройках роутера.
  • Сетевой стек (Стек протоколов): Программный компонент внутри операционной системы или прошивки устройства, который отвечает за обработку сетевых данных и реализацию логики стандартов связи (например, Wi-Fi и TCP/IP). В бюджетных устройствах умного дома сетевой стек часто урезан для экономии памяти.
  • AP Isolation (Изоляция клиентов / Изоляция точки доступа): Настройка безопасности роутера, которая запрещает устройствам, подключенным к одной Wi-Fi сети, обмениваться данными друг с другом. Каждое устройство может выходить только в интернет. Часто используется в публичных и гостевых сетях.
  • Band Steering / Smart Connect (Интеллектуальное подключение): Функция современных роутеров, которая объединяет сети 2.4 ГГц и 5 ГГц под одним общим именем (SSID). Роутер сам решает, на какую частоту переключить устройство в зависимости от уровня сигнала и поддержки стандартов. Часто является причиной сбоев при подключении старых или дешевых IoT-устройств.
  • NAS (Network Attached Storage / Сетевое хранилище): Домашний или офисный сервер для хранения файлов, резервных копий и медиа. Обычно находится в основной локальной сети и требует защиты от потенциально уязвимых устройств умного дома.
  • Каналы Wi-Fi (1-11 vs 12-13): Диапазон частот 2.4 ГГц разделен на каналы. В США разрешены каналы с 1 по 11, а в Европе и России - с 1 по 13. Многие IoT-устройства, произведенные для глобального рынка или "серого" импорта, аппаратно не видят 12 и 13 каналы. Если роутер автоматически выберет один из них, устройство потеряет сеть.
  • Ширина канала (20 МГц / 40 МГц): Параметр Wi-Fi сети, определяющий её пропускную способность. 40 МГц дает более высокую скорость, но сильнее подвержен помехам от соседских роутеров. 20 МГц обеспечивает меньшую скорость (которой с запасом хватает умному дому), но сигнал становится более плотным, дальнобойным и стабильным, что критически важно для слабых антенн в датчиках и розетках.

Источник: Авторский материал riopass.ru на основе практического опыта настройки сетей умного дома.
При подготовке технического обоснования использовались открытые спецификации Wi-Fi Alliance.

Подписывайтесь на наш Telegram https://t.me/riopass_ru, чтобы первыми узнавать о выходе новых полезных статей на riopass.ru.

 

Как навсегда исправить "Troubleshooting keychain issues" в VS Code на Raspberry Pi и Linux

21.04.26
193

Если вы работаете с Visual Studio Code на Raspberry Pi (или любом другом Linux-дистрибутиве с нестандартной графической оболочкой, например на Wayland), то рано или поздно при попытке авторизоваться в GitHub или синхронизировать настройки вы увидите назойливое окно:

"An OS keyring couldn't be identified for storing the encryption related data in your current desktop environment."

Редактор предложит перейти по ссылке или выбрать Use weaker encryption. В этой статье мы разберем, почему нельзя нажимать кнопку слабого шифрования, и как настроить всё правильно с точки зрения безопасности.

Почему это происходит?

VS Code (построенный на базе Chromium) пытается найти системное защищенное хранилище (keyring), чтобы безопасно спрятать туда ваш токен авторизации (OAuth). Однако в легковесных средах на Raspberry Pi демон ключей часто либо не установлен, либо запускается не так, как ожидает редактор. В итоге VS Code "слепнет" и выдает ошибку.

Быстрое, но опасное решение (Не рекомендую)

Самый частый совет в интернете - прописать в настройках запуска VS Code параметр "password-store": "basic". Да, окно ошибки пропадет. Но ваш секретный токен от GitHub будет сохранен в обычном текстовом файле. Если кто-то получит доступ к файловой системе вашей "малинки" - он получит и полный доступ к вашим репозиториям.

Правильное решение: Настраиваем gnome-keyring

Мы пойдем по пути системного администратора и заставим VS Code работать с системным шифрованием через libsecret.

1. Установка необходимых библиотек

Открываем терминал и ставим сам менеджер ключей и графическую утилиту для управления им:

sudo apt update
sudo apt install gnome-keyring libpam-gnome-keyring seahorse libsecret-1-0 libsecret-tools

2. Создание системной связки ключей

Чтобы система могла хранить пароли, нам нужно физически создать "сейф".

  1. Запускаем установленную утилиту (в терминале вводим seahorse & или ищем "Пароли и ключи" в меню приложений).
  2. Жмем правой кнопкой мыши в левой колонке -> Создать новую связку ключей (New Keyring).
  3. Важно! Называем её строго Login (с большой буквы).
  4. Программа попросит задать пароль. Укажите точно такой же пароль, с которым вы входите в систему. Это позволит Linux автоматически открывать сейф при загрузке.
  5. Нажмите на новую связку правой кнопкой и выберите "Сделать по умолчанию".

3. Принудительное указание хранилища для VS Code

Осталось сказать редактору, чтобы он перестал гадать и использовал именно нашу новую связку.

  1. Закройте VS Code, если он открыт, и "убейте" фоновые процессы командой: killall code
  2. Откройте файл аргументов запуска:

    nano ~/.vscode/argv.json
  3. Добавьте строку "password-store": "gnome-libsecret" перед закрывающей скобкой. Должно получиться так(если в файле ещё что то было не забудьте поставить запятую, подробнее читайте в FAQ ниже):

    {
        "disable-hardware-acceleration": true,
        "password-store": "gnome-libsecret"
    }
  4. Сохраните изменения (Ctrl+O, Enter, Ctrl+X).

Ура!

Запускаем Visual Studio Code и спокойно авторизуемся в GitHub. Больше никаких ошибок! Токен надежно зашифрован алгоритмами операционной системы, а любые другие расширения (Copilot, базы данных) будут автоматически использовать это безопасное хранилище.

FAQ: Часто задаваемые вопросы и возможные ошибки

1. Почему в инструкции сказано "не забудьте поставить запятую" в файле argv.json?
Файл argv.json написан в формате JSON. Одно из главных правил этого формата - все параметры внутри фигурных скобок { } должны разделяться запятыми. Запятая ставится после каждого параметра, кроме самого последнего.

Если в вашем файле уже были какие-то настройки, и вы добавляете "password-store" в конец, обязательно поставьте запятую после предыдущей строки.
❌ Неправильно (вызовет ошибку при запуске VS Code):

{
    "disable-crash-reporter": true
    "password-store": "gnome-libsecret"
}

✅ Правильно:

{
    "disable-crash-reporter": true,
    "password-store": "gnome-libsecret"
}

2. Что делать, если файла ~/.vscode/argv.json вообще нет?

Такое бывает, если вы только что установили редактор и ни разу не меняли параметры его запуска. Просто создайте этот файл вручную и впишите туда структуру с нуля:

{
    "password-store": "gnome-libsecret"
}

(Заметьте: так как параметр здесь всего один, запятая после него не ставится).

3. Я поменял пароль от своего пользователя на Raspberry Pi, и теперь при запуске VS Code снова выскакивают окна.

Когда мы создавали связку ключей Login, мы задали ей пароль, совпадающий с паролем вашего пользователя. Это позволяет системе разблокировать сейф автоматически при входе. Если вы изменили пароль пользователя в Linux (через команду passwd), пароль от сейфа Login остался старым, и автоматическая разблокировка сломалась.
Как исправить: Откройте утилиту Seahorse ("Пароли и ключи"), нажмите правой кнопкой мыши на связку Login, выберите "Изменить пароль" и укажите ваш новый пароль от системы.

4. Подойдет ли эта инструкция для других дистрибутивов Linux (Ubuntu, Debian, Fedora)?

Да, абсолютно. Проблема с "keychain issues" в Visual Studio Code не является эксклюзивом для Raspberry Pi. Она возникает на любом Linux-дистрибутиве, где графическая оболочка (особенно на базе Wayland) или оконный менеджер (i3, sway) не инициализирует gnome-keyring должным образом по умолчанию. Описанный метод с libsecret - это универсальное и правильное решение для всего семейства Linux.

Глоссарий

  • Keyring / Keychain (Связка ключей) - системное зашифрованное хранилище в операционной системе, предназначенное для безопасного хранения паролей, ключей шифрования и сертификатов.
  • OAuth-токен - специальный цифровой ключ (строка символов), который GitHub выдает приложению (например, Visual Studio Code), чтобы оно могло выполнять действия от вашего имени без необходимости каждый раз вводить логин и пароль.
  • gnome-keyring - фоновая служба (демон) в Linux, которая отвечает за управление системной связкой ключей и обеспечивает безопасное хранение секретов.
  • libsecret - системная библиотека, которая служит стандартизированным "мостом". Через нее различные программы (включая VS Code) общаются с gnome-keyring, чтобы положить или достать пароль, не вникая в тонкости работы самого хранилища.
  • Seahorse (Пароли и ключи) - графическая программа для среды Linux, которая позволяет пользователю визуально просматривать, создавать и управлять своими связками ключей и паролями.
  • Wayland - современный протокол графического сервера в Linux (активно используется в последних версиях Raspberry Pi OS). Из-за его архитектурных отличий от старого X11 некоторые классические механизмы (например, автозапуск менеджеров паролей) могут работать нестандартно, что и вызывает подобные ошибки.
  • argv.json - скрытый конфигурационный файл Visual Studio Code, в котором задаются низкоуровневые параметры запуска редактора, применяемые еще до загрузки основного графического интерфейса.
  • Weaker encryption (Слабое шифрование) - механизм обходного хранения секретов в VS Code, при котором токены сохраняются в локальном файле настроек редактора без использования криптографической защиты операционной системы.

 

Как установить Docker на Raspberry Pi 5: Полное пошаговое руководство

19.04.26
149

Raspberry Pi 5 - это невероятно мощный мини-компьютер, который идеально подходит для создания домашнего сервера, медиацентра или системы умного дома. Но чтобы выжать из него максимум и не захламлять систему десятками зависимостей, лучше всего использовать контейнеризацию.

Специально для читателей riopass.ru мы подготовили простую и быструю инструкцию по установке Docker на Raspberry Pi 5.

Подготовка системы

Перед установкой любого серьезного программного обеспечения правило номер один - обновить систему. Это поможет избежать конфликтов версий и гарантирует, что вы используете самые свежие пакеты безопасности.

Откройте терминал на вашей Raspberry Pi (или подключитесь к ней по SSH) и введите следующую команду:

sudo apt update && sudo apt upgrade -y

Дождитесь завершения процесса. Если обновлений было много, не лишним будет перезагрузить устройство командой sudo reboot

Установка Docker

Самый простой и официально рекомендуемый способ установки Docker на Raspberry Pi OS (которая базируется на Debian) - использование автоматического скрипта установки.

1. Загрузка установочного скрипта

Скачайте официальный скрипт с сайта Docker с помощью утилиты curl:

curl -fsSL https://get.docker.com -o get-docker.sh

2. Запуск скрипта

Теперь запустите скачанный скрипт с правами суперпользователя:

sudo sh get-docker.sh

Процесс установки займет пару минут. Скрипт самостоятельно определит архитектуру вашего процессора (ARM64 для Raspberry Pi 5) и скачает нужные версии пакетов.

Настройка прав доступа (чтобы работать без sudo)

По умолчанию для выполнения команд Docker требуются права root. Постоянно писать sudo docker - это неудобно и не совсем безопасно. Чтобы этого избежать, нужно добавить вашего текущего пользователя (обычно это пользователь pi или тот, которого вы создали при установке системы) в группу docker

Выполните команду:

sudo usermod -aG docker $USER

Чтобы изменения вступили в силу без перезагрузки всей системы, примените новую группу:

newgrp docker

(Примечание: если после этого команды Docker все равно требуют sudo, просто перезагрузите Raspberry Pi командой sudo reboot).

Проверка установки

Давайте убедимся, что всё прошло успешно. Введите в терминал команду для проверки версии:

docker --version

Вы должны увидеть актуальную версию Docker, например: Docker version 29.4.0, build 9d7ad9f.

А теперь - традиционный тест! Запустим тестовый контейнер hello-world:

docker run hello-world

Если установка прошла успешно, Docker скачает минималистичный образ и выведет на экран приветственное сообщение: "Hello from Docker!".

Настройка автозапуска

Чтобы контейнеры автоматически поднимались после сбоя питания или перезагрузки Raspberry Pi, нужно добавить службу Docker в автозагрузку:

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

Оставайтесь с riopass.ru, впереди еще много полезных шпаргалок по настройке вашего домашнего сервера!

FAQ: Часто задаваемые вопросы

В: Почему Docker лучше обычной установки программ через apt install?
О: Docker изолирует приложения. Вы можете запустить пять разных версий Python на одной Raspberry Pi 5, и они не будут конфликтовать. Кроме того, удаление программы в Docker - это просто удаление контейнера, после которого в основной системе не остается никакого "мусора".

В: Сильно ли Docker нагружает Raspberry Pi 5?

О: Raspberry Pi 5 обладает мощным процессором и быстрой оперативной памятью, поэтому накладные расходы на работу Docker практически незаметны (обычно это 1-2% ресурсов). Это гораздо эффективнее, чем использование виртуальных машин.

В: Что делать, если Docker не скачивает образы (ошибки "Timeout" или "Connection refused")?

О: В некоторых регионах доступ к официальному Docker Hub может быть ограничен или работать нестабильно. В таких случаях можно использовать зеркала (прокси-репозитории).
Одним из надежных вариантов является прокси от Timeweb. Чтобы им воспользоваться, нужно отредактировать (или создать) файл конфигурации:

sudo nano /etc/docker/daemon.json

Добавьте туда следующий адрес:

{
  "registry-mirrors": ["https://dockerhub.timeweb.cloud/"]
}

После этого перезапустите службу: sudo systemctl restart docker. Теперь образы будут скачиваться через это зеркало.

В: Нужно ли использовать 64-битную ОС для Docker на Raspberry Pi 5?

О: Да, крайне желательно. Raspberry Pi 5 - это 64-битное устройство, и Docker работает эффективнее именно на 64-битных версиях Raspberry Pi OS или Ubuntu. Это также дает доступ к большему количеству современных образов.

В: Как обновить Docker до последней версии?

О: Поскольку мы устанавливали его через официальный репозиторий, Docker будет обновляться автоматически при выполнении стандартной команды обновления системы: sudo apt update && sudo apt upgrade.

Глоссарий

  • Docker (Докер) - специальная платформа, которая позволяет упаковать любую программу со всеми ее настройками и файлами в единый стандартизированный блок. Благодаря этому программа будет одинаково хорошо работать на любом устройстве, будь то ваш ноутбук или Raspberry Pi.
  • Docker Hub - крупнейшее в мире публичное хранилище (реестр) образов Docker. Это своего рода "магазин приложений", откуда скачиваются официальные образы Python, Nginx, PostgreSQL и тысяч других программ.
  • Контейнеризация - сама технология изоляции приложений друг от друга и от основной операционной системы. Контейнеры потребляют гораздо меньше ресурсов, чем традиционные виртуальные машины.
  • Образ (Image) - это готовый неизменяемый шаблон или "чертеж" программы. Скачивая образ (например, hello-world), вы получаете инструкцию для системы, как именно запускать приложение.
  • Контейнер (Container) - это "оживший" образ. Запущенная и работающая в изолированной среде программа. Из одного образа можно запустить несколько одинаковых контейнеров.
  • Репозиторий (Repository) - коллекция образов Docker с одинаковым именем, но разными тегами (версиями). Например, в репозитории python могут быть теги 3.10, 3.12-slim и так далее.
  • Терминал (Командная строка) - текстовый интерфейс для общения с операционной системой. Вместо того чтобы кликать мышкой по иконкам, вы вводите текстовые команды.
  • SSH (Secure Shell) - защищенный протокол, который позволяет вам подключиться к терминалу вашей Raspberry Pi удаленно, например, с основного компьютера или ноутбука.
  • Root / Sudo - Root это главный администратор (суперпользователь) в системах Linux, которому разрешено делать с системой абсолютно всё. Команда sudo (Superuser DO) позволяет обычному пользователю временно выполнить конкретную команду с правами этого самого главного администратора.
  • Скрипт - текстовый файл, содержащий последовательность команд, которые компьютер должен выполнить автоматически (например, скрипт установки Docker скачивает, распаковывает и настраивает все нужные файлы за вас).