Skip to content
  • Категории
  • Последние
  • Метки
  • Популярные
  • World
  • Пользователи
  • Группы
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • По умолчанию (Darkly)
  • Нет скина
Collapse

База знаний (кластер NBICS)

A

Admin

@Admin
administrators
Сводка
Сообщения
360
Темы
82
Поделиться
0
Группы
1
Подписчики
0
Подписки
0

Сообщения

Последние Лучшие сообщения Спорные

  • Некоторые служебные приложения в YunoHost
    A Admin
    Приложение Основная функция Категория Статус в YunoHost (2026) Краткое пояснение / альтернативы / зачем ставить
    Vaultwarden Лёгкая реализация Bitwarden-сервера (пароль-менеджер) Password Manager Официальный (очень популярен, 126+ установок) Самый удобный self-hosted Bitwarden. E2E-шифрование, приложения на всех платформах.
    Diagrams.net Веб-редактор диаграмм (flowcharts, UML, network, org-charts) Diagramming Официальный Бывший draw.io. Отличная интеграция с Nextcloud/BookStack.
    Codi.md Коллаборативный Markdown-редактор (реал-тайм) Collaborative Notes Официальный Простой HedgeDoc-подобный инструмент для совместных заметок.
    Etherpad Реал-тайм совместное редактирование текста (как Google Docs для простого текста) Collaborative Editing Официальный Классика для быстрых совместных черновиков, плагины.
    My Mind Личный knowledge base / заметки с тегами и поиском Personal Notes Нет / wishlist Минималистичный, но мощный инструмент (не в каталоге сейчас).
    CryptPad Полноценный E2E-шифрованный офис (docs, sheets, kanban, whiteboard, forms) Encrypted Collaboration Официальный Самый приватный collaborative suite.
    OnlyOffice Офисный пакет (docs, sheets, presentations) с совместным редактированием Office Suite Официальный Интеграция с Nextcloud/File Browser, альтернатива Collabora.
    Reveal.js HTML-фреймворк для презентаций (Markdown, темы, экспорт PDF) Presentations Официальный Для технарей: презентации в браузере без PowerPoint.
    GLPI IT-Asset Management / Helpdesk (инвентаризация, тикеты, контракты) IT Service Management Официальный / community Для компаний/админов: учёт оборудования, заявки, SLA.
    PeerTube Remote Runner Удалённый runner для транскодирования видео в PeerTube Media Processing Нет / community Помогает разгрузить основной PeerTube-сервер (транскодинг на другом железе).
    Pixelfed Федеративная фото-социальная сеть (как Instagram + ActivityPub) Social / Fediverse Официальный Фотошеринг с подписками, фильтрами, приватностью.
    Forgejo Лёгкая альтернатива Gitea/GitHub (git-хостинг + CI) Code Hosting Официальный Форк Gitea, более community-driven.
    Gitea Самостоятельный git-сервер (репозитории, issues, wiki, CI) Code Hosting Официальный Лёгкий GitHub-клон, очень популярен.
    GitLab Полноценная DevOps-платформа (git + CI/CD + issues + wiki) Code Hosting / DevOps Официальный (но тяжёлый) Самый мощный, но жрёт ресурсы.
    GitLab Runner Runner для GitLab CI/CD (выполняет пайплайны) CI/CD Нет / manual Обычно ставят отдельно в Docker/контейнере.
    Cockpit Веб-панель управления сервером (мониторинг, systemd, storage, users) Server Management Официальный Удобный "пульт" для Linux-сервера.
    NodeRED Визуальный редактор потоков / IoT-автоматизация Automation / IoT Официальный Соединяет устройства, API, сервисы (IFTTT-like).
    n8n No-code/low-code workflow automation (Zapier self-hosted) Automation Официальный 300+ интеграций, мощный, но требует ресурсов.
    Documize Современная корпоративная wiki / knowledge base Documentation Нет / wishlist Красивый, с интеграциями, но не в каталоге.
    Dokuwiki Простая файловая wiki (без БД) Wiki Официальный Лёгкая, надёжная, плагины.
    BookStack Красивая wiki / knowledge base с книгами, полками, страницами Documentation Официальный Markdown + WYSIWYG, интеграция Diagrams.net.
    Wiki.js Современная Node.js wiki (Markdown, Git-backend, поиск) Wiki Официальный Очень гибкая, темы, аутентификация.
    Language Tool Server Сервер проверки грамматики/орфографии (для LibreOffice, браузеров) Writing Tools Официальный / community Альтернатива Grammarly self-hosted.
    Dolibarr ERP/CRM для малого бизнеса (учёт, счета, склад, контакты) ERP / CRM Официальный Полноценная система для компаний.
    FunkWhale Федеративный музыкальный сервис (как SoundCloud + Subsonic) Music Streaming Официальный Подкасты, альбомы, плейлисты, federation.
    MediaWiki Движок Википедии (самая мощная wiki) Wiki Официальный Для больших знаний-баз, расширений.
    Omeka S Платформа для цифровых коллекций / музеев / архивов Digital Collections Нет / community Метаданные, выставки, OAI-PMH.
    XWiki Очень мощная enterprise-wiki (структурированные данные, приложения) Wiki / Knowledge Base Официальный Для сложных корпоративных баз знаний.
    Jitsi Meet Видеоконференции (WebRTC, комнаты, запись) Video Conferencing Официальный Самый популярный open-source Zoom-заменитель.
    MiroTalk Простой WebRTC-видеочат (альтернатива Jitsi, легче) Video Conferencing Нет / manual Минималистичный, без сервера медиа.
    NodeBB Современный форум (реал-тайм, мобильный, плагины) Forum Официальный Красивый, быстрый, как Discourse.
    PhpBB Классический PHP-форум (темы, расширения) Forum Официальный Стабильный, но старомодный дизайн.
    RoundCube Веб-почта (IMAP-клиент) Webmail Официальный Классика, плагины, интеграция с YunoHost почтой.
    SOGo Groupware (почта + календарь + контакты + ActiveSync) Groupware / Webmail Официальный Полноценный Outlook-подобный клиент.
    Synapse Admin Админ-панель для Matrix Synapse (управление пользователями, комнатами) Matrix Admin Официальный Удобный GUI для модерации Matrix-сервера.
    Element Основной веб/мобильный клиент для Matrix Matrix Client Официальный Чистый фронтенд, без БД, лёгкий.
    Trilium Notes Иерархический note-taking с скриптами и клонированием Personal Knowledge Base Официальный / community Очень мощный для заметок + базы знаний.
    TLDraw Коллаборативный whiteboard / рисовалка (как Excalidraw) Whiteboard Нет / manual Простой, реал-тайм, экспорт SVG.
    Whitebophir Ещё один whiteboard (fork Excalidraw) Whiteboard Нет / manual Похож на TLDraw, иногда стабильнее.
    SVG-edit Веб-редактор SVG-графики Graphics Editor Нет / community Простой векторный редактор в браузере.
    OpenProject Project management (Gantt, задачи, wiki, форум, time-tracking) Project Management Официальный Полноценный Redmine/Asana-заменитель.
    Snipe-IT Управление IT-активами (hardware/software лицензии, чек-ин/аут) Asset Management Официальный Для админов: учёт ноутбуков, серверов, ПО.
    Redirect Прокси/редирект + плитка в портале YunoHost Proxy / Portal Официальный (очень популярен) Идеально для внешних контейнеров (твой случай!).
    Stirling PDF Веб-инструменты для PDF (merge, split, compress, OCR, sign) PDF Tools Официальный Всё, что нужно с PDF без Adobe.
    Linkwarden Bookmark-менеджер с архивацией страниц и тегами Bookmarks Нет / wishlist Как Raindrop.io self-hosted.
    Readeck Read-it-later + RSS (сохранение статей, чтение оффлайн) Read Later / RSS Нет / community Wallabag-подобный.
    Peertube Федеративная видео-платформа (YouTube + P2P) Video Platform Официальный Твой основной сервис, тяжёлый, но мощный.
    YunoHost

  • Некоторые служебные приложения в YunoHost
    A Admin
    Приложение Основная функция Категория Краткое пояснение / для чего полезно
    Indico Система управления конференциями, семинарами и событиями Event Management Регистрация участников, абстракты, программы, таймслоты, оплата, интеграция с Zoom/Meet. Для университетов, конференций, митапов.
    IT Tools Коллекция полезных веб-инструментов (конвертеры, генераторы, валидаторы) Utilities / Dev Tools Base64, JSON prettify, UUID, цвета, regex tester, cron explainer и т.д. — всё в одном месте.
    JSON Crack Визуализатор JSON/JSON5/YAML/TOML → дерево, таблица, граф Development / Data Красиво показывает сложные JSON-структуры, позволяет редактировать, копировать пути. Альтернатива jsonformatter.org.
    Mantis Классическая система баг-трекинга / issue tracker Project Management Альтернатива Bugzilla/Redmine. Тикеты, приоритеты, вложения, уведомления, плагины.
    Matomo Самостоятельная веб-аналитика (полноценный аналог Google Analytics) Analytics Посещения, источники, цели, тепловые карты, A/B-тесты. Полная приватность, GDPR-friendly.
    MicroBin Лёгкий pastebin / файлообменник с самоуничтожением и шифрованием File Sharing Загружаешь текст/файл → получаешь ссылку. Поддержка end-to-end шифрования, синтаксис-хайлайтинг.
    MinIO S3-совместимое объектное хранилище (как Amazon S3, но self-hosted) Storage / Cloud Хранение файлов, бэкапы, интеграция с Nextcloud, Rclone, Kubernetes. Высокая производительность.
    Monica CRM для личных отношений (напоминания о днях рождения, подарках, встречах) Productivity / Personal Хранит контакты, заметки, напоминания, подарки, долги, как личный «менеджер отношений».
    Monitorix Лёгкий мониторинг системы (CPU, RAM, диск, сеть, Apache/Nginx, MySQL и т.д.) Monitoring Простые графики, RRD-based, веб-интерфейс. Легче Glances/Netdata для старых машин.
    Node Exporter Экспортёр метрик системы для Prometheus (CPU, память, диск, процессы и т.д.) Monitoring / Prometheus Основной компонент для сбора метрик в Prometheus + Grafana. Не имеет собственного UI.
    Peer-Calls P2P-видеоконференции (WebRTC без сервера для медиа) Video Conferencing Видеозвонки без центрального сервера (только сигнализация). Для небольших групп, приватность.
    Reveal.js Фреймворк для создания презентаций в HTML (как PowerPoint в браузере) Presentation / Slides Markdown-поддержка, темы, переходы, спикер-ноты, экспорт в PDF. Идеально для технарей.
    Screego TURN/STUN-сервер + сигнализация для WebRTC (видеозвонки) WebRTC Infrastructure Помогает пробрасывать видео через NAT. Часто используется с Jitsi, Peer-Calls, BigBlueButton.
    Scrutiny Мониторинг здоровья HDD/SSD (S.M.A.R.T., температура, ошибки) Storage Monitoring Графики SMART-атрибутов, уведомления о сбоях дисков. Лучше smartmontools с UI.
    SPFtoolbox Инструменты для проверки SPF, DKIM, DMARC, DNS-записей почты Email / DNS Проверяет, почему письма попадают в спам, валидирует записи. Полезно для админов почты.
    squid3 Кэширующий прокси-сервер (HTTP/HTTPS, фильтрация, логирование) Proxy / Networking Кэширует трафик, фильтрует сайты, прозрачный прокси для сети. Старый, но надёжный.
    statping-ng Мониторинг доступности сервисов + красивый статус-пейдж Monitoring / Status Page Проверяет HTTP, TCP, Ping, DNS. Красивый дашборд, уведомления, uptime-графики.
    Sshwifty Веб-SSH-клиент (терминал в браузере) Remote Access Подключаешься к серверу по SSH через браузер. Простой и безопасный (HTTPS + SSOwat).
    Technitium DNS Рекурсивный и авторитативный DNS-сервер + блокировщик рекламы Networking / DNS Альтернатива Pi-hole/AdGuard Home с поддержкой зон, DoH/DoT, кэшированием, фильтрами.
    Tableaunior Визуализация данных (альтернатива Tableau Public, но self-hosted) Data Visualization Загружаешь CSV/Excel → строишь дашборды, графики, карты. Для аналитики без облака.
    Tiki Полноценная CMS / Wiki / Groupware (как Confluence + MediaWiki + больше) CMS / Collaboration Вики, форумы, календари, трекер задач, галереи, блоги. Очень мощная, но сложная.
    Transfer.sh Простой файлообменник с таймером удаления (как wetransfer, но self-hosted) File Sharing curl --upload-file file.mp4 https://transfer.твойдомен.tld → получаешь ссылку.
    WatchYourLAN Лёгкий мониторинг устройств в локальной сети (ARP-таблица + уведомления) Network Monitoring Показывает, кто в сети, уведомляет о новых/отключившихся устройствах. Альтернатива Fing.
    Webhook Простой приёмник webhook-запросов (логирует, перенаправляет, выполняет скрипты) Automation / DevOps Ловит события от GitHub, Stripe, Uptime Kuma и т.д., может запускать команды.
    YunoHost

  • Некоторые служебные приложения в YunoHost
    A Admin
    Приложение Основная функция Категория Краткое пояснение / для чего полезно
    Easy!Appointments Онлайн-запись на приёмы / планировщик встреч Productivity & Management Клиенты сами выбирают свободное время, синхронизация с Google Calendar, напоминания по email/SMS. Альтернатива Calendly/Doctolib.
    eLabFTW Электронный лабораторный журнал / ELN (Electronic Lab Notebook) Research / Science Хранение экспериментов, протоколов, данных, файлов, тегов, шаблонов. Для научных команд, химия/биология/физика.
    Emoncms Платформа для мониторинга энергопотребления и IoT-данных Monitoring / IoT / Energy Логирование, визуализация графиков (температура, электричество, вода и т.д.), дашборды. Часто с OpenEnergyMonitor.
    Epicyon Федеративная социальная сеть (ActivityPub) — личный сервер Social / Fediverse Мини-Mastodon / Pleroma для одного пользователя или маленькой группы. Микроблогинг без трекинга.
    ESPHome Фреймворк для создания кастомных устройств на ESP8266/ESP32 IoT / Home Automation Пишешь YAML → компилируется прошивка для датчиков, реле, ламп. Интеграция с Home Assistant.
    Fab-manager Система управления FabLab / makerspace (бронирование станков, оплата, инвентарь) Productivity & Management Для хакерспейсов: члены, машины, материалы, бронирование, статистика.
    Facilmap Коллаборативные карты (OpenStreetMap-based) с маршрутами и маркерами Maps / Collaboration Групповые карты для походов, событий, путешествий. Похоже на uMap, но с лучшим UI.
    Fail2Ban Webinterface Веб-интерфейс для Fail2Ban (просмотр банов, разбан, статистика) System Tools / Security Удобный дашборд вместо CLI. Показывает забаненные IP, jails, логи.
    FastAPI Шаблон для запуска собственного FastAPI-приложения (Python) Development / Publishing Для разработчиков: быстро поднять API с автодокументацией (Swagger), аутентификацией и т.д.
    Fathom Приватный лёгкий аналог Google Analytics / Matomo Analytics / Privacy Считает посещения, источники, устройства без куки и трекинга. Очень простой и быстрый.
    Find My Device Самостоятельный трекер устройств (альтернатива Google's Find My Device) Mobile / Tracking Отслеживание Android-устройств по GPS, звук, блокировка. Требует установки APK на телефон.
    Galette Система управления ассоциацией / членами (членские взносы, рассылки, документы) Productivity & Management Для НКО, клубов, спортивных секций: учёт членов, платежи, PDF-документы.
    Gemserv Лёгкий сервер для протокола Gemini (альтернатива HTTP для минималистичного веба) Publishing / Gemini Gemini — текстовая сеть без JS/трекинга. Gemserv раздаёт .gmi-файлы.
    Glance Дашборд с виджетами (погода, календарь, RSS, мониторинг) Dashboard / Home Красивый стартовый экран в браузере с кастомными карточками.
    Glances Мониторинг системы в реальном времени (CPU, RAM, диск, сеть, процессы) System Tools / Monitoring Расширенный htop с веб-интерфейсом, экспортом в InfluxDB/Grafana.
    Gokapi Самоуничтожающийся файлообменник / share (как Firefox Send) File Sharing Загружаешь файл → получаешь ссылку с таймером удаления. Шифрование, пароли.
    Grocy Менеджер домашнего хозяйства (продукты, рецепты, списки покупок, инвентарь) Productivity / Household Отслеживает сроки годности, рецепты, баркоды, напоминания.
    Homarr Красивый дашборд для self-hosted сервисов (иконки, виджеты, интеграции) Dashboard / Homelab Альтернатива Heimdall / Homepage. Плитки к приложениям, мониторинг Docker, календари.
    Home Assistant Полноценная платформа домашней автоматизации (IoT-хаб) Home Automation / IoT Управление умным домом: Zigbee/Z-Wave/MQTT, автоматизации, голос (Assist), интеграции с 2000+ устройств.
    httpsh on ttyd Веб-терминал (ttyd) с HTTPS и аутентификацией System Tools / Shell Доступ к shell через браузер по HTTPS (с SSOwat). Полезно для удалённого администрирования.
    Huginn Агент автоматизации (как IFTTT/Zapier, но self-hosted) Automation Создаёт "агентов": мониторит сайты, парсит RSS, отправляет уведомления, взаимодействует с API.
    YunoHost

  • Некоторые служебные приложения в YunoHost
    A Admin
    Приложение Основная функция Категория Краткое пояснение / для чего полезно
    2FAuth Самостоятельный генератор одноразовых паролей (2FA / TOTP) Security / Authentication Веб-альтернатива Google Authenticator, Authy и т.д. Хранит твои 2FA-ключи, генерирует коды в браузере. Работает на мобильных и десктопах.
    AgeWasm Клиентский генератор/шифратор/дешифратор ключей Age (с использованием WASM) Security / Encryption Простой веб-инструмент для работы с Age (современный аналог age-keygen, шифрование файлов). Всё происходит в браузере, без передачи данных на сервер.
    AdGuard Home Сетевой блокировщик рекламы, трекеров и вредоносных доменов на уровне DNS Networking / Ad-blocking Устанавливаешь один раз — вся домашняя сеть (телефоны, ТВ, ПК) получает чистый интернет без рекламы. Поддерживает DoH/DoT/QUIC, фильтры, родительский контроль.
    AppFlowy Самостоятельная альтернатива Notion (заметки, канбан, базы знаний) Productivity / Notes Open-source Notion-клон с оффлайн-поддержкой, базами данных, шаблонами. Хранит всё локально или в твоём облаке.
    Cors Proxy Прокси-сервер для обхода CORS-ограничений в браузере Development / Proxy Полезен разработчикам: позволяет фронтенду делать запросы к API, которые не разрешают CORS (например, для тестов или виджетов).
    changedetection Мониторинг изменений на веб-страницах + уведомления Monitoring / Automation Следит за изменениями на сайтах (цены, наличие товара, новости, вакансии), отправляет алерты в Telegram/Discord/Email/Slack и т.д. Отличный restock-монитор.
    Dagu Лёгкий workflow-оркестратор / альтернатива Airflow / cron с веб-интерфейсом Automation / DevOps Запускает задачи по расписанию, цепочки команд, мониторит выполнение. Всё в YAML, с красивым дашбордом.
    Dato Минималистичный менеджер дат / напоминаний / календаря Productivity Простой инструмент для отслеживания дат (дни рождения, сроки, события). Часто используется как лёгкий личный календарь.
    Digiscreen Цифровая вывеска / экран для отображения информации (погода, новости, дашборды) Display / Signage Превращает старый монитор/ТВ в информационную панель (погода, акции, статусы серверов и т.д.).
    Digisteps Пошаговые инструкции / гайды / wizard для пользователей Documentation / Onboarding Создаёт интерактивные руководства (например, "как настроить VPN" шаг за шагом). Полезно для семьи/команды.
    Digitools Набор мелких веб-инструментов (конвертеры, генераторы, калькуляторы) Utilities Коллекция простых онлайн-инструментов (base64, QR, хэши, цвета и т.д.) в одном месте.
    Digitranscode Веб-интерфейс для транскодирования медиафайлов (видео/аудио) Media Processing Загружаешь файл → выбираешь формат/качество → получаешь конвертированный. Удобно без ffmpeg в терминале.
    Digiworlds Платформа для создания/хостинга виртуальных миров или интерактивных страниц Creative / Worlds Что-то вроде простого конструктора 3D/2D миров или интерактивных сайтов (точные детали зависят от версии пакета).
    Directory Lister Простой веб-браузер директорий (список файлов/папок с возможностью скачивания) File Sharing Открываешь любую папку на сервере через браузер — красиво отображает содержимое, поддерживает превью, сортировку, скачивание.
    Domoticz Лёгкая система домашней автоматизации (IoT) Home Automation / IoT Управление умным домом: датчики, лампы, розетки, камеры. Поддерживает Z-Wave, Zigbee, MQTT и т.д.
    DumbDo Очень простой To-Do список / задачи без лишних функций Productivity Минималистичный чек-лист задач. Никаких проектов, тегов — только список дел.
    DumpPad Временная заметка / pastebin / дамп текста (самоуничтожающийся) Sharing / Pastebin Быстро кидаешь текст/код/лог → получаешь ссылку. Можно с таймером удаления.
    DumpWhois Веб-интерфейс для whois-запросов (проверка доменов) Networking / Tools Вводишь домен → показывает whois-информацию (владелец, дата регистрации и т.д.).
    YunoHost

  • Incus - бэкап, и восстановление контейнера на другом сервере
    A Admin

    Предположим, контейнер называется cont-incus-yuno-1

    Вот самый простой и надёжный способ перенести контейнер cont-incus-yuno-1 на другой компьютер с помощью Incus (работает для контейнеров, даже запущенных):

    На исходном сервере (где контейнер сейчас работает)

    1. Создайте экспорт (рекомендуется остановить контейнер для консистентности, но можно и на живую):

      Вариант А — остановить (самый безопасный):

      incus stop cont-incus-yuno-1
      incus export cont-incus-yuno-1 cont-yuno-backup.tar.gz
      incus start cont-incus-yuno-1    # можно сразу запустить обратно, если нужно
      

      Вариант Б — на живую (быстрее, но есть небольшой риск несогласованности файловой системы):

      incus export cont-incus-yuno-1 cont-yuno-backup.tar.gz
      

      Полезные флаги (добавляйте по желанию):

      • --instance-only — очень рекомендуется, если не нужны снапшоты (файл будет намного меньше и быстрее создаваться)
      • --optimized-storage — если хранилище позволяет (zfs/btrfs), делает ещё меньше размер

      Пример с флагами (самый популярный вариант):

      incus export cont-incus-yuno-1 cont-yuno-backup.tar.gz --instance-only --optimized-storage
      

      Получится файл cont-yuno-backup.tar.gz (или как вы его назовёте) размером от нескольких сотен МБ до десятков ГБ — зависит от содержимого контейнера.

    2. Перенесите файл на другой компьютер любым удобным способом:

      • scp
      • rsync
      • флешка / внешний диск
      • облако (если объём позволяет)
      # пример через scp
      scp cont-yuno-backup.tar.gz user@новый-ip:/home/user/
      

    На целевом сервере (куда переносите)

    1. Убедитесь, что Incus установлен и работает той же или новее версии (экспорт с более новой версии на старую часто не работает).

    2. Если контейнер использует нестандартные профили (кроме default), создайте их заранее на новом сервере:

      incus profile list          # посмотреть, какие профили есть
      # если нужно — скопируйте конфиг профиля и создайте:
      incus profile create myprofile
      incus profile edit myprofile
      
    3. Импортируйте:

      incus import cont-yuno-backup.tar.gz cont-incus-yuno-1
      

      Или с другим именем, если хотите:

      incus import cont-yuno-backup.tar.gz yuno-new
      
    4. Запустите:

      incus start cont-incus-yuno-1
      # или
      incus start yuno-new
      
    5. Проверьте, что всё работает:

      incus list
      incus console cont-incus-yuno-1   # или incus exec ... -- bash
      

    Полезные замечания

    • Если после импорта контейнер не стартует из-за MAC-адреса → удалите/сгенерируйте новый:
    # 1. Посмотреть, какой именно MAC "застрял" в базе Incus
    incus info incus-yuno-std | grep volatile.eth0.hwaddr
    # или полная картина
    incus config show incus-yuno-std --expanded | grep hwaddr
    
    # 2. Самый простой и безопасный способ — попросить Incus сгенерировать новый MAC
    incus config unset incus-yuno-std volatile.eth0.hwaddr
    # или явно задать новый (можно опустить — сам сгенерирует)
    # incus config set incus-yuno-std volatile.eth0.hwaddr 00:16:3e:xx:yy:zz
    
    # 3. Попробовать запустить
    incus start incus-yuno-std
    
    • Если на новом сервере другое хранилище (например, был zfs, стал dir или btrfs) — импорт обычно проходит нормально, но иногда нужно указать пул:

      incus import cont-yuno-backup.tar.gz cont-incus-yuno-1 --storage default
      
    • Размер файла и время создания/переноса — главный ограничивающий фактор.

    Если контейнер очень большой (>20–30 ГБ) — подумайте, не лучше ли воспользоваться rsync содержимого или incus copy по сети (если есть хоть какая-то связь между серверами).

    LXC

  • Установка RustDesk на Debian
    A Admin

    RustDesk

    Установка RustDesk на Debian 12 и 13

    1.1. Обновление системы
    Это обязательный шаг: sudo apt update обновляет список доступных пакетов из репозиториев (без установки), а sudo apt upgrade -y устанавливает все доступные обновления (-y — автоматическое подтверждение "yes" для всех вопросов, чтобы скрипт не висел).

    sudo apt update
    sudo apt upgrade -y
    

    1.2. Установка зависимостей
    RustDesk требует библиотек для GUI, сетевого стека и медиа. wget скачивает файлы по HTTP/HTTPS, gdebi-core — это утилита для установки .deb-пакетов с автоматическим разрешением зависимостей (лучше, чем dpkg -i, потому что сама доустанавливает недостающее).

    sudo apt install -y wget libgtk-3-0 libayatana-appindicator3-1 libxdo3 gstreamer1.0-pipewire
    
    • libgtk-3-0 — для графического интерфейса (GUI).
    • libayatana-appindicator3-1 — для системного трея (иконки в панели).
    • libxdo3 — для симуляции нажатий мыши/клавиатуры (удалённое управление).
    • gstreamer1.0-pipewire — для аудио/видео в реальном времени (поддержка PipeWire вместо PulseAudio).

    Если при установке RustDesk apt сам попросит доустановить что-то — просто подтвердить.

    1.3. Скачивание и установка
    Скачиваем .deb с официального GitHub (прямая ссылка на релиз). wget по умолчанию сохраняет файл с оригинальным именем.

    wget https://github.com/rustdesk/rustdesk/releases/download/1.4.4/rustdesk-1.4.4-x86_64.deb
    sudo dpkg -i rustdesk-1.4.4-x86_64.deb
    

    1.4. Запуск и начальная настройка
    Запускаем RustDesk — откроется GUI с ID (уникальный идентификатор вашего устройства) и полем для пароля.

    rustdesk
    
    • В GUI: Settings → Security → Set Password → Permanent Password (задавайте сильный пароль).
    • ID сохраните — им будете подключаться с других устройств.
      RustDesk автоматически стартует при загрузке и использует публичные серверы (relay) для соединения.

    2. Headless-режим (для серверов без GUI, через SSH)

    Если Debian — сервер без X11/GNOME, RustDesk всё равно работает (виртуальный дисплей).

    # 1. Установка (то же, что выше) + daemon-режим
    sudo systemctl enable --now rustdesk.service  # автозапуск при загрузке
    
    # 2. Настройка ID/пароля через CLI
    rustdesk --get-id   # покажет ID (например, 123456789)
    sudo rustdesk --password "ВашПостоянныйПароль"
    
    # 3. Запуск в фоне (если не автозапуск)
    sudo rustdesk --daemon
    

    Проверьте статус: systemctl status rustdesk или ps aux | grep rustdesk.

    Программное обеспечение

  • Установка Anydesk на Ubuntu 24.04
    A Admin

    Чтобы установить AnyDesk на Ubuntu 24.04 через терминал, рекомендуется использовать официальный репозиторий AnyDesk. Это обеспечит автоматические обновления и актуальную версию.

    Шаги по установке через репозиторий (рекомендуемый способ)

    1. Обновите систему и установите необходимые утилиты:

      sudo apt update
      sudo apt install ca-certificates curl apt-transport-https
      
    2. Создайте директорию для ключей (если её нет):

      sudo install -m 0755 -d /etc/apt/keyrings
      
    3. Скачайте и добавьте GPG-ключ AnyDesk:

      sudo curl -fsSL https://keys.anydesk.com/repos/DEB-GPG-KEY -o /etc/apt/keyrings/keys.anydesk.com.asc
      sudo chmod a+r /etc/apt/keyrings/keys.anydesk.com.asc
      
    4. Добавьте репозиторий AnyDesk:

      echo "deb [signed-by=/etc/apt/keyrings/keys.anydesk.com.asc] https://deb.anydesk.com all main" | sudo tee /etc/apt/sources.list.d/anydesk-stable.list > /dev/null
      
    5. Обновите список пакетов и установите AnyDesk:

      sudo apt update
      sudo apt install anydesk
      

    После установки запустите AnyDesk командой anydesk или через меню приложений.

    Альтернативный способ: Установка из .deb-пакета

    Если не хотите добавлять репозиторий:

    1. Скачайте последнюю версию .deb-пакета (проверьте актуальную версию на сайте):

      wget https://download.anydesk.com/linux/anydesk_7.1.2-1_amd64.deb
      
    2. Установите пакет:

      sudo dpkg -i anydesk_*.deb
      sudo apt install -f  # Установит недостающие зависимости, если нужно
      

    Примечание: Ubuntu 24.04 использует Wayland по умолчанию, и AnyDesk может иметь ограничения (например, входящие подключения лучше работают на Xorg). Если возникнут проблемы, попробуйте переключиться на X11 при входе в систему.

    Если нужны дополнительные настройки (например, автозапуск сервиса), выполните sudo systemctl enable --now anydesk.

    Программное обеспечение

  • Отличия дистрибутивов Linux между собой
    A Admin

    Что касается серверных и десктопных дистрибутивов, то они между собой отличаются в основном тем, что десктопные дистрибутивы в основном рассчитаны на офисные, образовательные, и домашние компьютеры, а серверные - предназначены исключительно для работы на серверах, поэтому часто не имеют графического интерфейса, а используют для взаимодействия с пользователем командную строку - технологию, позволяющую общаться человеку с системой текстом с помощью задания специальных команд и их параметров. Также командная строка позволяет использовать так называемую псевдографику, где возможно работа с мышью, но возможности такого взаимодействия сильно урезаны. Разумеется, и командная строка, и псевдографика во всей своей полноте есть и на десктопных компьютерах, но на серверах - это в подавляющем большинстве случаев основной инструмент. Ещё - на серверные дистрибутивы установленные специальные серверные программы, необходимые для сложной работы с сетью, и для других специфических задач. В мире обычных персональных компьютеров, то есть, десктопов, Linux-системы распространены не так сильно, лишь несколько процентов пользователей работают с такими системами. Но среди серверов - Linux-системы являются лидером, удерживая более 90%.

    Debian и Ubuntu

  • Отличия дистрибутивов Linux между собой
    A Admin

    Дистрибутивы Линукс отличаются между собой в основном пользовательскими, а также сервисными программами, называемыми утилитами, настройками этих программ, системой установки программ, настройками ядра, скоростью обновления программ и ядра, набором компонентов самого ядра, а также технической философией и целевой аудиторией. Проще говоря - каждый дистрибутив решает свой круг задач, поэтому нет "лучшего" дистрибутива в абсолюте, есть наиболее подходящий под конкретные нужды пользователя. Также большую роль играет популярность дистрибутива, удобство работы с ним, и надёжность его производителя.

    Debian и Ubuntu

  • Установка VirtualBox на Debian
    A Admin

    Чтобы установить Oracle VM VirtualBox на Debian 12 (Bookworm) через терминал, рекомендуется использовать официальный репозиторий Oracle — это даст самую свежую версию (на текущий момент 7.2.4).

    Шаг 1: Установка необходимых зависимостей

    Сначала установите пакеты для сборки модулей ядра:

    sudo apt update
    sudo apt install linux-headers-$(uname -r) dkms gcc make
    

    Шаг 2: Добавление GPG-ключа Oracle

    Скачайте и добавьте публичный ключ для проверки пакетов:

    wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo gpg --dearmor --yes --output /usr/share/keyrings/oracle-virtualbox-2016.gpg
    

    Шаг 3: Добавление репозитория VirtualBox

    Добавьте репозиторий в систему (для Debian 12 используйте codename bookworm, для Debian 13 - trixie) :

    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://download.virtualbox.org/virtualbox/debian bookworm contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list
    

    Шаг 4: Установка VirtualBox

    Обновите списки пакетов и установите VirtualBox (используйте virtualbox-7.2 для последней версии на момент 2026 года):

    sudo apt update
    sudo apt install virtualbox-7.2
    

    Если пакет называется иначе (проверьте с apt search virtualbox), используйте актуальное имя.

    Шаг 5: Добавление пользователя в группу vboxusers

    Чтобы запускать виртуальные машины без root:

    sudo adduser $USER vboxusers
    

    Перезайдите в сессию (или перезагрузите систему).

    Шаг 6: (Рекомендуется) Установка Extension Pack

    Для поддержки USB 2.0/3.0, RDP, шифрования дисков и других функций скачайте и установите Extension Pack:

    wget https://download.virtualbox.org/virtualbox/7.2.4/Oracle_VM_VirtualBox_Extension_Pack-7.2.4.vbox-extpack
    sudo VBoxManage extpack install --replace Oracle_VM_VirtualBox_Extension_Pack-7.2.4.vbox-extpack
    

    (Согласитесь с лицензией.)

    Шаг 7: Запуск и проверка

    Запустите VirtualBox:

    virtualbox
    

    Или из меню приложений.

    Проверьте версию:

    VBoxManage --version
    

    Альтернатива: Установка из .deb-пакета (без репозитория)

    Если не хотите добавлять репозиторий:

    wget https://download.virtualbox.org/virtualbox/7.2.4/virtualbox-7.2_7.2.4-170995~Debian~bookworm_amd64.deb
    sudo apt install ./virtualbox-7.2_7.2.4-170995~Debian~bookworm_amd64.deb
    

    (Но тогда обновления придётся делать вручную.)

    Возможные проблемы

    • Если модуль ядра не загружается (vboxdrv) : sudo modprobe vboxdrv или перезагрузите систему.
    • Secure Boot: Может потребоваться подписать модули (MOK).
    • Если ошибка с зависимостями — проверьте sudo apt install -f.

    Теперь VirtualBox готов к созданию виртуальных машин! Если нужны Guest Additions для гостей — установите их внутри ВМ через меню Devices → Insert Guest Additions CD image.

    VirtualBox

  • Полное удаление VirtualBox с системы Debian
    A Admin

    Чтобы полностью удалить Oracle VM VirtualBox в Debian 12 через терминал, выполните следующие шаги. Способ зависит от того, как вы устанавливали VirtualBox (из официальных репозиториев Debian, Oracle или через .deb/.run-файл).

    1. Если установлен из репозиториев Debian (contrib/non-free) или Fast Track

    Сначала проверьте установленные пакеты:

    dpkg -l | grep virtualbox
    

    или

    apt list --installed | grep virtualbox
    

    Основной пакет обычно называется virtualbox или virtualbox-версия (например, virtualbox-7.0).

    Удалите все связанные пакеты с конфигурационными файлами:

    sudo apt purge virtualbox* virtualbox-dkms* virtualbox-qt*
    sudo apt autoremove
    sudo apt autoclean
    

    Это удалит программу, модули ядра и ненужные зависимости.

    2. Если установлен из официального .deb-пакета Oracle (virtualbox-*.deb)

    Пакет обычно называется virtualbox-7.0 или подобно.

    Удалите:

    sudo apt purge virtualbox-7.0  # или точное имя из dpkg -l
    # Или универсально:
    sudo apt purge virtualbox*
    sudo apt autoremove
    

    Если установлен через dpkg:

    sudo dpkg --purge virtualbox-7.0
    

    3. Если установлен через .run-скрипт Oracle (в /opt/VirtualBox)

    Запустите uninstaller:

    sudo /opt/VirtualBox/uninstall.sh
    

    Затем вручную удалите остатки:

    sudo rm -rf /opt/VirtualBox
    

    4. Дополнительная очистка (для любого способа установки)

    Удалите пользовательские настройки и виртуальные машины (если они не нужны — это удалит все ВМ!):

    rm -rf ~/VirtualBox\ VMs
    rm -rf ~/.config/VirtualBox
    rm -rf ~/.VirtualBox  # иногда так
    

    Удалите Extension Pack (если установлен и VirtualBox ещё запускается):

    VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"
    

    Или вручную:

    sudo rm -rf /usr/lib/virtualbox/ExtensionPacks/
    

    5. Проверка

    После удаления проверьте:

    dpkg -l | grep virtualbox
    which VBoxManage
    

    Если ничего не выводит — VirtualBox полностью удалён.

    Предупреждение: Команды с rm -rf необратимы. Если хотите сохранить виртуальные машины, не удаляйте папку ~/VirtualBox VMs. Если возникнут ошибки с модулями ядра (vboxdrv), перезагрузите систему или выполните sudo apt autoremove.

    VirtualBox

  • Синтез речи на Android
    A Admin

    Инструкция по установке, настройке и использованию связки @Voice Aloud Reader + RHVoice (на Android)

    Эта связка — одна из лучших для чтения вслух текстов на русском языке: RHVoice даёт естественные оффлайн-голоса, а @Voice Aloud Reader отлично справляется с веб-страницами, PDF, книгами и текстами из других приложений.

    1. Установка приложений

    1. Установите @Voice Aloud Reader:

      • Откройте Google Play Store.
      • Найдите "@Voice Aloud Reader" (разработчик Hyperionics Technology LLC).
      • Установите бесплатную версию (есть реклама, но можно купить Premium-лицензию для удаления рекламы и доп.функций).
    2. Установите RHVoice:

      • В Google Play Store найдите "RHVoice" (разработчик Olga Yakovleva или RHVoice.com).
      • Установите приложение (бесплатное, открытый код).
      • Откройте RHVoice.
      • Выберите язык Русский (ru-RU).
      • Скачайте один или несколько голосов (например, Anna, Aleksandr, Irina — они бесплатные.

    2. Настройка RHVoice как основного TTS-движка

    RHVoice работает как системный движок синтеза речи, и @Voice будет использовать его автоматически.

    1. Перейдите в Настройки Android → Специальные возможности (или Доступность) → Текст в речь (или Вывод текста в речь, TTS-вывод — зависит от версии Android и оболочки).
    2. В разделе Предпочитаемый движок выберите RHVoice.
    3. Если нужно, настройте скорость речи, тон и другие параметры (в настройках RHVoice или системных).
      • Протестируйте: нажмите "Прослушать пример" — должен заговорить выбранный голос RHVoice.

    Важно: Если вы используете TalkBack (экранный ридер), не делайте RHVoice основным системным TTS, чтобы избежать конфликтов. В @Voice можно выбрать RHVoice отдельно (см. ниже).

    3. Настройка в @Voice Aloud Reader

    1. Откройте @Voice Aloud Reader.
    2. Нажмите на кнопку меню (три точки или стрелка вверх внизу экрана) → Изменить голос или язык (или "Change voice or language").
    3. В списке движков выберите RHVoice.
    4. Выберите русский язык и конкретный голос (Anna, Aleksandr и т.д.).
    5. Прослушайте образец — если всё ок, сохраните.
      • Дополнительно: настройте скорость речи, высоту тона (pitch), громкость прямо в этом меню.

    @Voice автоматически распознаёт язык текста и переключается на подходящий голос, если он доступен.

    4. Использование

    • Чтение текста из других приложений:

      • В браузере, новостях, Telegram и т.д. выделите текст или нажмите Поделиться → выберите @Voice Aloud Reader.
      • Текст загрузится, и начнётся чтение вслух голосом RHVoice.
    • Открытие файлов:

      • В @Voice нажмите меню → Открыть файл → выберите TXT, PDF, EPUB, DOC и т.д.
      • Или поделитесь файлом из файлового менеджера.
    • Управление воспроизведением:

      • Кнопки внизу: Play/Pause, предыдущее/следующее предложение.
      • Таймер сна, списки чтения, запись в аудио — всё в меню.
      • Работает в фоне, с наушниками/Bluetooth.
    • Полезные советы:

      • Если голос звучит неидеально на некоторых словах — RHVoice поддерживает ударения (пишите + перед гласной, например: мóре).
      • Для многоголосия (диалоги в книгах) в Premium-версии можно использовать аннотации для смены голосов.
      • RHVoice полностью оффлайн после скачивания голосов — идеально для чтения без интернета.

    Если возникнут проблемы (например, голос не выбирается), перезапустите приложения или проверьте обновления. Эта связка работает стабильно на Android 8+.

    Разная информация

  • Обновление Debian 12 до Debian 13
    A Admin

    Инструкция по обновлению Debian 12 до Debian 13 (с Bookworm на Trixie)

    ВНИМАНИЕ ПЕРЕД НАЧАЛОМ:

    1. Создайте полную резервную копию всех важных данных и конфигураций. Обновление до новой стабильной версии — это серьезная операция, которая может привести к неожиданным проблемам.
    2. Убедитесь, что обновление до Debian 13 официально объявлено. На момент написания этой инструкции Trixie является тестируемой версией. Не используйте это руководство для рабочих систем, пока не выйдет стабильный релиз Debian 13.
    3. Рекомендуется выполнять обновление напрямую с консоли сервера или через сеанс screen/tmux, чтобы избежать разрыва соединения при сбоях в сети.

    Шаги для обновления:

    1. Подготовка текущей системы Debian 12

    Перед переходом на новые репозитории убедитесь, что система полностью актуальна.

    sudo apt update && sudo apt upgrade -y
    sudo apt full-upgrade -y
    sudo apt autoremove --purge
    

    2. Изменение файла sources.list на репозитории Debian 13

    Замените все упоминания bookworm на trixie.

    Откройте файл для редактирования:

    sudo nano /etc/apt/sources.list
    

    За основу можно взять следующий шаблон (замените всё его содержимое указанным ниже текстом):

    #deb cdrom:[Debian GNU/Linux 13.0.0 _Trixie_ - Official amd64 NETINST 202507XX-XX:XX]/ trixie main non-free-firmware
    
    deb http://deb.debian.org/debian/ trixie main non-free-firmware
    deb-src http://deb.debian.org/debian/ trixie main non-free-firmware
    
    deb http://security.debian.org/debian-security trixie-security main non-free-firmware
    deb-src http://security.debian.org/debian-security trixie-security main non-free-firmware
    
    # trixie-updates, to get updates before a point release is made;
    deb http://deb.debian.org/debian/ trixie-updates main non-free-firmware
    deb-src http://deb.debian.org/debian/ trixie-updates main non-free-firmware
    
    # Зеркало для non-free и contrib (если используете)
    # deb http://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware
    

    Примечание: Имена компонентов (main, contrib, non-free, non-free-firmware) и зеркала могут быть скорректированы под ваши нужды.

    3. Обновление системы до Debian 13

    Теперь можно начать процесс дистрибутивного обновления.

    # Обновить списки пакетов из новых репозиториев
    sudo apt update
    
    # Выполнить минимальное обновление без установки новых пакетов (рекомендуемый первый шаг)
    sudo apt upgrade --without-new-pkgs -y
    
    # Выполнить полное обновление системы с разрешением зависимостей, включая удаление устаревших пакетов
    sudo apt full-upgrade -y
    

    Во время full-upgrade будут заданы вопросы о конфигурационных файлах (например, sshd_config, postfix/main.cf и др.). Внимательно читайте каждый вопрос. Если вы не вносили специфических изменений в файл, можно выбрать вариант «установить версию от пакета». Если же вы меняли файл и хотите сохранить свои правки, выберите «оставить текущую версию, установленную на данный момент» (но будьте готовы к возможной несовместимости).

    4. Завершение обновления и очистка

    # Удалить пакеты, которые больше не нужны как зависимости (очистка)
    sudo apt autoremove --purge
    
    # Перезагрузить систему для применения всех изменений, особенно нового ядра
    sudo reboot
    

    5. Проверка успешности обновления

    После перезагрузки войдите в систему и проверьте версию.

    cat /etc/debian_version
    # или
    lsb_release -a
    

    Вы должны увидеть:

    Distributor ID: Debian
    Description:    Debian GNU/Linux 13 (trixie)
    Release:        13
    Codename:       trixie
    

    Для систем с графическим окружением GNOME (особенность)

    Как и в предыдущих обновлениях, дисплейный менеджер GDM может сбросить настройки сессии.

    Если вам необходимо использовать Xorg вместо Wayland (например, для совместимости с некоторыми средствами удаленного доступа вроде AnyDesk):

    1. Отредактируйте конфигурационный файл GDM:
      sudo nano /etc/gdm3/daemon.conf
      
    2. Найдите строку #WaylandEnable=false и раскомментируйте её (уберите символ # в начале).
    3. Сохраните файл и перезапустите GDM:
      sudo systemctl restart gdm3
      
      Или, если изменения не применились, перезагрузите компьютер:
      sudo reboot
      

    Возможные проблемы и рекомендации

    • Сломанные зависимости: Если процесс обновления прервался из-за конфликтов, попробуйте команду sudo apt --fix-broken install.
    • Оставшиеся пакеты от Bookworm: После успешного обновления проверьте apt list --installed | grep bookworm. Такие пакеты лучше переустановить или удалить.
    • Сторонние репозитории: Закомментируйте или удалите из /etc/apt/sources.list и файлов в /etc/apt/sources.list.d/ все сторонние репозитории (например, Docker, PostgreSQL и т.д.), не поддерживающие Trixie, чтобы избежать проблем с зависимостями. Добавьте их обратно только после подтверждения поддержки новой версии.
    • Прочтите вывод: Внимательно читайте информацию, которую выводит apt во время обновления. Там могут быть важные предупреждения или инструкции.
    Debian и Ubuntu

  • Bash - работа с SSH
    A Admin

    Открыть в своём браузере настройки удалённого роутера

    sudo ssh -L 8080:192.168.0.1:80 user@<ip-сервера>
    

    -L - локальный адрес
    8080 - порт в браузере пользователя
    192.168.0.1:80 - пример адреса роутера


    В своём браузере ввести адрес http://localhost:8080

    Команды BASH

  • Подключение телефона с Android к ПК с Debian 12
    A Admin

    Для того чтобы Debian 12 «увидел» любой современный Android-смартфон, необходимо установить поддержку протокола MTP (Media Transfer Protocol).

    В современных графических оболочках (GNOME, KDE, XFCE) большая часть компонентов уже встроена, но иногда не хватает конкретных драйверов или утилит для корректного монтирования.

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

    Откройте терминал и выполните следующую команду под пользователем root или через sudo:

    sudo apt update
    sudo apt install jmtpfs mtp-tools gvfs-backends
    
    
    • gvfs-backends: Самый важный пакет для пользователей GNOME/XFCE/Cinnamon. Он позволяет файловому менеджеру автоматически распознавать MTP-устройства.
    • kio-extras: (Установите вместо gvfs, если вы используете KDE Plasma).
    • jmtpfs / mtp-tools: Полезны для ручного монтирования, если автоматика не сработает.

    2. Настройка на самом телефоне

    Это критический шаг, без которого компьютер увидит устройство, но папка будет пустой.

    1. Подключите телефон к ПК качественным USB-кабелем.
    2. Разблокируйте экран телефона.
    3. Опустите шторку уведомлений. Найдите уведомление «Зарядка через USB» (или «Настройки USB»).
    4. Нажмите на него и выберите режим «Передача файлов» (MTP).

    3. Как открыть файлы

    После выбора режима «Передача файлов» на телефоне:

    1. Откройте ваш стандартный файловый менеджер (Nautilus, Dolphin, Thunar).
    2. В боковой панели слева (в разделе «Устройства» или «Компьютер») появится пункт Mi A3.
    3. Кликните на него — вы увидите «Внутренний общий накопитель».

    Что делать, если телефон всё равно не виден?

    • Попробуйте другой порт/кабель: Android-устройства очень чувствительны к качеству кабеля. Используйте оригинальный кабель.
    • Разблокировка экрана: Debian не сможет получить доступ к файлам, пока экран телефона заблокирован графическим ключом или паролем.
    • Конфликт с ADB: Если у вас включена «Отладка по USB» в настройках разработчика, иногда это мешает режиму MTP. Попробуйте временно её выключить.
    Debian и Ubuntu

  • Wiki.js - установка и настройка на Debian
    A Admin

    ВНИМАНИЕ ! Инструкция не проверена


    Подробная инструкция по установке и настройке Wiki.js на Debian 12/13 с использованием Docker

    Эта инструкция основана на анализе распространенных проблем и рекомендаций из обсуждений по установке Wiki.js в Docker. Мы сосредоточимся на стабильной версии Wiki.js 2.x (актуальной на декабрь 2025 года), использовании PostgreSQL как базы данных, настройке прав доступа для избежания ошибок типа EACCES, интеграции с Nginx для HTTPS и поддержке русского языка. Установка будет проводиться в защищенной среде с учетом лучших практик 2025 года.

    Wiki.js — это современная вики-система на Node.js, идеальная для многоуровневой документации, включая поддержку кириллицы в путях и навигации. Мы используем Docker для изоляции и простоты управления.

    Важные предупреждения:

    • Убедитесь, что у вас есть домен (например, wiki.example.com), настроенный на IP вашего сервера.
    • Все команды выполняйте от пользователя с sudo-доступом.
    • Если вы на Debian 13 (Trixie), инструкции аналогичны Debian 12 (Bookworm), но проверьте обновления пакетов.
    • Перед началом обновите систему: sudo apt update && sudo apt upgrade -y.

    1. Предварительные требования

    • Сервер: Debian 12 или 13 с минимум 2 ГБ RAM и 20 ГБ SSD (рекомендуется VPS или dedicated server).
    • Пакеты: Установите необходимые зависимости:
      sudo apt install -y curl git ca-certificates gnupg lsb-release
      
    • Firewall: Разрешите порты 80 (HTTP), 443 (HTTPS) и 3000 (временно для Wiki.js):
      sudo ufw allow 80/tcp
      sudo ufw allow 443/tcp
      sudo ufw allow 3000/tcp  # Удалите после настройки Nginx
      sudo ufw reload
      
    • Домен и DNS: Настройте A-запись для вашего домена на IP сервера.

    2. Установка Docker и Docker Compose

    Docker — ключевой компонент для запуска Wiki.js в контейнере. Установите официальную версию:

    1. Добавьте репозиторий Docker:

      sudo mkdir -p /etc/apt/keyrings
      curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
      echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
      sudo apt update
      
    2. Установите Docker:

      sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
      
    3. Запустите и добавьте в автозагрузку:

      sudo systemctl start docker
      sudo systemctl enable docker
      
    4. Добавьте вашего пользователя в группу docker (чтобы избежать sudo для docker-команд):

      sudo usermod -aG docker $USER
      newgrp docker  # Или перелогиньтесь
      

    Проверьте: docker --version и docker compose version (должно быть v2+).

    3. Подготовка директорий и конфигурации

    Создайте директорию для Wiki.js (рекомендуем /opt/wikijs для системности):

    sudo mkdir -p /opt/wikijs/{data,backup,postgres,config}
    cd /opt/wikijs
    
    • /opt/wikijs/data: Для данных Wiki.js (страницы, uploads, content).
    • /opt/wikijs/backup: Для бэкапов.
    • /opt/wikijs/postgres: Для данных PostgreSQL.
    • /opt/wikijs/config: Для config.yml (опционально, для ручной правки).

    Настройте права (чтобы избежать EACCES ошибок). Wiki.js в контейнере работает от пользователя с UID 1000 (node), так что:

    sudo chown -R 1000:1000 /opt/wikijs/data /opt/wikijs/backup /opt/wikijs/config
    sudo chmod -R 775 /opt/wikijs/data /opt/wikijs/backup /opt/wikijs/config
    

    4. Создание docker-compose.yml и .env

    Создайте файл docker-compose.yml в /opt/wikijs:

    version: "3.9"
    
    services:
      postgres:
        image: postgres:17-alpine
        container_name: wikijs-postgres
        restart: unless-stopped
        environment:
          POSTGRES_DB: wikijs
          POSTGRES_USER: wikijs
          POSTGRES_PASSWORD: ${WIKIJS_DB_PASS}
        volumes:
          - /opt/wikijs/postgres:/var/lib/postgresql/data
        logging:
          driver: "none"
    
      wiki:
        image: ghcr.io/requarks/wiki:2
        container_name: wikijs
        user: "1000:1000"  # Фиксируем UID/GID для прав
        restart: unless-stopped
        depends_on:
          - postgres
        environment:
          DB_TYPE: postgres
          DB_HOST: postgres
          DB_PORT: 5432
          DB_USER: wikijs
          DB_PASS: ${WIKIJS_DB_PASS}
          DB_NAME: wikijs
          HOME: /wiki/data  # Альтернатива для избежания EACCES на /home/node
        ports:
          - "3000:3000"  # Временно для установки
        volumes:
          - /opt/wikijs/data:/wiki/data
          - /opt/wikijs/backup:/wiki/backup
          - /opt/wikijs/config:/wiki/config  # Опционально
    

    Создайте файл .env для безопасного хранения пароля (замените на сильный пароль):

    WIKIJS_DB_PASS=Sup3rS3cr3tPass2025!
    

    Это предотвращает хранение пароля в compose-файле.

    5. Запуск Wiki.js и начальная настройка

    1. Запустите контейнеры:

      cd /opt/wikijs
      docker compose up -d
      
    2. Проверьте логи (убедитесь, что нет ошибок):

      docker compose logs wiki
      

      Ищите "Database Connection Successful" и отсутствие EACCES.

    3. Откройте в браузере: http://ваш-IP:3000

      • Создайте аккаунт админа (email и пароль).
      • Укажите Site URL: https://wiki.example.com (обязательно с https!).
      • Отключите телеметрию.
      • Нажмите Install.
    4. Если возникнут ошибки EACCES при сохранении страниц:

      • Проверьте права на хосте: ls -ld /opt/wikijs/data (должно быть drwxrwxr-x 1000 1000).
      • Если проблема в /home/node, добавьте в environment: HOME: /wiki/data (как в примере выше).
      • Перезапустите: docker compose down && docker compose up -d.

    6. Настройка Nginx для reverse proxy и HTTPS

    Nginx обеспечит доступ по HTTPS и скроет порт 3000.

    1. Установите Nginx и Certbot:

      sudo apt install -y nginx certbot python3-certbot-nginx
      
    2. Создайте конфиг для вашего домена (/etc/nginx/sites-available/wiki.example.com):

      server {
          listen 80;
          server_name wiki.example.com;
          return 301 https://$server_name$request_uri;
      }
      
      server {
          listen 443 ssl http2;
          server_name wiki.example.com;
      
          ssl_certificate /etc/letsencrypt/live/wiki.example.com/fullchain.pem;
          ssl_certificate_key /etc/letsencrypt/live/wiki.example.com/privkey.pem;
          include /etc/letsencrypt/options-ssl-nginx.conf;
          ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
      
          location / {
              proxy_pass http://127.0.0.1:3000;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
              proxy_set_header X-Forwarded-Host $host;
              proxy_cache off;
              proxy_buffering off;
              proxy_read_timeout 100s;
          }
      
          client_max_body_size 100M;  # Для загрузки больших файлов
      }
      
    3. Активируйте конфиг:

      sudo ln -s /etc/nginx/sites-available/wiki.example.com /etc/nginx/sites-enabled/
      sudo nginx -t  # Проверьте синтаксис
      sudo systemctl restart nginx
      
    4. Получите сертификат Let’s Encrypt:

      sudo certbot --nginx -d wiki.example.com
      
      • Укажите email, согласитесь с условиями.
      • Certbot обновит конфиг автоматически.
    5. Уберите порт 3000 из docker-compose.yml (закомментируйте или удалите строку ports: - "3000:3000").

      docker compose down && docker compose up -d
      

    Теперь Wiki.js доступен по https://wiki.example.com.

    7. Установка русского языка и настройка навигации

    1. Зайдите под админом: Administration > Localization > Language Packs.
    2. Нажмите +, найдите "Russian", скачайте.
    3. Выберите Russian как основной язык, нажмите Apply.
    4. Перезагрузите страницу — интерфейс на русском.

    Для многоуровневой документации:

    • Создавайте страницы с путями вроде /руководство/подраздел/детали (кириллица поддерживается).
    • В Administration > Navigation выберите Custom Navigation для вложенных меню (группы для уровней >2).
    • Если ограничение на 2 уровня: Убедитесь в UTF-8 в базе (в контейнере postgres: docker exec -it wikijs-postgres psql -U wikijs -c "SHOW server_encoding;" — должно быть UTF8).

    8. Настройка бэкапов

    1. В интерфейсе: Administration > Backup > Storage > Local File System.
    2. Укажите путь: /wiki/backup.
    3. Включите ежедневные бэкапы.

    Для автоматического бэкапа базы (cron-скрипт):

    • Создайте скрипт /opt/wikijs/backup.sh:
      #!/bin/bash
      docker exec wikijs-postgres pg_dump -U wikijs wikijs > /opt/wikijs/backup/wikijs-$(date +%Y%m%d).sql
      docker cp wikijs:/wiki/backup/* /opt/wikijs/backup/  # Бэкапы из интерфейса
      find /opt/wikijs/backup -type f -mtime +7 -delete  # Удалять старше 7 дней
      
    • Сделайте исполняемым: chmod +x /opt/wikijs/backup.sh.
    • Добавьте в cron (ежедневно в 02:00): crontab -e
      0 2 * * * /opt/wikijs/backup.sh
      

    9. Обновление и обслуживание

    • Обновите: cd /opt/wikijs && docker compose pull && docker compose up -d --force-recreate.
    • Логи: docker compose logs -f wiki.
    • Очистка: docker system prune -f (удаляет старые образы).

    10. Устранение неисправностей

    • EACCES permission denied: Проверьте права на volumes (chown 1000:1000, chmod 775). Если в логе mkdir '/home/user' — используйте HOME: /wiki/data в environment.
    • JSON.parse error: Очистите кэш: docker exec -it wikijs bash -c "rm -rf /wiki/data/cache/*".
    • Конфликты сохранения: Вторично от EACCES — исправьте права и перезапустите.
    • Бэкапы не сохраняются: Убедитесь в пути /wiki/backup и правах на /opt/wikijs/backup.
    • SELinux/AppArmor (если включено): sudo setenforce 0 (временно), затем настройте правила.
    • Нет данных после перезапуска: Всегда копируйте перед down: docker cp wikijs:/wiki/data /opt/wikijs/data.

    Эта настройка обеспечит стабильную работу Wiki.js для многоуровневой документации на русском языке.

    Wiki.js

  • Wiki.js - установка и настройка на Debian
    A Admin

    Содержание

    Wiki.js

  • Самоподписанный сертификат для Nginx
    A Admin

    Подробная инструкция по добавлению универсального самоподписанного сертификата в Nginx

    Самоподписанный (self-signed) сертификат — это простой и эффективный способ обеспечить HTTPS-соединение для вашего сервера Nginx, особенно в случаях, когда вы работаете без доменного имени (например, по IP-адресу), для внутренних сетей, тестирования или личного использования. Он не требует внешних удостоверяющих центров (CA), но браузеры покажут предупреждение о небезопасности, поскольку сертификат не проверен доверенным CA. Шифрование при этом работает полноценно.

    Эта инструкция основана на стандартных практиках и подходит для большинства дистрибутивов Linux (например, Ubuntu/Debian, CentOS). Предполагается, что Nginx уже установлен и работает. Все команды выполняются с правами root (используйте sudo).

    Предварительные требования

    • Nginx установлен и настроен (проверьте: nginx -v).
    • Доступ к серверу по SSH или консоли.
    • Если у вас несколько серверов или контейнеров (например, с Webmin), сертификат Nginx будет независим от их собственных сертификатов. Nginx будет обрабатывать SSL на внешнем уровне, а внутренний трафик может идти по HTTP.
    • Для доступа по IP: укажите внешний IP в поле Common Name (CN) при генерации, чтобы минимизировать предупреждения в браузере.
    • Если у вас домен, рассмотрите бесплатный сертификат от Let's Encrypt вместо self-signed (но это выходит за рамки инструкции).

    Шаг 1: Создание директории для сертификатов

    Создайте защищенную директорию для хранения сертификата и ключа. Это стандартное место для Nginx.

    sudo mkdir -p /etc/nginx/ssl
    sudo chmod 700 /etc/nginx/ssl
    
    • mkdir -p: создает директорию, если она не существует.
    • chmod 700: обеспечивает доступ только владельцу (root), для безопасности.

    Шаг 2: Генерация самоподписанного сертификата

    Используйте утилиту openssl (обычно предустановлена; проверьте: openssl version). Это создаст ключ и сертификат в одном шаге.

    sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
        -keyout /etc/nginx/ssl/selfsigned.key \
        -out /etc/nginx/ssl/selfsigned.crt
    
    • Параметры объяснения:
      • req -x509: создает самоподписанный сертификат.
      • -nodes: не шифрует ключ паролем (упрощает использование в Nginx).
      • -days 3650: срок действия 10 лет (можно изменить, например, на 365 для 1 года).
      • -newkey rsa:2048: генерирует новый RSA-ключ длиной 2048 бит (рекомендуемая длина для безопасности).
      • -keyout: путь к приватному ключу.
      • -out: путь к сертификату.

    Во время выполнения вас спросят интерактивные вопросы (Subject fields):

    • Country Name (2 letter code): Например, RU (можно пропустить, нажав Enter).
    • State or Province Name: Например, Moscow.
    • Locality Name: Например, Moscow.
    • Organization Name: Например, My Company.
    • Organizational Unit Name: Например, IT.
    • Common Name (CN): Важно! Укажите ваш внешний IP-адрес (например, 203.0.113.50) или домен, если есть. Это должно совпадать с адресом, по которому доступен сервер, чтобы браузер не выдавал дополнительное предупреждение о несоответствии.
    • Email Address: Опционально.

    Если нужно сгенерировать сертификат без вопросов (для автоматизации), добавьте -subj "/CN=your.ip.address".

    Шаг 3: Установка прав доступа

    Приватный ключ должен быть защищен, чтобы избежать утечек.

    sudo chmod 600 /etc/nginx/ssl/selfsigned.key
    
    • chmod 600: только владелец (root) может читать/писать.

    Шаг 4: Настройка конфигурации Nginx

    Добавьте ссылки на сертификат в конфигурационный файл Nginx. Это можно сделать глобально (для всех серверов) или в конкретном server-блоке.

    1. Откройте или создайте конфиг-файл (например, /etc/nginx/conf.d/ssl.conf для глобальной настройки или в /etc/nginx/sites-available/default для конкретного сайта).

    2. Добавьте следующие строки вне server-блоков (для глобального использования) или внутри server-блока:

    ssl_certificate /etc/nginx/ssl/selfsigned.crt;
    ssl_certificate_key /etc/nginx/ssl/selfsigned.key;
    
    • Если сертификат для нескольких портов или серверов: используйте один сертификат для всех (универсальный подход).
    • В server-блоке добавьте listen с SSL:
    server {
        listen 443 ssl;  # Или ваш порт, например 8443 ssl;
        server_name your.ip.address;  # Или _ для wildcard
    
        # Другие настройки, например location / { ... }
    
        ssl_certificate /etc/nginx/ssl/selfsigned.crt;
        ssl_certificate_key /etc/nginx/ssl/selfsigned.key;
    }
    
    • Если вы проксируете трафик (например, на контейнеры с Webmin): используйте proxy_pass http://internal-ip:port; внутри location. SSL терминируется на Nginx, внутренний трафик — HTTP (безопасно в локальной сети).

    Важно: Создайте сертификат до добавления этих строк, иначе Nginx выдаст ошибку при проверке.

    Шаг 5: Проверка и перезагрузка Nginx

    Проверьте конфигурацию на ошибки:

    sudo nginx -t
    
    • Если ошибка "cannot load certificate": проверьте пути к файлам или создайте сертификат заново.

    Перезагрузите Nginx:

    sudo systemctl reload nginx
    
    • Или sudo nginx -s reload (если не используете systemd).

    Шаг 6: Тестирование в браузере

    • Откройте https://your.ip.address:port (например, https://203.0.113.50:8443).
    • Браузер покажет предупреждение: "Соединение не защищено" (NET::ERR_CERT_AUTHORITY_INVALID).
      • Нажмите "Дополнительно" > "Перейти на сайт" (или аналог в вашем браузере).
      • Для постоянного доступа: добавьте исключение в настройках браузера (в Chrome: Settings > Privacy and security > Manage certificates > Import ваш .crt файл).
    • Если доступ по домену: предупреждение будет слабее, если CN совпадает.
    • Проверьте SSL: используйте curl -v https://your.ip.address:port или онлайн-инструменты вроде SSL Labs (но для self-signed тест покажет A-рейтинг с предупреждением о доверии).

    Возможные проблемы и решения

    • Конфликт с другими сертификатами: Не возникает, если они в разных сервисах (например, Webmin использует свой miniserv.pem). Nginx обрабатывает свой сертификат независимо.
    • Предупреждение в браузере не уходит: Нормально для self-signed. Для полного устранения — получите доверенный сертификат (Let's Encrypt для доменов; для IP — ограниченная поддержка с коротким сроком).
    • Nginx не стартует: Проверьте логи (sudo journalctl -u nginx или /var/log/nginx/error.log). Ошибки часто в путях или правах.
    • Доступ по нескольким портам: Один сертификат работает для всех listen с ssl.
    • Обновление сертификата: Когда истечет срок, повторите Шаг 2–5.
    • Безопасность: Self-signed подходит для внутренних/личных сценариев. Для публичного доступа используйте Let's Encrypt.

    Эта инструкция делает настройку универсальной: один сертификат для всего Nginx.

    Nginx

  • Снятие ограничений для Docker в LXC на Debian 13
    A Admin

    Снятие ограничений для Docker в LXC на Ubuntu 24.04


    # Template used to create this container: /usr/share/lxc/templates/lxc-download
    # Parameters passed to the template: --dist debian --release bookworm --arch amd64
    # For additional config options, please look at lxc.container.conf(5)
    
    # Включаем поддержку вложенных контейнеров (nesting)
    lxc.include = /usr/share/lxc/config/nesting.conf
    
    # Отключаем ограничения AppArmor для полной свободы действий
    lxc.apparmor.profile = unconfined
    
    # Разрешаем все устройства (для работы Docker)
    lxc.cgroup.devices.allow = a
    
    # Убираем ограничения на capabilities (полные права для контейнера)
    lxc.cap.drop =
    
    # Разрешаем монтирование системных директорий с правами чтения-записи
    lxc.mount.auto = proc:rw sys:rw
    
    # Distribution configuration
    lxc.include = /usr/share/lxc/config/common.conf
    lxc.arch = linux64
    
    # Container specific configuration
    lxc.rootfs.path = dir:/var/lib/lxc/container_native/rootfs
    lxc.uts.name = container_native
    
    # Network configuration
    lxc.net.0.type = veth
    lxc.net.0.link = lxcbr0
    lxc.net.0.flags = up
    lxc.net.0.hwaddr = 00:16:3e:7f:79:c0
    lxc.net.0.ipv4.address = 10.0.3.170/24
    lxc.net.0.ipv4.gateway = 10.0.3.1
    

    Этот конфиг LXC работает на хосте Ubuntu 24.04 и позволяет нормально запускать Docker с Jitsi внутри контейнера

    Конфиг создаёт привилегированный LXC-контейнер (без lxc.idmap, от root) с Debian 12 внутри. Он включает ключевые настройки для nested контейнеризации (Docker внутри LXC):

    • lxc.include = /usr/share/lxc/config/nesting.conf — включает nesting.
    • lxc.apparmor.profile = unconfined — полностью отключает AppArmor.
    • lxc.cgroup.devices.allow = a — разрешает все устройства.
    • lxc.cap.drop = — сохраняет все capabilities.
    • lxc.mount.auto = proc:rw sys:rw — монтирует /proc и /sys с правами записи.

    На Ubuntu 24.04 этот конфиг работает стабильно, и Docker (включая сложный стек Jitsi с web, prosody, jicofo, jvb) запускается без ошибок. На Debian 13 (или старых версиях) часто возникают проблемы с overlay2, cgroups, сетью или capabilities. Вот подробное объяснение причин.

    1. Более свежее ядро Linux

    • Ubuntu 24.04 использует Linux kernel 6.8 (с возможными обновлениями до новее через HWE).
    • Это обеспечивает отличную поддержку:
      • cgroups v2 (единой иерархии, которую Docker предпочитает по умолчанию).
      • overlayFS (storage driver overlay2 в Docker — самый эффективный).
      • Вложенных namespaces и устройств для nested контейнеров.
    • Docker и Jitsi (особенно JVB с UDP-портами и сетевыми привилегиями) требуют современных фич ядра. На старом ядре (например, 6.1 в базовом Debian) могут быть баги или отсутствовать оптимизации → ошибки при создании контейнеров.

    2. Более лояльный и современный AppArmor

    • Ubuntu активно развивает AppArmor (Canonical — основной контрибьютор). В Ubuntu 24.04 профили для nested контейнеров менее строгие: даже без unconfined многие системные вызовы проходят.
    • nesting.conf в Ubuntu включает улучшения для вложенных контейнеров (лучшая поддержка overlay, cgroups, capabilities).
    • В Debian AppArmor строже и консервативнее → даже с nesting часто блокирует вызовы, нужные Docker (mount namespace, cap_sys_admin для JVB, сетевые операции). Поэтому требуется явное unconfined.
    • На Ubuntu ваш конфиг с unconfined работает, но часто достаточно и без него — система "прощает" больше.

    3. Автоматические улучшения для nested контейнеров в LXC

    • Версия LXC в Ubuntu 24.04 — новее (5.x–6.x с патчами от Canonical).
    • nesting.conf в Ubuntu авто-разрешает многие вещи:
      • Полный доступ к cgroups для Docker.
      • Лучшую работу с устройствами и capabilities.
      • Монтирование /proc и /sys без дополнительных настроек.
    • В Debian nesting менее "щедрый" → нужны дополнительные строки (например, ручное монтирование cgroup2).
    • Ubuntu ориентирована на облака/контейнеры (Canonical продвигает LXD/LXC), поэтому баги с Docker внутри LXC фиксятся быстрее.

    4. Привилегированный режим "из коробки"

    • Контейнер привилегированный (нет idmap) → root внутри имеет почти полные права на хостовом ядре.
    • В комбинации с свежим ядром и AppArmor это даёт Docker всё необходимое:
      • Управление cgroups.
      • Создание overlayFS.
      • NET_ADMIN/SYS_ADMIN для сетей Jitsi.
    • На Debian даже в привилегированном режиме строгий AppArmor и старое ядро могут ограничивать.

    5. Специфика Jitsi в Docker

    • Jitsi требует:
      • UDP-порты (10000/10001) с NET_ADMIN.
      • Много устройств (timerfd, RTC).
      • Полные capabilities для JVB (видеомост).
    • На Ubuntu это проходит гладко благодаря ядру и nesting.
    • На Debian часто падает JVB или web с ошибками "shim task", "mount namespace" или "overlay not supported".

    Итог: Ubuntu 24.04 "заточена" под современную контейнеризацию — свежее ядро, лояльный AppArmor и оптимизированный LXC делают ваш конфиг достаточным. Debian более консервативен и стабилен, но требует дополнительных настроек (как в исправленном конфиге из обсуждения: без privileged-ключа, с ручным cgroup2). Поэтому на Ubuntu всё работает "из коробки", а Jitsi запускается без проблем. Если переходите на Debian-хост — используйте полный исправленный конфиг с монтированием cgroup2.

    LXC

  • Снятие ограничений для Docker в LXC на Debian 13
    A Admin

    ВНИМАНИЕ ! Инструкция не проверена


    Снятие ограничений для Docker в LXC на Debian 13


    Полная инструкция по адаптации LXC для установки и запуска Docker внутри контейнера на хосте Debian 13


    В отличие от Ubuntu 24.04, где Docker работает "из коробки" благодаря более свежим настройкам ядра, AppArmor и LXC, на Debian 13 требуется специальная конфигурация для поддержки вложенных контейнеров (nesting). Это включает отключение ограничений AppArmor, разрешение устройств и capabilities, а также правильное монтирование файловых систем для cgroups и overlayFS, которые необходимы Docker.

    Инструкция охватывает создание привилегированного LXC-контейнера с Debian 12 (bookworm) внутри, настройку для полной совместимости с Docker и рекомендации по установке Docker. Контейнер будет настроен как привилегированный (автоматически, без явного ключа lxc.privileged, который не поддерживается в LXC на Debian 13). Это позволит запускать Docker-контейнеры без ошибок, связанных с cgroups, overlay, сетью или capabilities.

    Важные предупреждения:

    • Такие настройки снижают безопасность (включая nesting и unconfined AppArmor), поэтому используйте только для доверенных сред. Избегайте в продакшене без дополнительных мер (например, SELinux или ограниченных capabilities).
    • Тестируйте на чистой системе. Если у вас уже есть контейнер, создайте новый для чистоты.
    • Хост: Debian 13 (Trixie). Гость: Debian 12 (Bookworm, amd64).
    • Docker внутри LXC требует ядра хоста ≥ 6.1 с поддержкой overlayFS и cgroups v2. Проверьте: uname -r (должно быть ≥ 6.1) и grep -i overlay /proc/filesystems (должно показать "nodev overlay").

    Шаг 1: Подготовка хоста (Debian 13)

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

      sudo apt update
      sudo apt install lxc lxc-templates bridge-utils
      
      • Это установит LXC версии ~5.x–6.x, типичной для Debian 13.
      • Если нужно, настройте мост lxcbr0 (обычно создается автоматически при установке LXC).
    2. Проверьте поддержку ядра:

      • Версия ядра: uname -r (должна быть 6.1+).
      • Поддержка overlay: grep -i overlay /proc/filesystems (если нет, обновите ядро: sudo apt install linux-image-amd64 и перезагрузите).
      • cgroups v2: ls /sys/fs/cgroup (должны быть файлы unified или cgroup2).
    3. Настройте сетевой мост (если не настроен):

      • Редактируйте /etc/network/interfaces или используйте systemd-networkd.
      • Пример для lxcbr0:
        sudo apt install bridge-utils
        sudo brctl addbr lxcbr0
        sudo ip addr add 10.0.3.1/24 dev lxcbr0
        sudo ip link set lxcbr0 up
        
      • Для постоянства добавьте в /etc/network/interfaces:
        auto lxcbr0
        iface lxcbr0 inet static
            address 10.0.3.1/24
            bridge_ports none
            bridge_fd 0
            bridge_maxwait 0
        

    Шаг 2: Создание LXC-контейнера

    Команда для создания контейнера:

    sudo lxc-create -t download -n container_jitsi -- --dist debian --release bookworm --arch amd64
    
    • Достаточно ли этой команды? Да, полностью достаточно для создания базового контейнера. Она скачает шаблон Debian 12 (bookworm) для amd64, создаст rootfs в /var/lib/lxc/container_jitsi/rootfs и сгенерирует базовый config в /var/lib/lxc/container_jitsi/config. После этого контейнер готов к редактированию и запуску. Нет нужды в дополнительных флагах — привилегированный режим достигается автоматически (без lxc.idmap), если контейнер создается от root.

    • Если возникнут ошибки (например, нет интернета), проверьте прокси или зеркала в /etc/lxc/default.conf.

    Шаг 3: Редактирование конфигурации LXC для поддержки Docker

    Откройте файл /var/lib/lxc/container_jitsi/config в редакторе (например, sudo nano /var/lib/lxc/container_jitsi/config) и замените его содержимое на следующее. Это адаптированный конфиг из обсуждения, оптимизированный для Debian 13: включена nesting, отключены ограничения, добавлено монтирование cgroup2 для Docker.

    # --- Автозагрузка контейнера ---
    lxc.start.auto = 1
    lxc.start.order = 100
    
    # --- Включаем базовые конфиги и поддержку nested контейнеров ---
    lxc.include = /usr/share/lxc/config/common.conf
    lxc.include = /usr/share/lxc/config/nesting.conf
    lxc.arch = linux64
    
    # --- Полное отключение AppArmor (критично для Debian, чтобы избежать ошибок с Docker и Jitsi) ---
    lxc.apparmor.profile = unconfined
    
    # --- Разрешить все устройства (для Docker и Jitsi) ---
    lxc.cgroup.devices.allow = a
    
    # --- Не отбрасывать capabilities (полные права для Docker) ---
    lxc.cap.drop =
    
    # --- Корневая файловая система и имя контейнера ---
    lxc.rootfs.path = dir:/var/lib/lxc/container_jitsi/rootfs
    lxc.uts.name = container_jitsi
    
    # --- Автомонтирование системных директорий с правами rw ---
    lxc.mount.auto = proc:rw sys:rw
    
    # --- Монтирование cgroup2 (обязательно для cgroups v2 в Docker на Debian) ---
    lxc.mount.entry = /sys/fs/cgroup sys/fs/cgroup none bind,create=dir 0 0
    
    # --- Сетевые настройки ---
    lxc.net.0.type = veth
    lxc.net.0.link = lxcbr0
    lxc.net.0.flags = up
    lxc.net.0.hwaddr = 00:16:3a:12:34:50  # Замените на уникальный MAC, если нужно
    lxc.net.0.ipv4.address = 10.0.3.140/24  # Статический IP, измените по необходимости
    lxc.net.0.ipv4.gateway = 10.0.3.1
    

    Объяснение ключевых настроек (почему они нужны на Debian 13):

    • lxc.include = /usr/share/lxc/config/nesting.conf: Включает поддержку вложенных контейнеров (namespaces, overlayFS, cgroups). Без этого Docker не запустится.
    • lxc.apparmor.profile = unconfined: Отключает AppArmor, который на Debian строже, чем на Ubuntu, и блокирует системные вызовы для Docker (например, для Jitsi Video Bridge). Альтернатива generated не работает стабильно.
    • lxc.cgroup.devices.allow = a: Разрешает все устройства — Docker и Jitsi используют random устройства (timerfd, netlink).
    • lxc.cap.drop =: Убирает ограничения на capabilities (SYS_ADMIN, NET_ADMIN и т.д.), иначе Docker не сможет создавать сети или mount.
    • lxc.mount.auto = proc:rw sys:rw: Монтирует /proc и /sys с правами записи — нужно для Docker.
    • lxc.mount.entry = /sys/fs/cgroup ...: Исправляет монтирование cgroup2, без чего Docker падает на Debian.
    • Нет lxc.privileged = 1: Этот ключ не поддерживается в LXC на Debian (выдаст ошибку). Привилегированный режим автоматический, если нет idmap.
    • Сеть: veth с мостом lxcbr0 — стандартно для изоляции, но Docker внутри сможет создавать свои сети.

    Сохраните файл и проверьте синтаксис: sudo lxc-info -n container_jitsi (должен показать stopped).

    Шаг 4: Запуск и проверка LXC-контейнера

    1. Запустите контейнер:

      sudo lxc-start -n container_jitsi
      
      • Если ошибки, проверьте логи: sudo lxc-info -n container_jitsi --stats или /var/log/lxc/container_jitsi.log.
    2. Войдите в контейнер:

      sudo lxc-attach -n container_jitsi
      
      • Вы окажетесь в root-шелле Debian 12 внутри.
    3. Проверьте внутри:

      • uname -r: Должно показать ядро хоста (Debian 13).
      • ls /sys/fs/cgroup: Должно быть смонтировано правильно.

    Шаг 5: Установка Docker внутри LXC-контейнера

    Внутри контейнера (после lxc-attach😞

    1. Обновите систему:

      apt update && apt upgrade -y
      
    2. Установите Docker:

      apt install -y ca-certificates curl
      install -m 0755 -d /etc/apt/keyrings
      curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
      chmod a+r /etc/apt/keyrings/docker.asc
      echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian bookworm stable" > /etc/apt/sources.list.d/docker.list
      apt update
      apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
      
    3. Запустите Docker:

      systemctl start docker
      systemctl enable docker
      
    4. Проверьте Docker:

      docker run hello-world
      
      • Если работает — nesting настроено правильно.
      • Проверьте storage driver: docker info | grep Storage (должен быть overlay2).
      • Если ошибки (overlay not supported), проверьте ядро хоста.

    Шаг 6: Установка Jitsi в Docker (опционально, на основе обсуждения)

    Если цель — Jitsi, используйте docker-compose.yml из обсуждения. Внутри контейнера:

    1. Установите docker-compose: apt install docker-compose.
    2. Создайте .env и docker-compose.yml (скопируйте из #11–#12 в обсуждении).
    3. Для порта 10001 UDP вместо 10000:
      • В .env: JVB_PORT=10001 и JVB_PORT_UDP=10001.
      • В docker-compose.yml: ports: - '${JVB_PORT:-10001}:${JVB_PORT:-10001}/udp'.
      • Запустите: docker compose up -d.
      • Откройте порт: ufw allow 10001/udp (на хосте и в NAT).

    Шаг 7: Диагностика и отладка

    • Логи LXC: sudo lxc-console -n container_jitsi или journalctl на хосте.
    • Логи Docker внутри: journalctl -u docker или docker logs <container>.
    • Если ошибки:
      • Overlay: Проверьте ядро.
      • cgroups: Добавьте lxc.cgroup2.devices.allow = a (если не помогает).
      • AppArmor: Убедитесь в unconfined.
    • Для безопасности: После теста ограничьте capabilities (например, lxc.cap.drop = mac_admin mac_override).

    Эта конфигурация гарантирует работу Docker как на Ubuntu 24.04.

    LXC
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 17
  • 18
  • 4 / 18
  • Войти

  • Login or register to search.
Powered by NodeBB Contributors
  • Первое сообщение
    Последнее сообщение
0
  • Категории
  • Последние
  • Метки
  • Популярные
  • World
  • Пользователи
  • Группы