Установка PowerDNS · 13 min read · Sep 08, 2025

Как установить PowerDNS и PowerAdmin на Rocky Linux

PowerDNS — это бесплатное и открытое программное обеспечение DNS-сервера. Его можно использовать как авторитетный сервер имен и DNS-рекурсор. PowerDNS написан на C++ и поддерживает несколько операционных систем, включая BSD, Linux и macOS.

PowerDNS — это высококачественный и высокопроизводительный DNS-сервер, который поддерживает несколько типов бэкендов, таких как BIND и RDBMS, такие как MySQL/MariaDB, PostgreSQL и Oracle.

Сервер PowerDNS обладает высокой производительностью и может обрабатывать десятки тысяч одновременных запросов, поддерживает DNSSEC и предоставляет высокую степень скриптования с помощью Lua.

В этом руководстве мы покажем вам, как установить PowerDNS и PowerDNS-Admin на систему Rocky Linux. Мы запустим PowerDNS с бэкендом базы данных MySQL/MariaDB и настроим PowerDNS-Admin, который будет использоваться как веб-инструмент управления для сервера PowerDNS.

Это руководство также показывает установку пакетов Python для проектов на основе Flask и конфигурацию Nginx и Gunicorn, которые будут использоваться как обратный прокси для веб-приложения PowerDNS-Admin.

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

Для начала работы с этим руководством вам понадобятся следующие требования:

  • Сервер Rocky Linux - Вы можете использовать Rocky Linux v8 или v9.
  • Непривилегированный пользователь с правами администратора sudo/root.

Установка и настройка сервера базы данных MariaDB

PowerDNS — это масштабируемое программное обеспечение DNS-сервера, которое поддерживает несколько бэкендов, таких как PostgreSQL, MariaDB/MySQL и SQLite. Для крупных развертываний вам следует рассмотреть возможность использования PostgreSQL или MySQL/MariaDB в качестве бэкенда базы данных.

Теперь вы начнете с установки и настройки базы данных MariaDB на сервере Rocky Linux. Вы настроите PowerDNS с MariaDB в качестве бэкенда базы данных.

Стандартный репозиторий Rocky Linux предоставляет несколько версий пакетов сервера MariaDB. Выполните команду dnf ниже, чтобы установить сервер базы данных MariaDB.

sudo dnf install mariadb-server

Когда будет предложено подтвердить, введите y для подтверждения и нажмите ENTER, чтобы продолжить.

установка mariadb

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

sudo systemctl start mariadb  
sudo systemctl enable mariadb

Теперь сервер MariaDB должен работать и быть включенным. Выполните следующую команду, чтобы проверить службу MariaDB и убедиться, что служба работает.

sudo systemctl status mariadb

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

запуск включение проверка mariadb

Теперь, когда сервер MariaDB работает, вы настроите и защитите установку MariaDB с помощью инструмента командной строки ‘mysql_secure_installation’.

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

sudo mysql_secure_installation

Вам будет предложено выполнить некоторые настройки сервера MariaDB.

  • Установить пароль root для MariaDB? Введите y для подтверждения и введите новый пароль для вашего сервера MariaDB, затем повторите пароль.
  • Отключить удаленный вход для пользователя root MariaDB? Введите y для подтверждения и отключите его.
  • Удалить анонимного пользователя по умолчанию из MariaDB? Введите y для подтверждения.
  • Удалить тестовую базу данных по умолчанию из MariaDB? Введите y снова для подтверждения.
  • Наконец, перезагрузить привилегии таблиц, чтобы применить новые изменения? Введите y для подтверждения, и MariaDB перезагрузит все привилегии и применит новые настройки.

Теперь, когда вы защитили развертывание MariaDB, вы настроите новую базу данных MariaDB и пользователя для PowerDNS.

Для начала выполните команду mysql ниже, чтобы войти в оболочку MariaDB как пользователь root MariaDB.

sudo mysql -u root -p

Когда будет запрошен пароль, введите пароль вашего пользователя root MariaDB.

Затем выполните следующие запросы, чтобы создать новую базу данных MariaDB и пользователя. В этом примере вы создадите новую базу данных pdns с пользователем pdnsadmin и паролем ‘ password ‘.

