Созданный: 2026/06/30 13:24:48 America/Chicago
К: admin

Что устанавливает это руководство

Это руководство устанавливает Verlihub с официального сайта. Verlihub/verlihub дерево исходного кода на сервере Ubuntu. Он компилирует хаб-сервер NMDC с CMake, сохраняет данные хаба под /var/lib/verlihub, использует MariaDB для таблиц хаба и запускает хаб через службу systemd.

Используйте статью Docker, если вы хотите изолировать контейнер. Используйте эту статью Ubuntu, если хаб должен работать непосредственно на VPS, выделенном сервере или аппаратном компьютере.

План сервера перед установкой

  • Выберите общедоступное DNS-имя для хаба, например hub.example.org.
  • Выберите порт NMDC. Порт 411/tcp является традиционным. Verlihub может безопасно связать его через systemd без запуска от имени root. Порт 4111/tcp это более простая альтернатива, если вам не нужен исторический порт.
  • Решите, будет ли эта первая установка состоять только из NMDC. Добавьте NMDCS после того, как простой хаб станет стабильным.
  • Сохраните одну учетную запись Linux для службы: verlihub.
  • Оставьте одну базу данных MariaDB и пользователя: verlihub.
  • Прежде чем запускать мастер, запишите псевдоним и пароль главного хаба.

Установите пакеты Ubuntu

В официальных примечаниях по установке перечислены клиентские библиотеки GCC, CMake, MySQL, OpenSSL, ICU, Make, ZLib, PCRE, GetText, MaxMindDB, LibIntl, потоки, динамическая загрузка, Lua и Dialog. На Ubuntu сначала установите соответствующие пакеты.

 sudo apt update
sudo apt install -y \
    build-essential \
    ca-certificates \
    cmake \
    default-libmysqlclient-dev \
    default-mysql-client \
    dialog \
    gettext \
    git \
    libasprintf-dev \
    libicu-dev \
    liblua5.2-dev \
    libmaxminddb-dev \
    libpcre3-dev \
    libssl-dev \
    make \
    mariadb-server \
    pkg-config \
    zlib1g-dev 

Запустите MariaDB и убедитесь, что он возвращается после перезагрузки.

 sudo systemctl enable --now mariadb
sudo systemctl status mariadb 

Создайте пользователя Verlihub Linux

Запустите Verlihub от имени своего непривилегированного пользователя. Не запускайте хаб как root.

 sudo adduser --system --group --home /var/lib/verlihub --shell /bin/bash verlihub
sudo install -d -o verlihub -g verlihub /var/lib/verlihub
sudo install -d -o verlihub -g verlihub /var/log/verlihub 

verlihub пользователь должен владеть только файлами времени выполнения. Храните исходные файлы под /usr/local/src/verlihub, хранить двоичные файлы под /usr/local и оставьте администрирование базы данных под MariaDB. Сервисному аккаунту необходим доступ на запись к /var/lib/verlihub и /var/log/verlihub; ему не нужен доступ sudo.

Использовать sudo в качестве администратора сервера для установки пакетов, компиляции двоичного файла и создания модуля systemd. Запустите сам процесс хаба как verlihub. Это разделение имеет значение, поскольку хаб принимает ненадежный общедоступный трафик от клиентов DC++.

Создайте базу данных MariaDB

Создайте базу данных и пользователя перед запуском vh --install. Используйте реальный пароль вместо значения, приведенного в примере.

 sudo mariadb 
 CREATE DATABASE verlihub CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'verlihub'@'localhost' IDENTIFIED BY 'change-this-password';
GRANT ALL PRIVILEGES ON verlihub.* TO 'verlihub'@'localhost';
FLUSH PRIVILEGES;
EXIT; 

Убедитесь, что пользователь приложения может войти в систему.

 mariadb -u verlihub -p verlihub 

Загрузите исходный код Verlihub

Сборка из официального репозитория GitHub. Храните исходные файлы под /usr/local/src поэтому дерево сборки отделено от данных времени выполнения хаба.

 sudo install -d -o "$USER" -g "$USER" /usr/local/src/verlihub
git clone https://github.com/Verlihub/verlihub.git /usr/local/src/verlihub
cd /usr/local/src/verlihub 

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

Скомпилируйте и установите Verlihub

Восходящий путь установки использует mkdir build, cmake .., make, make install, и ldconfig. Команда ниже устанавливает Verlihub в /usr/local.

 mkdir -p build
