+
This commit is contained in:
@ -16,7 +16,7 @@ ssh igor@192.168.200.84 -p 22
|
|||||||
sudo mkdir -p /opt/dashy &&
|
sudo mkdir -p /opt/dashy &&
|
||||||
sudo mkdir -p /opt/dashy/data &&
|
sudo mkdir -p /opt/dashy/data &&
|
||||||
sudo chmod -R 777 /opt/dashy &&
|
sudo chmod -R 777 /opt/dashy &&
|
||||||
sudo chown -R $USER:$USER /opt/dashy &&
|
sudo chown -R $USER:$USER /opt/dashy
|
||||||
```
|
```
|
||||||
|
|
||||||
Создаём файл конфигурации
|
Создаём файл конфигурации
|
||||||
@ -56,8 +56,13 @@ sections: # An array of sections
|
|||||||
url: https://192.168.200.84:9443
|
url: https://192.168.200.84:9443
|
||||||
- title: Prometheus
|
- title: Prometheus
|
||||||
icon: https://static-00.iconduck.com/assets.00/prometheus-icon-511x512-1vmxbcxr.png
|
icon: https://static-00.iconduck.com/assets.00/prometheus-icon-511x512-1vmxbcxr.png
|
||||||
url: http://192.168.200.84:9090
|
url: http://192.168.200.84:9090
|
||||||
|
- name: PowerDNS
|
||||||
|
items:
|
||||||
|
- title: PowerDNS-Admin
|
||||||
|
icon: https://avatars.githubusercontent.com/u/1282630?s=200&v=4
|
||||||
|
url: http://192.168.200.85:9191
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@ -31,7 +31,24 @@ sudo apt update
|
|||||||
```
|
```
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
sudo apt install jenkins
|
sudo apt install jenkins -y
|
||||||
|
```
|
||||||
|
If the software was installed incorrectly, you can reinstall it after uninstalling it first.:
|
||||||
|
```sh
|
||||||
|
sudo apt remove --purge jenkins
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
jenkins --version
|
||||||
|
```
|
||||||
|
|
||||||
|
Try run jenkins without service
|
||||||
|
```sh
|
||||||
|
sudo -u jenkins /usr/bin/jenkins --httpPort=8081 --httpListenAddress=0.0.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo mcedit /lib/systemd/system/jenkins.service
|
||||||
```
|
```
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@ -41,7 +58,26 @@ sudo systemctl status jenkins
|
|||||||
```
|
```
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
start http://127.0.0.1:8080
|
sudo journalctl -xeu jenkins.service | tail -n 50
|
||||||
|
```
|
||||||
|
Если порт занят, проверяем кем:
|
||||||
|
```sh
|
||||||
|
sudo lsof -i :8081
|
||||||
|
```
|
||||||
|
Переопределяем порт:
|
||||||
|
```sh
|
||||||
|
sudo mcedit /etc/default/jenkins
|
||||||
|
```
|
||||||
|
```conf
|
||||||
|
HTTP_PORT=8081
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo systemctl restart jenkins
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
start http://127.0.0.1:8081
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
299
PostgreSQL_install.md
Normal file
299
PostgreSQL_install.md
Normal file
@ -0,0 +1,299 @@
|
|||||||
|
# Install PostgreSQL database
|
||||||
|
|
||||||
|
Coonect lto need server:
|
||||||
|
```sh
|
||||||
|
wsl
|
||||||
|
```
|
||||||
|
Or coonect to need server:
|
||||||
|
```sh
|
||||||
|
ssh igor@ccalm.org -p 2200
|
||||||
|
```
|
||||||
|
|
||||||
|
****************************************************************************************************
|
||||||
|
Установка PostgreSQL 11.5 windows10 из https://www.enterprisedb.com/download-postgresql-binaries:
|
||||||
|
Скачал, создаю дирректорию хранения данных:
|
||||||
|
O:\MyDocuments\DataBases\postgresql-12.3-1-windows-x64-binaries\pgsql\bin\initdb.exe -D O:\MyDocuments\DataBases\Data_PostgreSQL_12.3
|
||||||
|
O:\MyDocuments\DataBases\postgresql-10.13-1-windows-x64-binaries\pgsql\bin\initdb.exe -D O:\MyDocuments\DataBases\Data_PostgreSQL_10.13
|
||||||
|
Потом создать BAT файл с тем текстом что отобразится при создании каталога базы
|
||||||
|
База данных создаётся не под пользователем postgres а под локальным пользователем igor
|
||||||
|
****************************************************************************************************
|
||||||
|
Установка PostgreSQL 14 ubuntu 22.04 или 24.04
|
||||||
|
```sh
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install postgresql postgresql-contrib -y
|
||||||
|
```
|
||||||
|
Или так если нужно установить PostGIS
|
||||||
|
```sh
|
||||||
|
sudo apt-get install postgis
|
||||||
|
```
|
||||||
|
Для удаления PostGIS в месте с зависимыми пакетами:
|
||||||
|
```sh
|
||||||
|
sudo apt-get remove --auto-remove postgis &&
|
||||||
|
sudo apt-get purge postgis
|
||||||
|
```
|
||||||
|
Добавить русскую локаль если её нет:
|
||||||
|
```sh
|
||||||
|
sudo locale-gen ru_RU &&
|
||||||
|
sudo locale-gen ru_RU.UTF-8 &&
|
||||||
|
sudo locale-gen kk_KZ &&
|
||||||
|
sudo locale-gen kk_KZ.UTF-8
|
||||||
|
```
|
||||||
|
Проверить какая локаль по умолчанию:
|
||||||
|
```sh
|
||||||
|
localectl status
|
||||||
|
```
|
||||||
|
И переконфигурировать локаль по умолчанию в ru_RU.UTF-8 (а то в mc могут быть кракозябры):
|
||||||
|
```sh
|
||||||
|
sudo dpkg-reconfigure locales
|
||||||
|
```
|
||||||
|
Для задания пароля в PostgreSQL выполнить:
|
||||||
|
```sh
|
||||||
|
sudo -u postgres psql &&
|
||||||
|
\password postgres
|
||||||
|
```
|
||||||
|
Чтобы выйти нужно выпольнить команду: \q
|
||||||
|
|
||||||
|
Роль входа по умолчанию: postgres пароль можно поменять когда в pg_hba.conf установить trust
|
||||||
|
Задать пароль:
|
||||||
|
sudo -u postgres psql
|
||||||
|
postgres=> SELECT usename FROM pg_user;
|
||||||
|
postgres=> alter user postgres password 'PasSecrKey1';
|
||||||
|
postgres=> \q
|
||||||
|
|
||||||
|
Настройка postgresql.conf: http://www.lissyara.su/archive/1c_8.2+postgresql/
|
||||||
|
Создаём базу данных выполнив функцию:
|
||||||
|
CREATE DATABASE CCALM
|
||||||
|
WITH OWNER = postgres
|
||||||
|
TEMPLATE = template0
|
||||||
|
ENCODING = 'UTF8'
|
||||||
|
TABLESPACE = pg_default
|
||||||
|
LC_COLLATE = 'ru_RU.UTF-8'
|
||||||
|
LC_CTYPE = 'ru_RU.UTF-8'
|
||||||
|
CONNECTION LIMIT = -1;
|
||||||
|
|
||||||
|
Файл настроек postgresql: sudo mcedit /etc/postgresql/16/main/postgresql.conf
|
||||||
|
listen_addresses='*' #Разрешить подключение с внешки
|
||||||
|
#Для 9й версии разрешаем экранирующие символы \' и другие без спец символа "E" перед строкой
|
||||||
|
backslash_quote = on
|
||||||
|
escape_string_warning = off
|
||||||
|
standard_conforming_strings = off
|
||||||
|
Чтобы воводил двоичные данные по старому изменить на:
|
||||||
|
bytea_output = 'escape'
|
||||||
|
|
||||||
|
Настраиваю лимиты а то в саранче не выполняло большой запрос "Ошибка ввода/ввывода при отправке бэкенду"
|
||||||
|
|
||||||
|
Для создания нового пользователя выполнить:
|
||||||
|
sudo -u postgres psql
|
||||||
|
CREATE ROLE zholak LOGIN ENCRYPTED PASSWORD 'md5c0029083b93a3b16207a83b45e8a324a' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE REPLICATION;
|
||||||
|
|
||||||
|
Для подключения к определённой базе данных выполнить команду:
|
||||||
|
sudo -u postgres psql
|
||||||
|
\list or \l: для отображения всех баз
|
||||||
|
\connect zholak zholak
|
||||||
|
\dt для отображения всех таблиц
|
||||||
|
|
||||||
|
или написать со своим IP: host all all 2.133.238.240/24 trust
|
||||||
|
Для подключения с любых IP адресов в "sudo mcedit /etc/postgresql/16/main/pg_hba.conf" прописать:
|
||||||
|
host all all 0.0.0.0/0 md5
|
||||||
|
Либо с одного конкретного то: host all all 92.46.48.37/24 md5
|
||||||
|
А также поменять на listen_addresses = '*' в postgresql.conf
|
||||||
|
Потом перезагрузить postgres:
|
||||||
|
sudo service postgresql restart
|
||||||
|
sudo /etc/init.d/postgresql stop
|
||||||
|
sudo /etc/init.d/postgresql restart
|
||||||
|
sudo /etc/init.d/postgresql start
|
||||||
|
Проверить запущен или нет то:
|
||||||
|
sudo /etc/init.d/postgresql status
|
||||||
|
Посмотрель лог загрузки PostGreSQL:
|
||||||
|
dmesg |grep pg
|
||||||
|
Чтобы посмотреть чем занят порт выполнить команду:
|
||||||
|
sudo netstat -tap | grep 5432
|
||||||
|
|
||||||
|
Создать Backup (при переносе со старой на новую версию может быть не совместим для этого нужно делать бакам в текстовом формате: plain):
|
||||||
|
pg_dump bigfoott_shop>/home/igor/bigfoott_shop.sql --host=127.0.0.1 --username=bigfoott_root
|
||||||
|
pg_dump ASDC_Locust>/home/igor/ASDC_Locust.sql --host=127.0.0.1 --username=postgres
|
||||||
|
pg_dump zholak>/home/zholak/zholak.sql --host=127.0.0.1 --username=postgres
|
||||||
|
pg_dump stations>/home/administrator/pg_dump.sql --host=127.0.0.1 --username=postgres --format=custom
|
||||||
|
pg_dump transit>/home/administrator/transit.sql --host=127.0.0.1 --username=postgres
|
||||||
|
pg_dump weather>weather.backup --host=127.0.0.1 --username=postgres --format=custom
|
||||||
|
pg_dump transit>transit.backup --host=127.0.0.1 --username=postgres --format=custom
|
||||||
|
|
||||||
|
pg_dump CCALM>CCALM.backup --host=127.0.0.1 --username=postgres --format=custom
|
||||||
|
|
||||||
|
pg_dump weather_ru>weather_ru.backup --host=127.0.0.1 --username=postgres --format=custom
|
||||||
|
pg_dump -d CCALM -h 192.168.0.161 -U postgres -f O:\dumps\CCALM.sql
|
||||||
|
pg_dump --dbname=postgresql://postgres:PostPas1key@127.0.0.1:5432/ShopMaster | gzip > /mnt/disk1/backup/$(date +%Y-%m-%d).ShopMaster.gz
|
||||||
|
|
||||||
|
Востановить Dump из текстового файла:
|
||||||
|
psql ASDC_Locust < /home/igor/ASDC_Locustfcron.backup
|
||||||
|
psql -h 127.0.0.1 -U bigfoott_root -d bigfoott_shop_old2 < E:\dumps\bigfoottrade\dump.sql
|
||||||
|
psql -h 127.0.0.1 -U postgres -d monitoring < /home/igor/pg_dump.sql
|
||||||
|
psql -h 127.0.0.1 -U postgres -d transit_2024 < /home/administrator/transit.sql
|
||||||
|
psql -h 127.0.0.1 -U postgres -d bigfoot_shop < /home/igor/goods.sql
|
||||||
|
|
||||||
|
Создание SH скрипта для ежедневного бакапирования и архивации в ZIP файл:
|
||||||
|
/mnt/O_DRIVE/MyDocuments/DataBases/dumps/run.sh
|
||||||
|
#!/bin/sh
|
||||||
|
pg_dump --dbname=postgresql://postgres:A6dCgeDDWHbC@127.0.0.1:5432/Queue | gzip > /mnt/disk1/backup/$(date +%Y-%m-%d).Queue.gz
|
||||||
|
|
||||||
|
Для востановления через pg_restore (версии баз должны совпадать а то может не восстановиться):
|
||||||
|
su - postgres
|
||||||
|
pg_restore -U <username> -d <dbname> -1 <filename>.dump
|
||||||
|
pg_restore -U postgres -d zholak -1 /home/zholak/zholak_16.01.2019.backup
|
||||||
|
pg_restore -U postgres -d monitoring -1 /home/igor/stations_20200626.backup
|
||||||
|
pg_restore -U postgres -d transit_new -1 /home/administrator/temp/transit.backup
|
||||||
|
pg_restore -U postgres -d transit -1 /home/administrator/transit.backup
|
||||||
|
pg_restore --host=127.0.0.1 --username=postgres --dbname=transit_2024 --verbose /home/administrator/transit.backup
|
||||||
|
|
||||||
|
sudo -u postgres psql -d transit -f /tmp/transit.backup
|
||||||
|
|
||||||
|
Или из архива (первоначально задать trust на 127.0.0.1) так:
|
||||||
|
gunzip -c /var/www/dump.sql.gz | psql -h 127.0.0.1 -U bigfoott_root -d bigfoott_shop
|
||||||
|
|
||||||
|
****************************************************************************************************
|
||||||
|
Настройка отображения статистики для PostgreSQL:
|
||||||
|
https://habr.com/ru/articles/488968/
|
||||||
|
|
||||||
|
SELECT * FROM pg_stat_statements ORDER BY total_exec_time DESC;
|
||||||
|
SELECT * FROM pg_stat_activity
|
||||||
|
SELECT * FROM pg_stat_replication
|
||||||
|
SELECT * FROM pg_stat_all_tables
|
||||||
|
|
||||||
|
Полный список: https://postgrespro.ru/docs/postgrespro/9.5/monitoring-stats
|
||||||
|
|
||||||
|
Установить Prometheus сграфаной Grafana для PostgreSQL там по умолчанию есть набор настроек для сбора статистики с PostgreSQL
|
||||||
|
По мотивам: https://grafana.com/oss/prometheus/exporters/postgres-exporter/
|
||||||
|
По мотивам: https://www.youtube.com/watch?v=B_yz37CR1XU
|
||||||
|
****************************************************************************************************
|
||||||
|
Установка pgagent
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install pgagent
|
||||||
|
Выполнить в консоли запрос:
|
||||||
|
psql -h localhost -U postgres
|
||||||
|
create extension pgagent;
|
||||||
|
\q
|
||||||
|
Для разрешения подключения откройте файл pg_hba.conf и замените строку на:
|
||||||
|
host all all 127.0.0.1/32 md5
|
||||||
|
|
||||||
|
Можно для теста запустить pgagent с повышенным уровнем логирования:
|
||||||
|
/usr/bin/pgagent -f -l 2 hostaddr=127.0.0.1 dbname=postgres user=postgres password=lelPfAtgQWhHYfy1SsHk
|
||||||
|
|
||||||
|
Если файла нет то пытаюсь его создать:
|
||||||
|
sudo mcedit /lib/systemd/system/pgagent.service
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
Description=PostgreSQL PgAgent Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=postgres
|
||||||
|
ExecStart=/usr/bin/pgagent -f hostaddr=127.0.0.1 dbname=postgres user=postgres password=PasSecrKey1
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
|
||||||
|
Проверяю что сервис был запущен:
|
||||||
|
sudo systemctl daemon-reload
|
||||||
|
sudo systemctl enable pgagent
|
||||||
|
sudo service pgagent start
|
||||||
|
sudo systemctl status pgagent
|
||||||
|
|
||||||
|
|
||||||
|
Для проверки пробуем подключиться к базе данных
|
||||||
|
sudo -u postgres psql -h 127.0.0.1 -U postgres -d postgres
|
||||||
|
\q
|
||||||
|
|
||||||
|
Похоже что нужно ещё создать файл паролей так как агент не знает как подключаться:
|
||||||
|
sudo -u postgres touch /var/lib/postgresql/.pgpass
|
||||||
|
sudo -u postgres chmod 600 /var/lib/postgresql/.pgpass
|
||||||
|
sudo -u postgres mcedit /var/lib/postgresql/.pgpass
|
||||||
|
И прописать в него:
|
||||||
|
127.0.0.1:5432:postgres:postgres:PasSecrKey1
|
||||||
|
Где используется такой формат: hostname:port:database:username:password
|
||||||
|
Затем:
|
||||||
|
sudo systemctl enable pgagent
|
||||||
|
sudo service pgagent start
|
||||||
|
sudo service pgagent status
|
||||||
|
Посмотреть логи:
|
||||||
|
sudo journalctl -u pgagent
|
||||||
|
|
||||||
|
****************************************************************************************************
|
||||||
|
Для добавления автоматического бакапирования Postgresql базы *.backup создать скрипт:
|
||||||
|
|
||||||
|
|
||||||
|
****************************************************************************************************
|
||||||
|
Перенос базы PostgreSQL на другой диск: https://internet-lab.ru/postgresql_ubuntu_move
|
||||||
|
|
||||||
|
****************************************************************************************************
|
||||||
|
Установка PostGIS на PostgreSQL выше 9.0 версии:
|
||||||
|
sudo apt-get install postgis postgresql-9.3-postgis-2.1
|
||||||
|
Для 10й версии:
|
||||||
|
sudo apt install postgresql-10-postgis-2.4
|
||||||
|
sudo apt install postgresql-10-postgis-scripts
|
||||||
|
Для 12й версии:
|
||||||
|
sudo apt install postgresql-12-postgis-2.4
|
||||||
|
|
||||||
|
Создать базу данных и выполнть на ней следующие команды:
|
||||||
|
-- Enable PostGIS (includes raster)
|
||||||
|
CREATE EXTENSION postgis;
|
||||||
|
-- Enable Topology
|
||||||
|
CREATE EXTENSION postgis_topology;
|
||||||
|
-- fuzzy matching needed for Tiger
|
||||||
|
CREATE EXTENSION fuzzystrmatch;
|
||||||
|
-- rule based standardizer
|
||||||
|
CREATE EXTENSION address_standardizer;
|
||||||
|
-- example rule data set
|
||||||
|
CREATE EXTENSION address_standardizer_data_us;
|
||||||
|
-- Enable US Tiger Geocoder
|
||||||
|
CREATE EXTENSION postgis_tiger_geocoder;
|
||||||
|
|
||||||
|
У меня начало выдавать NOTICE: version "2.2.1" of extension "postgis_topology" is already installed и PostGIS перестал работать на моём PostgreSQL 9.5.17
|
||||||
|
Аказывается расширение кудато делось установил:
|
||||||
|
sudo apt-get install postgresql-9.5-postgis-2.2
|
||||||
|
****************************************************************************************************
|
||||||
|
Для добавления TOTP авторизации в Postgresql выполнить:
|
||||||
|
CREATE EXTENSION otp;
|
||||||
|
|
||||||
|
|
||||||
|
****************************************************************************************************
|
||||||
|
sudo apt-get install libpq-dev libpq-fe
|
||||||
|
Если есть несовместимость libpq-dev : Зависит: libpq5 (= 14.3-0ubuntu0.22.04.1) но 14.3-1.pgdg22.04+1 должен быть установлен
|
||||||
|
То удали ранее добавленный репозиторий: /etc/apt/sources.list.d/pgadmin4.list и обнови а потом попробуй установить заново libpq-dev
|
||||||
|
apt update
|
||||||
|
****************************************************************************************************
|
||||||
|
Установка phpPgAdmin через репозиторий:
|
||||||
|
sudo apt-get install phppgadmin
|
||||||
|
Можно открыть так: http://localhost/phppgadmin
|
||||||
|
Для доступа с любых ip адресов в файле: /etc/phppgadmin/apache.conf изменить на allow from all
|
||||||
|
Чтоб можно было залогинется под пользователем postgres меняем в:
|
||||||
|
/etc/phppgadmin/config.inc.php extra_login_security в false
|
||||||
|
Если phpphadmin не дает залогиниться и пишет "Неверный логин", нужно в postgresql.conf прописать $conf['servers'][0]['host'] = 'localhost';
|
||||||
|
|
||||||
|
Другой вариант скачать с сайта последнюю версию с "http://phppgadmin.sourceforge.net/doku.php".
|
||||||
|
****************************************************************************************************
|
||||||
|
Установка pgAdmin4 в Linux Mint 20.04 (inxi -S) Проверить версию линукса: cat /etc/os-release у меня выдало: NAME="Linux Mint" VERSION="20.3 (Una)"
|
||||||
|
|
||||||
|
Проверить что не записан левый репозиторий для phppgadmin в /ect/opt/
|
||||||
|
curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
|
||||||
|
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/bionic pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
|
||||||
|
sudo apt install pgadmin4
|
||||||
|
|
||||||
|
И не запустился сервер оболочка пытается стартануть а сервер нет...
|
||||||
|
|
||||||
|
sudo curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
|
||||||
|
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/focal pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
|
||||||
|
sudo apt install pgadmin4
|
||||||
|
|
||||||
|
Тоже не заработал
|
||||||
|
|
||||||
|
Попробовать так: https://www.tecmint.com/install-postgresql-with-pgadmin4-on-linux-mint/
|
||||||
|
|
||||||
|
****************************************************************************************************
|
||||||
|
Балансировщик назрузки и потоковая репликация:
|
||||||
|
Pgpool-II https://www.youtube.com/watch?v=qpxKlH7DBjU сервер с высокой доступностью
|
||||||
|
https://ritorika.com.ua/dokument/6/pgpool-chto-jeto
|
||||||
|
****************************************************************************************************
|
||||||
|
Мониторинг запросов postgresql
|
||||||
|
|
||||||
|
|
||||||
285
PowerDNS_doker_install.md
Normal file
285
PowerDNS_doker_install.md
Normal file
@ -0,0 +1,285 @@
|
|||||||
|
Устанавливаем PowerDNS через Docker Compose в директорию /opt/powerdnsa
|
||||||
|
Эту версию пробовал: https://hub.docker.com/r/powerdns/pdns-auth-48
|
||||||
|
PowerDNS Authoritative
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ssh-keygen -R 192.168.200.85
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
ssh igor@192.168.200.85 -p 22
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt update &&
|
||||||
|
sudo apt install docker.io docker-compose -y
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo mkdir -p /opt/powerdnsa &&
|
||||||
|
cd /opt/powerdnsa &&
|
||||||
|
sudo mkdir -p data &&
|
||||||
|
cd /opt/powerdnsa/data
|
||||||
|
```
|
||||||
|
|
||||||
|
Инициализируем базу данных так как сам контейнер её не создаёт
|
||||||
|
```sh
|
||||||
|
sudo apt install sqlite3 -y
|
||||||
|
```
|
||||||
|
|
||||||
|
Create database:
|
||||||
|
```sh
|
||||||
|
sudo sqlite3 /opt/powerdnsa/data/pdns.sqlite3 ".databases"
|
||||||
|
```
|
||||||
|
|
||||||
|
Create database structure
|
||||||
|
```sql
|
||||||
|
sudo sqlite3 /opt/powerdnsa/data/pdns.sqlite3 <<EOF
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = 1;
|
||||||
|
|
||||||
|
CREATE TABLE domains (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
name VARCHAR(255) NOT NULL COLLATE NOCASE,
|
||||||
|
master VARCHAR(128) DEFAULT NULL,
|
||||||
|
last_check INTEGER DEFAULT NULL,
|
||||||
|
type VARCHAR(8) NOT NULL,
|
||||||
|
notified_serial INTEGER DEFAULT NULL,
|
||||||
|
account VARCHAR(40) DEFAULT NULL,
|
||||||
|
options VARCHAR(65535) DEFAULT NULL,
|
||||||
|
catalog VARCHAR(255) DEFAULT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX name_index ON domains(name);
|
||||||
|
CREATE INDEX catalog_idx ON domains(catalog);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE records (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
domain_id INTEGER DEFAULT NULL,
|
||||||
|
name VARCHAR(255) DEFAULT NULL,
|
||||||
|
type VARCHAR(10) DEFAULT NULL,
|
||||||
|
content VARCHAR(65535) DEFAULT NULL,
|
||||||
|
ttl INTEGER DEFAULT NULL,
|
||||||
|
prio INTEGER DEFAULT NULL,
|
||||||
|
disabled BOOLEAN DEFAULT 0,
|
||||||
|
ordername VARCHAR(255),
|
||||||
|
auth BOOL DEFAULT 1,
|
||||||
|
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX records_lookup_idx ON records(name, type);
|
||||||
|
CREATE INDEX records_lookup_id_idx ON records(domain_id, name, type);
|
||||||
|
CREATE INDEX records_order_idx ON records(domain_id, ordername);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE supermasters (
|
||||||
|
ip VARCHAR(64) NOT NULL,
|
||||||
|
nameserver VARCHAR(255) NOT NULL COLLATE NOCASE,
|
||||||
|
account VARCHAR(40) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX ip_nameserver_pk ON supermasters(ip, nameserver);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE comments (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
domain_id INTEGER NOT NULL,
|
||||||
|
name VARCHAR(255) NOT NULL,
|
||||||
|
type VARCHAR(10) NOT NULL,
|
||||||
|
modified_at INT NOT NULL,
|
||||||
|
account VARCHAR(40) DEFAULT NULL,
|
||||||
|
comment VARCHAR(65535) NOT NULL,
|
||||||
|
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX comments_idx ON comments(domain_id, name, type);
|
||||||
|
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE domainmetadata (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
domain_id INT NOT NULL,
|
||||||
|
kind VARCHAR(32) COLLATE NOCASE,
|
||||||
|
content TEXT,
|
||||||
|
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX domainmetaidindex ON domainmetadata(domain_id);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE cryptokeys (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
domain_id INT NOT NULL,
|
||||||
|
flags INT NOT NULL,
|
||||||
|
active BOOL,
|
||||||
|
published BOOL DEFAULT 1,
|
||||||
|
content TEXT,
|
||||||
|
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX domainidindex ON cryptokeys(domain_id);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE tsigkeys (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
name VARCHAR(255) COLLATE NOCASE,
|
||||||
|
algorithm VARCHAR(50) COLLATE NOCASE,
|
||||||
|
secret VARCHAR(255)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
|
||||||
|
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Даём права на директорию где будет работать SQLIte (создавать временные файлы):
|
||||||
|
```sh
|
||||||
|
sudo chown -R 1001:1001 /opt/powerdnsa/data &&
|
||||||
|
sudo chmod -R 775 /opt/powerdnsa/data &&
|
||||||
|
sudo chmod -R 777 /opt/powerdnsa/data
|
||||||
|
```
|
||||||
|
|
||||||
|
Создаём конфигурационный файл так как запарился через environment задавать параметры:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /opt/powerdnsa
|
||||||
|
sudo tee docker-compose.yml > /dev/null <<EOF
|
||||||
|
services:
|
||||||
|
powerdns:
|
||||||
|
image: powerdns/pdns-auth-48
|
||||||
|
container_name: powerdns
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "5300:53/udp"
|
||||||
|
- "5300:53/tcp"
|
||||||
|
- "8081:8081/tcp"
|
||||||
|
volumes:
|
||||||
|
- ./data:/var/lib/powerdns
|
||||||
|
environment:
|
||||||
|
- PDNS_LOCAL_ADDRESS=0.0.0.0
|
||||||
|
- PDNS_GSQLITE3_DATABASE=/var/lib/powerdns/pdns.sqlite3
|
||||||
|
- PDNS_LAUNCH=gsqlite3
|
||||||
|
- PDNS_API=yes
|
||||||
|
- PDNS_API_KEY=0aa08433-52a9-4611-9eed-5c5a08a508fc
|
||||||
|
- PDNS_MASTER=yes
|
||||||
|
- PDNS_ALLOW_AXFR_IPS=127.0.0.1
|
||||||
|
|
||||||
|
- PDNS_WEBSERVER=yes
|
||||||
|
- PDNS_WEBSERVER_ADDRESS=0.0.0.0
|
||||||
|
- PDNS_WEBSERVER_PORT=8081
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
если остались старые образы то удаляем их:
|
||||||
|
```sh
|
||||||
|
sudo docker ps
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
sudo docker stop 913bf9fec5eb &&
|
||||||
|
sudo docker rm 913bf9fec5eb &&
|
||||||
|
sudo docker rmi powerdns/pdns-auth-48
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /opt/powerdnsa &&
|
||||||
|
sudo docker-compose up -d
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
cd /opt/powerdnsa &&
|
||||||
|
sudo docker-compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверяем переменные окружения не заходя в контейнер
|
||||||
|
```sh
|
||||||
|
sudo docker inspect powerdns | grep -A 20 "Env"
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
sudo docker-compose exec powerdns env | grep PDNS_
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Проверяем открыты ли порты (не должен полностью отработать так как это не рекурсивный сервис)
|
||||||
|
```sh
|
||||||
|
sudo apt update && sudo apt install net-tools -y &&
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
sudo netstat -tulnp | grep 5300
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
sudo netstat -tulnp | grep 8081
|
||||||
|
```
|
||||||
|
|
||||||
|
Создаём зону и добавляем запись
|
||||||
|
```sh
|
||||||
|
sudo docker exec -it powerdns pdnsutil create-zone test ns1.test &&
|
||||||
|
sudo docker exec -it powerdns pdnsutil add-record test ccalm A 192.168.200.184
|
||||||
|
```
|
||||||
|
Проверим список зон
|
||||||
|
```sh
|
||||||
|
sudo docker exec -it powerdns pdnsutil list-all-zones &&
|
||||||
|
sudo docker exec -it powerdns pdnsutil list-zone test
|
||||||
|
```
|
||||||
|
Проверяем отвечалет ли:
|
||||||
|
```sh
|
||||||
|
dig @127.0.0.1 -p 5300 ccalm.test A
|
||||||
|
```
|
||||||
|
|
||||||
|
проверяем что порт открыт:
|
||||||
|
```sh
|
||||||
|
telnet 127.0.0.1 8081
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
wget -qO- http://127.0.0.1:8081
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo docker exec -it powerdns sh
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Посмотреть логи контейнера:
|
||||||
|
```sh
|
||||||
|
sudo docker logs --tail=100 -f 913bf9fec5eb
|
||||||
|
```
|
||||||
|
|
||||||
|
wget -qO- http://127.0.0.1:8081/api/v1/servers/localhost --header="X-API-Key: 0aa08433-52a9-4611-9eed-5c5a08a508fc"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
Пытаюсь зазобраться почему не работает Web сервер
|
||||||
|
|
||||||
|
Захожу в докер под рутом
|
||||||
|
```sh
|
||||||
|
sudo docker exec -it --user root powerdns /bin/sh
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
apt update && apt install -y mc
|
||||||
|
```
|
||||||
|
Проверяем какие порты слушает
|
||||||
|
```sh
|
||||||
|
apt update && apt install -y net-tools
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
netstat -tulnp
|
||||||
|
```
|
||||||
|
Смотрим все переменые окружения:
|
||||||
|
```sh
|
||||||
|
env
|
||||||
|
```
|
||||||
|
Перезапускаю в докере
|
||||||
|
```sh
|
||||||
|
/usr/sbin/pdns_server --daemon=no --guardian=no --loglevel=9
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
649
PowerDNS_install.md
Normal file
649
PowerDNS_install.md
Normal file
@ -0,0 +1,649 @@
|
|||||||
|
Документация по PowerDNS: https://doc.powerdns.com/authoritative/installation.html
|
||||||
|
****************************************************************************************************
|
||||||
|
## 2. Подключаемся к нужному серверу
|
||||||
|
```sh
|
||||||
|
ssh igor@192.168.200.85 -p 22
|
||||||
|
```
|
||||||
|
****************************************************************************************************
|
||||||
|
DynDNS на PowerDNS авторитативный сервер тот кто отвечает на те домены которые в его базе (рекурсивный присылает авторитативному запросы)
|
||||||
|
|
||||||
|
DNS на Ubuntu 24.04 согласно инстркции https://phoenixnap.com/kb/powerdns-ubuntu:
|
||||||
|
Можно было-бы использовать не 53 порт, но провайдер не даёт указывать порт при настройке DNS серверов (не знаю какие локальные проблемы могут возникнуть если задать не 53 порт)
|
||||||
|
Устанавливаем сам PowerDNS https://doc.powerdns.com/authoritative/installation.html
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt-get update &&
|
||||||
|
sudo apt-get upgrade -y
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt-get install pdns-server -y &&
|
||||||
|
sudo apt-get install pdns-backend-pgsql -y &&
|
||||||
|
sudo apt-get install pdns-backend-sqlite
|
||||||
|
```
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
Для использования SQLIte копируем схему из https://doc.powerdns.com/authoritative/backends/generic-sqlite3.html
|
||||||
|
```sh
|
||||||
|
sudo apt-get install pdns-backend-sqlite3 -y
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt install sqlite3 -y
|
||||||
|
```
|
||||||
|
|
||||||
|
Create database:
|
||||||
|
```sh
|
||||||
|
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 ".databases" &&
|
||||||
|
sudo chown pdns:pdns /var/lib/powerdns/pdns.sqlite3
|
||||||
|
```
|
||||||
|
Create database structure
|
||||||
|
```sql
|
||||||
|
sudo sqlite3 /var/lib/powerdns/pdns.sqlite3 <<EOF
|
||||||
|
|
||||||
|
PRAGMA foreign_keys = 1;
|
||||||
|
|
||||||
|
CREATE TABLE domains (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
name VARCHAR(255) NOT NULL COLLATE NOCASE,
|
||||||
|
master VARCHAR(128) DEFAULT NULL,
|
||||||
|
last_check INTEGER DEFAULT NULL,
|
||||||
|
type VARCHAR(8) NOT NULL,
|
||||||
|
notified_serial INTEGER DEFAULT NULL,
|
||||||
|
account VARCHAR(40) DEFAULT NULL,
|
||||||
|
options VARCHAR(65535) DEFAULT NULL,
|
||||||
|
catalog VARCHAR(255) DEFAULT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX name_index ON domains(name);
|
||||||
|
CREATE INDEX catalog_idx ON domains(catalog);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE records (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
domain_id INTEGER DEFAULT NULL,
|
||||||
|
name VARCHAR(255) DEFAULT NULL,
|
||||||
|
type VARCHAR(10) DEFAULT NULL,
|
||||||
|
content VARCHAR(65535) DEFAULT NULL,
|
||||||
|
ttl INTEGER DEFAULT NULL,
|
||||||
|
prio INTEGER DEFAULT NULL,
|
||||||
|
disabled BOOLEAN DEFAULT 0,
|
||||||
|
ordername VARCHAR(255),
|
||||||
|
auth BOOL DEFAULT 1,
|
||||||
|
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX records_lookup_idx ON records(name, type);
|
||||||
|
CREATE INDEX records_lookup_id_idx ON records(domain_id, name, type);
|
||||||
|
CREATE INDEX records_order_idx ON records(domain_id, ordername);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE supermasters (
|
||||||
|
ip VARCHAR(64) NOT NULL,
|
||||||
|
nameserver VARCHAR(255) NOT NULL COLLATE NOCASE,
|
||||||
|
account VARCHAR(40) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX ip_nameserver_pk ON supermasters(ip, nameserver);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE comments (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
domain_id INTEGER NOT NULL,
|
||||||
|
name VARCHAR(255) NOT NULL,
|
||||||
|
type VARCHAR(10) NOT NULL,
|
||||||
|
modified_at INT NOT NULL,
|
||||||
|
account VARCHAR(40) DEFAULT NULL,
|
||||||
|
comment VARCHAR(65535) NOT NULL,
|
||||||
|
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX comments_idx ON comments(domain_id, name, type);
|
||||||
|
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE domainmetadata (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
domain_id INT NOT NULL,
|
||||||
|
kind VARCHAR(32) COLLATE NOCASE,
|
||||||
|
content TEXT,
|
||||||
|
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX domainmetaidindex ON domainmetadata(domain_id);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE cryptokeys (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
domain_id INT NOT NULL,
|
||||||
|
flags INT NOT NULL,
|
||||||
|
active BOOL,
|
||||||
|
published BOOL DEFAULT 1,
|
||||||
|
content TEXT,
|
||||||
|
FOREIGN KEY(domain_id) REFERENCES domains(id) ON DELETE CASCADE ON UPDATE CASCADE
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX domainidindex ON cryptokeys(domain_id);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE tsigkeys (
|
||||||
|
id INTEGER PRIMARY KEY,
|
||||||
|
name VARCHAR(255) COLLATE NOCASE,
|
||||||
|
algorithm VARCHAR(50) COLLATE NOCASE,
|
||||||
|
secret VARCHAR(255)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
|
||||||
|
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Configure database connection from PowerDNS to SQLIte
|
||||||
|
```sh
|
||||||
|
sudo tee /etc/powerdns/pdns.d/pdns.local.sqlite.conf <<EOF
|
||||||
|
launch=gsqlite3
|
||||||
|
gsqlite3-database=/var/lib/powerdns/pdns.sqlite3
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
Set access level to file
|
||||||
|
```sh
|
||||||
|
sudo chown pdns: /etc/powerdns/pdns.d/pdns.local.sqlite.conf &&
|
||||||
|
sudo chmod 640 /etc/powerdns/pdns.d/pdns.local.sqlite.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
In PowerDNS configured to auto read config from dir /etc/powerdns/pdns.d/
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
Подключаюсь к базе и создаю схему базу со схемой из: https://doc.powerdns.com/authoritative/backends/generic-postgresql.html
|
||||||
|
Настраиваю соединение с базой данных в:
|
||||||
|
```sh
|
||||||
|
sudo tee /etc/powerdns/pdns.d/pdns.local.gpgsql.conf <<EOF
|
||||||
|
launch+=gpgsql
|
||||||
|
# gmysql parameters
|
||||||
|
gpgsql-host=127.0.0.1
|
||||||
|
gpgsql-port=5432
|
||||||
|
gpgsql-dbname=powerdns
|
||||||
|
gpgsql-user=powerdns
|
||||||
|
gpgsql-password=y7HMHi0ATxx1VC3UU5WG
|
||||||
|
gpgsql-dnssec=no
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
Set access level to file:
|
||||||
|
```sh
|
||||||
|
sudo chown pdns: /etc/powerdns/pdns.d/pdns.local.gpgsql.conf &&
|
||||||
|
sudo chmod 640 /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
|
||||||
|
```
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
На всякий случай делаю резервные копии исходных файлов настрое:
|
||||||
|
```sh
|
||||||
|
cd /etc/powerdns &&
|
||||||
|
sudo cp named.conf named.conf.bak &&
|
||||||
|
sudo cp pdns.conf pdns.conf.bak
|
||||||
|
```
|
||||||
|
Наспройку файла pdns.conf авторитетный сервер, есть такой пример который следует изучить: https://raw.githubusercontent.com/trinv/PowerDNS/a56b9122f4a2de9c1f789009f09b9831f74d8bf1/pdns.template.master.conf (естественно без 1й табуляции):
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo mcedit /etc/powerdns/pdns.conf
|
||||||
|
```
|
||||||
|
Write new settings rr
|
||||||
|
```sh
|
||||||
|
cd /etc/powerdns/ &&
|
||||||
|
sudo tee pdns.conf > /dev/null <<EOF
|
||||||
|
|
||||||
|
allow-axfr-ips=127.0.0.1 #slave server ip
|
||||||
|
also-notify=127.0.0.1 #slave server ip
|
||||||
|
|
||||||
|
include-dir=/etc/powerdns/pdns.d
|
||||||
|
launch=
|
||||||
|
|
||||||
|
local-address=192.168.200.85,127.0.0.1
|
||||||
|
local-port=5300
|
||||||
|
|
||||||
|
log-dns-details=on
|
||||||
|
log-dns-queries=yes
|
||||||
|
log-timestamp=yes
|
||||||
|
loglevel=4
|
||||||
|
|
||||||
|
webserver=yes
|
||||||
|
webserver-address=192.168.200.85
|
||||||
|
webserver-allow-from=::/0, 0.0.0.0/0
|
||||||
|
webserver-port=8081
|
||||||
|
|
||||||
|
master=yes
|
||||||
|
slave=no
|
||||||
|
|
||||||
|
# Также активирую API
|
||||||
|
api=yes
|
||||||
|
api-key=40c89f2a-e2f3-4ff8-a245-3547111f6677
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
Проверяю соединение к базе перезапустив PowerDNS:
|
||||||
|
```sh
|
||||||
|
sudo systemctl stop pdns &&
|
||||||
|
sudo pdns_server --daemon=no --guardian=no --loglevel=9
|
||||||
|
```
|
||||||
|
Пытаемся открыть WEB интерфейс
|
||||||
|
```sh
|
||||||
|
start http://192.168.200.85:8081
|
||||||
|
```
|
||||||
|
|
||||||
|
Если всё норм выполняем:
|
||||||
|
```sh
|
||||||
|
sudo systemctl restart pdns &&
|
||||||
|
sudo systemctl enable pdns &&
|
||||||
|
sudo systemctl status pdns
|
||||||
|
```
|
||||||
|
Проверяем что порт 5300 открыт для DNS:
|
||||||
|
```sh
|
||||||
|
sudo ss -alnp4 | grep pdns
|
||||||
|
```
|
||||||
|
Если что-то не получается то проверяем кто слушает на порту 53
|
||||||
|
```sh
|
||||||
|
sudo apt-get install net-tools -y &&
|
||||||
|
sudo netstat -tulnp | grep :5300
|
||||||
|
```
|
||||||
|
|
||||||
|
Создаём зону и добавляем запись
|
||||||
|
```sh
|
||||||
|
sudo pdnsutil create-zone test ns1.test &&
|
||||||
|
sudo pdnsutil add-record test ccalm A 192.168.200.184
|
||||||
|
```
|
||||||
|
Проверим список зон
|
||||||
|
```sh
|
||||||
|
sudo pdnsutil list-all-zones &&
|
||||||
|
sudo pdnsutil list-zone test
|
||||||
|
```
|
||||||
|
Проверяем отвечалет ли:
|
||||||
|
```sh
|
||||||
|
dig @127.0.0.1 -p 5300 ccalm.test A
|
||||||
|
```
|
||||||
|
|
||||||
|
## ********** Настройка рекурсивного DNS от PowerDNS Recursor 4.9.3 порту 53 будет обрабатывать запросы с локальной машины **********
|
||||||
|
Документация: https://doc.powerdns.com/recursor/index.html
|
||||||
|
Документация: https://docs.powerdns.com/recursor/indexTOC.html
|
||||||
|
Чтобы работал резольвер от PowerDNS а не тот который от ubuntu на 53 порту нужно:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt-get install pdns-recursor -y
|
||||||
|
```
|
||||||
|
|
||||||
|
Скачиваем список корневых серверов DNS (желательно обновлять раз в несколько месяцев)
|
||||||
|
```sh
|
||||||
|
sudo wget -O /usr/share/dns/root.hints https://www.internic.net/domain/named.cache &&
|
||||||
|
sudo chown pdns:pdns /usr/share/dns/root.hints
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo mkdir -p /var/run/pdns-recursor &&
|
||||||
|
sudo chown pdns:pdns /var/run/pdns-recursor &&
|
||||||
|
sudo chmod 755 /var/run/pdns-recursor
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo mcedit /etc/powerdns/recursor.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
Чтобы все запросы с . уходили на публичные DNS Google:
|
||||||
|
```conf
|
||||||
|
#dnssec=off #чтобы не проверял то что записано в forward-zones через корневые серверы
|
||||||
|
local-address=192.168.200.85,127.0.0.1
|
||||||
|
#forward-zones=local=127.0.0.1:5300 # Отправлять .local в авторитативный
|
||||||
|
#forward-zones+=.=8.8.8.8;8.8.4.4 # Все остальное в интернет
|
||||||
|
forward-zones=test=127.0.0.1:5300
|
||||||
|
#forward-zones-recurse=+test=127.0.0.1:5300
|
||||||
|
```
|
||||||
|
|
||||||
|
Либо если оставить настройку "nssec=process" то нужно прописать в /etc/powerdns/recursor.lua добавить комкнду addNTA, если не добавить то forward-zones не будет отрабатывать. Также можно сделать чтобы dirt.kz не выходил с наружи и с резу перенаправлялся на нужный IP с временем жизни минута 30 секунд.
|
||||||
|
```lua
|
||||||
|
addNTA("test", "Local test zone")
|
||||||
|
```
|
||||||
|
|
||||||
|
Пробуем запустить без сервиса чтобы посмотреть что выведит в лог
|
||||||
|
```sh
|
||||||
|
sudo pdns_recursor --daemon=no --loglevel=9
|
||||||
|
```
|
||||||
|
|
||||||
|
Чтобы запросы переходили на pdns-recursor
|
||||||
|
Затем перезагружаем:
|
||||||
|
```sh
|
||||||
|
sudo systemctl restart pdns-recursor &&
|
||||||
|
sudo systemctl status pdns-recursor
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверяем что порт 53 открыт для DNS:
|
||||||
|
```sh
|
||||||
|
sudo ss -alnp4 | grep pdns
|
||||||
|
```
|
||||||
|
Если что-то не получается то проверяем кто слушает на порту 53
|
||||||
|
```sh
|
||||||
|
sudo apt-get install net-tools -y &&
|
||||||
|
sudo netstat -tulnp | grep :53
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверяем что преобразование DNS нормально работает:
|
||||||
|
```sh
|
||||||
|
dig @192.168.200.85 google.com
|
||||||
|
```
|
||||||
|
если уже настроил PowerDNS сервер то можно попробовать отправить:
|
||||||
|
```sh
|
||||||
|
sudo rec_control wipe-cache test &&
|
||||||
|
sudo rec_control wipe-cache ccalm.test &&
|
||||||
|
dig @192.168.200.85 -p 53 ccalm.test
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
dig @127.0.0.1 -p 53 ccalm.test A
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
dig +trace @192.168.200.85 -p 53 ccalm.test
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверяем логи
|
||||||
|
```sh
|
||||||
|
sudo journalctl -u pdns-recursor --since "10 min ago"
|
||||||
|
```
|
||||||
|
Или так чтобы найти ошибки:
|
||||||
|
```sh
|
||||||
|
sudo journalctl -u pdns-recursor --no-pager | grep -i failed
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
journalctl -u pdns-recursor --no-pager | tail -n 50
|
||||||
|
```
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
## ********** По идее отключать не нужно так как systemd-resolved использует другой IP: 127.0.0.54:53 (Отключаю systemd-resolved иначе он будет конфликтовать с PowerDNS) **********
|
||||||
|
|
||||||
|
Редактирую /etc/netplan/ для того чтобы прописать поднятый DNS сервер на 127.0.0.1 (не знаю сработает ли так как отключу systemd-resolved)
|
||||||
|
```sh
|
||||||
|
sudo mcedit /etc/netplan/50-cloud-init.yaml
|
||||||
|
```
|
||||||
|
И прописываю в него:
|
||||||
|
```conf
|
||||||
|
nameserver 127.0.0.1
|
||||||
|
```
|
||||||
|
After configuration modification update settings:
|
||||||
|
```sh
|
||||||
|
sudo netplan apply
|
||||||
|
```
|
||||||
|
Смотрим что сгенерировалось автоматически в resolv.conf после модификации файла
|
||||||
|
```sh
|
||||||
|
cat /etc/resolv.conf
|
||||||
|
```
|
||||||
|
Проверяем что интернет не перестал работать:
|
||||||
|
```sh
|
||||||
|
ping changelogs.ubuntu.com
|
||||||
|
```
|
||||||
|
Может быть что команда выше пытается по IP6 работать тогда попробовать по
|
||||||
|
```sh
|
||||||
|
ping -4 changelogs.ubuntu.com
|
||||||
|
```
|
||||||
|
Либо так:
|
||||||
|
```sh
|
||||||
|
ping6 changelogs.ubuntu.com
|
||||||
|
```
|
||||||
|
Взглянем на текущие DNS сервера, у меня такое выдало: DNS Servers: 195.210.46.195 195.210.46.132 на команду ниже:
|
||||||
|
```sh
|
||||||
|
resolvectl status
|
||||||
|
```
|
||||||
|
Отредактировал файл /etc/systemd/resolved.conf заменив nameservers на 8.8.8.8 и 8.8.4.4
|
||||||
|
```sh
|
||||||
|
sudo mcedit /etc/systemd/resolved.conf
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверяем структуру файла:
|
||||||
|
```sh
|
||||||
|
sudo yamllint /etc/netplan/50-cloud-init.yaml
|
||||||
|
```
|
||||||
|
Применяем настройки:
|
||||||
|
```sh
|
||||||
|
sudo netplan apply
|
||||||
|
```
|
||||||
|
Проверяем что настройки изменились:
|
||||||
|
```sh
|
||||||
|
resolvectl status
|
||||||
|
```
|
||||||
|
Изменил /etc/systemd/resolved.conf настроив так:
|
||||||
|
```conf
|
||||||
|
[Resolve]
|
||||||
|
DNS=8.8.8.8 8.8.4.4
|
||||||
|
FallbackDNS=1.1.1.1 1.0.0.1
|
||||||
|
```
|
||||||
|
Потом перезагрузил:
|
||||||
|
```sh
|
||||||
|
sudo systemctl restart systemd-resolved
|
||||||
|
```
|
||||||
|
Проверяем что заняло порт 53 командой:
|
||||||
|
```sh
|
||||||
|
sudo lsof -i :53
|
||||||
|
```
|
||||||
|
Выдало:
|
||||||
|
```text
|
||||||
|
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
|
||||||
|
systemd-r 670 systemd-resolve 13u IPv4 20070 0t0 UDP localhost:domain
|
||||||
|
systemd-r 670 systemd-resolve 14u IPv4 20071 0t0 TCP localhost:domain (LISTEN)
|
||||||
|
```
|
||||||
|
|
||||||
|
Останавливаем systemd-resolved (поисковик IP по домену по умолчанию от Ubuntu)
|
||||||
|
```sh
|
||||||
|
sudo systemctl stop systemd-resolved &&
|
||||||
|
sudo systemctl disable systemd-resolved
|
||||||
|
```
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
## ********** Устанавливаю PowerAdmin (желательно в докере устанавливать) **********
|
||||||
|
Устанавливаю PowerAdmin согласно: https://phoenixnap.com/kb/powerdns-ubuntu#ftoc-heading-6
|
||||||
|
```sh
|
||||||
|
sudo apt install libpq-dev -y &&
|
||||||
|
sudo apt install python3-dev -y &&
|
||||||
|
sudo apt install python3-flask -y &&
|
||||||
|
sudo apt install python3-pip -y
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
sudo apt install -y git libmysqlclient-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https python3-venv build-essential curl &&
|
||||||
|
sudo apt install -y nodejs &&
|
||||||
|
sudo apt install -y yarn
|
||||||
|
```
|
||||||
|
устанавливаем другие зависимости:
|
||||||
|
```sh
|
||||||
|
sudo apt install npm -y &&
|
||||||
|
sudo apt remove yarn -y &&
|
||||||
|
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - &&
|
||||||
|
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list &&
|
||||||
|
sudo apt update &&
|
||||||
|
sudo apt install yarn -y &&
|
||||||
|
yarn --version &&
|
||||||
|
sudo yarn install --pure-lockfile
|
||||||
|
```
|
||||||
|
|
||||||
|
Create user for run PowerDNS Admin
|
||||||
|
```sh
|
||||||
|
sudo useradd -m -s /bin/bash powerdns-admin
|
||||||
|
```
|
||||||
|
Clone the PowerDNS Admin Git repository to /opt/web/powerdns-admin
|
||||||
|
```sh
|
||||||
|
cd ~
|
||||||
|
sudo git clone https://github.com/PowerDNS-Admin/PowerDNS-Admin.git /opt/web/powerdns-admin &&
|
||||||
|
sudo chown -R powerdns-admin:powerdns-admin /opt/web/powerdns-admin &&
|
||||||
|
cd /opt/web/powerdns-admin
|
||||||
|
```
|
||||||
|
Настраиваем переменные окружения:
|
||||||
|
```sh
|
||||||
|
sudo -u powerdns-admin -s &&
|
||||||
|
cd /opt/web/powerdns-admin
|
||||||
|
```
|
||||||
|
Устанавливаем перенеммые окружения и необходимые скрипты
|
||||||
|
```sh
|
||||||
|
python3 -mvenv ./venv &&
|
||||||
|
source ./venv/bin/activate &&
|
||||||
|
pip install --upgrade pip &&
|
||||||
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
Создаю базу данных
|
||||||
|
```sh
|
||||||
|
mkdir /opt/web/powerdns-admin/data &&
|
||||||
|
sqlite3 /opt/web/powerdns-admin/data/pdnsa.sqlite3 ".databases"
|
||||||
|
```
|
||||||
|
Cекретный ключ можно сгенерировать при помощи такой команды:
|
||||||
|
```sh
|
||||||
|
python3 -c "import secrets; print(secrets.token_hex(16))"
|
||||||
|
```
|
||||||
|
Такой сгенерил для 192.168.200.85: 1c100fb414b8116725a04015fbaf907e
|
||||||
|
|
||||||
|
Конфигугрируем PowerDNS Admin.
|
||||||
|
Для начала копирую пример конфигураци, потом открываю его в редакторе:
|
||||||
|
```sh
|
||||||
|
cp /opt/web/powerdns-admin/configs/development.py /opt/web/powerdns-admin/configs/production.py
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
mcedit /opt/web/powerdns-admin/configs/production.py
|
||||||
|
```
|
||||||
|
И редактируем следующие строки:
|
||||||
|
```conf
|
||||||
|
#import urllib.parse
|
||||||
|
SECRET_KEY = 'e951e5a1f4b94151b360f47edf596dd0'
|
||||||
|
SQLA_DB_PASSWORD = 'changeme'
|
||||||
|
```
|
||||||
|
|
||||||
|
Также настраиваю подключение к базе данных (сам строку составил):
|
||||||
|
```conf
|
||||||
|
SQLALCHEMY_DATABASE_URI = 'postgresql://powerdns:y7HMHi0ATxx1VC3UU5WG@127.0.0.1/powerdnsadmin'
|
||||||
|
```
|
||||||
|
Либо к новой базе данных:
|
||||||
|
|
||||||
|
```conf
|
||||||
|
SQLALCHEMY_DATABASE_URI = 'sqlite:////opt/web/powerdns-admin/data/pdnsa.sqlite3'
|
||||||
|
```
|
||||||
|
|
||||||
|
Остальное коментирую:
|
||||||
|
```conf
|
||||||
|
#SQLA_DB_USER = 'powerdns'
|
||||||
|
#SQLA_DB_PASSWORD = 'y7HMHi0ATxx1VC3UU5WG'
|
||||||
|
#SQLA_DB_HOST = '127.0.0.1'
|
||||||
|
#SQLA_DB_NAME = 'powerdnsadmin'
|
||||||
|
#SQLALCHEMY_DATABASE_URI = 'postgres://{}:{}@{}/{}'.format(
|
||||||
|
# urllib.parse.quote_plus(SQLA_DB_USER),
|
||||||
|
# urllib.parse.quote_plus(SQLA_DB_PASSWORD),
|
||||||
|
# SQLA_DB_HOST,
|
||||||
|
# SQLA_DB_NAME
|
||||||
|
#)
|
||||||
|
#SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'pdns.db')
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Экспортируем переменную:
|
||||||
|
```sh
|
||||||
|
cd /opt/web/powerdns-admin &&
|
||||||
|
export FLASK_CONF=../configs/production.py &&
|
||||||
|
export FLASK_APP=powerdnsadmin/__init__.py
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pip install --upgrade pip setuptools wheel &&
|
||||||
|
pip install setuptools &&
|
||||||
|
pip install flask-mail
|
||||||
|
```
|
||||||
|
|
||||||
|
Upgrade the database schema:
|
||||||
|
```sh
|
||||||
|
export PYTHONWARNINGS="ignore" &&
|
||||||
|
flask db upgrade
|
||||||
|
```
|
||||||
|
|
||||||
|
Если выдаёт ошибки то правим исзодный код:
|
||||||
|
```sh
|
||||||
|
mcedit /opt/web/powerdns-admin/powerdnsadmin/lib/utils.py
|
||||||
|
```
|
||||||
|
И заменяем экранирование
|
||||||
|
```python
|
||||||
|
# строку
|
||||||
|
from distutils.version import StrictVersion
|
||||||
|
# На строки
|
||||||
|
from packaging.version import Version as StrictVersion
|
||||||
|
from setuptools._distutils.util import strtobool
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
deactivate
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo su - powerdns-admin
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
cd /opt/web/powerdns-admin &&
|
||||||
|
flask assets build
|
||||||
|
```
|
||||||
|
|
||||||
|
Можно запускать (нужно задать переменные окружения которые выше):
|
||||||
|
```sh
|
||||||
|
cd /opt/web/powerdns-admin &&
|
||||||
|
source venv/bin/activate &&
|
||||||
|
./run.py
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
Проще запустить с использованием SQLite по инструкции из: https://github.com/PowerDNS-Admin/PowerDNS-Admin/blob/master/docs/wiki/install/Running-PowerDNS-Admin-on-Ubuntu-or-Debian.md
|
||||||
|
|
||||||
|
|
||||||
|
Теперь можно открыть
|
||||||
|
```sh
|
||||||
|
open http://192.168.200.85:9191/login
|
||||||
|
```
|
||||||
|
Для создания административного пользователя нажимаем "Create an account" пример https://orcacore.com/set-up-powerdns-ubuntu-22-04/
|
||||||
|
Создал с именем igor и ппаролем !Ii123456
|
||||||
|
|
||||||
|
|
||||||
|
!!! Проверь что PowerDNS API включён в /etc/powerdns/pdns.conf !!!
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
----------------------------------------------------------------------------------------------------
|
||||||
|
Настраиваем запус на постоянную работу через Gunicorn и systemd
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cd /opt/web/powerdns-admin &&
|
||||||
|
source venv/bin/activate &&
|
||||||
|
pip install gunicorn
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
exit
|
||||||
|
```
|
||||||
|
Создаю файл службы:
|
||||||
|
```sh
|
||||||
|
sudo tee /etc/systemd/system/powerdns-admin.service > /dev/null <<EOF
|
||||||
|
[Unit]
|
||||||
|
Description=PowerDNS-Admin Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=powerdns-admin
|
||||||
|
Group=powerdns-admin
|
||||||
|
WorkingDirectory=/opt/web/powerdns-admin
|
||||||
|
Environment="FLASK_CONF=../configs/production.py"
|
||||||
|
Environment="FLASK_APP=powerdnsadmin/__init__.py"
|
||||||
|
ExecStart=/opt/web/powerdns-admin/venv/bin/gunicorn --workers 2 --bind 192.168.200.85:9191 "powerdnsadmin:create_app()"
|
||||||
|
Restart=always
|
||||||
|
RestartSec=5s
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo systemctl enable powerdns-admin.service &&
|
||||||
|
sudo systemctl start powerdns-admin.service
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
sudo systemctl status powerdns-admin.service
|
||||||
|
```
|
||||||
|
```sh
|
||||||
|
sudo journalctl -u powerdns-admin.service
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
start http://192.168.200.85:9191/login
|
||||||
|
```
|
||||||
452
Ubuntu.md
452
Ubuntu.md
@ -818,278 +818,6 @@ secret = secretpass
|
|||||||
shortname = testclient
|
shortname = testclient
|
||||||
nastype= testdevice
|
nastype= testdevice
|
||||||
}
|
}
|
||||||
****************************************************************************************************
|
|
||||||
Установка PostgreSQL 11.5 windows10 из https://www.enterprisedb.com/download-postgresql-binaries:
|
|
||||||
Скачал, создаю дирректорию хранения данных:
|
|
||||||
O:\MyDocuments\DataBases\postgresql-12.3-1-windows-x64-binaries\pgsql\bin\initdb.exe -D O:\MyDocuments\DataBases\Data_PostgreSQL_12.3
|
|
||||||
O:\MyDocuments\DataBases\postgresql-10.13-1-windows-x64-binaries\pgsql\bin\initdb.exe -D O:\MyDocuments\DataBases\Data_PostgreSQL_10.13
|
|
||||||
Потом создать BAT файл с тем текстом что отобразится при создании каталога базы
|
|
||||||
База данных создаётся не под пользователем postgres а под локальным пользователем igor
|
|
||||||
****************************************************************************************************
|
|
||||||
Установка PostgreSQL 14 ubuntu 22.04 или 24.04
|
|
||||||
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install postgresql postgresql-contrib -y
|
|
||||||
Или так если нужно установить PostGIS
|
|
||||||
sudo apt-get install postgis
|
|
||||||
Для удаления PostGIS в месте с зависимыми пакетами:
|
|
||||||
sudo apt-get remove --auto-remove postgis
|
|
||||||
sudo apt-get purge postgis
|
|
||||||
Добавить русскую локаль если её нет:
|
|
||||||
sudo locale-gen ru_RU
|
|
||||||
sudo locale-gen ru_RU.UTF-8
|
|
||||||
sudo locale-gen kk_KZ
|
|
||||||
sudo locale-gen kk_KZ.UTF-8
|
|
||||||
Проверить какая локаль по умолчанию:
|
|
||||||
localectl status
|
|
||||||
И переконфигурировать локаль по умолчанию в ru_RU.UTF-8 (а то в mc могут быть кракозябры):
|
|
||||||
sudo dpkg-reconfigure locales
|
|
||||||
|
|
||||||
Для задания пароля в PostgreSQL выполнить:
|
|
||||||
sudo -u postgres psql
|
|
||||||
\password postgres
|
|
||||||
\q
|
|
||||||
Роль входа по умолчанию: postgres пароль можно поменять когда в pg_hba.conf установить trust
|
|
||||||
Задать пароль:
|
|
||||||
sudo -u postgres psql
|
|
||||||
postgres=> SELECT usename FROM pg_user;
|
|
||||||
postgres=> alter user postgres password 'PasSecrKey1';
|
|
||||||
postgres=> \q
|
|
||||||
|
|
||||||
Настройка postgresql.conf: http://www.lissyara.su/archive/1c_8.2+postgresql/
|
|
||||||
Создаём базу данных выполнив функцию:
|
|
||||||
CREATE DATABASE CCALM
|
|
||||||
WITH OWNER = postgres
|
|
||||||
TEMPLATE = template0
|
|
||||||
ENCODING = 'UTF8'
|
|
||||||
TABLESPACE = pg_default
|
|
||||||
LC_COLLATE = 'ru_RU.UTF-8'
|
|
||||||
LC_CTYPE = 'ru_RU.UTF-8'
|
|
||||||
CONNECTION LIMIT = -1;
|
|
||||||
|
|
||||||
Файл настроек postgresql: sudo mcedit /etc/postgresql/16/main/postgresql.conf
|
|
||||||
listen_addresses='*' #Разрешить подключение с внешки
|
|
||||||
#Для 9й версии разрешаем экранирующие символы \' и другие без спец символа "E" перед строкой
|
|
||||||
backslash_quote = on
|
|
||||||
escape_string_warning = off
|
|
||||||
standard_conforming_strings = off
|
|
||||||
Чтобы воводил двоичные данные по старому изменить на:
|
|
||||||
bytea_output = 'escape'
|
|
||||||
|
|
||||||
Настраиваю лимиты а то в саранче не выполняло большой запрос "Ошибка ввода/ввывода при отправке бэкенду"
|
|
||||||
|
|
||||||
Для создания нового пользователя выполнить:
|
|
||||||
sudo -u postgres psql
|
|
||||||
CREATE ROLE zholak LOGIN ENCRYPTED PASSWORD 'md5c0029083b93a3b16207a83b45e8a324a' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE REPLICATION;
|
|
||||||
|
|
||||||
Для подключения к определённой базе данных выполнить команду:
|
|
||||||
sudo -u postgres psql
|
|
||||||
\list or \l: для отображения всех баз
|
|
||||||
\connect zholak zholak
|
|
||||||
\dt для отображения всех таблиц
|
|
||||||
|
|
||||||
или написать со своим IP: host all all 2.133.238.240/24 trust
|
|
||||||
Для подключения с любых IP адресов в "sudo mcedit /etc/postgresql/16/main/pg_hba.conf" прописать:
|
|
||||||
host all all 0.0.0.0/0 md5
|
|
||||||
Либо с одного конкретного то: host all all 92.46.48.37/24 md5
|
|
||||||
А также поменять на listen_addresses = '*' в postgresql.conf
|
|
||||||
Потом перезагрузить postgres:
|
|
||||||
sudo service postgresql restart
|
|
||||||
sudo /etc/init.d/postgresql stop
|
|
||||||
sudo /etc/init.d/postgresql restart
|
|
||||||
sudo /etc/init.d/postgresql start
|
|
||||||
Проверить запущен или нет то:
|
|
||||||
sudo /etc/init.d/postgresql status
|
|
||||||
Посмотрель лог загрузки PostGreSQL:
|
|
||||||
dmesg |grep pg
|
|
||||||
Чтобы посмотреть чем занят порт выполнить команду:
|
|
||||||
sudo netstat -tap | grep 5432
|
|
||||||
|
|
||||||
Создать Backup (при переносе со старой на новую версию может быть не совместим для этого нужно делать бакам в текстовом формате: plain):
|
|
||||||
pg_dump bigfoott_shop>/home/igor/bigfoott_shop.sql --host=127.0.0.1 --username=bigfoott_root
|
|
||||||
pg_dump ASDC_Locust>/home/igor/ASDC_Locust.sql --host=127.0.0.1 --username=postgres
|
|
||||||
pg_dump zholak>/home/zholak/zholak.sql --host=127.0.0.1 --username=postgres
|
|
||||||
pg_dump stations>/home/administrator/pg_dump.sql --host=127.0.0.1 --username=postgres --format=custom
|
|
||||||
pg_dump transit>/home/administrator/transit.sql --host=127.0.0.1 --username=postgres
|
|
||||||
pg_dump weather>weather.backup --host=127.0.0.1 --username=postgres --format=custom
|
|
||||||
pg_dump transit>transit.backup --host=127.0.0.1 --username=postgres --format=custom
|
|
||||||
pg_dump weather_ru>weather_ru.backup --host=127.0.0.1 --username=postgres --format=custom
|
|
||||||
pg_dump -d CCALM -h 192.168.0.161 -U postgres -f O:\dumps\CCALM.sql
|
|
||||||
pg_dump --dbname=postgresql://postgres:PostPas1key@127.0.0.1:5432/ShopMaster | gzip > /mnt/disk1/backup/$(date +%Y-%m-%d).ShopMaster.gz
|
|
||||||
|
|
||||||
Востановить Dump из текстового файла:
|
|
||||||
psql ASDC_Locust < /home/igor/ASDC_Locustfcron.backup
|
|
||||||
psql -h 127.0.0.1 -U bigfoott_root -d bigfoott_shop_old2 < E:\dumps\bigfoottrade\dump.sql
|
|
||||||
psql -h 127.0.0.1 -U postgres -d monitoring < /home/igor/pg_dump.sql
|
|
||||||
psql -h 127.0.0.1 -U postgres -d transit_2024 < /home/administrator/transit.sql
|
|
||||||
psql -h 127.0.0.1 -U postgres -d bigfoot_shop < /home/igor/goods.sql
|
|
||||||
|
|
||||||
Создание SH скрипта для ежедневного бакапирования и архивации в ZIP файл:
|
|
||||||
/mnt/O_DRIVE/MyDocuments/DataBases/dumps/run.sh
|
|
||||||
#!/bin/sh
|
|
||||||
pg_dump --dbname=postgresql://postgres:A6dCgeDDWHbC@127.0.0.1:5432/Queue | gzip > /mnt/disk1/backup/$(date +%Y-%m-%d).Queue.gz
|
|
||||||
|
|
||||||
Для востановления через pg_restore (версии баз должны совпадать а то может не восстановиться):
|
|
||||||
su - postgres
|
|
||||||
pg_restore -U <username> -d <dbname> -1 <filename>.dump
|
|
||||||
pg_restore -U postgres -d zholak -1 /home/zholak/zholak_16.01.2019.backup
|
|
||||||
pg_restore -U postgres -d monitoring -1 /home/igor/stations_20200626.backup
|
|
||||||
pg_restore -U postgres -d transit_new -1 /home/administrator/temp/transit.backup
|
|
||||||
pg_restore -U postgres -d transit -1 /home/administrator/transit.backup
|
|
||||||
pg_restore --host=127.0.0.1 --username=postgres --dbname=transit_2024 --verbose /home/administrator/transit.backup
|
|
||||||
|
|
||||||
sudo -u postgres psql -d transit -f /tmp/transit.backup
|
|
||||||
|
|
||||||
Или из архива (первоначально задать trust на 127.0.0.1) так:
|
|
||||||
gunzip -c /var/www/dump.sql.gz | psql -h 127.0.0.1 -U bigfoott_root -d bigfoott_shop
|
|
||||||
|
|
||||||
****************************************************************************************************
|
|
||||||
Настройка отображения статистики для PostgreSQL:
|
|
||||||
https://habr.com/ru/articles/488968/
|
|
||||||
|
|
||||||
SELECT * FROM pg_stat_statements ORDER BY total_exec_time DESC;
|
|
||||||
SELECT * FROM pg_stat_activity
|
|
||||||
SELECT * FROM pg_stat_replication
|
|
||||||
SELECT * FROM pg_stat_all_tables
|
|
||||||
|
|
||||||
Полный список: https://postgrespro.ru/docs/postgrespro/9.5/monitoring-stats
|
|
||||||
|
|
||||||
Установить Prometheus сграфаной Grafana для PostgreSQL там по умолчанию есть набор настроек для сбора статистики с PostgreSQL
|
|
||||||
По мотивам: https://grafana.com/oss/prometheus/exporters/postgres-exporter/
|
|
||||||
По мотивам: https://www.youtube.com/watch?v=B_yz37CR1XU
|
|
||||||
****************************************************************************************************
|
|
||||||
Установка pgagent
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install pgagent
|
|
||||||
Выполнить в консоли запрос:
|
|
||||||
psql -h localhost -U postgres
|
|
||||||
create extension pgagent;
|
|
||||||
\q
|
|
||||||
Для разрешения подключения откройте файл pg_hba.conf и замените строку на:
|
|
||||||
host all all 127.0.0.1/32 md5
|
|
||||||
|
|
||||||
Можно для теста запустить pgagent с повышенным уровнем логирования:
|
|
||||||
/usr/bin/pgagent -f -l 2 hostaddr=127.0.0.1 dbname=postgres user=postgres password=lelPfAtgQWhHYfy1SsHk
|
|
||||||
|
|
||||||
Если файла нет то пытаюсь его создать:
|
|
||||||
sudo mcedit /lib/systemd/system/pgagent.service
|
|
||||||
|
|
||||||
[Unit]
|
|
||||||
Description=PostgreSQL PgAgent Service
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
User=postgres
|
|
||||||
ExecStart=/usr/bin/pgagent -f hostaddr=127.0.0.1 dbname=postgres user=postgres password=PasSecrKey1
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
|
|
||||||
Проверяю что сервис был запущен:
|
|
||||||
sudo systemctl daemon-reload
|
|
||||||
sudo systemctl enable pgagent
|
|
||||||
sudo service pgagent start
|
|
||||||
sudo systemctl status pgagent
|
|
||||||
|
|
||||||
|
|
||||||
Для проверки пробуем подключиться к базе данных
|
|
||||||
sudo -u postgres psql -h 127.0.0.1 -U postgres -d postgres
|
|
||||||
\q
|
|
||||||
|
|
||||||
Похоже что нужно ещё создать файл паролей так как агент не знает как подключаться:
|
|
||||||
sudo -u postgres touch /var/lib/postgresql/.pgpass
|
|
||||||
sudo -u postgres chmod 600 /var/lib/postgresql/.pgpass
|
|
||||||
sudo -u postgres mcedit /var/lib/postgresql/.pgpass
|
|
||||||
И прописать в него:
|
|
||||||
127.0.0.1:5432:postgres:postgres:PasSecrKey1
|
|
||||||
Где используется такой формат: hostname:port:database:username:password
|
|
||||||
Затем:
|
|
||||||
sudo systemctl enable pgagent
|
|
||||||
sudo service pgagent start
|
|
||||||
sudo service pgagent status
|
|
||||||
Посмотреть логи:
|
|
||||||
sudo journalctl -u pgagent
|
|
||||||
|
|
||||||
****************************************************************************************************
|
|
||||||
Для добавления автоматического бакапирования Postgresql базы *.backup создать скрипт:
|
|
||||||
|
|
||||||
|
|
||||||
****************************************************************************************************
|
|
||||||
Перенос базы PostgreSQL на другой диск: https://internet-lab.ru/postgresql_ubuntu_move
|
|
||||||
|
|
||||||
****************************************************************************************************
|
|
||||||
Установка PostGIS на PostgreSQL выше 9.0 версии:
|
|
||||||
sudo apt-get install postgis postgresql-9.3-postgis-2.1
|
|
||||||
Для 10й версии:
|
|
||||||
sudo apt install postgresql-10-postgis-2.4
|
|
||||||
sudo apt install postgresql-10-postgis-scripts
|
|
||||||
Для 12й версии:
|
|
||||||
sudo apt install postgresql-12-postgis-2.4
|
|
||||||
|
|
||||||
Создать базу данных и выполнть на ней следующие команды:
|
|
||||||
-- Enable PostGIS (includes raster)
|
|
||||||
CREATE EXTENSION postgis;
|
|
||||||
-- Enable Topology
|
|
||||||
CREATE EXTENSION postgis_topology;
|
|
||||||
-- fuzzy matching needed for Tiger
|
|
||||||
CREATE EXTENSION fuzzystrmatch;
|
|
||||||
-- rule based standardizer
|
|
||||||
CREATE EXTENSION address_standardizer;
|
|
||||||
-- example rule data set
|
|
||||||
CREATE EXTENSION address_standardizer_data_us;
|
|
||||||
-- Enable US Tiger Geocoder
|
|
||||||
CREATE EXTENSION postgis_tiger_geocoder;
|
|
||||||
|
|
||||||
У меня начало выдавать NOTICE: version "2.2.1" of extension "postgis_topology" is already installed и PostGIS перестал работать на моём PostgreSQL 9.5.17
|
|
||||||
Аказывается расширение кудато делось установил:
|
|
||||||
sudo apt-get install postgresql-9.5-postgis-2.2
|
|
||||||
****************************************************************************************************
|
|
||||||
Для добавления TOTP авторизации в Postgresql выполнить:
|
|
||||||
CREATE EXTENSION otp;
|
|
||||||
|
|
||||||
|
|
||||||
****************************************************************************************************
|
|
||||||
sudo apt-get install libpq-dev libpq-fe
|
|
||||||
Если есть несовместимость libpq-dev : Зависит: libpq5 (= 14.3-0ubuntu0.22.04.1) но 14.3-1.pgdg22.04+1 должен быть установлен
|
|
||||||
То удали ранее добавленный репозиторий: /etc/apt/sources.list.d/pgadmin4.list и обнови а потом попробуй установить заново libpq-dev
|
|
||||||
apt update
|
|
||||||
****************************************************************************************************
|
|
||||||
Установка phpPgAdmin через репозиторий:
|
|
||||||
sudo apt-get install phppgadmin
|
|
||||||
Можно открыть так: http://localhost/phppgadmin
|
|
||||||
Для доступа с любых ip адресов в файле: /etc/phppgadmin/apache.conf изменить на allow from all
|
|
||||||
Чтоб можно было залогинется под пользователем postgres меняем в:
|
|
||||||
/etc/phppgadmin/config.inc.php extra_login_security в false
|
|
||||||
Если phpphadmin не дает залогиниться и пишет "Неверный логин", нужно в postgresql.conf прописать $conf['servers'][0]['host'] = 'localhost';
|
|
||||||
|
|
||||||
Другой вариант скачать с сайта последнюю версию с "http://phppgadmin.sourceforge.net/doku.php".
|
|
||||||
****************************************************************************************************
|
|
||||||
Установка pgAdmin4 в Linux Mint 20.04 (inxi -S) Проверить версию линукса: cat /etc/os-release у меня выдало: NAME="Linux Mint" VERSION="20.3 (Una)"
|
|
||||||
|
|
||||||
Проверить что не записан левый репозиторий для phppgadmin в /ect/opt/
|
|
||||||
curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
|
|
||||||
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/bionic pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
|
|
||||||
sudo apt install pgadmin4
|
|
||||||
|
|
||||||
И не запустился сервер оболочка пытается стартануть а сервер нет...
|
|
||||||
|
|
||||||
sudo curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
|
|
||||||
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/focal pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
|
|
||||||
sudo apt install pgadmin4
|
|
||||||
|
|
||||||
Тоже не заработал
|
|
||||||
|
|
||||||
Попробовать так: https://www.tecmint.com/install-postgresql-with-pgadmin4-on-linux-mint/
|
|
||||||
|
|
||||||
****************************************************************************************************
|
|
||||||
Балансировщик назрузки и потоковая репликация:
|
|
||||||
Pgpool-II https://www.youtube.com/watch?v=qpxKlH7DBjU сервер с высокой доступностью
|
|
||||||
https://ritorika.com.ua/dokument/6/pgpool-chto-jeto
|
|
||||||
****************************************************************************************************
|
|
||||||
Мониторинг запросов postgresql
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
****************************************************************************************************
|
****************************************************************************************************
|
||||||
Проверить версию OpenSSL: openssl version -v
|
Проверить версию OpenSSL: openssl version -v
|
||||||
@ -2837,186 +2565,6 @@ echo $_SERVER['REMOTE_ADDR'];
|
|||||||
Проверяем что находит IP по доменному имени
|
Проверяем что находит IP по доменному имени
|
||||||
nslookup dirt.kz 127.0.0.1
|
nslookup dirt.kz 127.0.0.1
|
||||||
|
|
||||||
****************************************************************************************************
|
|
||||||
DynDNS на PowerDNS авторитативный сервер DNS на Ubuntu 22.04 согласно инстркции https://phoenixnap.com/kb/powerdns-ubuntu:
|
|
||||||
Можно было-бы использовать не 53 порт, но провайдер не даёт указывать порт при настройке DNS серверов (не знаю какие локальные проблемы могут возникнуть если задать не 53 порт)
|
|
||||||
Устанавливаем сам PowerDNS https://doc.powerdns.com/authoritative/installation.html
|
|
||||||
sudo apt-get install pdns-server
|
|
||||||
sudo apt-get install pdns-backend-pgsql
|
|
||||||
Подключаюсь к базе и создаю схему базу со схемой из: https://doc.powerdns.com/authoritative/backends/generic-postgresql.html
|
|
||||||
Настраиваю соединение с базой данных в:
|
|
||||||
sudo mcedit /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
|
|
||||||
Со следующим содержимым:
|
|
||||||
launch+=gpgsql
|
|
||||||
# gmysql parameters
|
|
||||||
gpgsql-host=127.0.0.1
|
|
||||||
gpgsql-port=5432
|
|
||||||
gpgsql-dbname=powerdns
|
|
||||||
gpgsql-user=powerdns
|
|
||||||
gpgsql-password=y7HMHi0ATxx1VC3UU5WG
|
|
||||||
gpgsql-dnssec=no
|
|
||||||
Задаю права доступа к файлу:
|
|
||||||
sudo chown pdns: /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
|
|
||||||
sudo chmod 640 /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
|
|
||||||
На всякий случай делаю резервные копии исходных файлов настрое:
|
|
||||||
cd /etc/powerdns
|
|
||||||
sudo cp named.conf named.conf.bak
|
|
||||||
sudo cp pdns.conf pdns.conf.bak
|
|
||||||
Наспройку файла pdns.conf авторитетный сервер, есть такой пример который следует изучить: https://raw.githubusercontent.com/trinv/PowerDNS/a56b9122f4a2de9c1f789009f09b9831f74d8bf1/pdns.template.master.conf (естественно без 1й табуляции):
|
|
||||||
#allow-recursion=0.0.0.0/0 не включил так как не предполагаю использоват как рккурсивный DNS
|
|
||||||
webserver=yes
|
|
||||||
webserver-address=0.0.0.0 #Если 0.0.0.0 то слушаем все имеющиеся
|
|
||||||
webserver-allow-from=5.76.254.182 #если из любой сети то так: ::/0, 0.0.0.0/0 но я поставил только домашний
|
|
||||||
webserver-port=8090
|
|
||||||
|
|
||||||
Перезагружаем и пытаемся открыть
|
|
||||||
sudo systemctl stop pdns.service
|
|
||||||
http://77.240.38.137:8090
|
|
||||||
Проверяю соединение к базе перезапустив PowerDNS:
|
|
||||||
sudo systemctl stop pdns.service
|
|
||||||
sudo pdns_server --daemon=no --guardian=no --loglevel=9
|
|
||||||
Если всё норм выполняем:
|
|
||||||
sudo systemctl restart pdns
|
|
||||||
sudo systemctl enable pdns
|
|
||||||
sudo systemctl status pdns
|
|
||||||
Проверяем что порт 53 открыт для DNS:
|
|
||||||
sudo ss -alnp4 | grep pdns
|
|
||||||
Проверяем отправляя запрос к dns серверу
|
|
||||||
dig @127.0.0.1 google.com
|
|
||||||
ping google.com
|
|
||||||
проверяем кто слушает на порту 53
|
|
||||||
sudo netstat -tulnp | grep :53
|
|
||||||
|
|
||||||
Для примера авторитетный для домена example.com то в базе данных должны быть такие настройки:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
********** рекурсивный DNS от PowerDNS, тоже 53 порт и будет конфликт, поэтому на одном IP можно настроить PowerDNS чтобы он выполнял функцию рекурсивного резольвера **********
|
|
||||||
Чтобы работал резольвер от PowerDNS а не тот который от ubuntu:
|
|
||||||
sudo apt-get install pdns-recursor -y
|
|
||||||
sudo mcedit /etc/powerdns/recursor.conf
|
|
||||||
И там прописать:
|
|
||||||
forward-zones=.=8.8.8.8;8.8.4.4
|
|
||||||
Также нужно настроить sudo mcedit /etc/resolv.conf и прописать туда (так как файл символическая ссылка то сервис systemd-resolved нужно остановить иначе он его перезапишет) это чтобы программы перенаправляли запросы поднятому резольверу:
|
|
||||||
nameserver 127.0.0.1
|
|
||||||
Чтобы запросы переходили на pdns-recursor
|
|
||||||
Затем перезагружаем:
|
|
||||||
sudo systemctl restart pdns-recursor
|
|
||||||
Проверяем что преобразование DNS нормально работает:
|
|
||||||
dig @127.0.0.1 google.com
|
|
||||||
|
|
||||||
********** Отключаю systemd-resolved иначе он будет конфликтовать с PowerDNS **********
|
|
||||||
Редактирую /etc/netplan/ для того чтобы прописать поднятый DNS сервер на 127.0.0.1 (не знаю сработает ли так как отключу systemd-resolved)
|
|
||||||
sudo netplan apply
|
|
||||||
Смотрим что сгенерировалось автоматически в resolv.conf после модификации файла
|
|
||||||
cat /etc/resolv.conf
|
|
||||||
|
|
||||||
Проверяем что интернет не перестал работать:
|
|
||||||
ping changelogs.ubuntu.com
|
|
||||||
Может быть что команда выше пытается по IP6 работать тогда попробовать по
|
|
||||||
ping -4 changelogs.ubuntu.com
|
|
||||||
Либо так:
|
|
||||||
ping6 changelogs.ubuntu.com
|
|
||||||
Взглянем на текущие DNS сервера, у меня такое выдало: DNS Servers: 195.210.46.195 195.210.46.132 на команду ниже:
|
|
||||||
resolvectl status
|
|
||||||
Отредактировал файл /etc/systemd/resolved.conf заменив nameservers на 8.8.8.8 и 8.8.4.4
|
|
||||||
Проверяем структуру файла командой: sudo yamllint /etc/netplan/50-cloud-init.yaml
|
|
||||||
Применяем настройки:
|
|
||||||
sudo netplan apply
|
|
||||||
Проверяем что настройки изменились:
|
|
||||||
resolvectl status
|
|
||||||
Изменил /etc/systemd/resolved.conf настроив так:
|
|
||||||
[Resolve]
|
|
||||||
DNS=8.8.8.8 8.8.4.4
|
|
||||||
FallbackDNS=1.1.1.1 1.0.0.1
|
|
||||||
Потом перезагрузил:
|
|
||||||
sudo systemctl restart systemd-resolved
|
|
||||||
|
|
||||||
Проверяем что заняло порт 53 командой:
|
|
||||||
sudo lsof -i :53
|
|
||||||
Выдало:
|
|
||||||
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
|
|
||||||
systemd-r 670 systemd-resolve 13u IPv4 20070 0t0 UDP localhost:domain
|
|
||||||
systemd-r 670 systemd-resolve 14u IPv4 20071 0t0 TCP localhost:domain (LISTEN)
|
|
||||||
Останавливаем systemd-resolved (поисковик IP по домену по умолчанию от Ubuntu)
|
|
||||||
sudo systemctl stop systemd-resolved
|
|
||||||
sudo systemctl disable systemd-resolved
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
********** PowerAdmin **********
|
|
||||||
Устанавливаю PowerAdmin согласно: https://phoenixnap.com/kb/powerdns-ubuntu#ftoc-heading-6
|
|
||||||
sudo apt install libpq-dev
|
|
||||||
sudo apt install python3-dev
|
|
||||||
sudo apt install python3-flask
|
|
||||||
sudo apt install python3-pip
|
|
||||||
pip install flask-mail && pip install Flask-Migrate && pip install flask-session && pip install python-ldap && pip install flask-login && pip install qrcode[pil] && pip install pytimeparse && pip install dnspython && pip install flask-seasurf && pip install flask-session-captcha && pip install zxcvbn && pip install authlib && pip install pyotp && pip install flask-login && pip install lima && pip install flask-assets && pip install lima && pip install psycopg2 && pip install asyncpg
|
|
||||||
|
|
||||||
sudo apt install -y git libmysqlclient-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https python3-venv build-essential curl
|
|
||||||
sudo apt install -y nodejs
|
|
||||||
sudo apt install -y yarn
|
|
||||||
Clone the PowerDNS Admin Git repository to /opt/web/powerdns-admin
|
|
||||||
git clone https://github.com/PowerDNS-Admin/PowerDNS-Admin.git /opt/web/powerdns-admin
|
|
||||||
cd /opt/web/powerdns-admin
|
|
||||||
python3 -mvenv ./venv
|
|
||||||
source ./venv/bin/activate
|
|
||||||
pip install --upgrade pip
|
|
||||||
pip install -r requirements.txt
|
|
||||||
Конфигугрируем PowerDNS Admin.
|
|
||||||
Для начала копирую пример конфигураци, потом открываю его в редакторе:
|
|
||||||
cp /opt/web/powerdns-admin/configs/development.py /opt/web/powerdns-admin/configs/production.py
|
|
||||||
mcedit /opt/web/powerdns-admin/configs/production.py
|
|
||||||
И редактируем следующие строки:
|
|
||||||
#import urllib.parse
|
|
||||||
SECRET_KEY = 'e951e5a1f4b94151b360f47edf596dd0'
|
|
||||||
SQLA_DB_PASSWORD = 'changeme'
|
|
||||||
Cекретный ключ можно сгенерировать при помощи такой команды: python3 -c "import os; print(os.urandom(16))"
|
|
||||||
Также настраиваю подключение к базе данных (сам строку составил):
|
|
||||||
SQLALCHEMY_DATABASE_URI = 'postgresql://powerdns:y7HMHi0ATxx1VC3UU5WG@127.0.0.1/powerdnsadmin'
|
|
||||||
Остальное коментирую:
|
|
||||||
#SQLA_DB_USER = 'powerdns'
|
|
||||||
#SQLA_DB_PASSWORD = 'y7HMHi0ATxx1VC3UU5WG'
|
|
||||||
#SQLA_DB_HOST = '127.0.0.1'
|
|
||||||
#SQLA_DB_NAME = 'powerdnsadmin'
|
|
||||||
#SQLALCHEMY_DATABASE_URI = 'postgres://{}:{}@{}/{}'.format(
|
|
||||||
# urllib.parse.quote_plus(SQLA_DB_USER),
|
|
||||||
# urllib.parse.quote_plus(SQLA_DB_PASSWORD),
|
|
||||||
# SQLA_DB_HOST,
|
|
||||||
# SQLA_DB_NAME
|
|
||||||
#)
|
|
||||||
#SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'pdns.db')
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Экспортируем переменную:
|
|
||||||
cd /opt/web/powerdns-admin
|
|
||||||
export FLASK_CONF=../configs/production.py
|
|
||||||
export FLASK_APP=powerdnsadmin/__init__.py
|
|
||||||
Upgrade the database schema:
|
|
||||||
flask db upgrade
|
|
||||||
|
|
||||||
устанавливаем другие зависемости:
|
|
||||||
sudo apt install npm
|
|
||||||
sudo apt remove yarn
|
|
||||||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
|
|
||||||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install yarn
|
|
||||||
yarn --version
|
|
||||||
sudo yarn install --pure-lockfile
|
|
||||||
flask assets build
|
|
||||||
|
|
||||||
Можно запускать:
|
|
||||||
./run.py
|
|
||||||
|
|
||||||
|
|
||||||
Проже запустить с использованием SQLite по инструкции из: https://github.com/PowerDNS-Admin/PowerDNS-Admin/blob/master/docs/wiki/install/Running-PowerDNS-Admin-on-Ubuntu-or-Debian.md
|
|
||||||
|
|
||||||
SALT = '$2b$12$yLUMTIfl21FKJQpTkRQXC0'
|
|
||||||
SECRET_KEY = 'e951e5a1f4b94151b360f47edf596dd0'
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
****************************************************************************************************
|
****************************************************************************************************
|
||||||
Установка сервиса обмена сообщениями RabbitMQ – менеджер сообщений (message broker), написан на Erlang, ближайший аналог в AWS – SQS. По документации из: https://rtfm.co.ua/ru/rabbitmq-zapusk-opisanie-primery/
|
Установка сервиса обмена сообщениями RabbitMQ – менеджер сообщений (message broker), написан на Erlang, ближайший аналог в AWS – SQS. По документации из: https://rtfm.co.ua/ru/rabbitmq-zapusk-opisanie-primery/
|
||||||
|
|||||||
38
Zulip_install.md
Normal file
38
Zulip_install.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
Открываю нужный сервер
|
||||||
|
```sh
|
||||||
|
wsl
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -sSX POST https://istt-kz.zulipchat.com/api/v1/fetch_api_key \
|
||||||
|
--data-urlencode username=ivanov.i@istt.kz \
|
||||||
|
--data-urlencode password=fsUHb3hf3QCdpBLsKyhL
|
||||||
|
```
|
||||||
|
Выдало:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"result":"success",
|
||||||
|
"msg":"",
|
||||||
|
"api_key":"91kQqr13HCwFP2HeARWPHxrfksYPH82p",
|
||||||
|
"email":"ivanov.i@istt.kz",
|
||||||
|
"user_id":880555
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -X POST https://istt-kz.zulipchat.com/api/v1/messages \
|
||||||
|
-u "ivanov.i@istt.kz:91kQqr13HCwFP2HeARWPHxrfksYPH82p" \
|
||||||
|
-d "type=stream" \
|
||||||
|
-d "to=general" \
|
||||||
|
-d "topic=Тест5" \
|
||||||
|
-d "content=Привет из консоли!"
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl -X POST https://istt-kz.zulipchat.com/api/v1/messages \
|
||||||
|
-u "ivanov.i@istt.kz:91kQqr13HCwFP2HeARWPHxrfksYPH82p" \
|
||||||
|
-d "type=private" \
|
||||||
|
-d "to=ivanov.i@istt.kz" \
|
||||||
|
-d "topic=Тест5" \
|
||||||
|
-d "content=Привет из консоли!"
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user