CREATE DATABASE pdns;  
GRANT ALL ON pdns.* TO pdnsadmin@localhost IDENTIFIED BY 'password';  
FLUSH PRIVILEGES;

создание базы данных и пользователя

Теперь выполните следующие запросы, чтобы проверить привилегии пользователя MariaDB pdnsadmin@localhost. Это покажет вам список привилегий для пользователя MariaDB pdnsadmin@localhost.

SHOW GRANTS FOR pdnsadmin@localhost;

Вы увидите следующий вывод - У пользователя MariaDB pdnsadmin@localhost есть привилегии на базу данных PowerDNS pdns.

показать привилегии пользователя

Теперь введите ‘ quit ‘, чтобы выйти из оболочки MariaDB.

С сервером MariaDB, работающим, вы установите и настроите сервер PowerDNS с бэкендом базы данных MariaDB.

Установка и настройка PowerDNS

После установки сервера базы данных MariaDB вы теперь установите сервер PowerDNS и настроите PowerDNS с бэкендом базы данных MariaDB.

Для операционных систем на базе RHEL PowerDNS доступен в репозитории EPEL. Поэтому перед установкой PowerDNS вам необходимо добавить репозиторий EPEL в вашу систему.

Выполните следующую команду dnf, чтобы установить репозиторий EPEL.

sudo dnf install epel-release -y

После добавления репозитория EPEL выполните следующую команду dnf, чтобы установить PowerDNS и бэкенд PowerDNS MySQL.

sudo dnf install pdns pdns-backend-mysql

Когда будет предложено подтвердить, введите y для подтверждения и нажмите ENTER, чтобы продолжить.

установка powerdns

После завершения установки PowerDNS выполните следующую команду mysql, чтобы импортировать схему базы данных для PowerDNS. Следующая команда импортирует схему базы данных через пользователя MariaDB pdnsadmin в базу данных pdns.

sudo mysql -u pdnsadmin -p pdns < /usr/share/doc/pdns/schema.mysql.sql

Введите пароль для пользователя pdnsadmin и нажмите ENTER, чтобы подтвердить и продолжить.

Затем отредактируйте конфигурацию PowerDNS ‘/etc/pdns/pdns.conf’ с помощью следующей команды редактора nano.

sudo nano /etc/pdns/pdns.conf

Распакуйте конфигурацию бэкенда MariaDB и измените детали имени базы данных, пользователя и пароля. Обязательно используйте правильные данные базы данных MariaDB, которые вы создали.

#################################  
# launch        Which backends to launch and order to query them in  
#  
launch=gmysql  
  
gmysql-host=localhost   
gmysql-user=pdnsadmin   
gmysql-password=password   
gmysql-dbname=pdns

Затем раскомментируйте ‘api’ и измените значение на ‘ yes ‘. Затем раскомментируйте опцию ‘ api-key ‘ и измените ключ по умолчанию. Следующий API PowerDNS будет использоваться для управления сервером PowerDNS через веб-приложение PowerDNS-Admin.

#################################  
# api   Enable/disable the REST API (including HTTP listener)  
#  
api=yes  
  
#################################  
# api-key       Static pre-shared authentication key for access to the REST API  
#  
api-key=CHANGEME

Сохраните файл и выйдите из редактора, когда закончите.

После настройки сервера PowerDNS выполните следующую команду, чтобы проверить конфигурацию PowerDNS.

pdns_server --daemon=no --guardian=no --loglevel=9

Вы увидите вывод, подобный следующему - Соединение PowerDNS с бэкендом базы данных MariaDB успешно, теперь вы можете нажать ‘Ctrl+c’, чтобы завершить процесс.

проверка соединения с базой данных

Теперь выполните следующую команду systemctl, чтобы запустить и включить службу PowerDNS.

sudo systemctl start pdns  
sudo systemctl enable pdns

Наконец, проверьте службу PowerDNS, чтобы убедиться, что PowerDNS работает и включен.

sudo systemctl status pdns

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

проверка службы pdns