cd build
cmake .. \
    -DCMAKE_INSTALL_PREFIX=/usr/local \
    -DUSE_TLS_PROXY=OFF \
    -DUSE_FEARTLS_PROXY=OFF
make -j"$(nproc)"
sudo make install
sudo ldconfig 

Отключите параметры прокси-сервера TLS при первом запуске, если у вас еще нет зависимости от прокси-сервера, сертификатов, правил брандмауэра и тестового клиента, готового для NMDCS.

Запустите vh --install

vh helper записывает конфигурацию Verlihub, создает или обновляет таблицы хаба и сохраняет первые настройки хаба. Запустите его как verlihub Пользователь Linux, сгенерированные таким образом файлы, принадлежат учетной записи службы.

 sudo -iu verlihub
vh --install 
Поле мастераИспользуйте это значениеПричина
Папка конфигурации /var/lib/verlihub Принадлежит verlihub пользователь услуги.
Хост базы данных localhost MariaDB работает на том же сервере Ubuntu.
Имя базы данных verlihub Соответствует базе данных, созданной выше.
Пользователь базы данных verlihub Соответствует пользователю MariaDB, созданному выше.
Пароль базы данныхВаш пароль MariaDBПозволяет Verlihub читать и записывать таблицы хабов.
Адрес хабаВаше общедоступное DNS-имяЭто адрес, который должны публиковать клиенты и hublists.
Порт-хаб 411, 4111 или выбранный вами портДолжно соответствовать systemd, правилам брандмауэра и маршрутизатора.
Главный пользовательВаш никнейм оператораСоздает первую учетную запись с доступом к администрированию хаба.

Если мастер запрашивает учетные данные администратора MariaDB, используйте локальную учетную запись администратора MariaDB. Во многих установках Ubuntu это означает выполнение администрирования базы данных через sudo mariadb вместо входа в систему root на основе пароля.

Проверьте хаб на переднем плане

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

 vh --run /var/lib/verlihub 

Откройте второй терминал и, если возможно, проверьте порт с другого компьютера. Остановите процесс переднего плана с помощью Ctrl+C после того как хаб запускается чисто.

Запустите порт 411 без sudo

Linux обычно резервирует порты ниже 1024 для привилегированных процессов. Не решайте эту проблему, запустив Verlihub с помощью sudo vh --run. Предоставьте службе только те возможности привязки, которые ей необходимы.

В приведенном ниже блоке systemd используется AmbientCapabilities=CAP_NET_BIND_SERVICE и CapabilityBoundingSet=CAP_NET_BIND_SERVICE. Это позволяет verlihub привязка пользователя 411/tcp в то время как процесс все еще работает без привилегий root. Если вы используете 4111/tcp, вы можете удалить эти две строки возможностей.

Избегайте глобального sysctl net.ipv4.ip_unprivileged_port_start=0 для этой работы. Он меняет политику малого количества портов для каждого процесса на сервере. Избегать setcap в двоичном файле Verlihub, если только вы не полностью контролируете обновления, поскольку установка пакета или исходного кода может заменить файл и лишить возможности.

Создайте сервис systemd

Создайте служебный файл, чтобы Ubuntu запускал Verlihub после загрузки, перезапускал его после сбоя и ограничивал пользователя во время выполнения файлами хаба.

 sudo tee /etc/systemd/system/verlihub.service >/dev/null <<'EOF'
[Unit]
Description=Verlihub NMDC hub server
After=network-online.target mariadb.service
Wants=network-online.target

[Service]
Type=simple
User=verlihub
Group=verlihub
WorkingDirectory=/var/lib/verlihub
ExecStart=/usr/local/bin/vh --run /var/lib/verlihub
AmbientCapabilities=CAP_NET_BIND_SERVICE
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
ReadWritePaths=/var/lib/verlihub /var/log/verlihub
Restart=on-failure
RestartSec=5
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF 
 sudo systemctl daemon-reload
sudo systemctl enable --now verlihub
sudo systemctl status verlihub
journalctl -u verlihub -f 

Откройте порт-хаб

Если UFW включен, откройте настроенный вами порт хаба. Также проверьте панель брандмауэра у вашего провайдера VPS.

 sudo ufw allow 411/tcp comment 'Verlihub NMDC'
# Or, if you configured 4111 instead:
sudo ufw allow 4111/tcp comment 'Verlihub NMDC alternate'
sudo ufw status numbered 

Для домашнего сервера перенаправьте тот же TCP-порт маршрутизатора на компьютер Ubuntu. Для NMDCS добавляйте безопасный порт только после настройки и тестирования TLS.

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

