Розбіжності
Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Порівняння попередніх версій Попередня ревізія Наступна ревізія | Попередня ревізія | ||
debian:pdns_server [09/10/2022 08:40] – [prepeare mysql db] Method | debian:pdns_server [11/10/2022 13:19] (поточний) – [Install PowerDNS server] Method | ||
---|---|---|---|
Рядок 10: | Рядок 10: | ||
</ | </ | ||
+ | sudo su | ||
===== Install MariaDB ===== | ===== Install MariaDB ===== | ||
- | {{section> | + | [[debian: |
- | ===== Install | + | |
- | {{section> | + | |
- | {{section> | + | |
+ | За бажанням можна встановити apache2 та phpMyAdmin для доступу до бази даних через веб панель керування | ||
+ | |||
+ | [[debian: | ||
+ | |||
+ | [[debian: | ||
- | [[https:// | ||
===== Install PowerDNS server ===== | ===== Install PowerDNS server ===== | ||
+ | |||
+ | В репозиторіях є зазвичай, | ||
+ | |||
+ | Там знаходимо стабільну версію програми і застосовуємо зміни в списку репозиторіїв | ||
+ | |||
<code bash> | <code bash> | ||
- | apt-get update | + | sh -c 'echo "deb [arch=amd64] http:// |
- | apt-get install | + | |
- | nano /etc/powerdns/pdns.d/pdns.local.gmysql.conf | + | |
</ | </ | ||
<code bash> | <code bash> | ||
- | # MySQL Configuration | + | tee / |
- | # Launch gmysql backend | + | Package: pdns-* |
- | launch+=gmysql | + | Pin: origin repo.powerdns.com |
- | # gmysql parameters | + | Pin-Priority: 600 |
- | gmysql-host=localhost | + | EOF |
- | gmysql-port=3306 | + | |
- | gmysql-dbname=powerdns | + | |
- | gmysql-user=powerdns | + | |
- | gmysql-password=strongpassword | + | |
- | gmysql-dnssec=yes | + | |
- | # gmysql-socket= | + | |
</ | </ | ||
+ | <code bash> | ||
+ | curl https:// | ||
+ | chmod 644 / | ||
+ | </ | ||
<code bash> | <code bash> | ||
- | nano / | + | apt-get update |
+ | apt-get install -y pdns-server pdns-backend-mysql | ||
+ | cp -r / | ||
</ | </ | ||
<code bash> | <code bash> | ||
+ | tee / | ||
setgid=pdns | setgid=pdns | ||
setuid=pdns | setuid=pdns | ||
Рядок 53: | Рядок 58: | ||
include-dir=/ | include-dir=/ | ||
launch= | launch= | ||
+ | EOF | ||
</ | </ | ||
- | |||
===== prepeare mysql db ===== | ===== prepeare mysql db ===== | ||
<code bash> | <code bash> | ||
Рядок 74: | Рядок 79: | ||
Інакше, | Інакше, | ||
<code bash> | <code bash> | ||
- | mysql powerdns < /usr/share/ | + | mysql powerdns < /tmp/backup_powerdns.sql |
</ | </ | ||
Рядок 91: | Рядок 96: | ||
</ | </ | ||
+ | Підключимо нашу базу даних | ||
+ | nano / | ||
<code bash> | <code bash> | ||
- | systemctl | + | # MySQL Configuration |
+ | # Launch gmysql backend | ||
+ | launch+=gmysql | ||
+ | # gmysql parameters | ||
+ | gmysql-host=127.0.0.1 | ||
+ | gmysql-port=3306 | ||
+ | gmysql-dbname=powerdns | ||
+ | gmysql-user=powerdns | ||
+ | gmysql-password=strongpassword | ||
+ | gmysql-dnssec=yes | ||
+ | # gmysql-socket= | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | systemctl | ||
netstat -tap | grep pdns | netstat -tap | grep pdns | ||
</ | </ | ||
<code bash> | <code bash> | ||
- | dig mydomain.local @127.0.0.1 | + | dig mydomain.local @127.0.0.1 |
dig @127.0.0.1 | dig @127.0.0.1 | ||
</ | </ | ||
Рядок 106: | Рядок 127: | ||
[[https:// | [[https:// | ||
+ | |||
<code bash> | <code bash> | ||
- | apt-get install -y python3-dev libmysqlclient-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev | + | apt install |
- | libxmlsec1-dev libffi-dev pkg-config apt-transport-https virtualenv build-essential | + | |
- | apt-get install nodejs | + | |
</ | </ | ||
<code bash> | <code bash> | ||
- | curl -sS https://dl.yarnpkg.com/debian/ | + | curl -sL https://deb.nodesource.com/setup_18.x | bash - |
- | echo "deb https:// | + | apt-get update |
- | apt-get update | + | |
- | apt-get install -y yarn | + | |
</ | </ | ||
<code bash> | <code bash> | ||
- | git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /opt/web/powerdns-admin | + | curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null |
- | cd /opt/web/powerdns-admin | + | echo "deb [signed-by=/ |
- | cp config_template.py config.py | + | apt-get update && apt-get install yarn |
- | mysql -u root -p | + | </ |
+ | |||
+ | <code bash> | ||
+ | mysql | ||
</ | </ | ||
<code mysql> | <code mysql> | ||
- | CREATE DATABASE | + | CREATE DATABASE |
- | GRANT ALL PRIVILEGES ON pda.* TO 'pda' | + | GRANT ALL PRIVILEGES ON poweradmin.* TO 'pdnsadmin' |
FLUSH PRIVILEGES; | FLUSH PRIVILEGES; | ||
quit | quit | ||
Рядок 135: | Рядок 156: | ||
<code bash> | <code bash> | ||
- | nano / | + | git clone https:// |
+ | |||
+ | cd /opt/ | ||
+ | python3 -mvenv ./venv | ||
+ | source ./ | ||
+ | pip install --upgrade pip | ||
+ | pip install -r requirements.txt | ||
</ | </ | ||
<code bash> | <code bash> | ||
+ | cp / | ||
+ | nano / | ||
+ | </ | ||
+ | |||
+ | <code python> | ||
+ | import os | ||
+ | import urllib.parse | ||
+ | basedir = os.path.abspath(os.path.dirname(__file__)) | ||
+ | |||
+ | ### BASIC APP CONFIG | ||
+ | SALT = ' | ||
+ | SECRET_KEY = ' | ||
BIND_ADDRESS = ' | BIND_ADDRESS = ' | ||
+ | PORT = 9191 | ||
+ | OFFLINE_MODE = False | ||
+ | |||
+ | ### DATABASE CONFIG | ||
+ | SQLA_DB_USER = ' | ||
+ | SQLA_DB_PASSWORD = ' | ||
+ | SQLA_DB_HOST = ' | ||
+ | SQLA_DB_NAME = ' | ||
+ | SQLALCHEMY_TRACK_MODIFICATIONS = True | ||
+ | |||
+ | ### DATABASE - MySQL | ||
+ | SQLALCHEMY_DATABASE_URI = ' | ||
+ | urllib.parse.quote_plus(SQLA_DB_USER), | ||
+ | urllib.parse.quote_plus(SQLA_DB_PASSWORD), | ||
+ | SQLA_DB_HOST, | ||
+ | SQLA_DB_NAME | ||
+ | ) | ||
+ | |||
+ | ### DATABASE - SQLite | ||
+ | # | ||
</ | </ | ||
<code bash> | <code bash> | ||
- | virtualenv -p python3 flask | + | nft add rule ip filter input ct state new tcp dport 9191 counter accept comment |
- | source ./ | + | |
- | pip install -r requirements.txt | + | |
- | pip install python-dotenv | + | |
- | export FLASK_APP=app/ | + | |
- | flask db migrate -m "Init DB" | + | |
- | flask db upgrade | + | |
</ | </ | ||
<code bash> | <code bash> | ||
+ | export FLASK_CONF=../ | ||
+ | export FLASK_APP=powerdnsadmin/ | ||
+ | flask db upgrade | ||
+ | |||
yarn install --pure-lockfile | yarn install --pure-lockfile | ||
flask assets build | flask assets build | ||
Рядок 158: | Рядок 215: | ||
<code bash> | <code bash> | ||
- | /etc/init.d/pdns restart | + | ./run.py |
- | /etc/init.d/pdns status | + | |
</ | </ | ||
- | |||
- | |||
- | <code bash> | ||
- | nano / | ||
- | </ | ||
- | |||
<code bash> | <code bash> | ||
+ | tee / | ||
[Unit] | [Unit] | ||
Description=PowerDNS-Admin | Description=PowerDNS-Admin | ||
- | After=network.target | + | Wants=network.target |
+ | After=network.target | ||
[Service] | [Service] | ||
- | User=root | + | PIDFile=/ |
+ | User=www-data | ||
Group=root | Group=root | ||
WorkingDirectory=/ | WorkingDirectory=/ | ||
- | #ExecStart=/ | + | ExecStart=/ |
- | ExecStart=/ | + | ExecReload=/ |
+ | ExecStop=/ | ||
+ | PrivateTmp=true | ||
+ | Restart=on-failure | ||
+ | RestartSec=10 | ||
+ | StartLimitInterval=0 | ||
[Install] | [Install] | ||
WantedBy=multi-user.target | WantedBy=multi-user.target | ||
+ | EOF | ||
</ | </ | ||
+ | <code bash> | ||
+ | mkdir -p / | ||
+ | tee / | ||
+ | [Service] | ||
+ | Environment=" | ||
+ | EOF | ||
+ | </ | ||
+ | |||
+ | <code bash> | ||
+ | echo 'd / | ||
+ | mkdir -p / | ||
+ | chown -R www-data: | ||
+ | chown -R www-data: | ||
+ | </ | ||
<code bash> | <code bash> | ||
systemctl daemon-reload | systemctl daemon-reload | ||
- | systemctl start powerdns-admin | ||
systemctl enable powerdns-admin | systemctl enable powerdns-admin | ||
+ | systemctl restart powerdns-admin | ||
+ | systemctl status powerdns-admin | ||
</ | </ | ||
- | |||
<code bash> | <code bash> | ||
Рядок 197: | Рядок 270: | ||
<code bash> | <code bash> | ||
+ | webserver-port=8081 | ||
api=yes | api=yes | ||
- | api-key=changeme | + | api-key=changemechangemechangeme |
</ | </ | ||
- | |||
<code bash> | <code bash> | ||
- | /etc/init.d/pdns restart | + | chown -R pdns: |
+ | systemctl | ||
</ | </ | ||
+ | Visit PowerDNS-Admin web interface. http:// | ||
+ | Click “Create an account” button and Register a user. The first user will be in the Administrator role. | ||
+ | Provide PowerDNS API connection information before PowerDNS-Admin can query your PowerDNS data. This is done under Settings > PDNS | ||
===== Нотатки ===== | ===== Нотатки ===== | ||
- | History < | ||
- | <code bash> | ||
- | ___________WSGI________ | ||
- | apt install apache2-dev | ||
- | sudo apt-get install uwsgi uwsgi-plugin-python | ||
- | pip3 install mod-wsgi | ||
- | mod_wsgi-express install-module > / | ||
- | a2enmod wsgi | ||
- | sudo a2enmod wsgi | ||
- | systemctl restart apache2 | ||
- | nano / | ||
- | nano / | ||
- | uwsgi / | ||
- | wsgi / | ||
- | uwsgi powerdnsadmin.wsgi | ||
- | sudo a2dissite 000-default.conf | ||
- | sudo a2ensite powerdns-admin.conf | ||
- | sudo apache2ctl configtest | ||
- | systemctl restart apache2 | ||
- | systemctl status apache2 | ||
- | |||
- | nano / | ||
- | systemctl daemon-reload | ||
- | systemctl start powerdns-admin | ||
- | systemctl enable powerdns-admin | ||
- | sudo ufw allow 9191/tcp | ||
- | sudo ufw reload | ||
- | systemctl status powerdns-admin | ||
- | nano / | ||
- | / | ||
- | / | ||
- | [Unit] | ||
- | Description=PowerDNS-Admin | ||
- | Requires=powerdns-admin.socket | ||
- | Wants=network.target | ||
- | After=network.target mysqld.service slapd.service mariadb.service | ||
- | [Service] | ||
- | PIDFile=/ | ||
- | User=www-data | ||
- | Group=www-data | ||
- | WorkingDirectory=/ | ||
- | # | ||
- | ExecStart=/ | ||
- | ExecReload=/ | ||
- | ExecStop=/ | ||
- | PrivateTmp=true | ||
- | Restart=on-failure | ||
- | RestartSec=10 | ||
- | StartLimitInterval=0 | ||
- | [Install] | ||
- | |||
- | systemctl daemon-reload | ||
- | systemctl enable powerdns-admin | ||
- | systemctl restart powerdns-admin | ||
- | nano / | ||
- | systemctl restart powerdns-admin | ||
- | chmod / | ||
- | chown www-data: | ||
- | nano / | ||
- | sudo systemctl daemon-reload; | ||
- | |||
- | nano / | ||
- | nano / | ||
- | systemctl disable powerdns-admin | ||
- | systemctl enaable powerdns-admin | ||
- | systemctl restart powerdns-admin | ||
- | systemctl status powerdns-admin | ||
- | systemctl status powerdns-admin | ||
- | nano / | ||
- | systemctl disable powerdns-admin | ||
- | systemctl enaable powerdns-admin | ||
- | systemctl restart powerdns-admin | ||
- | systemctl status powerdns-admin | ||
- | nano / | ||
- | systemctl restart powerdns-admin | ||
- | systemctl status powerdns-admin | ||
- | / | ||
- | nano / | ||
- | systemctl disable powerdns-admin | ||
- | sudo systemctl daemon-reload; | ||
- | systemctl restart powerdns-admin | ||
- | systemctl enable powerdns-admin | ||
- | systemctl restart powerdns-admin | ||
- | systemctl stop powerdns-admin | ||
- | nano / | ||
- | systemctl disable powerdns-admin | ||
- | sudo systemctl daemon-reload; | ||
- | systemctl enable powerdns-admin | ||
- | systemctl restart powerdns-admin | ||
- | systemctl disable powerdns-admin | ||
- | nano / | ||
- | nano / | ||
- | systemctl daemon-reload | ||
- | systemctl start powerdns-admin | ||
- | systemctl enable powerdns-admin | ||
- | systemctl start powerdns-admin | ||
- | systemctl status powerdns-admin | ||
- | systemctl stop powerdns-admin | ||
- | systemctl stop powerdns-admin.socket | ||
- | systemctl stop powerdns-admin.socket | ||
- | systemctl stop powerdns-admin | ||
- | / | ||
- | / | ||
- | / | ||
- | / | ||
- | / | ||
- | nano / | ||
- | systemctl daemon-reload | ||
- | systemctl stop powerdns-admin.socket | ||
- | systemctl stop powerdns-admin | ||
- | systemctl enable powerdns-admin | ||
- | systemctl start powerdns-admin | ||
- | systemctl status powerdns-admin | ||
- | nano / | ||
- | systemctl daemon-reload | ||
- | systemctl enable powerdns-admin | ||
- | systemctl restart powerdns-admin | ||
- | systemctl status powerdns-admin | ||
- | nano / | ||
- | sudo apache2ctl configtest | ||
- | mod_proxy | ||
- | sudo a2enmod proxy | ||
- | systemctl restart apache2 | ||
- | sudo apache2ctl configtest | ||
- | nano / | ||
- | sudo apache2ctl configtest | ||
- | systemctl restart apache2 | ||
- | nano / | ||
- | sudo apache2ctl configtest | ||
- | systemctl restart apache2 | ||
- | history | ||
- | </ | ||
- | </ | ||
[[https:// | [[https:// | ||
[[https:// | [[https:// | ||
- | |||
- | <wrap hi>new version [[https:// | ||
- | </ | ||
[[https:// | [[https:// | ||
Рядок 356: | Рядок 297: | ||
[[https:// | [[https:// | ||
- | |||
- | |||
- | |||
- | sh -c 'echo "deb [arch=amd64] http:// | ||
- | |||
- | nano / | ||
- | |||
- | Package: pdns-* | ||
- | Pin: origin repo.powerdns.com | ||
- | Pin-Priority: | ||
- | |||
- | curl https:// | ||
- | sudo apt-get update && | ||
- | sudo apt-get install pdns-recursor | ||
- | | ||
- | |||
pdnsutil create-zone example.com ns1.example.com | pdnsutil create-zone example.com ns1.example.com | ||
- | | ||
/ | / | ||
rec_control wipe-cache | rec_control wipe-cache | ||
/ | / | ||