На этом этапе вы завершили установку сервера PowerDNS. Далее вы начнете установку PowerDNS-Admin, который будет использоваться как веб-интерфейс управления для сервера PowerDNS.

Установка PowerDNS-Admin

С работающим PowerDNS вы теперь установите и настроите PowerDNS-Admin на сервере Rocky Linux. PowerDNS-Admin — это веб-приложение на основе Python Flask, поэтому установка PowerDNS-Admin довольно похожа на установку веб-фреймворка Flask.

Ниже приведены некоторые шаги, которые вам необходимо выполнить для установки PowerDNS-Admin на Rocky Linux

  • Установка зависимостей пакетов
  • Настройка виртуальной среды Python
  • Установка зависимостей Python
  • Конфигурация PowerDNS-Admin с базой данных MariaDB
  • Генерация схемы базы данных и создание статических файлов

Теперь давайте начнем установку PowerDNS-Admin

Установка зависимостей пакетов

Первый шаг для установки PowerDNS-Admin — это установка зависимостей пакетов, таких как Python3, Pip, Node.js и Yarn.

Перед тем как начать, выполните команду dnf ниже, чтобы включить репозиторий ‘ powertools ‘ на вашей системе Rocky Linux.

sudo dnf config-manager --set-enabled powertools

После включения репозитория ‘powertools’ установите пакеты Python с помощью команды dnf ниже.

sudo dnf install python3 python3-devel python3-pip python3-xmlsec gcc git mariadb-devel openldap-devel xmlsec1-devel xmlsec1-openssl libtool-ltdl-devel

Когда будет предложено подтвердить, введите y и нажмите ENTER, чтобы продолжить.

установка зависимостей python

Затем добавьте репозитории Node.js и Yarn в вашу систему с помощью команды ниже. Пакеты Node.js и Yarn будут использоваться для генерации статических файлов для веб-приложения PowerAdmin. В этом примере используется Node.js v16.

curl -sL https://rpm.nodesource.com/setup_16.x | bash -  
curl -sL https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo

настройка репозитория

После добавления репозиториев выполните команду dnf ниже, чтобы установить менеджер пакетов Node.js и Yarn.

sudo dnf install nodejs yarn

Введите y и нажмите ENTER, когда будет предложено для установки.

установка nodejs

Также, когда будет предложено подтвердить ключ GPG, введите y и нажмите ENTER.

импорт gpg ключа

Затем выполните команду pip3 ниже, чтобы обновить пакет Python pip и установить virtualenv в вашу систему.

pip3 install -U pip  
pip3 install -U virtualenv

Python pip и virtualenv теперь будут установлены в директории ‘ /usr/local/bin ‘. Добавьте директорию ‘ /usr/local/bin ‘ в переменную окружения $PATH системы с помощью команды ниже.

echo "export PATH="/usr/local/bin:$PATH"" >> ~/.bashrc

Теперь примените новые изменения в файле ‘ ~/.bashrc’ с помощью команды ниже. Теперь вы должны запустить команды ‘ pip ‘ и ‘ virtualenv ‘.

source ~/.bashrc

Настройка виртуальной среды Python

С установленными зависимостями пакетов вы теперь загрузите исходный код PowerDNS-Admin и настроите виртуальную среду Python для PowerDNS-Admin.

Клонируйте исходный код PowerDNS-Admin в директорию ‘/opt/powerdns-admin’ с помощью следующей команды git.

git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /opt/powerdns-admin

После загрузки исходного кода переместите рабочую директорию в ‘ /opt/powerdns-admin ‘ и создайте новую виртуальную среду Python ‘ flask ‘.

cd /opt/powerdns-admin  
virtualenv -p python3 flask

Теперь активируйте виртуальную среду Python ‘ flask ‘ с помощью команды ниже.

source flask/bin/activate

Когда она активирована, вы должны увидеть приглашение, например ‘ (flask) [user@hostname /directory/path]# ‘.

создание virtualenv

С этого момента ваша рабочая среда всегда должна находиться в виртуальной среде Python ‘ flask ‘.

Установка зависимостей Python