ПроверятьКомандаЧто искать
Состояние службы systemctl status verlihub active (running).
Журналы хаба journalctl -u verlihub -n 100 Никаких ошибок входа в базу данных или ошибок привязки порта.
Статус хаба sudo -iu verlihub vh --status /var/lib/verlihub Помощник может прочитать конфигурацию хаба.
Пользователь услуги systemctl show verlihub -p User -p Group -p NoNewPrivileges Об этом сообщает служба. User=verlihub и NoNewPrivileges=yes.
Возможности с низким портом systemctl show verlihub -p AmbientCapabilities -p CapabilityBoundingSet CAP_NET_BIND_SERVICE присутствует, когда хаб прослушивает 411/tcp.
Порт-хаб ss -ltnp | grep -E ':411|:4111' Прослушивающий TCP-сокет на настроенном порту.
Резервное копирование базы данных mariadb-dump -u verlihub -p verlihub > verlihub.sql Файл дампа существует до изменения плагинов или обновления.

Этикет хостинга для публичного хаба

  • Опубликуйте один доступный адрес. Используйте DNS-имя и порт, которые клиенты должны хранить в избранном, и hublists. Не отправляйте временные IP-адреса, мертвые перенаправления или несколько имен для одного и того же хаба, если они не обслуживают разные протоколы.
  • Сохраняйте MOTD полезным. Укажите адрес хаба, безопасный адрес, если он доступен, правила, команду регистрации, контактную информацию оператора и сайт поддержки. Пользователям не нужно гадать, как зарегистрироваться или кому принадлежит хаб.
  • Не подделывайте статистику хаба. Общедоступный hublists работает лучше всего, когда пользователи, общий ресурс, протокол, программное обеспечение и тема соответствуют реальному состоянию хаба.
  • Держите журналы конфиденциальными и чередуйтесь. Журналы предназначены для обработки злоупотреблений и устранения неполадок. Не публикуйте IP-адреса пользователей, личные сообщения или регистрационные данные на общедоступных страницах. Настройте ротацию журналов перед первой загруженной неделей.
  • Пропатчить хост. Применяйте обновления безопасности Ubuntu, сохраняйте поддержку MariaDB и тестируйте обновления Verlihub на копии базы данных перед заменой рабочих двоичных файлов.
  • Ограничьте открытые порты. Публикуйте порт хаба и любой проверенный безопасный порт хаба. Держите MariaDB в тайне. Ограничьте SSH IP-адресами администратора, если ваш провайдер поддерживает это.
  • Установите простые правила. Укажите, что запрещено, как операторы справляются со спамом или незаконным контентом и что происходит с ботами, которые заполонили поиск или чат.
  • Сделайте резервную копию перед экспериментами. Сохранять /var/lib/verlihub и базу данных MariaDB перед изменением плагинов, сценариев Lua, настроек локали или разрешений класса.

Процедура обновления и резервного копирования

Сделайте резервную копию базы данных и /var/lib/verlihub перед заменой двоичных файлов.

 sudo -iu verlihub tar czf /tmp/verlihub-files-$(date +%F).tar.gz /var/lib/verlihub
mariadb-dump -u verlihub -p verlihub > verlihub-db-$(date +%F).sql
cd /usr/local/src/verlihub
git pull
cd build
cmake ..
make -j"$(nproc)"
sudo systemctl stop verlihub
sudo make install
sudo ldconfig
sudo systemctl start verlihub 

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

Распространенные проблемы

  • vh --install не могу подключиться к MariaDB. Проверьте имя базы данных, пользователя, пароль и прослушивает ли MariaDB локально.
  • Служба запускается и завершает работу. Читать journalctl -u verlihub -n 100. Большинство ошибок при первом запуске связаны с учетными данными базы данных, отсутствием файлов конфигурации или уже используемым портом.
  • Тайм-аут клиентов. Проверьте UFW, брандмауэр VPS, переадресацию портов NAT и порт прослушивания Verlihub.
  • Порт 411 не работает для verlihub пользователь. Проверьте строки возможностей systemd, затем запустите sudo systemctl daemon-reload и sudo systemctl restart verlihub. Не запускайте хаб с помощью sudo.
  • Текст чата искажен. Сопоставьте языковой стандарт хаба, кодировку базы данных и кодировку клиента, используемые вашим сообществом.
  • NMDCS пока недоступен. Создайте и настройте поддерживаемый путь прокси-сервера TLS отдельно. Обычный NMDC должен работать до добавления безопасного доступа к хабу.