После настройки виртуальной среды Python и ее активации вы установите зависимости Python с помощью команды pip.

Выполните следующую команду pip для установки зависимостей Python для PowerDNS-Admin.

pip install python-dotenv  
pip install -r requirements.txt

Теперь установка начнется - Это установит зависимости Python, которые требуются PowerDNS-Admin, которые хранятся в файле ‘ requirements.txt ‘.

установка зависимостей python

Теперь, когда у вас установлены зависимости Python, вы готовы настроить и сконфигурировать PowerDNS-Admin с базой данных MariaDB.

Конфигурация PowerDNS-Admin с базой данных MariaDB

С установленными зависимостями Python вы теперь настроите PowerDNS-Admin с базой данных MariaDB. Данные базы данных для PowerDNS-Admin будут теми же, что и для сервера PowerDNS.

Теперь отредактируйте файл ‘ /opt/powerdns-admin/powerdnsadmin/default_config.py ‘ с помощью следующей команды редактора nano.

nano /opt/powerdns-admin/powerdnsadmin/default_config.py

Измените конфигурацию следующим образом.

SALT = 'RANDOM-GENERATED'  
SECRET_KEY = 'RANDOM-GENERATED'  
BIND_ADDRESS = '0.0.0.0'  
PORT = 9191  
HSTS_ENABLED = False  
OFFLINE_MODE = False  
  
SQLA_DB_USER = 'pdnsadmin'  
SQLA_DB_PASSWORD = 'password'  
SQLA_DB_HOST = '127.0.0.1'  
SQLA_DB_NAME = 'pdns'  
SQLALCHEMY_TRACK_MODIFICATIONS = True

Сохраните файл и выйдите из редактора, когда закончите.

Генерация схемы базы данных и создание статических файлов

После настройки базы данных MariaDB на PowerDNS-Admin вы затем мигрируете базу данных и генерируете статические файлы для PowerDNS-Admin.

Сначала выполните следующую команду, чтобы мигрировать базу данных PowerDNS-Admin. Это вставит новую схему базы данных в базу данных, которая будет использоваться для PowerDNS-Admin.

export FLASK_APP=powerdnsadmin/__init__.py  
flask db upgrade

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

миграция базы данных

После завершения миграции базы данных выполните следующую команду, чтобы сгенерировать статические файлы для PowerDNS-Admin.

yarn install --pure-lockfile  
flask assets build

Ниже вы можете увидеть установку некоторых зависимостей JavaScript через менеджер пакетов yarn и процесс генерации статических файлов для PowerDNS-Admin.

генерация статических файлов

Когда статические файлы сгенерированы, выполните следующую команду, чтобы деактивировать виртуальную среду Python.

deactivate

На этом этапе вы завершили базовую установку PowerDNS-Admin с сервером базы данных MariaDB. Теперь вы можете запустить приложение PowerDNS-Admin через командную строку, но также можете запустить PowerDNS-Admin как службу systemd.

Настройка службы Systemd для PowerDNS-Admin

На этом этапе вы создадите новый файл службы systemd для приложения PowerDNS-Admin. Это позволит вам легко управлять и поддерживать PowerDNS-Admin через команду systemd. Также это упростит конфигурацию PowerDNS-Admin.

Для начала создайте новый файл службы systemd ‘/etc/systemd/system/powerdns-admin.service’ с помощью следующей команды редактора nano.

sudo nano /etc/systemd/system/powerdns-admin.service

Добавьте конфигурацию ниже в файл. С этой конфигурацией вы будете запускать приложение PowerDNS-Admin через gunicorn и запускать его от имени пользователя и группы ‘ pdns ‘. Также PowerDNS-Admin будет запущен с файлом сокета UNIX ‘ /run/powerdns-admin/socket ‘.

[Unit]  
Description=PowerDNS-Admin  
Requires=powerdns-admin.socket  
After=network.target  
  
[Service]  
PIDFile=/run/powerdns-admin/pid  
User=pdns  
Group=pdns  
WorkingDirectory=/opt/powerdns-admin  
ExecStartPre=+mkdir -p /run/powerdns-admin/  
ExecStartPre=+chown pdns:pdns -R /run/powerdns-admin/  
ExecStart=/usr/local/bin/gunicorn --pid /run/powerdns-admin/pid --bind unix:/run/powerdns-admin/socket 'powerdnsadmin:create_app()'  
ExecReload=/bin/kill -s HUP $MAINPID  
ExecStop=/bin/kill -s TERM $MAINPID  
PrivateTmp=true  
  
[Install]  
WantedBy=multi-user.target

Сохраните файл и выйдите из редактора, когда закончите.

Затем создайте новый сокетный файл systemd для PowerDNS-Admin ‘ /etc/systemd/system/powerdns-admin.socket ‘ с помощью следующего редактора nano.

sudo nano /etc/systemd/system/powerdns-admin.socket

Добавьте следующую конфигурацию в файл.

[Unit]  
Description=PowerDNS-Admin socket  
  
[Socket]  
ListenStream=/run/powerdns-admin/socket  
  
[Install]  
WantedBy=sockets.target

Сохраните файл и выйдите из редактора, когда закончите.

Теперь создайте новый файл конфигурации ‘/etc/tmpfiles.d/powerdns-admin.conf’ с помощью следующей команды редактора nano.

sudo nano /etc/tmpfiles.d/powerdns-admin.conf

Добавьте следующую конфигурацию в файл.

d /run/powerdns-admin 0755 pdns pdns -

Сохраните файл и выйдите из редактора, когда закончите.

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

sudo systemctl daemon-reload

Теперь запустите и включите службу PowerDNS-Admin с помощью следующей команды systemctl. PowerDNS-Admin теперь должен работать с gunicorn и открыть файл сокета, который доступен в директории ‘ /run/powerdns-admin/ ‘.

sudo systemctl start powerdns-admin.socket powerdns-admin.service  
sudo systemctl enable powerdns-admin.socket powerdns-admin.service

настройка powerdns-admin как службы

Наконец, выполните следующую команду, чтобы проверить службу PowerDNS-Admin и убедиться, что служба работает.

sudo systemctl status powerdns-admin.service powerdns-admin.socket

В приведенном ниже выводе службы powerdns-admin.service и powerdns-admin.socket работают и обе включены. Обе службы будут автоматически запущены при загрузке системы.

проверка служб pdns

Установка Nginx как обратного прокси для PowerDNS-Admin

На этом этапе вы настроите Nginx как обратный прокси для PowerDNS-Admin.

Выполните следующую команду dnf, чтобы установить Nginx на ваш сервер Rocky Linux. Когда будет предложено, введите y для подтверждения и нажмите ENTER, чтобы продолжить.

sudo dnf install nginx

Затем создайте новый блок сервера Nginx ‘/ etc/nginx/conf.d/pdns.conf ‘ с помощью следующего редактора nano.

sudo nano /etc/nginx/conf.d/pdns.conf

Добавьте следующую конфигурацию в файл и убедитесь, что вы изменили имя домена. В этом примере используется домен ‘pdns.howtoforge.local’ для PowerDNS-Admin.

server {  
        listen                  80;  
        server_name             pdns.howtoforge.local;  
        return 301 https://$http_host$request_uri;  
}  
  
server {  
        listen                  443 ssl http2;  
        server_name             pdns.howtoforge.local;  
        index                   index.html index.htm;  
        error_log               /var/log/nginx/error_powerdnsadmin.log error;  
        access_log              off;  
  
        ssl_certificate                 /etc/letsencrypt/live/pdns.howtoforge.local/fullchain.pem;  
        ssl_certificate_key             /etc/letsencrypt/live/pdns.howtoforge.local/privkey.pem;  
        #ssl_dhparam                     path_to_your_dhparam.pem;  
        ssl_prefer_server_ciphers       on;  
        ssl_ciphers                     'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';  
        ssl_session_cache               shared:SSL:10m;  
  
        client_max_body_size            10m;  
        client_body_buffer_size         128k;  
        proxy_redirect                  off;  
        proxy_connect_timeout           90;  
        proxy_send_timeout              90;  
        proxy_read_timeout              90;  
        proxy_buffers                   32 4k;  
        proxy_buffer_size               8k;  
        proxy_set_header                Host $http_host;  
        proxy_set_header                X-Scheme $scheme;  
        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_headers_hash_bucket_size  64;  
  
        location ~ ^/static/  {  
                include         mime.types;  
                root            /opt/powerdns-admin/powerdnsadmin;  
                location        ~* \\.jpg|jpeg|png|gif$ { expires 365d; }  
                location        ~* ^.+\.(css|js)$ { expires 7d; }  
        }  
  
        location ~ ^/upload/  {  
                include         mime.types;  
                root            /opt/powerdns-admin;  
                location        ~* \\.jpg|jpeg|png|gif$ { expires 365d; }  
                location        ~* ^.+\.(css|js)$ { expires 7d; }  
        }  
  
        location / {  
                proxy_pass              http://unix:/run/powerdns-admin/socket;  
                proxy_read_timeout      120;  
                proxy_connect_timeout   120;  
                proxy_redirect          http:// $scheme://;  
        }  
}

Сохраните файл и выйдите из редактора, когда закончите.

Затем выполните следующую команду, чтобы проверить конфигурацию Nginx и убедиться, что конфигурация правильная. Вы должны увидеть сообщение о выводе, например ‘ синтаксис в порядке - тест успешен ‘.

sudo nginx -t

Теперь выполните следующую команду systemctl, чтобы запустить и включить службу Nginx.

sudo systemctl start nginx  
sudo systemctl enable nginx

настройка nginx

Наконец, проверьте службу Nginx с помощью следующей команды, чтобы убедиться, что служба работает.

sudo systemctl status nginx

Вы должны увидеть вывод, что служба nginx работает и включена. Таким образом, служба Nginx будет автоматически запущена при загрузке системы.

проверка nginx

Доступ к установке PowerDNS-Admin

Откройте веб-браузер и перейдите на доменное имя вашей установки PowerDNS-Admin (т.е.: https://pdns.howtoforge.local), и вы должны увидеть страницу входа PowerDNS-Admin.

Нажмите на ссылку ‘ Создать учетную запись ‘, чтобы настроить нового администратора для PowerDNS-Admin.

pdns создать учетную запись

Теперь введите данные нового пользователя, адрес электронной почты и пароль. Затем нажмите ‘ Зарегистрироваться ‘, чтобы подтвердить.

настройка администратора

После создания учетной записи администратора вы будете перенаправлены обратно на страницу входа PowerDNS-Admin. Войдите с помощью вашего нового пользователя администратора и пароля, затем нажмите ‘ Войти ‘.

вход администратора pdns

Теперь вы должны увидеть панель управления PowerDNS-Admin. PowerDNS-Admin работает, но еще не подключен к серверу PowerDNS.

Чтобы настроить сервер PowerDNS с PowerDNS-Admin, вы должны добавить API-ключ, который вы настроили через сервер PowerDNS в PowerDNS-Admin.

Введите данные API сервера PowerDNS в разделе ‘ Настройки PDNS ‘ и нажмите ‘ Обновить ‘.

настройка api

Когда PowerDNS-Admin и сервер PowerDNS подключены через API, ваша панель управления должна выглядеть как на следующем скриншоте.

панель управления pdnsadmin

Отсюда вы теперь можете легко добавлять новые DNS-записи или изменять существующие DNS-записи через панель управления PowerDNS-Admin.

Заключение

В этом руководстве вы узнали, как установить сервер PowerDNS с базой данных MySQL/MariaDB на сервере Rocky Linux. Вы также узнали о базовом развертывании базы данных MariaDB на Rocky Linux. Наконец, вы узнали, как установить и настроить PowerDNS-Admin, который будет использоваться как веб-инструмент управления для сервера PowerDNS. PowerDNS-Admin работает с Nginx в качестве обратного прокси и бэкендом базы данных MariaDB.

С работающим сервером PowerDNS и PowerDNS-Admin вы теперь можете управлять своим DNS-сервером через веб-интерфейс администрирования. Вы можете добавлять, редактировать или удалять DNS-записи через панель управления PowerDNS-Admin.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.