diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/Ubuntu.md b/Ubuntu.md new file mode 100644 index 0000000..2f492dc --- /dev/null +++ b/Ubuntu.md @@ -0,0 +1,4487 @@ +**************************************************************************************************** +Настройка времени и NTP сервера +Устанавливаем зону + sudo timedatectl set-timezone Asia/Almaty + sudo date --set="2025-01-07 21:05:00.000" + sudo timedatectl set-ntp on + sudo apt install ntp + ntpq -p +**************************************************************************************************** +Добавляем нового пользователя + sudo adduser sabyrzhan + sudo usermod -aG sudo имя_пользователя +**************************************************************************************************** +Установка cinamon на Ubuntu 22.04 и 24/04: + sudo apt update && sudo apt upgrade -y + sudo apt install cinnamon -y + sudo reboot +Настройка клавиатуры в cinamon удаляем: ibus + sudo apt-get remove ibus + +Добавить в конец файла: sudo mcedit /etc/fstab +/media/sf_O_DRIVE /mnt/O_DRIVE none bind 0 0 +/media/sf_D_DRIVE /mnt/D_DRIVE none bind 0 0 + +sudo chmod 777 /mnt/O_DRIVE +sudo usermod -aG vboxsf $USER + + +**************************************************************************************************** +Для монтирования O_DRIVE в VitrualBox прописывать точку монтирования: /mnt/O_DRIVE +**************************************************************************************************** +Авторизация на базе ключей SSH https://selectel.ru/blog/ssh-authentication/ + +**************************************************************************************************** +Для добавления ярлыка в меню пуск + cd /usr/share/applications +И там создать файл: *.desktop + +[Desktop Entry] +Encoding=UTF-8 +Name=IDEA_JEE +Exec=/opt/idea-IU-221.5787.30/bin/idea.sh +Icon=/opt/idea-IU-221.5787.30/bin/idea.svg +Type=Application +Categories=TextEditor;Development;IDE; +MimeType=text/html +Comment=Java development +Keywords=java;development; + +**************************************************************************************************** + +Linux в Windows https://winitpro.ru/index.php/2020/07/13/zapusk-linux-v-windows-wsl-2/ + wsl --list --online + wsl --install -d Ubuntu +После чего установится Ubuntu, перезагрузил, создал пользователя igor и задал простой пароль + sudo apt-get update && sudo apt-get upgrade -y + sudo apt-get install mc +**************************************************************************************************** +Меняем временую зону Ubuntu + sudo timedatectl set-timezone UTC +**************************************************************************************************** +Убрать звуковые щелчки при работе в Ubuntu которые появляются из-за режима энергосбережения: +Отключить режим низкого энергопотребления для зуковой карты sound + sudo su + echo '0' > /sys/module/snd_hda_intel/parameters/power_save +Фаил авто выполнения скрипта при загрузки: + sudo mcedit /etc/rc.local +В начале файла поставить: #!/bin/bash + sudo chmod +x /etc/rc.local + sudo mcedit /etc/systemd/system/rc-local.service + +[Unit] + Description=/etc/rc.local Compatibility + ConditionPathExists=/etc/rc.local + +[Service] + Type=forking + ExecStart=/etc/rc.local start + TimeoutSec=0 + StandardOutput=tty + RemainAfterExit=yes + SysVStartPriority=99 + +[Install] + WantedBy=multi-user.target + + sudo systemctl enable rc-local + sudo systemctl status rc-local +**************************************************************************************************** +Для того чтобы консоль бястро не отключалась добавить в конец файла: sudo mcedit /etc/sysctl.conf + net.ipv4.tcp_keepalive_time = 600 + net.ipv4.tcp_keepalive_intvl = 10 + net.ipv4.tcp_keepalive_probes = 6 +Перезагрузить: + sysctl -p +Проверить: + cat /proc/sys/net/ipv4/tcp_keepalive_time +**************************************************************************************************** +Обновить ядро Ubuntu на самое новое: + uname -r +Выдало: + 4.15.0-167-generic + 5.4.0-99-generic +Пытаюсь поменять на 5.13.0 или 5.16.10 ищем ядро: + sudo apt-cache search linux-image | more +Устанавливаем ядро: + sudo apt-get install linux-image-5.13.0-1029-oem + + sudo apt install gdebi +**************************************************************************************************** +Тест памяти Ubuntu: +Объем оперативной памяти: + free -h + sudo apt install memtester +Для примера запустим проверку блока ОЗУ, размером в 100 мегабайт состоящую из двух циклов: + sudo memtester 100M 2 +Для более тщательного тестирования памяти можно воспользоваться утилитой memtest86+ из меню загрузчика Grub. +**************************************************************************************************** +Если grub загрузчик установился на флешку то так можно установать на нужный диск + sudo fdisk -l + sudo grub-install --root-directory=/ /dev/sda +В Ubuntu server при неправильном выключениии высвечивается меню grub без времени чтобы его отключить: +Для поиска Windows если он исчез: + sudo os-prober + sudo update-grub +Или так: + sudo mcedit /etc/default/grub + GRUB_DISABLE_OS_PROBER=true +Или так: + sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt update + sudo apt install -y boot-repair && boot-repair +**************************************************************************************************** +Установка и добавление себя в sudo + su -c "apt-get update" + su -c "apt-get -y install sudo" + su -c "addgroup ваш_логин sudo" +**************************************************************************************************** +Установка сервиса времени и часовой пояс +apt-get -y install ntp +dpkg-reconfigure tzdata +**************************************************************************************************** +0) Для того чтобы архивировать и извлечь каталог: + tar -cvf istransit.tar /opt/www/istransit.kz + + tar -xvf /opt/www/istransit.tar -C /opt/www +0)Выключить комп: + shutdown -h now +1)Список процессов + top или лучше установить htop + +Монтирование образа CD + mount -o loop /some.iso /mnt/point + mount -o loop -t iso9660 + + umount DIRECTORY + umount DEVICE_NAME +Посмотреть точки монтирования дисков: + sudo fdisk -l + +3.1) Посмотреть мак адрес по адресу /etc/udev/rules.d/z25_persistent-net.rules + +4)DNS сервера в ubuntu прописываються в /etc/resolv.conf (теперь в другом месте см. инет) + nameserver 212.19.149.53 + nameserver 212.19.149.54 + +5)Список репозиториев в ubuntu расположен в nano /etc/apt/sources.list + apt-get update + apt-get install mc + apt-get remove mc + +Если mc не найден то добавить в репозитории nano /etc/apt/sources.list эту строку: + deb http://archive.ubuntu.com/ubuntu/ jaunty universe + +6)Переменные окружения + export PATH=$PATH:/usr/local/bin:/usr/local/sbin + alias mc='mc -c' + mc +7)Отобразить переменные окружения: export + +8)Настройка PPPoE соединения комманда: pppoeconf +Соединятся командой: sudo pon dsl-provider +Завершить соединение: sudo poff dsl-provider + +**************************************************************************************************** + +Выполнение скрипта + sh Check.sh +**************************************************************************************************** +Символическая ссылка Symbolic +ссылка на папку: + ln -s /mnt/data/ftp /var/www/html/upload +********** Настраиваю прокси сервер ********** + sudo mcedit /etc/environment +И в заголовок пишу: + http_proxy=http://192.168.1.89:8888 + https_proxy=http://192.168.1.89:8888 +или + http_proxy=http://192.168.0.170:7777 +**************************************************************************************************** +Для того чтобы посмотреть размер файлов: + ncdu +Для определения сколько свободного места выполнить: + df -h +**************************************************************************************************** +Чтобы вывести информацию по ОЗУ (ram) выполните команду: + sudo lshw -C memory +**************************************************************************************************** +Установка компилятора для разработки на c++ gcc + sudo apt-get update -y + sudo apt-get upgrade -y + sudo apt-get install perl -y + sudo apt-get install build-essential +Для компиляции по 32 битный Linux (В еклипсе прописать g++ -m32 а также gcc -m32 а также g++ -m32): + sudo apt-get install gcc-multilib + sudo apt-get install g++-multilib +Для eclipse установить: + sudo apt install default-jre +**************************************************************************************************** +Установка кросс-компилятора Cross Compilers для Raspberry Pi на Ubuntu: https://github.com/raspberrypi/tools + sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf + +Note: if building for Pi0/1 using --with-arch=armv6 --with-float=hard --with-fpu=vfp is recommended (and matches the default flags of the toolchains included here). + + + + /home/igor/toolchain/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf + +**************************************************************************************************** +записать информацию о расположении загрузчика системы в фаил +[root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx bs=512 count=1 +**************************************************************************************************** +Компиляция WIFI драйвера +Для того чтобы узнать версию ядра "4.15.0-23-generic": + uname -r +Внмание: исходники ядра должны быть той же версии что и сейчас работают в системе! +Вывести информацию о USB устройствах: + lsusb -v +У меня выдало: +Для того чтобы посмотреть что подсоединено к pci: + lspci -v +Minipcie +Для того чтобы посмотреть всех устройств: + lsdev -v + +И так у меня RTL8821AE пробую скачать драйвер отсюда: + + +Загрузка и проверка модулей: + lsmod +**************************************************************************************************** +Подключение к wifi +Настраиваемрегион командой: iw reg set CN + + +То что мы живём в китае а то 5G WIFI не работает +sudo -i +echo "options cfg80211 ieee80211_regdom=CN" > /etc/modprobe.d/cfg80211.conf +exit + +sudo ifconfig wlan0 up +$ sudo iwconfig wlan0 essid Node5 +$ sudo dhclient -v wlan0 +http://help.ubuntu.ru/wiki/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D1%81%D0%B5%D1%82%D0%B8_%D0%B2%D1%80%D1%83%D1%87%D0%BD%D1%83%D1%8E#%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_wifi +**************************************************************************************************** +Активация DHCP клиента: +**************************************************************************************************** +Создание нового пользователя с домашней дерикторией: + sudo useradd igor -g www-data +Задаём пароль: + sudo passwd igor +Добавляем пользователя в дополнительную группу (группы через запятую): + sudo usermod -a -G www-data administrator + sudo usermod -a -G tomcat administrator + sudo usermod -a -G sudo igor +Разрешить доступ к последовательному порту Для этого помещаем себя в группу dialout + sudo usermod -a -G dialout igor +Для проверки настроек: + id igor + groups igor +Назначить sudo привилегии пользователю: + mcedit /etc/sudoers + igor ALL=(ALL:ALL) ALL +Рекурсивно назначить вледельца папки: + + + sudo chown tomcat:tomcat -R /opt/tomcat/geoserver/ROOT/data + sudo chown tomcat:tomcat ~/CCALM.war + sudo chown tomcat:tomcat ~/SoilScience.war + sudo chown : -R /.blabla +Выставляем права на папку: + sudo chmod -R 774 /var/www/ +Для удаления пользователя c домашней и mail директорией выполнить: + userdel -r igor +**************************************************************************************************** +Монтирование USB Flash +mount -t vfat /dev/sda1 /flash +umount /flash +Автомонтирование USB при запуске системы http://www.fight.org.ua/hdddrives/linux_disk_mount_fstab.html http://help.ubuntu.ru/wiki/fstab: +Выполнить команду: sudo blkid +Найти строку: + /dev/sdb1: LABEL="IGOR_8GB" UUID="94D2-1374" TYPE="vfat" + /dev/sdb1: LABEL="SSD_2_5" UUID="14A3BBD52CB2F1C3" TYPE="ntfs" PARTUUID="56c83443-01" + /dev/sdb5: UUID="17C59CBD70BFFBA5" TYPE="ntfs" PARTUUID="f9aec734-05" + +Добавить в sudo mcedit /etc/fstab следующее: + UUID=94D2-1374 /media/usb vfat rw,auto,user,exec,async 0 0 + UUID=7086E7317C4E478E /mnt/O_DRIVE ntfs-3g defaults 0 0 + /dev/sda3 /mnt/ssd ntfs-3g rw,auto,user,exec,async 0 0 + /dev/sda3 /mnt/windows ntfs-3g defaults 0 0 + +Монтирование сетевой файловой системы: + mount -t cifs //192.168.0.11/o /mnt/smb -o username=igor,password=1245,iocharset=utf8,codepage=cp866 +Для автоматического монтирования в /etc/fstab записать: //192.168.0.11/o /mnt/smb cifs username=igor,password=1245,rw,auto,noexec,iocharset=utf8,codepage=cp866,uid=1000,gid=100 0 0 +**************************************************************************************************** +Перенос системы на другой жеский диск (также можно делать недельные бакапы системы, на атоме установленна) +Создаём копию системы на флешку: +sudo tar cvpzf /media/usb/backup.tgz --exclude=/var/www --exclude=/etc/fstab --exclude=/boot/grub/grub.cfg --exclude=/mnt --exclude=/media --exclude=/proc --exclude=/lost+found --exclude=/sys / +Потом извлекаем на новую установленную систему командой: sudo tar xvpfz /backup.tgz -C / +Можно также скопировав с диска на диск без синхронизации: +**************************************************************************************************** +Измененние раздела без перезагрузки сервера после увеличения размера жеского диска (на основе: https://serverspace.ru/support/help/uvelichenie-diskovogo-prostranstva-ubuntu-18/) +ТОЛЬКО ДЛЯ РАЗДЕЛОВ LVM +Посмотреть список дисков: + df -h + lsblk +Выполняем сканирование конфигурации и передачу данных ядру ОС: + echo 1 > /sys/block/sda/device/rescan +Запускаем утилиту: + parted +Выводим таблицу разделов: + p +Результат такой (для запоминания): + Model: VMware Virtual disk (scsi) + Disk /dev/sda: 537GB + Sector size (logical/physical): 512B/512B + Partition Table: gpt + Disk Flags: + + Number Start End Size File system Name Flags + 1 1049kB 2097kB 1049kB bios_grub + 2 2097kB 215GB 215GB ext4 + +Запускаем процедуру слияния: + (parted) resizepart 2 +Где «2» означает номер тома, на котором происходит изменение дискового пространства, вбиваю нужный размер: + 537GB +Потом: + quit +Информируем OC об изменениях: + pvresize /dev/sda2 +Меняем значение тома командой: + lvextend -r -l +100%FREE /dev/mapper/vgroup1-root +Проверяем результат: + df –h + +---------------------------------------- +Вариант для не виртуальной файловой системы (https://habr.com/ru/post/450444/): +Проверяем размер: + sudo fdisk -l +Выдало: + Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectors + Units: sectors of 1 * 512 = 512 bytes + Sector size (logical/physical): 512 bytes / 512 bytes + I/O size (minimum/optimal): 512 bytes / 512 bytes + Disklabel type: gpt + Disk identifier: 955FD603-437A-4A80-B5F6-90F1C2CCD1D0 + + Device Start End Sectors Size Type + /dev/sda1 2048 4095 2048 1M BIOS boot + /dev/sda2 4096 419921875 419917780 200,2G Linux filesystem +Удаляем раздел и создаём новый командами: + sudo fdisk /dev/sda + p + d + n (Метку файловой системы не удаляем) +Обновляем: + sudo partprobe /dev/sda +Перезаписываем метаданные файловой системы: + sudo resize2fs /dev/sda2 +Проверяем: + sudo fdisk -l +**************************************************************************************************** +Добавление нового пользователя см. cat /etc/passwd и cat /etc/group + sudo useradd tester -d /var/www/www.dirt.kz -g 33 -s /usr/sbin/nologin + sudo passwd tester + sudo userdel tester +**************************************************************************************************** +Настройка rsync для резервного копирования файлов в отдельную папку http://ashep.org/2010/backup-v-linux-nastraivaem-rsync-server/#.VPrB0_mQCNY +1 й командой на флешку: rsync -rlvt --modify-window=1 --delete /var/www /media/usb +Меняем редактор по умолчанию на тот который от MC: + export EDITOR=mcedit +Для добавления в cron для дневной синхронизации: + crontab -e +И добавляем строчку чтоб это происходило в 3 часа ночи: + 0 3 * * * rsync -rlvt --modify-window=1 --delete /var/www /media/usb +**************************************************************************************************** +Настройка cron: + sudo update-alternatives --config editor + update-alternatives --config editor + export EDITOR=mcedit +Или записать в "sudo mcedit /etc/environment" строку "EDITOR=mcedit" + sudo crontab -e + sudo crontab -e -u www-data + sudo crontab -e -u tomcat +В файле прописать: + */5 * * * * wget -O /dev/null -q 'http://www.bigfoottrade.kz/cashier/work.php' + */2 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/globalstar.php' + 10 0 * * * wget -O /dev/null -q 'http://www.bigfoottrade.kz/sitemap.php' + 0 * * * * wget -O /dev/null -q 'http://www.bigfoottrade.kz/shop/tree.php?fn=0&name=test_tree.js' + */30 * * * * /usr/bin/php5 /var/www/update_ip.php + + */1 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/work.php' + 0 3 * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/get/list.php' + */1 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/mail.php' + */1 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/iridium.php' + */2 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/globalstar.php' + + 0 6 * * * wget -O /dev/null -q 'http://locust.kz/DownloadWeather?forecast=000' + 0 7 * * * wget -O /dev/null -q 'http://locust.kz/DownloadWeather?forecast=048' + 1 1 1 * * wget -O /dev/null -q 'http://locust.kz/SendMail' + + 0 1 * * * wget -O /dev/null -q 'http://locust.kz/get/list.php' + 0 1 * * * /opt/backups/backup.sh + +Проверяю таблицу: + sudo crontab -l -u www-data +**************************************************************************************************** +Установка MongoDB на Ubuntu https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-18-04-ru + + sudo apt update + sudo apt install mongodb-server + sudo systemctl status mongodb + +**************************************************************************************************** +Установка MySQL на Ubuntu 22.04 + apt-get update + sudo apt-get install mysql-server +Удаление MySQL + sudo systemctl stop mysql + sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-* + sudo rm -rf /etc/mysql /var/lib/mysql + sudo apt autoremove + sudo apt autoclean +Меняем пароль через SQL: + sudo mysql + ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newIg@rR0'; + SELECT user,authentication_string,plugin,host FROM mysql.user; + SHOW GRANTS FOR 'root'@'localhost'; + +Также настроить чтобы он был не регистрозависемым в файле /etc/mysql/mysql.conf.d/mysqld.cnf в секции [mysqld] добавить строку: + lower_case_table_names = 1 +Для возможность удаленого подключения через внешку создаём спец пользователя, это я сделал через dbForge создав там пользователя root@192.168.0.%. + sudo mysql -u root -pnewIg@rR0 + CREATE USER 'root'@'192.168.0.%' IDENTIFIED WITH mysql_native_password BY 'newIg@rR0'; + ALTER USER 'begaikin'@'192.168.0.%' IDENTIFIED BY 'Begaikin@2'; + Проверить: GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.%'; + GRANT ALL PRIVILEGES ON `%`.* TO 'root'@'192.168.0.%'; + SHOW GRANTS FOR 'root'@'192.168.0.%'; + +А также для удалёного подключения закоментить параметр "bind-address = 127.0.0.1" в файле настроек mcedit /etc/mysql/mysql.conf.d/mysqld.cnf + +Перезагружаем MySQL: + sudo service mysql restart + + +База MySQL: db1109882_locust +Логин: u1109882_root +Пароль: root123456 + +mysqldump -uu1109882_root -proot123456 -h127.0.0.1 db1109882_locust > /root/db1109882_locust2.sql +**************************************************************************************************** +Установка MySQL для разработчика: + sudo apt-get update + sudo apt-get install libmysqld-dev +**************************************************************************************************** +Установка Apache и PHP (на посл версии Ubuntu php7): + sudo apt-get update + sudo apt-get install apache2 php + sudo apt-get install php libapache2-mod-php + sudo apt-get install php gettext + sudo apt-get install php php-gd + sudo apt-get install php php-pgsql + sudo apt-get install php php-mysql + sudo apt-get install php php-mysqli + sudo apt-get install php-imap + sudo apt-get install php-mbstring + sudo apt-get install php-curl + sudo apt-get install php-soap + sudo apt-get install libapache2-mod-passenger #Для redmine + sudo apt-get install libapache2-mod-fastcgi #Для redmine +Включаем модули: + sudo phpenmod imap + sudo phpenmod mbstring + sudo a2enmod rewrite + И в sudo mcedit /etc/apache2/apache2.conf ставим AllowOverride All + sudo a2enmod php8.0 + sudo a2enmod ssl #Так как в последнее время делаю через haproxy то SSL в апачи не использую + sudo a2enmod headers + sudo a2enmod expires + sudo a2enmod passenger #Для redmine + sudo a2enmod fastcgi #Для redmine + sudo a2dismod info #Чтобы не светить статистикой в сеть + sudo a2dismod status #Чтобы не светить статистикой в сеть + +Также добавляем обработку раширения .xyz как .php файл. + + +Настраиваем PHP /etc/php/8.3/apache2/php.ini: + max_execution_time = 60 + max_input_time = 120 + short_open_tag = On + display_errors = On + post_max_size = 20M + upload_max_filesize = 20M + + session.gc_maxlifetime = 14400 #Увеличиваем время жизнисесии до 4 часов + +Если выдаёт такое: + AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message + + +Настройка Apache: + httpd - запустить Apache +Перезапустить Apache + sudo /etc/init.d/apache2 restart + sudo service apache2 restart + +********** Установка Composer для php ********** +Скачиваю в домашнюю папку пользователя + curl -sS https://getcomposer.org/installer -o composer-setup.php +Выполняем загрузку и установку: + sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer +Потом можно будет переходить в папку с сайтом и выполнять + composer require mpdf/mpdf + +********** Настройка laravel под Windows php фреймворк ********** +https://www.tutorialspoint.com/laravel/laravel_installation.htm +После установки композера раскоментить расширение ;extension=fileinfo и выполнить команду: + composer create-project laravel/laravel rigor --prefer-dist +Потом можно запустить сервер зайдя в созданную папку: + php artisan serve + +********** Настройка https ssl для apache под Windows ********** +https://apache-windows.ru/apache-ssl-переход-apache-на-https/ + +********** Настройка https ssl для apache под Linux ********** +Создаём ключ командой: + sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt +На вопрос пароля написал "test!irigm" +Снимаем пароль с ключа: + cp server.key{,.orig} + openssl rsa -in server.key.orig -out server.key + rm server.key.orig +Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору: + sudo cp server.crt /etc/ssl/certs/ + sudo cp server.key /etc/ssl/private/ + sudo chmod 0600 /etc/ssl/private/geovizor_com.key +Для начала необходимо активировать mod_ssl: + sudo a2enmod ssl +Содержание файла виртуального хоста: + + ServerAdmin info@geovizor.com + ServerName geovizor.com + ServerAlias www.geovizor.com + DocumentRoot /var/www/geovizor.com + + DirectoryIndex index.html index.php index.xyz + AddType application/x-httpd-php .php .xyz + + SSLEngine on + SSLCertificateFile /etc/ssl/certs/geovizor_com.crt + SSLCertificateChainFile /etc/ssl/certs/geovizor_com.ca-bundle + SSLCertificateKeyFile /etc/ssl/private/geovizor_com.key + + + sudo a2ensite bigfoottrade.kz.ssl.conf + sudo a2ensite bigfoottrade.kz.conf + sudo a2ensite zatochnik.pro.conf + sudo a2ensite zatochnik.pro.ssl.conf + sudo a2ensite elektronnaya-ochered.kz.conf + sudo a2ensite elektronnaya-ochered.kz.conf + sudo a2ensite transit.istt.kz.conf + sudo a2ensite geovizor.com.ssl.conf + sudo a2ensite mqtt.kz.ssl.conf + sudo a2ensite stations.istt.kz.ssl.conf + sudo a2ensite stations.istt.kz.conf + sudo a2ensite uspdmanager.istt.kz.conf + sudo a2ensite msp.istt.kz.conf + sudo a2ensite mog.istt.kz.conf + sudo a2ensite mqtt.kz.conf + sudo a2ensite data.ccalm.org + sudo a2ensite rigor.kz.conf + sudo a2ensite 000-default.conf + sudo a2ensite transit.istt.kz.conf + sudo a2ensite aistransit.kz.conf + sudo a2ensite jwt.local.conf + sudo a2ensite jwt2.local.conf + sudo a2ensite transit_gpti_kg.conf + +Посмотреть все разрешонные сайты: + a2query -s + + sudo a2dissite bigfoottrade.kz.conf + sudo a2dissite zatochnik.pro.ssl.conf + sudo a2dissite zatochnik.pro.conf + sudo a2dissite geovizor.com.ssl.conf + sudo a2dissite transit.istt.kz.conf + sudo a2dissite 000-default.conf + sudo a2dissite default-ssl.conf + sudo a2dissite msp.istt.kz.ssl.conf + sudo a2dissite mqtt.kz.ssl.conf + sudo a2dissite transit.istt.kz.conf + sudo a2dissite istransit.kz.conf + + sudo a2dissite jwt2.local.conf + sudo a2dissite jwt.local.conf + + + +http://aistransit.kz/ + +Для проверки файла ключа: + openssl x509 -noout -modulus -in /etc/ssl/certs/geovizor_com.crt + openssl x509 -noout -modulus -in /etc/ssl/private/server.key + openssl pkcs7 -print_certs -in /etc/ssl/certs/geovizor_com.crt -out /etc/ssl/certs/geovizor_com.pem + +Проверяем настройки командой: + /usr/sbin/apache2 -S + +***** Настраивем виртуальный хост ***** +Копируем файлик примера: +sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.istt.kz.conf +sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/msp.istt.kz.ssl.conf +В файлике настраиваю ServerAdmin и DocumentRoot : + + ServerAdmin ivanov.i@istt.kz + ServerName transit.istt.kz + ServerAlias transit2.istt.kz + DocumentRoot /var/www/transit.istt.kz + ErrorLog ${APACHE_LOG_DIR}/error.log + CustomLog ${APACHE_LOG_DIR}/access.log combined + + +Активируем: + sudo a2ensite bigfoottrade.kz.conf + sudo a2ensite bigfoottrade.kz.ssl.conf + sudo a2ensite uspdmanager.istt.kz.conf + sudo a2ensite uspdmanager.istt.kz.ssl.conf + sudo a2ensite msp.istt.kz.ssl.conf + sudo a2ensite daloradius.istt.kz.conf + sudo a2ensite stations.istt.kz + sudo a2ensite zatochnik.pro + sudo a2ensite elektronnaya-ochered.kz.conf + sudo a2ensite integration-gateway.org.conf + sudo a2ensite integration-gateway.org.ssl.conf + + sudo a2ensite motion-engine.ru.conf + sudo a2ensite motion-engine.kz.conf + sudo a2ensite motion-engine.com.conf + sudo a2ensite observer.kz.conf + + sudo a2ensite transit.istt.kz.ssl.conf + sudo a2ensite transit.istt.kz.conf + sudo a2ensite geovizor_local.conf +Или деактивируем + sudo a2dissite 000-default.conf + sudo a2dissite msp.istt.kz.ssl.conf + sudo a2dissite bigfoottrade.kz.conf + sudo a2dissite uspdmanager.istt.kz.conf + sudo a2dissite earth.kz.conf + sudo a2dissite integration-gateway.org.conf + sudo a2dissite observer.kz.conf +Перезагружаем + sudo service apache2 restart +**************************************************************************************************** +Настройка SSH: + sudo apt-get install openssh-server +Поменять порт можно в настройках: + sudo mcedit /etc/ssh/sshd_config + Port 2222 +Для рестарта: sudo /etc/init.d/ssh stop/start/restart +Для подключения через Linux: ssh administrator@192.168.0.83 -p 2222 +Для винды есть PUTTY.EXE настроить кодировку на utf-8 +**************************************************************************************************** +Подключение к последовательному порту ttyUSB через Minicom + sudo apt-get install minicom + sudo minicom -s +После настройки зайти так + sudo minicom + +**************************************************************************************************** +********** Устанавливаю и настраиваю FreeRadius ********** +Настройка rlm_perl для FreeRadius: http://abills.net.ua/wiki/doku.php/abills:docs:rlm_perl:ru подсказки в http://www.m-200.com/base/index.php/%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA_FREERADIUS._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_3 + +Для того, чтобы использовать встроенный perl необходимо: +1. В файле modules/perl раскомментировать строку 'func_authorize = authorize'. +2. В файле radiusd.conf добавить: + authorize { + preprocess + files + perl + } + + +По инсткукции из http://ittraveler.org/ustanovka-i-nastrojka-radius-servera-na-ubuntu-s-veb-interfejsom/ +Устанавливаем FreeRadius и пакеты + sudo apt-get install freeradius + sudo apt-get install freeradius-mysql + sudo apt-get install freeradius-utils + sudo apt-get install freeradius-perl + sudo apt-get install freeradius-python +Подключаемся к серверу Mysql + mysql -u root -p +Далее создаем базу данных radius + create database radius; +Назначим полные права пользователю radius + grant all on radius.* to radius@localhost identified by "WP@$$w0rd"; +Отключаемся от Mysql + exit +Импортируем таблицы в базу данных radius + #mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql + #mysql -u root -p radius < /etc/freeradius/sql/mysql/nas.sql +Для проверки добавим тестовые значения в таблицу radcheck + #mysql -u root -p + #mysql> use radius; + #mysql> INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('sqltest', 'Password', 'testpwd'); + #mysql> exit +Открываем файл настроек Freeradius для MySQL расположение файла — /etc/freeradius/sql.conf +Редактируем строки до такого вида: + database = mysql + server = "localhost" + port = 3306 + login = radius + password = "WP@$$w0rd" + radius_db = "radius" + + readclients = yes + +Далее открываем файл сайта Freeradius +Расположение файла — /etc/freeradius/sites-enabled/default +Приводим следующие строки к виду: + Uncomment sql on authorize{} + # See “Authorization Queries” in sql.conf + sql + ... + Uncomment sql on accounting{} + # See “Accounting queries” in sql.conf + sql + ... + Uncomment sql on session{} + # See “Simultaneous Use Checking Queries” in sql.conf + sql + ... + Uncomment sql on post-auth{} + # See “Authentication Logging Queries” in sql.conf + sql + +Далее правим основной конфигурационный файл Freeradius и включаем поддержку Mysql расскоментировав строку. +Расположение файла — /etc/freeradius/radiusd.conf + $INCLUDE sql.conf + +Теперь протестируем настройки сервера. +Откройте 2 ssh окна терминала. +В первом окне остановим сервис Freeradius + sudo service freeradius stop +И запустим сервис в режиме debug + sudo freeradius -X - debug mode +Теперь открываем второе окно терминала и вводим запрос + radtest sqltest testpwd localhost 18128 testing123 +Если вывод команды такой: + Sending Access-Request of id 68 to 127.0.0.1 port 1812 + User-Name = "sqltest" + User-Password = "testpwd" + NAS-IP-Address = 127.0.1.1 + NAS-Port = 18128 + rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=68, length=20 +То все впорядке. + +Теперь нужно добавить Radius клиентов в файл /etc/freeradius/clients.conf +Пример добавления: + +client 192.168.1.0/16 { + +secret = secretpass +shortname = testclient +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 -d -1 .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; +**************************************************************************************************** +Проверка паролей Gcredcheck и многое другое для PostgreSQL https://www.postgresql.org/about/news/credcheck-v200-released-2654/ +Ищем есть ли: + apt search credcheck +Устанавливаем: + sudo apt update + sudo apt install postgresql-16-credcheck + +Либо из репозиториев: + sudo apt-get install postgresql-server-dev-16 # Для PostgreSQL 16 + sudo apt-get install build-essential + git clone https://github.com/2ndQuadrant/credcheck.git + cd credcheck + make + sudo make install + +Теперь можно исползовать расширение на базе postgres: + CREATE EXTENSION credcheck; + +Теперь можно настроить расширение по https://tembo.io/docs/getting-started/postgres_guides/extensions/credcheck: + -- Configure credential policies to enforce username and password standards and reload configuration files + ALTER SYSTEM SET credcheck.username_min_length = 4; + ALTER SYSTEM SET credcheck.password_min_length = 8; + ALTER SYSTEM SET credcheck.password_min_special = 1; + SELECT pg_reload_conf(); + + -- Attempt to create a user for a new park ranger, which does not meet the credential policies + CREATE USER ranger_ WITH PASSWORD 'forest'; + ERROR: password length should match the configured credcheck.password_min_length + +Для пароля установить: + ALTER SYSTEM SET credcheck.password_expiration_days = 90; + SELECT pg_reload_conf(); + +Для приложений нужно изменить политику паролей (менять не автоматически а по расписанию у администратора): + + +**************************************************************************************************** + 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 +Устанавливаю из исходников: + wget https://www.openssl.org/source/openssl-3.0.1.tar.gz + tar xzvf openssl-3.0.1.tar.gz + cd openssl-3.0.1 + ./config + make + sudo make install + ln -s libssl.so.3 libssl.so + sudo ldconfig + openssl version -a +Если выдало что не можжет найти: openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or director +Для этого добавить путь к каталогу библиотек: sudo mcedit /etc/ld.so.conf.d/libc.conf и вставить: /usr/local/lib64 и запустить sudo ldconfig +Также нужно добавить путь при компиляции: sudo export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig +Проверить путь: + pkg-config --cflags openssl + pkg-config --variable pc_path pkg-config +Не знал как указать путь на /usr/local/lib64/pkgconfig поэтому скопировал в /usr/local/lib/pkgconfig + +Если нужно установить OpenSSL для разработчика из репозитория (но там старая нужна > 3.0): + apt-get update + sudo apt-get install libssl-dev + +**************************************************************************************************** +Установить ProFTPD для доступа через FTPS с сохранением пользователей в PostgreSQL по подсказки нейросети + sudo apt-get update + sudo apt-get install proftpd-basic proftpd-mod-pgsql proftpd-mod-crypto postgresql postgresql-contrib openssl + +Создание сертификата TLS: + sudo mkdir /etc/proftpd/ssl + sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/proftpd/ssl/proftpd.key -out /etc/proftpd/ssl/proftpd.crt + +Включаем модуль в: + sudo nano /etc/proftpd/modules.conf +Раскоментив строку: + LoadModule mod_tls.c + +Настройка ProFTPD для использования TLS: + sudo mcedit /etc/proftpd/tls.conf + +Добавьте или измените следующие строки: + + + TLSEngine on + TLSLog /var/log/proftpd/tls.log + TLSProtocol TLSv1.2 + + TLSRSACertificateFile /etc/proftpd/ssl/proftpd.crt + TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key + TLSOptions NoCertRequest + + TLSVerifyClient off + TLSRequired on + + TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:!SSLv3 + + +Включение TLS в основной конфигурации ProFTPD: + + sudo mcedit /etc/proftpd/proftpd.conf + +Добавьте или измените следующие строки: + +Include /etc/proftpd/tls.conf + +Создаём и меняем базу данных + + CREATE DATABASE ftpusers; + + CREATE TABLE users ( + id SERIAL PRIMARY KEY, + name VARCHAR(30) NOT NULL UNIQUE, + password VARCHAR(128) NOT NULL, + uid INT NOT NULL, + gid INT NOT NULL, + homedir VARCHAR(255) NOT NULL, + shell VARCHAR(255) NOT NULL + ); + + INSERT INTO users (name, password, uid, gid, homedir, shell) VALUES ('', MD5(''), 1001, 1001, '/home/', '/bin/false'); + INSERT INTO users (name, password, uid, gid, homedir, shell) VALUES ('administrator', MD5('administrator'), 1001, 1001, '/home/administrator', '/bin/false'); + + CREATE USER proftpd WITH PASSWORD 'ReULkD8M'; + GRANT ALL PRIVILEGES ON DATABASE ftpusers TO proftpd; + +Включаем модуль в: + sudo nano /etc/proftpd/modules.conf +Раскоментив строку: + LoadModule mod_sql.c + LoadModule mod_sql_postgres.c + LoadModule mod_sql_passwd.c + +Редактируем: + sudo nano /etc/proftpd/pgsql.conf + +Настройка ProFTPD для использования PostgreSQL: + + sudo mcedit /etc/proftpd/pgsql.conf + +Вставить следующий код: + + + SQLEngine on + SQLBackend pgsql + SQLAuthenticate users + + SQLConnectInfo ftpusers@10.101.1.6:5432 proftpd ReULkD8M + + SQLUserInfo users name password uid gid homedir shell + + # Логирование SQL-запросов + SQLLogFile /var/log/proftpd/sql.log + SQLLog ALL + + # Указание на использование открытых паролей + SQLAuthTypes OpenPlaintext + + + + +Добавляем ссылку на созданную настройку: + sudo nano /etc/proftpd/proftpd.conf + +Добавилв следующее содержимое: + +Include /etc/proftpd/pgsql.conf + +Теперь можно перезапустить proftpd: + sudo systemctl restart proftpd + +Проверяем что пользователи успешно считались из базы даныз командой: + sudo mcedit -f /var/log/proftpd/sql.log + +**************************************************************************************************** +Установить ProFTPD http://sys-admin.kz/os/nix/539-centod-install-proftpd.html для доступа через FTPS + +Настраиваем для пользователя www-data + + sudo apt-get install proftpd-basic openssl +Проверить какие модули установленны: + proftpd -vv +sudo apt-get remove --purge proftpd-basic + +В настройках mcedit /etc/proftpd/proftpd.conf изменить: +UseIPv6 off +DefaultRoot ~ +ServerIdent on "FTP Server ready." +RequireValidShell off +AuthUserFile /etc/proftpd/ftpd.passwd + +Для создания нового виртуального пользователя "tester" "firsttester" в файле выполнить комманду (uid и gid должны быть как у пользователя www-data смотри: cat /etc/passwd и cat /etc/group) + + sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=tester --uid=33 --gid=33 --home=/var/www/www.dirt.kz --shell=/bin/false + sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=ftpzhol --uid=33 --gid=33 --home=/mnt/ssd/ftp --shell=/bin/false + sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=zatochnik --uid=33 --gid=33 --home=/var/www/www.zatochnik.pro --shell=/bin/false + sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=evak --uid=33 --gid=33 --home=/var/www/evak --shell=/bin/false + sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=apk --uid=33 --gid=33 --home=/var/www/istransit.kz/apk --shell=/bin/false + sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=rebezov.a --uid=33 --gid=33 --home=/var/www/test2.istransit.kz --shell=/bin/false + sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=rebezov.a --uid=33 --gid=33 --home=/opt/www/istransit.kz --shell=/bin/false +Задал пароль для apk пользователя: vooOtKBb7bckcNh +Задал пароль для rebezov.a : BU39kb2 + +задал пароль: + zoto!23+ + +Назначить права на файл: + sudo chown proftpd:nogroup /etc/proftpd/ftpd.passwd +Сменить пароль: ftpasswd --passwd --name=tester --change-password + +Перезапустить: /etc/init.d/proftpd restart + +Задать права на папку: sudo chown -R 33:33 /var/www +Задать права на папку: sudo chown -R 33:33 /opt/www + + +****************************************************** +Для настройки SSL для proftpd Выполнить в консоли: + +Включаем модуль в: + sudo mcedit /etc/proftpd/modules.conf +Раскоментив строку: + LoadModule mod_tls.c + +Проверить какие модули установленны, если нет tls то дальше не выполнять: + proftpd -vv + +sudo mkdir /etc/proftpd/ssl +sudo openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem +sudo chown -R proftpd:nogroup /etc/proftpd/ssl +Потом в /etc/proftpd/proftpd.conf раскоментируем строку Include /etc/proftpd/tls.conf +И откоректируем этот файл так: + +TLSEngine on +TLSLog /var/log/proftpd/tls.log +TLSProtocol SSLv23 TLSv1 +TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem +TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem +TLSOptions NoCertRequest +TLSVerifyClient off +TLSRequired on + +Перезапустить: /etc/init.d/proftpd restart +**************************************************************************************************** +На Ubuntu включить файрвол брандмауэр firewall: +http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/firewall +Желательно сменить порт для ssh допустим на 2222 + + sudo ufw allow ssh + sudo ufw enable + sudo ufw allow 80/tcp + sudo ufw allow 8080/tcp + sudo ufw allow 443/tcp + sudo ufw allow 10050/tcp + sudo ufw allow 50000:50010/tcp + sudo ufw allow 5432/tcp + sudo ufw allow 3219/tcp + sudo ufw allow 3221/tcp + +Эти настройки были до переустановки сервера + 443/tcp ALLOW Anywhere + 80/tcp ALLOW Anywhere + 10000/tcp ALLOW 192.168.0.0/24 + 3306/tcp ALLOW 192.168.0.0/24 + 10050/tcp ALLOW 192.168.0.0/24 + 10051/tcp ALLOW 192.168.0.0/24 + 2222/tcp ALLOW Anywhere + 8080/tcp ALLOW Anywhere + 5432/tcp ALLOW Anywhere + 1812/udp ALLOW Anywhere + 1813/udp ALLOW Anywhere + 3799/udp ALLOW Anywhere +Эти порты для терминалов: + 3211/tcp ALLOW Anywhere + 3212/tcp ALLOW Anywhere + 3213/tcp ALLOW Anywhere + 3214/tcp ALLOW Anywhere + 3215/tcp ALLOW Anywhere + 3216/tcp ALLOW Anywhere + 3217/tcp ALLOW Anywhere + 3218/tcp ALLOW Anywhere + 3219/tcp ALLOW Anywhere + 3220/tcp ALLOW Anywhere + 3221/tcp ALLOW Anywhere + + +Для freeredius: + sudo ufw allow 1812/udp + sudo ufw allow 1813/udp + sudo ufw allow 3799/udp + + sudo ufw deny ftps + sudo ufw delete +deny 80/tcp + sudo ufw allow from 192.168.0.89 to any port 3306 + sudo ufw allow from 192.168.0.0/24 to any port 2222 proto tcp + sudo ufw delete from 192.168.0.0/24 to any port 5432 proto tcp +Для отключения: + sudo ufw disable +Для получения списка включнных + sudo ufw status +**************************************************************************************************** +https://pro-gram.ru/bridge-utils-ubuntu-server-18-04.html +Устанавливаю ПО для сетевого моста: + sudo apt install bridge-utils +Смотрим интерфейсы: + ifconfig -a +Открываю: sudo nano /etc/netplan/50-cloud-init.yaml +Файлик для жолака есть в папке "Заливка" +**************************************************************************************************** +Отключить IP v6: http://www.linuxrussia.com/2013/05/disable-ipv6-ubuntu.html +**************************************************************************************************** +Настройка почты на POSTFIX(агент передачи почты) И DOVECOT на основе https://www.alex-math.ru/administrirovaniye/ustanovka-postfix-dovecot-posfixadmin-na-ubuntu-20-04/ и https://www.youtube.com/watch?v=_pbH7GsVTrw&t=649s и https://www.youtube.com/watch?v=VptKRBVeCMo +********** Устанавливаю Postfixadmin ********** +Для начала создаю базу в PostgreSQL с базой mail и пользователем mailreader и паролем major!reader1 + cd /var/www/html + sudo wget https://yer.dl.sourceforge.net/project/postfixadmin/postfixadmin-3.3.8/PostfixAdmin%203.3.8.tar.gz + sudo tar xzvf "PostfixAdmin 3.3.8.tar.gz" +Создаю временный каталог в /var/www/html/PostfixAdmin/templates_c +правлю способ подключения к базе: + sudo mcedit /srv/http/PostfixAdmin/config.inc.php +На это: + $CONF['configured'] = true; + + $CONF['database_type'] = 'pgsql'; + $CONF['database_host'] = 'localhost'; + $CONF['database_user'] = 'mailreader'; + $CONF['database_password'] = 'major!reader1'; + $CONF['database_name'] = 'mail'; + + $CONF['emailcheck_resolve_domain'] = 'NO'; + +Также нужно поднастроить апачи добавив следующтй код в: sudo mcedit /etc/apache2/apache2.conf ниже того что указывает на + Alias /PostfixAdmin/ "/var/www/html/PostfixAdmin/public/" + + Options FollowSymLinks + AllowOverride None + Allow from all + Order allow,deny + +Перезагружаю: + systemctl restart apache2.service +На последок: + sudo chown www-data:www-data -R /var/www/ + sudo chown www-data:www-data -R /opt/app_api_mobile_v2/mobile_v2 +Теперь можно открывать сайт по IP: http://77.240.38.108/PostfixAdmin/setup.php +Просит задать пароль, задал такой: 11qazxsw22 +Результат генерации: $CONF['setup_password'] = '$2y$10$ySo40K0pOn0Q5jLcBoK1yua5JaGXI.NIzTmUVBn1dreTaP2RkZ2My'; +И добавляем эту стору в: sudo mcedit /srv/http/PostfixAdmin/config.inc.php +Потом обновляем страницу. +Добавляем администратора введя пароль 11qazxsw22 емайл в качестве логина irigm@mail.ru и пароль: 33edcvfr44 +Можно взглянуть базу там должны создаться таблицы + +Теперь осталось пойти на Postfixadmin, завести сначала почтовый домен, потом ящик и протестировать нашу почтовую систему, например, с помощью Thunderbird. Отправляем письма себе, другому пользователю в нашей системе. Потом пробуем послать себе письма с Gmail, Yandex, Mail.ru и наблюдаем за поведением системы, изучая логи. Основная настройка почты завершена. Теперь необходимо настроить DKIM, SPF, чтобы другие почтовые системы воспринимали нас как доверенных отправителей. Но об этом я расскажу в другом посте. + +********** Устанавливаю Postfix ********** + sudo apt-get update + sudo apt install postfix postfix-pgsql dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-pgsql mailutils postgresql +Ссохраняю оригинальный конфигурационный файл: + cp /etc/postfix/main.cf /etc/postfix/main.cf.orig +Конфигурирую: + sudo dpkg-reconfigure postfix +Настраиваю так: + General type of mail configuration?: Internet Site + System mail name: example.com (не mail.example.com) + Root and postmaster mail recipient: имя пользователя основной учетной записи Linux (в наших примерах sammy) + Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com, localhost + Force synchronous updates on mail queue?: No + Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 + Mailbox size limit: 0 + Local address extension character: + + Internet protocols to use: all + +Можно взглянуть на настройки так: sudo mcedit /etc/postfix/main.cf + +Через pgAdmin создаю нового пользователя mailreader с паролем major!reader1 + CREATE DATABASE mail WITH OWNER mailreader; +Добавляю: sudo mc edit /etc/postgresql/12/main/pg_hba.conf: + local postfix postfix md5 +Перезагружаю базу данных: + service postgresql reload + +Создаём файл для обращения к базе с алиасами: sudo mcedit /etc/postfix/pgsql_virtual_alias_maps.cf https://www.alex-math.ru/administrirovaniye/ustanovka-postfix-dovecot-posfixadmin-na-ubuntu-20-04/ + user = mailreader + password = major!reader1 + hosts = localhost + dbname = mail + query = SELECT goto FROM alias WHERE address='%s' AND active = '1' + +Создаём файл для получения информации по виртуальным доменам: sudo mcedit /etc/postfix/pgsql_virtual_domains_maps.cf + user = mailreader + password = major!reader1 + hosts = localhost + dbname = mail + query = SELECT domain FROM domain WHERE domain='%u' + +Создаём файл для получения информации о почтовых ящиках: sudo mcedit /etc/postfix/pgsql_virtual_mailbox_maps.cf + user = mailreader + password = major!reader1 + hosts = localhost + dbname = mail + query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1' + +Прописываем ранее созданные файлы в: sudo mcedit /etc/postfix/main.cf добавив строчки: + virtual_mailbox_base = /home/mail + virtual_alias_maps = proxy:pgsql:/etc/postfix/pgsql_virtual_alias_maps.cf + virtual_mailbox_domains = proxy:pgsql:/etc/postfix/pgsql_virtual_domains_maps.cf + virtual_mailbox_maps = proxy:pgsql:/etc/postfix/pgsql_virtual_mailbox_maps.cf + virtual_minimum_uid = 1024 + virtual_uid_maps = static:1024 + virtual_gid_maps = static:1024 + virtual_transport = dovecot + dovecot_destination_recipient_limit = 1 + +Настройки безопасного соединения (также просто вставил в конец файла): + + smtpd_sasl_auth_enable = yes + smtpd_sasl_exceptions_networks = $mynetworks + smtpd_sasl_security_options = noanonymous + broken_sasl_auth_clients = yes + smtpd_sasl_type = dovecot + smtpd_sasl_path = private/auth + smtpd_tls_cert_file = /etc/ssl/certs/bigfoottrade_kz.crt + smtpd_tls_key_file = /etc/ssl/private/bigfoottrade_kz.key + + smtpd_tls_security_level = encrypt +Похоже опции что ниже устарели: + smtpd_use_tls = yes + smtp_use_tls = yes + smtp_tls_security_level = encrypt + smtp_enforce_tls=yes + + smtp_tls_mandatory_protocols = !SSLv2, !SSLv3 + smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3 + smtp_tls_protocols = !SSLv2, !SSLv3 + smtpd_tls_protocols = !SSLv2, !SSLv3 + + tls_preempt_cipherlist = yes + smtpd_tls_mandatory_ciphers = high + tls_high_cipherlist = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:ADH-AES256-GCM-SHA384:ADH-AES256-SHA256:ECDH-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384:ECDH-RSA-AES256-SHA384:ECDH-ECDSA-AES256-SHA384:AES256-GCM-SHA384:AES256-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:ADH-AES128-GCM-SHA256:ADH-AES128-SHA256:ECDH-RSA-AES128-GCM-SHA256:ECDH-ECDSA-AES128-GCM-SHA256:ECDH-RSA-AES128-SHA256:ECDH-ECDSA-AES128-SHA256:AES128-GCM-SHA256:AES128-SHA256:NULL-SHA256 + + smtpd_tls_auth_only = yes + smtpd_helo_required = yes + smtp_tls_security_level = may + smtp_tls_ciphers = export + smtp_tls_loglevel = 1 + smtp_tls_CApath = /etc/ssl/certs + smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache + +Снимаем комментарии со следующих строк, или дописываем их при необходимости: sudo mcedit /etc/postfix/master.cf (просто добавил в конец файла) + +submission inet n - n - - smtpd + -o syslog_name=postfix/submission + -o smtpd_tls_security_level=may + -o smtpd_sasl_auth_enable=yes + -o smtpd_sasl_type=dovecot + -o smtpd_sasl_path=/var/spool/postfix/private/auth + -o smtpd_sasl_security_options=noanonymous + -o smtpd_sasl_local_domain=$myhostname + -o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject + -o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination + -o milter_macro_daemon_name=ORIGINATING + +smtps inet n - n - - smtpd + -o syslog_name=postfix/smtps + -o smtpd_tls_wrappermode=yes + -o smtpd_sasl_auth_enable=yes + -o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject + +dovecot unix - n n - - pipe + flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient} + +Проверяю на наличие ошибок: + sudo postfix check + +В конфигурационном файле прописывается список дорменов которых обслуживает данный агент доставки. + sudo mcedit /etc/postfix/main.cf +Примерно таокое: + mydestination = $myhostname, your_domain, localhost.com, , localhost + +Перезапускаем: + sudo systemctl restart postfix +********** Настройка dovecot the Secure IMAP server ********** +Теперь устанавливаю и настраиваю Dovecot: + sudo apt install -y dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd +Создаю пользователя и каталог + sudo adduser --system --no-create-home --uid 1024 --group --disabled-password --disabled-login --gecos 'dovecot virtual mail user' vmail + mkdir /home/mail + chown vmail:vmail /home/mail + chmod 700 /home/mail +Смотрим что мы создали: + groups vmail + +Настраиваем способ хранения сообщений: sudo mcedit /etc/dovecot/conf.d/10-mail.conf + mail_location = maildir:/home/mail/%d/%u/ + + +Настраиваем слушателя аутентификации: sudo mcedit /etc/dovecot/conf.d/10-master.conf +service auth { + unix_listener auth-userdb { + mode = 0600 + user = vmail + group = vmail + } + unix_listener /var/spool/postfix/private/auth { + mode = 0666 + user = postfix + group = postfix + } +} + +Настраиваем аутентификацию в Dovecot: sudo mcedit /etc/dovecot/conf.d/10-auth.conf +Комментируем одну строку, снимаем комментарий с другой. + #!include auth-system.conf.ext + !include auth-sql.conf.ext + +Настраиваем шифрование Dovecot: sudo mcedit /etc/dovecot/conf.d/10-ssl.conf + ssl = required + ssl_cert = Способы оповещений -> Создать способ оповещения +После того как создали в настройках пользователя присваиваем оповещение. +Потом активируем действия в "Настройка -> действия" +Перезапускаем + sudo service zabbix-server restart +**************************************************************************************************** +Установка TomCat на Ubuntu 23.04 по руководству из https://www.digitalocean.com/community/tutorials/install-tomcat-9-ubuntu-1804 +Обновляем пакеты: + sudo apt-get update +Устанавливаем Java Development Kit 8 (не ниже 8й версии) (так старая установиться: sudo apt-get install default-jdk) + sudo apt install openjdk-21-jdk openjdk-21-jre + java -version +Создаём группу для томкат пользователя: + sudo groupadd tomcat +Создаём пользователя: + sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat +Скачиваю tomcat: + cd /tmp + curl -O https://archive.apache.org/dist/tomcat/tomcat-10/v10.1.30/bin/apache-tomcat-10.1.30.tar.gz +Извлекаю tomcat: + sudo mkdir /opt/tomcat + sudo tar xzvf apache-tomcat-10*.tar.gz -C /opt/tomcat --strip-components=1 +Обновляю владельца папки: + cd /opt/tomcat + sudo chown tomcat:tomcat -R /opt/tomcat + sudo chgrp -R tomcat /opt/tomcat + sudo chmod -R g+r conf + sudo chmod g+x conf + sudo chown -R tomcat webapps/ work/ temp/ logs/ +Указываем где находится java: + sudo update-java-alternatives -l + Выдаст: /usr/lib/jvm/java-1.21.0-openjdk-amd64 + sudo mcedit /etc/environment + Записать: JAVA_HOME="/usr/lib/jvm/java-1.21.0-openjdk-amd64" + echo $JAVA_HOME +Пропишу на всяк случай и $CATALINA_HOME (не обязательно) + sudo mcedit /etc/environment + Записать: CATALINA_HOME="/opt/tomcat" + echo $CATALINA_HOME + +Создаём сервис для автозапуска в Ubuntu 16: https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-ubuntu-16-04): + sudo mcedit /etc/systemd/system/tomcat.service +И записываем в него следующее содержимое: + +[Unit] +Description=Apache Tomcat Web Application Container +After=network.target + +[Service] +Type=forking + +Environment=JAVA_HOME=/usr/lib/jvm/java-1.21.0-openjdk-amd64 +Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid +Environment=CATALINA_HOME=/opt/tomcat +Environment=CATALINA_BASE=/opt/tomcat +Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC' +Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom' + +ExecStart=/opt/tomcat/bin/startup.sh +ExecStop=/opt/tomcat/bin/shutdown.sh + +User=tomcat +Group=tomcat +UMask=0007 +RestartSec=10 +Restart=always + +[Install] +WantedBy=multi-user.target + + +Затем: + sudo systemctl daemon-reload + sudo systemctl start tomcat + sudo systemctl status tomcat +Для автозапуска сервиса томката выполнить команду: + sudo systemctl enable tomcat + +Разрешаем порт в фаерволе: + sudo ufw allow 8080 + +Для использования менеджера веб. приложений томката настраиваем пользователя: + sudo mcedit /opt/tomcat/conf/tomcat-users.xml +В этот файл добавить роли в раздел ... запихнуть: + + + + + + + +Также закоментить содержимое тега Context в sudo mcedit $CATALINA_HOME/webapps/manager/META-INF/context.xml см.: http://tomcat.apache.org/tomcat-8.0-doc/manager-howto.html#Configuring_Manager_Application_Access + + + + +Для того чтобы поменять порт на 80 нужно в: sudo mcedit /opt/tomcat/conf/server.xml + + +Также при помощи authbind разрешить не-root программе быть назначенными младшим портам: + sudo apt-get install authbind + sudo touch /etc/authbind/byport/80 + sudo chmod 500 /etc/authbind/byport/80 + sudo chown tomcat /etc/authbind/byport/80 + + Создать файл $CATALINA_HOME/bin/setenv.sh и добавить строку: + CATALINA_OPTS="-Djava.net.preferIPv4Stack=true" + AUTHBIND=yes + Также заменить в $CATALINA_HOME/bin/startup.sh заменить: exec "$PRGDIR"/"$EXECUTABLE" start "$@" на + exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "$@" + +Так как размер WAR архива может быть большим чем 52428800 байт то в файле sudo mcedit /opt/tomcat/webapps/manager/WEB-INF/web.xml увеличиваем параметр "max-file-size" до 100000000 байт. + +Перезагружаю томкат: + sudo service tomcat restart +Останавливаю томкат: + sudo service tomcat stop + +Теперь можно запускать WEB интерфейс и деплоить проект: + http://server_IP_address:8080 +**************************************************************************************************** +Для копирования библиотек запустить: + mvn dependency:copy-dependencies -DoutputDirectory=${project.build.directory}/libs +Потом эти библиотеки хранить рядом с jar + +Скомпилировать в "IntelliJ IDEA -> Maven -> package" создастца TransitToRabbitMQ-1.0-SNAPSHOT.jar +Используем команду "-cp" а не "-jar" так как в манифесте нет описания главного класса: + /usr/bin/java -jar /opt/TransitToRabbitMQ.jar + /usr/bin/java -cp /opt/TransitToRabbitMQ.jar kz.istt.app.Forwarding +Для создания сервиса для запуска .jar необходимо создать файл Transit_RabbitMQ_Forwarding.service: + + + +[Unit] +Description=Forwarding RabbitMQ DATA +After=syslog.target + +[Service] +WorkingDirectory=/opt/ +ExecStart=/usr/bin/java -cp /opt/TransitToRabbitMQ.jar kz.istt.app.Forwarding +User=tomcat +Group=tomcat +UMask=0007 +RestartSec=120 +Restart=always +SuccessExitStatus=143 + +[Install] +WantedBy=multi-user.target + +[Journal] +SystemMaxUse=64M + + +Устанавливаем владельца: + sudo chown tomcat:tomcat -R /opt/ +Смотрим что выдаёт: + sudo journalctl -e -u Transit_RabbitMQ_Forwarding + +**************************************************************************************************** +Установка GeoServer на Tomcat +Скачиваем WAR с сайта http://geoserver.org/release/stable/ + cd /tmp + curl -O https://nav.dl.sourceforge.net/project/geoserver/GeoServer/2.23.2/geoserver-2.23.2-war.zip +Извлекаю tomcat: + sudo mkdir /opt/tomcat/geoserver + sudo apt-get install unzip + sudo unzip geoserver-2*war.zip + mv geoserver.war ROOT.war + cp ROOT.war /opt/tomcat/geoserver + sudo chown tomcat:tomcat -R /opt/tomcat/geoserver +Добавляем в sudo mcedit /opt/tomcat/conf/server.xml перед + geoserver2.ccalm.org + + +Стандартные логин и пароль администратора admin и geoserver (поменял на geoserver1) +Мастер пароль поменял с geoserver на geoserver1 http://uspdmanager.istt.kz:8080/geoserver + +Разрешаем запись для генерации тайлов: + + +При переносе на другой сервер скопировать папку /opt/tomcat/webapps/geoserver/data + +Расширения такие как gs-web-wps-2.11.0.jar закинуть в папку: /opt/tomcat/webapps/geoserver/WEB-INF/lib + +Если перенаправлять через HAProxy с HTTPS на HTTTP то GeoServer будет глючить так как на строне клиента пытается подстраиваться под протокол, поэтому нужно включать HTTPS и на Tomcat! + +**************************************************************************************************** +***** Настройка https ssl для tomcat ***** +Купил SSL сертификат в www.gogetssl.com сгенерировав на сайте SHA-256 CSR and Private Key. +Подтвердил владение, выслали 2 файла в архиве: integration-gateway_org.ca-bundle, integration-gateway_org.crt +Переписал Private ключ в текстовый файл locust_kz.key +Также прислали сертификаты на почту: "Sectigo RSA Domain Validation Secure Server CA", "USERTrust RSA Certification Authority", "AAA Certificate Services" и использую CA сертификат. + +Либо при помощи самоподписанного сертификата, генерим с алиасом geoserver и паролем qw0qw1qw2: + keytool -genkey -keyalg RSA -alias geoserver -keystore /opt/tomcat/conf/ssl/keystore.jks -storepass qw0qw1qw2 -validity 3650 -keysize 2048 +Проверяем что ключь создан корректно: + keytool -list -keystore /opt/tomcat/conf/ssl/keystore.jks -storepass qw0qw1qw2 + +Преобразую в хранилище pkcs12: + openssl pkcs12 -export -in [my_certificate.crt] -inkey [my_key.key] -out [keystore.p12] -name [new_alias] -CAfile [my_ca_bundle.crt] -caname root + openssl pkcs12 -export -in integration-gateway_org.crt -inkey integration-gateway_org.key -out keystore.p12 -name new_alias -CAfile integration-gateway_org.ca-bundle -caname root + openssl pkcs12 -export -in locust_kz.crt -inkey locust_kz.key -out keystore.p12 -name new_alias -CAfile locust_kz.ca-bundle -caname root + openssl pkcs12 -export -in ccalm_org.crt -inkey ccalm_org.key -out ccalm_org.p12 -name ccalm_org -CAfile ccalm_org.ca-bundle -caname root +Задал пароль: qw0qw1qw2 для хранилища ключей + +Преобразую в хранилище java: + keytool -importkeystore -deststorepass [new_keystore_pass] -destkeypass [new_key_pass] -destkeystore [keystore.jks] -srckeystore [keystore.p12] -srcstoretype PKCS12 -srcstorepass [pass_used_in_p12_keystore] -alias [alias_used_in_p12_keystore] + keytool -importkeystore -deststorepass qw0qw1qw2 -destkeypass qw0qw1qw2 -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass qw0qw1qw2 -alias new_alias + keytool -importkeystore -deststorepass qw0qw1qw2 -destkeypass qw0qw1qw2 -destkeystore ccalm_org.jks -srckeystore ccalm_org.p12 -srcstoretype PKCS12 -srcstorepass qw0qw1qw2 -alias ccalm_org +Импорт ключа в хранилище (теперь в нём 2 ключа для locust.kz и для ccalm.org): + keytool -importkeystore -srckeystore ccalm_org.p12 -destkeystore keystore.jks -srcstoretype pkcs12 -alias ccalm_org + +keytool -list -v -keystore keystore.jks + +Настроить томкат, добавив текст который ниже в: sudo mcedit /opt/tomcat/conf/server.xml + + + + + + + + + + +Также при помощи authbind разрешить не-root программе быть назначенными младшим портам: + sudo apt-get install authbind + sudo touch /etc/authbind/byport/443 + sudo chmod 500 /etc/authbind/byport/443 + sudo chown tomcat /etc/authbind/byport/443 + +**************************************************************************************************** +Для создания сервиса создайте service-файл /etc/systemd/system/zholak_gps.service (замените poc-smsc на имя вашего сервиса): + + sudo touch /etc/systemd/system/PServerARNAVI.service + sudo chmod 664 /etc/systemd/system/PServerARNAVI.service + sudo mcedit /etc/systemd/system/PServerARNAVI.service + +И пишем в этот файл следующий текст: + + + +[Unit] +Description=zholak_ftp + +[Service] +WorkingDirectory=/var/opt/servers/arnavi/ +ExecStart=/var/opt/servers/arnavi/PServerARNAVI PServerARNAVI.ini + +RestartSec=10 +Restart=always + +[Install] +WantedBy=multi-user.target + +Для перепрочтения настроек выполнить: + sudo systemctl daemon-reload +Затем можно выполнять команды: + sudo systemctl start geoserver2 + sudo systemctl start SServerWialonIPS_transit + sudo systemctl start PServerWialonIPS_transit_u + sudo systemctl start PServerWialonIPS + sudo systemctl start SServerARNAVI + sudo systemctl start SServerWialonIPS + sudo systemctl start PServerARNAVI + sudo systemctl start PServerEGTS_transit + sudo systemctl start PServerARNAVI_STATIONS_TEST + sudo systemctl start SServerTKSTAR_STATIONS + sudo systemctl start PServerTKSTAR_STATIONS + sudo systemctl start SServerMQTT + sudo systemctl start PServerMQTT + sudo systemctl start SServerEGTS_transit + sudo systemctl start SServerEGTS_transit_3241 + sudo systemctl start Transit_RabbitMQ_Forwarding + sudo systemctl start Transit_RabbitMQ_Forwarding_RUS + sudo systemctl start Transit_RabbitMQ_Read + sudo systemctl start SServerMT300_msp + sudo systemctl start PServerMT300_msp + sudo systemctl start SServerTeltonika + sudo systemctl start PServerTeltonika + sudo systemctl start SServerJointech + sudo systemctl start PServerJointech + + sudo systemctl stop SServerEGTS_transit + sudo systemctl stop SServerARNAVI_STATIONS_TEST + sudo systemctl stop zholak_ftp + sudo systemctl stop geoserver2 + sudo systemctl stop Transit_RabbitMQ_Forwarding_RUS + sudo systemctl stop SServerJointech + sudo systemctl stop PServerJointech + sudo systemctl stop PServerWialonIPS_transit + + sudo systemctl restart SServerWialonIPS_transit + sudo systemctl restart zholak_ftp + sudo systemctl restart PServerARNAVI + sudo systemctl restart PServerARNAVI_TEST + sudo systemctl restart PServerMT300_msp + sudo systemctl restart SServerTeltonika + sudo systemctl restart PServerTeltonika + sudo systemctl restart Transit_RabbitMQ_Forwarding + sudo systemctl restart Transit_RabbitMQ_Forwarding_RUS + sudo systemctl restart Transit_RabbitMQ_Read + sudo systemctl restart SServerJointech + + systemctl status geoserver2 + systemctl status PServerARNAVI + systemctl status SServerARNAVI_STATIONS + systemctl status Virtuasudo systemctl start PServerWialonIPS_transitlTerminal + systemctl status SServerARNAVI_STATIONS_TEST + systemctl status SServerTKSTAR_STATIONS + systemctl status PServerTKSTAR_STATIONS + systemctl status SServerARNAVI + systemctl status SServerWialonIPS + systemctl status PServerEGTS_transit + systemctl status PServerARNAVI + systemctl status PServerWialonIPS + systemctl status SServerMQTT + systemctl status PServerMQTT + systemctl status SServerEGTS_transit + systemctl status SServerEGTS_transit_3241 + systemctl status SServerWialonIPS_transit + systemctl status PServerWialonIPS_transit + systemctl status PServerWialonIPS_transit_u + systemctl status Transit_RabbitMQ_Forwarding + systemctl status Transit_RabbitMQ_Forwarding_RUS + systemctl status Transit_RabbitMQ_Read + systemctl status SServerMT300_msp + systemctl status PServerMT300_msp + systemctl status SServerTeltonika + systemctl status PServerTeltonika + systemctl status SServerJointech + systemctl status PServerJointech + +Чтобы добавить сервис в автозагрузку, необходимо активировать его: + sudo systemctl enable geoserver2 + sudo systemctl enable SServerEGTS_transit + sudo systemctl enable SServerEGTS_transit_3241 + sudo systemctl enable PServerEGTS_transit + sudo systemctl enable SServerWialonIPS_transit + sudo systemctl enable PServerWialonIPS_transit_u + sudo systemctl enable VirtualTerminal + sudo systemctl enable SServerARNAVI_STATIONS + sudo systemctl enable PServerARNAVI_STATIONS + sudo systemctl enable PServerARNAVI_STATIONS_TEST + sudo systemctl enable SServerTKSTAR_STATIONS + sudo systemctl enable PServerTKSTAR_STATIONS + sudo systemctl enable SServerMQTT + sudo systemctl enable PServerMQTT + sudo systemctl enable SServerMT300_msp + sudo systemctl enable PServerMT300_msp + sudo systemctl enable Transit_RabbitMQ_Forwarding + sudo systemctl enable Transit_RabbitMQ_Forwarding_RUS + sudo systemctl enable Transit_RabbitMQ_Read + sudo systemctl enable SServerJointech + sudo systemctl enable PServerJointech + + systemctl enable SServerARNAVI + systemctl enable SServerWialonIPS + systemctl enable PServerARNAVI + systemctl enable PServerWialonIPS + +Чтобы проверить логи сервиса, выполните: + journalctl -u zholak_gps + journalctl -u SServerWialonIPS_transit + journalctl -u PServerWialonIPS_transit + journalctl -u geoserver2 +**************************************************************************************************** +Команды Linux +pwd - получить имя текущей директории +cd - изменить текущую директорию +ls - распечатать информацию о файлах или директориях +cat - слить или вывести файлы-аргументы на стандартный вывод +cp - копировать файлы +mv - переместить (переименовать) файлы +ln - создать ссылку на файл +rm - удалить файлы +rmdir - удалить директорию +mkdir - создать директорию +echo - вывести аргументы командной строки на стандартный вывод +ps - узнать номера выполняемых процессов +kill - "убить" выполняемый процес по его номеру +man - выдать справку об использовании и ключах команды +**************************************************************************************************** +Удалённая отладка c++ приложения на Ubuntu при помощи GDB-gdbserver debug +Устанавливаем на удалённой машине: + sudo apt install gdbserver + +Для того чтобы не писать каждый раз пароль авторизуемся по ключю +Для этого генерим ключик локально: + ssh-keygen -t rsa -b 2048 +Значения по умолчанию оставил пустыми, сгенерился в /home/username/.ssh/id_rsa +Копируем ключик на нужную машину командай: + ssh-copy-id -p 22 administrator@10.101.1.3 + +Для копирования и запуска программы на целевую машину создаём скрипт копирования и запуска: + +#!/bin/bash +echo "*** copy file to server ***" +#scp -P 2222 /mnt/O_DRIVE/projects/Workspace_C++/GServer/Debug/GServer administrator@192.168.0.83:/var/www/server +scp -P 2222 /mnt/O_DRIVE/projects/Workspace_C++/MServer/Debug/MServer administrator@192.168.0.83:/var/www/server +#scp /mnt/O_DRIVE/projects/Workspace_C++/VTerminal/Debug/VTerminal administrator@192.168.0.83:/var/www/uspdmanager.istt.kz + +echo "*** exec program on server ***" + +#ssh -p 2222 administrator@192.168.0.83 gdbserver 192.168.0.83:10000 /var/www/server/GServer +ssh -p 2222 administrator@192.168.0.83 gdbserver 192.168.0.83:10000 /var/www/server/MServer +#ssh administrator@192.168.0.83 gdbserver 192.168.0.83:10000 /var/www/uspdmanager.istt.kz/VTerminal e101 + +Скрипт можно не делать так как в Eclipse это можно автоматизировать при помощи "C/C++ Remote Application". + + +**************************************************************************************************** +Настройка kannel для отправки SMS через SMPP (http://alexkorvin.blogspot.com/2011/05/sms-kannel-centos-55.html) +Устанавливаю kannel + sudo apt-get install kannel + +bearerbox – главный демон, который держит связь по SMPP в качестве клиента, работает с 3g-донглами, слушает порт для подключения других демонов. +opensmppbox – демон, который работает как SMPP сервер для подключения других клиентов. Тоже подключается к bearerbox и работает через него. + + sudo mcedit /etc/kannel/kannel.conf + + +Скрипт автостарта в ubuntu +Автор: Zeboton +Иногда нужно чтобы при загрузке Ubuntu выполнила какие-либо действия (к примеру, запустила какую-нибудь программу). Как же это сделать? +Всё просто как 3 копейки! +1. Нужно создать файл с командами, которые нужно выполнить при старте системе: +view source +print +? +1. +sudo nano /etc/init.d/autostart.script + +Как понятно, autostart.script это название файла в котором будут записаны команды и оно может быть любым, но не должно совпадать с именами уже существующих файлов в папке /etc/init.d/. +В первой строке файла должно быть указано какая оболочка или интерпретатор будет выполнять команды в файле. Если вы хотите использовать те же команды, что и в терминале, то файл должен начинаться со строки: +view source +print +? +1. +#!/bin/bash + +2. Нужно разрешить файлу выполняться: +view source +print +? +1. +sudo chmod +x /etc/init.d/autostart.script + +3. Рассказываем системе что этот файл нужно исполнять при старте системы: +view source +print +? +1. +sudo update-rc.d autostart.script defaults 95 + +Где 95 это порядок в очереди исполнения. Подробнее можно узнать из +view source +print +? +1. +man update-rc.d + +Перезапускаем систему и радуемся результату + +P.S. +Для удаления из автостарта нужно выполнить: +view source +print +? +1. +sudo update-rc.d autostart.script remove +**************************************************************************************************** +Установка HAProxy на Ubuntu 20.04 по https://itsecforu.ru/2019/07/15/⏳-настройка-балансировщика-нагрузки-h/ + sudo apt-get update && sudo apt-get install haproxy -y +Создаём резервную копию файла: + sudo cp /etc/haproxy/haproxy.cfg{,.bak} +Редактируем конфигурацию (Описание конфигурационного файла HAProxy https://habr.com/ru/sandbox/34354/) + mcedit /etc/haproxy/haproxy.cfg +В конец файла добавляем пока только для перенаправления (для балансироки больше IP адресов): + +frontend frontend-http + bind *:80 + mode http + + # ACL для определения запросов на проверку Let's Encrypt + acl is_certbot path_beg /.well-known/acme-challenge/ + + # Если это не запрос Let's Encrypt, перенаправляем на HTTPS + http-request redirect scheme https code 301 unless is_certbot + + # Отправляем запросы Let's Encrypt на backend-certbot + use_backend backend-certbot if is_certbot + + + frontend LOADBALANCER-01 + bind *:80 + bind *:443 ssl crt /etc/haproxy/ssl/mqtt.kz.pem crt /etc/ssl/certs/bigfoottrade_kz.pem + mode http #режим работы HAProxy, в http режиме происходит анализ Layer 7 трафика + option httpclose #Закрывает пассивные соединения + + acl v_geoserver2 hdr(host) -i geoserver2.ccalm.org + use_backend geoserver2_ccalm_org if v_geoserver2 + + #Перенаправление одной страницы по адресу http://geoserver2.ccalm.org/data/ на другой backend + acl v_geo_data hdr(host) -i geoserver2.ccalm.org/data + use_backend WEBSERVERS-01 if v_geo_data + + + default_backend WEBSERVERS-01 + + backend WEBSERVERS-01 + balance roundrobin + server web10 127.0.0.1:8081 check inter 5s ssl verify none + option httpchk + + backend geoserver2_ccalm_org + balance roundrobin + server web1 192.168.0.90:80 check + option httpchk + + listen stats + bind *:8989 + stats enable + stats uri / + stats realm Haproxy\ Statistics + stats auth igor:i123456 + +frontend f-RabbitMQ + mode tcp + bind 10.1.7.73:21000 + default_backend b-RabbitMQ + +backend b-RabbitMQ + mode tcp + server srv1 10.10.16.21:20000 + +Для перенаправления незащищённого HTTP трафика можно: xxxxxxxxxxxxxxx + +Для использования SSL и перенаправляние по обычному сокету для начала нужно настроить pem файл объеденив crt и key (и незабыть изменить порт Apache с 433) + cat /etc/ssl/certs/bigfoottrade_kz.crt /etc/ssl/certs/bigfoottrade_kz_ca.crt /etc/ssl/private/bigfoottrade_kz.key > /etc/haproxy/ssl/bigfoottrade_kz.pem + cat AAA_Certificate_Services.crt GoGetSSL_RSA_DV_CA.crt istransit_kz.crt istransit_kz.key > istransit_kz.pem + + SSLCertificateFile + SSLCertificateKeyFile + +Для включения WEB статистики на 9000 порту добавить в конец конфигурации: + listen stats + bind *:8989 + stats enable + stats uri /stats + stats realm Haproxy\ Statistics + stats auth igor:i123456 +Тестирую файл конфигурации: + haproxy -f /etc/haproxy/haproxy.cfg -c +Перезагружаем: + sudo systemctl restart haproxy +И теперь должно открываться но адресу: http://data.ccalm.org:8989/ +Обязательно проверить как установился SSL чекером: https://www.leaderssl.ru/tools/ssl_checker + +**************************************************************************************************** +Бесплатный SSL сертификат Let’s Encrypt для HAPROXY https://serversforhackers.com/c/letsencrypt-with-haproxy + На новой убунте по моему уже не обязательно выполнять так как новая версия уже есть в репозитории: sudo add-apt-repository -y ppa:certbot/certbot + sudo apt-get update + sudo apt-get install -y certbot + +Для удаления PPA нужно выполнить: + sudo apt-get remove certbot + sudo add-apt-repository --remove ppa:certbot/certbot + apt-get install -f + apt autoremove + +Если включён файрволл то разрешаем порт: + sudo ufw allow 9080/tcp +Проверяем что автообновление в certbot работает для этого выполняем команду: + sudo systemctl status certbot.timer +Затем пытаемся выполнить пробный прогон при помощи команды: + sudo certbot renew --dry-run + +Согласно инструкции модифицируем конфигурационный файл haproxy добавив во frontend это: + # ACL for detecting Let's Encrypt validtion requests + acl is_certbot path_beg /.well-known/acme-challenge/ + use_backend backend-certbot if is_certbot + +А также ещё один backend: + # Certbot backend + # Contains certbot stand-alone webserver + backend backend-certbot + mode http + server certbot 127.0.0.1:9080 + +Перезагрузить и выполнить команду: + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d git.ccalm.org --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d ru.ccalm.org --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d rug.ccalm.org --email irigm@mail.ru --agree-tos --non-interactive + + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d kz.ccalm.org --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d kzg.ccalm.org --email irigm@mail.ru --agree-tos --non-interactive + + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d locust.kz --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d test.ccalm.org --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d data.ccalm.org --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d geoserver2.ccalm.org --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d geoserver.ccalm.org --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d stations.istt.kz --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d uspdmanager.istt.kz --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d tourist.istt.kz --email irigm@mail.ru --agree-tos --non-interactive + + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d monitoring.infracos.kz --email irigm@mail.ru --agree-tos --non-interactive + + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d aistransit.kz --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d istransit.kz --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d test.istransit.kz --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d main.istransit.kz --email irigm@mail.ru --agree-tos --non-interactive + + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d transit.istt.kz --email irigm@mail.ru --agree-tos --non-interactive + + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d geovizor.com --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d mqtt.kz --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d observer.kz --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d rigor.kz --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d pal.kz --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d elektronnaya-ochered.kz --email irigm@mail.ru --agree-tos --non-interactive + certbot certonly --rsa-key-size 2048 --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 -d mcp.kz --email irigm@mail.ru --agree-tos --non-interactive + +После генерации файлы будут в: + /etc/letsencrypt/live/geoserver2.ccalm.org/fullchain.pem + /etc/letsencrypt/live/geoserver2.ccalm.org/privkey.pem + +Для обновления создаём файл /etc/letsencrypt/renew.sh (по моему этот скрипт не нужен так как рабтает сервис certbot.timer): + #!/bin/bash + certbot renew --standalone --preferred-challenges http --http-01-address 127.0.0.1 --http-01-port 9080 --post-hook "/etc/haproxy/prepare.sh" --quiet + +Но для HAProxy нужно чтобы 2 файла были объединены поэтому добавляю спец скрипт /etc/haproxy/prepare.sh: + #!/bin/bash + + # Loop through all Let's Encrypt certificates + for CERTIFICATE in `find /etc/letsencrypt/live/* -type d`; do + + CERTIFICATE=`basename $CERTIFICATE` + + # Combine certificate and private key to single file + cat /etc/letsencrypt/live/$CERTIFICATE/fullchain.pem /etc/letsencrypt/live/$CERTIFICATE/privkey.pem > /etc/haproxy/ssl/$CERTIFICATE.pem + + done + systemctl reload haproxy.service + +Обновляем конфигурацию HAProxy добавив в frontend: + bind *:443 ssl crt /etc/haproxy/ssl/mqtt.kz.pem + +Устанавливаем права + chmod +x /etc/haproxy/renew.sh + chmod +x /etc/haproxy/prepare.sh +И добавляем задание в cron "crontab -e" ниже текст это раз в 24 часа в 00:00:00 ночи: + 0 0 * * * /bin/sh /etc/letsencrypt/renew.sh + +**************************************************************************************************** +Подключение стронних SSL сертификатов, допустим с gogetssl.com +После покупки сертификата в .pem файл нужно переписать такие ключи и сертификаты как: + 1) PrivateKey + 2) Сертификат (Certificate) Использую только bigfoottrade_kz.crt + 3) Цепочка сертификатов (Chain of Trust) +Сертификат для подписи приватного ключа (Certificate Signing Request(CSR)) использовать не надо, он больше не нужен. + +Пробую собрать pem файл из того что скачал с сайта gogetssl.com (зайдя в раздел подробннее о сертификате) + cat istransit_kz.key istransit_kz.crt istransit_kz.ca> istransit_kz.pem +Потом зайти проверить через mcedit что символы перехода не из вины + +**************************************************************************************************** +Устанавливаю python на Ubuntu 18.04 + + sudo apt update + sudo apt-get install build-essential python3-all-dev + sudo apt-get install libhdf5-dev + sudo apt-get install gdal-bin + sudo apt-get install python3-gdal + sudo apt-get install python3-h5py + sudo apt-get install python3-requests + sudo apt-get install python3-pip + + + + sudo pip3 install --upgrade pip + sudo pip3 install requests + pip install --upgrade requests + sudo pip3 install ease_grid + +**************************************************************************************************** + Настраиваю статический сетевой IP адрес в Ubuntu 22.04: +Для этого открываем: sudo mcedit /etc/netplan/00-installer-config.yaml +И меняем: + network: + ethernets: + enp0s3: + dhcp4: true + version: 2 +На: +network: + ethernets: + enp0s3: + dhcp4: no + addresses: + - 192.168.0.138/24 + gateway4: 192.168.0.253 + nameservers: + addresses: + - 8.8.8.8 + - 8.8.4.4 + version: 2 +**************************************************************************************************** +В старой ubuntu 16.04 IP настраивались так: sudo nano /etc/network/interfaces + iface eth0 inet static + address 192.168.200.57 + netmask 255.255.255.0 + gateway 192.168.200.1 + auto eth0 + +Или так для DHCP + iface eth0 inet dhcp + auto eth0 + +Обновляю интерфейс не перезагружая: + sudo systemctl restart networking + +Для ubuntu 18.04 20.04 и далее настройки в etc\netplan +Для ЖОЛАК настраивал мост так: + network: + ethernets: + enp1s0: + addresses: [] + dhcp4: true + dhcp6: false + optional: true + enp2s0: + addresses: [] + dhcp4: false + dhcp6: false + optional: true + enp3s0: + addresses: [] + dhcp4: false + dhcp6: false + optional: true + enp4s0: + addresses: [] + dhcp4: false + dhcp6: false + optional: true + bridges: + br0: + interfaces: [enp2s0,enp3s0,enp4s0] + addresses: [192.168.1.10/24] + dhcp4: false + dhcp6: false + optional: true + version: 2 + +Применение конфигурации: + sudo netplan apply +**************************************************************************************************** +--sudo apt update +--sudo apt install libosmocore +Устанавливаю библиотеку OpenBSC: + sudo apt update + sudo apt install libosmocore-dev + sudo apt-get install build-essential libtool libtalloc-dev shtool autoconf automake git-core pkg-config make gcc libpcsclite-dev +---------------------------------------- +https://security-bits.de/research/cellular/lab_setup +Установка SimpleHLR согласно: https://osmocom.org/projects/osmonitb/wiki/Simplehlr + sudo apt install php php-sqlite3 +https://osmocom.org/projects/osmo-hlr/wiki/OsmoHLR + + +Пробую скомпилить: https://github.com/moiji-mobile/hlr эти исходники по 32 битную версию Линукса (На форумах говорят проблемы были по 64 битную версию поэтому автор и сделал по 32 бита) +Снадеждой что тут поддерживает TCAP/MAP так как: OsmoHLR does not support the classic TCAP/MAP protocol but rather implements the more light-weight GSUP protocol. + sudo apt-get install git-all + sudo apt-get install libtalloc-dev + sudo apt-get install libusb-dev + sudo apt-get install libusb-1.0-0-dev + sudo apt-get install libmnl-dev + sudo apt-get install libsctp-dev + git clone https://github.com/moiji-mobile/hlr +Потом запустил SH файл, скомпилилась libosmocore и что? Она типа с TCAP/MAP? + Узнаём версию библиотеки: +---------------------------------------- +Установка libosmoabis https://osmocom.org/projects/libosmo-abis/wiki/Libosmo-abis +Это библиотека, содержащая общий / разделяемый код, относящийся к интерфейсу A-bis между BTS и BSC. Он реализует драйверы для карт E1 на основе mISDN и DAHDI, а также для некоторых диалектов A-bis / IP. + sudo apt-get install libortp-dev + git clone git://git.osmocom.org/libosmo-abis.git + cd libosmo-abis/ + autoreconf -i + ./configure + make + sudo make install + sudo ldconfig -i + cd .. +---------------------------------------- +Установка libosmo-abis (libosmoabis) + sudo apt-get install libortp-dev + sudo apt-get install -y dahdi-linux + sudo apt-get install dahdi + git clone git://git.osmocom.org/libosmo-abis.git + cd libosmo-abis/ + autoreconf -i + ./configure + make + sudo make install + sudo ldconfig -i + cd .. +---------------------------------------- +Пробую установить: git://git.osmocom.org/osmo-hlr это тот который не работает через TCAP/MAP а только через GSUP + sudo apt-get install libpcsclite-dev + sudo apt-get install build-essential libtool libtalloc-dev libsctp-dev shtool autoconf automake git-core pkg-config make gcc python-minimal + sudo apt-get install libpcsclite-dev + + git clone git://git.osmocom.org/osmo-hlr + autoreconf -i + ./configure + make + make install +---------------------------------------- +Настройка osmo-hlr согласно: https://nickvsnetworking.com/gsm-with-osmocom-part-7-the-hlr-home-location-register-and-friends/ +Как установили то запускаем сервис: + systemctl start osmo-hlr +Подключается через telnet и продолжаем настройку + telnet localhost 4258 +---------------------------------------- +Установка libtasn1 версии 4.9 + wget https://ftp.gnu.org/gnu/libtasn1/libtasn1-4.9.tar.gz + tar xvf libtasn1-4.9.tar.gz + cd libtasn1-4.9 + ./configure --prefix=/usr/local/libtasn1/4_9 + make + make check + make install +---------------------------------------- +Устанавливаю gnutls по инструкции https://noknow.info/it/os/install_gnutls_from_source: + sudo apt-get install -y libtasn1-bin (У меня показало 4.13-2 а затребовало 4.9) + sudo apt-get install -y nettle-dev (У меня показало что установленна версия: 3.4-1 поэтому ставлю версию gnutls-3.5.19.tar.xz) + wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.4/gnutls-3.4.17.tar.xz + wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.5/gnutls-3.5.19.tar.xz + wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.5/gnutls-3.5.19.tar.xz + wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.9.tar.xz + wget https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-3.7.0.tar.xz + tar xvf gnutls-3.6.9.tar.xz + cd gnutls-3.6.9 + ./configure --prefix=/usr/local/gnutls/3_6_9 + make + make check + make install +---------------------------------------------------------------- +Проверяем установлен ли libosmocore + dpkg -L libosmocore +Для установки версии разработчика libosmocore из репозитория: + sudo apt-get install libosmocore-dev +Для удаления libosmocore + sudo apt-get remove libosmocore + Либо с удалением зависимостей: sudo apt-get remove --auto-remove libosmocore + Либо для полного удаления включая зависемости и конфигурационные файлы: sudo apt-get purge libosmocore +Пробую откомпилить и установить: libosmocore из исходников (версия: 1.4.0.326-8c33d) + sudo apt-get install git build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls28-dev libreadline-dev python-dev python-dnspython gdb pkg-config libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user docbook-xsl libcups2-dev libpam0g-dev ntp + sudo apt-get install synaptic + sudo apt install libgnutls-dev + sudo apt-get install -y doxygen + sudo apt-get install -y libmnl-dev + git clone git://git.osmocom.org/libosmocore.git + cd libosmocore/ + autoreconf -i + ./configure + make + sudo make install + sudo ldconfig -i + +**************************************************************************************************** +Настройка IPSEC VPN тунель IKEv2 PSK на Ubuntu с использование StrongSwan: https://www.digitalocean.com/community/tutorials/how-to-set-up-an-ikev2-vpn-server-with-strongswan-on-ubuntu-22-04 + +Генерим секретный ключь + openssl rand -hex 32 +Выдаст примерно такое: + 23fa1e30aa1623371253e84e7d0dad9d33b1e8fc69253c247cf0297c009e5a9e + + + +Подключиться можно так: + https://thesafety.us/vpn-setup-ikev2-ubuntu21 + + + +**************************************************************************************************** +Установка и настройка openvpn на Ubuntu 16.04 согласно документу: https://timeweb.com/ru/community/articles/openvpn-na-ubuntu-16-04-ustanovka-1 https://www.digitalocean.com/community/tutorials/openvpn-ubuntu-16-04-ru + +Устанавливаем утилиту для синхронизации времени: + apt-get install chrony + systemctl enable chrony --now + cp /usr/share/zoneinfo/Asia/Almaty /etc/localtime + +Установка OpenVPN: + sudo apt-get install openvpn easy-rsa unzip + +Настройка центра сертификации easy-rsa +Копируем шаблонную директорию в нужное нам место + make-cadir ~/openvpn-ca +Дальше заходим в созданную папку и редактируем файл vars + mcedit vars +И в нем поменять значения в конце файла на свои, пример: + export KEY_COUNTRY="US" + export KEY_PROVINCE="NY" + export KEY_CITY="New York City" + export KEY_ORG="DigitalOcean" + export KEY_EMAIL="admin@example.com" + export KEY_OU="Community" + export KEY_NAME="server" + +Создание центра сертификации: +Убедитесь что вы в папке openvpn-ca и выполните команду: + source vars +Теперь нужно удалить все ненужные данные для того, чтобы почистить рабочую среду: + ./clean-all +Переходим к построению корня центра сертификации: + ./build-ca + +Создаём сертификаты: + ./build-key-server server + ./build-dh + openvpn --genkey --secret keys/ta.key + + +Создание сертификата клиента и пары ключей (для каждого подключаемого клиента нужно повторить генерацию) +Для того чтобы создался файл без пароля: + source vars + ./build-key client1 +**************************************************************************************************** +BananaPI SSH создать директорию в: /var/run/sshd и перезагрузить SSH или ОС также нужно подправить файл /usr/lib/tmpfiles.d/sshd.confи удалив /var из строки: d /var/run/sshd 0755 + service ssh start + /usr/lib/tmpfiles.d/sshd.conf + d /var/run/sshd 0755 root root +BananaPI WIFI: sudo nmtui и выбрать подходящую точку доступа для подключения +**************************************************************************************************** +Компиляция DAHDI Asterisk http://linux.mixed-spb.ru/asterisk/install_dahdi.php + git clone -b next git://git.asterisk.org/dahdi/linux dahdi-linux + cd dahdi-linux + make + make install +**************************************************************************************************** +Настройка TLS для Mosquitto MQTT брокера на windows (команды ниже выполнять в LINUX) https://mcuoneclipse.com/2017/04/14/enable-secure-communication-with-tls-and-the-mosquitto-broker/ +1) Создаю CA пару ключей + openssl genrsa -des3 -out m2mqtt_ca.key 2048 +Задал пароль: q123456 +2) Создаю сертификат для ключа m2mqtt_ca.key + openssl req -new -x509 -days 3650 -key m2mqtt_ca.key -out m2mqtt_ca.crt +Если выдаст: Unable to load config info from /usr/local/ssl/openssl.cnf то добавить переменную окружения OPENSSL_CONF со значением C:\Program Files\OpenSSL\openssl.cnf + set OPENSSL_CONF=o:\projects\Workspace_PHP\Apache24\conf\openssl.cnf +3) Create Mosquitto Broker Key Pair + openssl genrsa -out m2mqtt_srv.key 2048 + +4) Create Certificate Request from CA + openssl req -new -out m2mqtt_srv.csr -key m2mqtt_srv.key +5) Verify and Sign the Certificate Request + openssl x509 -req -in m2mqtt_srv.csr -CA m2mqtt_ca.crt -CAkey m2mqtt_ca.key -CAcreateserial -out m2mqtt_srv.crt -days 3650 +Дальше копируем файлы в папку mosquitto + /certs/m2mqtt_ca.crt + /certs/m2mqtt_srv.crt + /certs/m2mqtt_srv.key +Далее открываем /mosquitto.conf и + listener 1883 0.0.0.0 + listener 8883 0.0.0.0 + cafile C:\Program Files\mosquitto\certs\m2mqtt_ca.crt + certfile C:\Program Files\mosquitto\certs\m2mqtt_srv.crt + keyfile C:\Program Files\mosquitto\certs\m2mqtt_srv.key +Дальше перезапускаем mosquitto +Проверить кто занял порт: + netstat -ab + +Для получения отпечастка сертификата выполнить: + openssl x509 -in m2mqtt_srv.crt -noout -fingerprint -sha1 -inform pem + +Для преобразования в pem файл выполнить: + openssl rsa -in m2mqtt_srv.key -text > m2mqtt_srv.key.pem + openssl x509 -inform PEM -in m2mqtt_srv.crt > m2mqtt_srv.crt.pem +**************************************************************************************************** +Установка home-assistanto c Supervisor на Ubuntu Server 20.04, Linux Mint(и малинки) по мативам https://pikabu.ru/story/ustanovka_home_assistant_supervised_v_docker_na_ubuntu_2004_na_besplatnom_vps_servere_ot_oracle_testovaya_sistema_umnogo_doma_7980354 + sudo apt-get update + sudo apt-get upgrade -y + sudo apt autoremove -y + sudo apt-get install -y software-properties-common apparmor-utils apt-transport-https avahi-daemon ca-certificates curl dbus jq network-manager socat +Деактивируем и отключаем ModemManager: + sudo systemctl disable ModemManager + sudo systemctl stop ModemManager +На всякий случай перезагружаем систему + reboot +Устанавливаем Docker: + curl -fsSL get.docker.com | sudo sh +Загружаем скрипт "supervised-installer": + curl -Lo installer.sh https://raw.githubusercontent.com/home-assistant/supervised-installer/master/installer.sh +И запускаем установку одним из способов: + - установщик сам выбирает директории (папки установки): sudo bash installer.sh + - мы выбираем директории (папки установки - нужно сначала создать)***: sudo bash installer.sh -p /home -d $PREFIX/hassio (это пример, подробнее на фото) +Разварачивание HA может занять 5 минут +**************************************************************************************************** +Установка Docker на Ubuntu 22.04 по мотивам: https://infoit.com.ua/linux/kak-ustanovit-docker-na-linux-mint-20/ +Обновляем и устанавливаем зависимости: + sudo apt update + sudo apt install curl software-properties-common ca-certificates apt-transport-https -y + wget -O- https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor | sudo tee /etc/apt/keyrings/docker.gpg > /dev/null + echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable"| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + sudo apt update + sudo apt install docker-ce -y + sudo systemctl status docker +Устанавливаем Docker Compose с сервера: + Так старая версия установится: sudo apt-get install docker-compose + curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + chmod +x /usr/local/bin/docker-compose + docker-compose --version +После установки будет создана группа докеров. Добавьте своего пользователя в группу, которая будет запускать команды докеров: + sudo usermod -aG docker $USER +После этого проверьте установку Docker, используя следующую команд + sudo docker --version + docker compose version + + +**********PORTAINER********** +Также можно установить удобный интерфейс для управления докер контейнерами PORTAINER по документации из: https://timeweb.cloud/tutorials/docker/ustanovka-i-ispolzovanie-portainer и видео: https://www.youtube.com/watch?v=EmtNCo7SGbQ + cd /opt + sudo mkdir portainer + cd ./portainer + sudo mcedit docker-compose.yml +И прописываем в файл: + +version: "3.3" +services: + twportainer: + image: portainer/portainer-ce:latest + container_name: portainer + environment: + - TZ=Europe/Moscow + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /opt/portainer/portainer_data:/data + ports: + - "8000:8000" + - "9443:9443" + restart: always + +version: "3.3": Указывает версию Docker-compose, которую вы используете. Версия 3.3 подходит для большинства современных приложений. +services: В этой секции описываются запускаемые сервисы. +twportainer: Имя сервиса. Используется в качестве идентификатора. +image: portainer/portainer-ce:latest: Определяет образ, который будет использоваться. Здесь используется последняя версия Community Edition. +container_name: twportainer: Назначает имя контейнера, чтобы было легче его идентифицировать. +environment: Позволяет задать переменные окружения. Например, - TZ=Europe/Moscow устанавливает временную зону контейнера. +volumes: + /var/run/docker.sock:/var/run/docker.sock позволяет Portainer взаимодействовать с Docker на вашем хосте; + /opt/twportainer/portainer_data:/data создает постоянное хранилище данных. +ports: + "8000:8000" и "9443:9443" открывают соответствующие порты для доступа к Portainer. 9443 используется для HTTPS подключения. +restart: always: Гарантирует, что контейнер будет автоматически перезапускаться при необходимости, например, после перезагрузки сервера. + +Разрешаем пользователю запускать докер: + sudo usermod -aG docker $USER +Теперь можно запустить конфигурацию командой: + sudo docker-compose up -d + +Открываем: https://127.0.0.1:9443 +После предложения задания пароля для пользователя admin задал такой пароль на дом компе: &b2C6nyN2,qUNM] +**************************************************************************************************** +Собственный DynDNS на Linux для observer.kz для начала устанавливаем BIND 9.13 and later по этому мануалу https://www.dmosk.ru/miniinstruktions.php?mini=bind-ubuntu и по этому для новой версии https://www.netss.by/?p=26 + sudo apt-get update + sudo apt-get install bind9 dnsutils + sudo apt-get install bind9utils +Добавляем сервис в автозапуск + systemctl enable bind9 +Проверяем что сервис работает + nslookup dmosk.ru 127.0.0.1 +Открываем настройки: + mcedit /etc/bind/named.conf.options +Для глобальных запросов добавляем строку: allow-query { any; }; +Также добавляем в этот файл DNS сервера пересылки, на них будут перенаправляться запросы если локальный не содержит данных + //forwarders { + // 8.8.8.8; + // 8.8.4.4; + //}; +Проверяем настройки командой (ответ должен быть пустым): + sudo named-checkconf +Перезагружаем: + sudo systemctl restart bind9 +Проверяю версию BIND: + named -v +Выдало: BIND 9.16.1-Ubuntu (Stable Release) +Можно проверить какой IP выдаст на DNS запрос + dig locust.kz A + +На этом базовая настройка закончена. Наш сервер готов принимать и отдавать запросы и работать, как кэширующий dns. + + + + +Далее создаём клиента согласно: https://help.ubuntu.ru/wiki/динамический_днс_своими_руками + +Перейдем в него. + cd /etc/bind/ +Генерируем пару ключь для обмена информацией между клиентом и сервером: + sudo tsig-keygen -a hmac-sha512 dirt.kz > dirt.kz.key + sudo tsig-keygen -a hmac-sha512 locust.kz > locust.kz.key +Для загрузки ключа добавляем его файл mcedit /etc/bind/named.conf строчку с указанием файла, где определен ключ. + include "/etc/bind/dirt.kz.key"; + include "/etc/bind/locust.kz.key"; +Следующим шагом необходимо в файл mcedit /etc/bind/named.conf.local прописать доменную зону, которой мы оперируем. +zone "dirt.kz" { + type master; + allow-update {key dirt.kz;}; + file "/var/cache/bind/dirt.kz"; +}; + +zone "locust.kz" { + type master; + allow-update {key locust.kz;}; + file "/var/cache/bind/locust.kz"; +}; + + +В файле "mcedit /var/cache/bind/dirt.kz" должны быть прописанны записи домена где: +В файле "mcedit /var/cache/bind/locust.kz" должны быть прописанны записи домена где: + +Поле $ORIGIN для подставки имени в знак @, поэтому знак @ не используется просто так в тексте +Если используется символ @ то он заменяется на то что было прописанно в $ORIGIN смотреть в: https://help.dyn.com/how-to-format-a-zone-file/ +SOA — Начало полномочий подробней смотри в https://k.psu.ru/wiki/BIND9_(методическое_пособие)#SOA +NS — Сервер имён +A — рекорд +MX — Почта для обмена +CN — Каноническое имя +PTR — указатель +И таким содержимым: + +$ORIGIN dirt.kz +$TTL 604800 +@ IN SOA bigfoottrade.kz. root.bigfoottrade.kz. ( + 8 ; Serial + 604800 ; Refresh + 86400 ; Retry + 2419200 ; Expire + 604800 ) ; Negative Cache TTL +; +@ IN NS bigfoottrade.kz. + +Второй файл для locust.kz: + +$ORIGIN . +$TTL 604800 ; 1 week +locust.kz IN SOA bigfoottrade.kz. irigm.mail.ru. ( + 134 ; serial + 604800 ; refresh (1 week) + 86400 ; retry (1 day) + 1419200 ; expire (2 weeks 2 days 10 hours 13 minutes 20 seconds) + 604800 ; minimum (1 week) + ) + NS bigfoottrade.kz. +$TTL 3600 ; 1 hour + A 5.76.254.182 +$ORIGIN locust.kz. +* A 127.0.0.1 + + +Правлю права доступа: + sudo chown -R bind:bind /etc/bind + +Если настройки были первоначальными то стоит удалить файл /var/cache/bind/locust.kz.jnl и переинициализировать его командой: + sudo rndc reconfig +Потом следует вызвать: + sudo systemctl restart bind9 +Команда выше также переписывет накопившиеся данные из /var/cache/bind/locust.kz.jnl в /var/cache/bind/locust.kz так что после обновления если охото быстрей взглянуть на текстовое значение следует повторно вызвать эту команду +После настроек сервера перезагружаем его: + sudo named-checkconf + sudo rndc reload + sudo systemctl restart bind9 + sudo rndc status + journalctl | grep bind + sudo journalctl -u bind9 -n 50 + + +Создаю скрипт /etc/ddns/ddns.sh для обновления доменных зон удалённо с доступом по ключу: + +Файл из примера: + #!/bin/bash + TTL=3600 + SERVER=ns.dyndns.my + HOSTNAME=dhost.dyndns.my + ZONE=dyndns.my + KEYFILE=Kdyndns.my.+157+48025.private + new_ip_address=`curl http://dyndns.my/ip.php` #Этот файлик создадим позднее на сервере! + cd /etc/ddns + nsupdate -v -k $KEYFILE << EOF + server $SERVER + zone $ZONE + update delete $HOSTNAME A + update add $HOSTNAME $TTL A $new_ip_address + send + EOF + +Мой модифицированный файл для обновления IP в Bind9 DNS сервису по созданному файлу ip.txt, файл ip.txt создаётся в PHP скрипте который описан ниже: + #!/bin/bash + TTL=3600 + SERVER=127.0.0.1 + HOSTNAME=*.dirt.kz + ZONE=dirt.kz + KEYFILE=/etc/bind/dirt.kz.key + + new_ip_address= + FILE=/etc/ddns/ip.txt + if test -f "$FILE"; then + new_ip_address=`cat $FILE` + rm $FILE + fi + + len=${#new_ip_address} + if [ $len -gt 3 ] + then + echo "New IP address = $new_ip_address" + else + echo "Not find IP address" + exit + fi + + cd /etc/ddns + sudo nsupdate -v -k $KEYFILE << EOF + server $SERVER + zone $ZONE + update delete $HOSTNAME A + update add $HOSTNAME $TTL A $new_ip_address + update delete dirt.kz A + update add dirt.kz $TTL A $new_ip_address + send + EOF + echo "OK" + +Так как PHP работает за HAProxy то немного модифицировал скрипт который сохраняет IP обратившегося клиента в файл, а именно использую "x-forwarded-for" для передачи IP адреса клиента: +'; print_r(getallheaders()); echo ''; + +// PROBLEM IS each browser has different "x-forwarder-for" some "X-Forwarder-for" and some browser gave you 2x ip "x.x.x.x, x.x.x.x" +foreach ( getallheaders() as $k => $v) { + if ( strtolower($k) == 'x-forwarded-for' ) { + $tmp = explode(', ', $v); + if ( $tmp[count($tmp)-1] != '' ) + $_SERVER['REMOTE_ADDR'] = $tmp[count($tmp)-1]; + } +} + +if(isset($_GET["key"]) && $_GET["key"]=='4fygxNq539NFfUm6SOd2vn52GwL7o7NA'){ + $myfile = fopen("/etc/ddns/ip.txt", "w"); + fwrite($myfile, $_SERVER['REMOTE_ADDR']); + fclose($myfile); +} + +echo $_SERVER['REMOTE_ADDR']; + +?> + +Проверяем что находит IP по доменному имени + 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/ + sudo apt-get update + sudo apt-get dist-upgrade + sudo apt install rabbitmq-server +Посмотреть список используемых плагинов: + sudo rabbitmq-plugins list +Активируем плагин rabbitmq_management для наблюдения за системой по HTTP https://www.rabbitmq.com/management.html https://thewebland.net/development/devops/chast-3-interfejs-upravleniya-rabbitmq/#:~:text=RabbitMQ%20Management%20–%20это%20удобный%20интерфейс,и%20отправлять%20%2F%20получать%20сообщения%20вручную. + sudo rabbitmq-plugins enable rabbitmq_management + +rabbitmq_management активирует поддержку API на порту 15672: http://192.168.0.144:15672 http://10.1.7.70:15672 http://192.168.0.83:15672 +Но для активации нужно добавить пользователя, смотрим пользователей: + sudo rabbitmqctl list_users + sudo rabbitmqctl add_user admin paRabbit! или test test для локального тестового сервера + sudo rabbitmqctl set_user_tags admin administrator + sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" +Также можно создать пользователя для публикации сообщений но уже это можно сделать через WEB интерфейс: producer lgGDWAJEwI для guest с паролем: efewG!4ev Александра: alex jefruf!43 + +Теперь можно логинется по test test поменять пароль можно: https://kb.vmware.com/s/article/323520#:~:text=Log%20in%20to%20the%20RabbitMQ,host%20where%20RabbitMQ%20is%20installed. +Или так можно поменять пароль: sudo rabbitmqctl change_password zenoss New-Password + producer: клиент, выполняющий отправку сообщения + queue: собственно очередь сообщений + consumer: клиент, получающий сообщения из очереди + exchange: получает сообщения от producer, и отправялет их в очереди в соответствии с его типом (см. тут https://www.rabbitmq.com/tutorials/tutorial-three-python.html) + +Дальше можно пробовать отправлять данные в очередь используя допустим java библиотеку урок: https://www.youtube.com/watch?v=6lPK_LgTZ9Y + https://www.rabbitmq.com/devtools.html : +Создаю Maven проект в консоли: + cd O:\projects\Workspace_Java\ + mvn archetype:generate -DgroupId=kz.istt.app -DartifactId=TransitToRabbitMQ -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false +Открываю его в idea64 и добавляю в POM следующую зависемость из https://mvnrepository.com/artifact/com.rabbitmq/amqp-client: + + + com.rabbitmq + amqp-client + 5.14.2 + +Также поставил C:\Program Files\Java\jdk-14.0.2 а то не запускалось, также просит рут права для IntelliJ IDEA. + + Урок создания maven проекта: https://devcolibri.com/unit/урок-1-подготовка-и-создание-maven-проекта/ + или https://www.jetbrains.com/idea/guide/tutorials/working-with-maven/creating-a-project/ +Добавил в POM файл: + + + RabbitMQ + https://repo1.maven.org/maven2/com/rabbitmq/amqp-client/5.16.0 + com.rabbitmq + + false + + + true + + + + + + + com.rabbitmq + amqp-client + 5.16.0 + + + + + +Перезагружаем: + sudo service rabbitmq-server restart + +**************************************************************************************************** +Установка Shovels Plugin для RabbitMQ (лопата) по мотивам из: https://www.rabbitmq.com/docs/shovel + +Активирую плагин командой: + sudo rabbitmq-plugins enable rabbitmq_shovel + sudo rabbitmq-plugins enable rabbitmq_shovel_management + +Настраиваю Shovels Dynamic плагин в RabbitMQ через командную строку: + +sudo rabbitmqctl set_parameter shovel kaz_to_kaz '{ + "src-protocol": "amqp091", + "src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation", + "src-queue": "TO_KAZ", + "dest-protocol": "amqp091", + "dest-uri": "amqp://admin:paRabbit!@10.101.1.11:20000/playground", + "dest-exchange": "swap", + "dest-exchange-key": ".KAZ.", + "ack-mode": "on-confirm", + "publish-properties": { + "delivery_mode": 2 + } +}' + +Для Росии такие настройки: + +sudo rabbitmqctl set_parameter shovel kaz_to_rus '{ + "src-protocol": "amqp091", + "src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation_rus", + "src-queue": "TO_RUS", + "dest-protocol": "amqp091", + "dest-uri": "amqp://iktt_kaz:jkrjHL7xj7PrW1D@192.168.89.133:20000/playground", + "dest-exchange": "swap", + "dest-exchange-key": "KZ", + "ack-mode": "on-confirm", + "publish-properties": { + "delivery_mode": 2 + } +}' + +Для Беларусии такие настройки: + +sudo rabbitmqctl set_parameter shovel kaz_to_blr '{ + "src-protocol": "amqp091", + "src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation_blr", + "src-queue": "TO_BLR", + "dest-protocol": "amqp091", + "dest-uri": "amqp://KZ_IKTT:DK34xDNlZQfQ551k@192.168.90.133:20000/plumber", + "dest-exchange": "eec.swap", + "dest-exchange-key": "KZ", + "ack-mode": "on-confirm", + "publish-properties": { + "delivery_mode": 2 + } +}' + +Для Армении такие настройки: + +sudo rabbitmqctl set_parameter shovel kaz_to_arm '{ + "src-protocol": "amqp091", + "src-uri": "amqp://admin:password@127.0.0.1:20000/transportation_arm", + "src-queue": "TO_ARM", + "dest-protocol": "amqp091", + "dest-uri": "amqp://kz_istt:password@192.168.89.158:20000/transportation", + "dest-exchange": "swap_kz", + "dest-exchange-key": "KZ_ISTT", + "ack-mode": "on-confirm", + "publish-properties": { + "delivery_mode": 2 + } +}' + +Для Кыргызстана (таможенная инфраструктура) + +sudo rabbitmqctl set_parameter shovel kaz_to_kgz '{ + "src-protocol": "amqp091", + "src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation_kgz", + "src-queue": "TO_KGZ", + "dest-protocol": "amqp091", + "dest-uri": "amqp://kz_istt:uzZNYbVTElMDXnfwQx16@192.168.70.133:20000/transportation_kaz", + "dest-exchange": "swap", + "dest-exchange-key": "KAZ", + "ack-mode": "on-confirm", + "publish-properties": { + "delivery_mode": 2 + } +}' + +Удалять так: + sudo rabbitmqctl clear_parameter shovel kaz_to_kgz + +Для отправки из Киргизии нам то такие настройки: + +sudo rabbitmqctl set_parameter shovel kgz_to_kaz '{ + "src-protocol": "amqp091", + "src-uri": "amqp://admin:pfta2OFt@127.0.0.1:20000/transportation_kaz", + "src-queue": "TO_KAZ", + "dest-protocol": "amqp091", + "dest-uri": "amqp://kg_amap:qrd2fjEjkegdi7bfb@192.168.70.134:20000/transportation_kgz", + "dest-exchange": "swap", + "dest-exchange-key": "KGZ", + "ack-mode": "on-confirm", + "publish-properties": { + "delivery_mode": 2 + } +}' + +Удалять так: + sudo rabbitmqctl clear_parameter shovel kgz_to_kaz + + +Чтобы проверить текущие параметры Shovel: + sudo rabbitmqctl list_parameters +А также можно взглянуть что создалось через WEB интерфейс + +Не забывать что Exchange: swap должен быть не "direct" а как "topic" иначе маршрутизация не сработает. + +**************************************************************************************************** +Установка wxWidgets на Linux mint, скачал 3.0.5 по инструкции из https://www.binarytides.com/install-wxwidgets-ubuntu/ + sudo apt-get install libgtk-3-dev build-essential checkinstall + mkdir gtk-build + cd gtk-build + ../configure --disable-shared --enable-unicode + make + sudo make install + sudo ldconfig + sudo checkinstall +**************************************************************************************************** +Wildfly (JBoss) https://helpingbox.net/ru/установите-и-настройте-wildfly-jboss-в-ubuntu-18-04-lts +**************************************************************************************************** +Установка Redmine на Ubuntu 22.04 по https://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_50x_on_Ubuntu_2004_with_Apache2 + +Потом скопировать и подправить на PostgreSQL +admin admin поменял на admin deSert!123 + +Готово теперь можно авторизоваться через WEB интерфейс + Username: admin + Password: admin +**************************************************************************************************** +Установка расширения https://github.com/michelp/pgjwt на ubuntu сервер +Для компиляции устанавливаю (На тестовую машину, не боевую): + sudo apt-get update + sudo apt-get install postgresql-server-dev-14 + apt install ca-certificates curl gnupg lsb-release +Остановился на том что потребовало установить докер при компиляции: https://www.cherryservers.com/blog/how-to-install-and-use-docker-compose-on-ubuntu-20-04 + sudo apt-get install docker-compose-plugin + sudo apt-get install docker-compose-plugin +Клонирую репозиторий: + sudo apt install git + git clone https://github.com/michelp/pgjwt.git +Потом + make +Ошибка на мейке... + install +**************************************************************************************************** +Install Redis по мативам: https://timeweb.cloud/tutorials/redis/ustanovka-i-nastrojka-redis-dlya-raznyh-os + sudo apt-get update + sudo apt install redis + redis-cli --version + sudo systemctl status redis +Config: + sudo mcedit /etc/redis/redis.conf +И меняем в конфигурации на: supervised systemd +Также желательно проверить настройку чтобы слушался только IP: 127.0.0.1 + bind 0.0.0.0 + +Также в поле SECURITY нужно установить пароль, сгенерированный при помощи: + openssl rand 25 | openssl base64 -A +Примерно такой должен быть получиться: + requirepass 9F3/NKWeOjd815vkadT2DcgVHf6fEpVQXw== + +Перезагружаем: + sudo systemctl restart redis-server +Проверяем Redis: + redis-cli +Или так проверяем: + redis-cli -h 127.0.0.1 -p 6379 -a 9F3/NKWeOjd815vkadT2DcgVHf6fEpVQXw== +И пишем: ping + +Проверяем какие порты прослушиваются на компе: + sudo netstat -lnp | grep redis + +**************************************************************************************************** +Для настройки локального сервера имен DNS сервер в место Bind9 теперь Dnsmasq так как он проще, понадобилось для haproxy + sudo apt-get install dnsmasq + sudo apt-get install resolvconf + sudo apt-get install net-tools + sudo apt-get install net-tools +На ошибку "failed to create listening socket for port 53: Address already in use" не обрашаем внимания это норма. +Настраиваем пакеты: + sudo mcedit /etc/dnsmasq.conf +Там будет всё закоментированно, добавляем это: + no-resolv + server=8.8.8.8 + listen-address=127.0.0.1 + bind-interfaces +Далее добавляем пути в /etc/hosts пример + 127.0.0.1 jwt.local +Перезагружаеи + sudo /etc/init.d/dnsmasq restart +Проверяем: + telnet 127.0.0.1 53 + dig @127.0.0.1 -p 53 jwt.local +**************************************************************************************************** +Установка GitLab на Ubuntu сервер по https://itslinuxfoss.com/install-gitlab-ubuntu-22-04/ + sudo apt update && sudo apt upgrade -y + sudo apt install tzdata curl ca-certificates openssh-server + sudo apt install curl debian-archive-keyring lsb-release ca-certificates apt-transport-https software-properties-common -y + curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash + sudo apt install gitlab-ce +Также для CI/CD устанавливаем runner, выполняет команды из .gitlab-ci.yml описание: https://habr.com/ru/companies/slurm/articles/306596/ + curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash + sudo apt-get install gitlab-runner +Редактируем имя хоста: + sudo mcedit /etc/gitlab/gitlab.rb +И прописываем туда + external_url 'http://gitlab.local:8081' +Затем: + sudo gitlab-ctl reconfigure +Как завершиться, проверяем: + sudo gitlab-ctl status +Должно выдать быть что-то в роде: + run: alertmanager: (pid 92581) 18s; run: log: (pid 92343) 80s + run: gitaly: (pid 92590) 18s; run: log: (pid 91561) 189s + run: gitlab-exporter: (pid 92551) 20s; run: log: (pid 92078) 98s + run: gitlab-kas: (pid 92520) 22s; run: log: (pid 91845) 175s + run: gitlab-workhorse: (pid 92531) 21s; run: log: (pid 91985) 117s + run: grafana: (pid 92610) 17s; run: log: (pid 92471) 38s + run: logrotate: (pid 91486) 202s; run: log: (pid 91494) 201s + run: nginx: (pid 91993) 114s; run: log: (pid 92013) 110s + run: node-exporter: (pid 92540) 21s; run: log: (pid 92049) 104s + run: postgres-exporter: (pid 92601) 18s; run: log: (pid 92367) 76s + run: postgresql: (pid 91693) 184s; run: log: (pid 91704) 183s + run: prometheus: (pid 92560) 20s; run: log: (pid 92297) 88s + run: puma: (pid 91904) 132s; run: log: (pid 91917) 129s + run: redis: (pid 91521) 196s; run: log: (pid 91538) 193s + run: redis-exporter: (pid 92553) 20s; run: log: (pid 92217) 94s + run: sidekiq: (pid 91922) 126s; run: log: (pid 91934) 122s +Теперь можно задать логин пользователя (команда долго инициализируется) + sudo gitlab-rake "gitlab:password:reset" +Пользователь: root пароль: q12!qwW@ww +Пробуем зайти по http://gitlab.local:8081 прописав домен в hosts + +Для настройки непрерывного развёртывания испотльзовать инструкцию: https://serverspace.ru/support/help/nastrojka-konvejera-nepreryvnogo-razvertyvaniya--gitlab-ubuntu-20-22/?utm_source=google.com&utm_medium=organic&utm_campaign=google.com&utm_referrer=google.com + +Клонирование через токен так: + https://oauth2:PERSONAL_ACCESS_TOKEN@git.istt.kz/locust/org.ccalm.jwt.git + https://oauth2:glpat-MCMi4iPS8GQzUusT3XUC@git.istt.kz/locust/org.ccalm.jwt.git + + https://oauth2:glpat-fseNuqu3Ftb7zwjv-kbT@git.istt.kz/locust/org.ccalm.dbms.git + https://oauth2:glpat-5fJzjVymFqVumq6FC1yq@git.istt.kz/locust/org.ccalm.main + https://oauth2:glpat-sKQh2x88gsmZbBCz4SfJ@git.istt.kz/transit/dispatcher/kz.istransit.dispatcher + + + + +**************************************************************************************************** +Установка nginx по инсткукции с сайта: https://www.8host.com/blog/sozdanie-samopodpisannogo-ssl-sertifikata-dlya-nginx-v-ubuntu-18-04/ + sudo apt-get update + sudo apt-get install nginx +Настройка самоподписанного сертификата для SSL nginx + sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt +Самой важной строкой является Common Name (введите FQDN или свое имя). Как правило, в эту строку вносят доменное имя, с которым нужно связать сервер. В случае если доменного имени нет, внесите в эту строку IP-адрес сервера. + sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096 +Создаём файл: + sudo mcedit /etc/nginx/conf.d/ssl.conf +И вписываем в него: + +server { + listen 8091 ssl http2; + listen [::]:8091 ssl http2; + + server_name istransit.kg; + + ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; + ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; + ssl_dhparam /etc/nginx/dhparam.pem; + + root /opt/www/istransit.kg; + index index.html index.htm; + + location / { + try_files $uri $uri/ =404; # Попытка найти файл или возвращение 404 + } +} + + + sudo systemctl restart nginx + +Также есть такие команды: + nginx -s stop — быстрое завершение + nginx -s quit — плавное завершение + nginx -s reload — перезагрузка конфигурационного файла + nginx -s reopen — переоткрытие лог-файлов + +Создаю виртуальный хост: + sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/istransit.kz + sudo mcedit /etc/nginx/sites-available/aistransit.kz + +Модифицируем текст настройки: +server { + listen 8081; + listen [::]:8081; + + root /opt/www/istransit.kz; + index index.html; + + server_name istransit.kz www.istransit.kz; + + location / { + try_files $uri $uri/ =404; + } +} + +Теперь можно включить виртуальный хост: + sudo ln -s /etc/nginx/sites-available/istransit.kz /etc/nginx/sites-enabled/ +Проверяем правильность конфигурации: + sudo nginx -t +Перезапускаем: + sudo systemctl restart nginx + +**************************************************************************************************** +Как установить и настроить Elasticsearch, Logstash, Kibana (ELK Stack) на Ubuntu, Debian, Centos: https://portforwarded.com/install-elastic-elk-stack-8-x-on-ubuntu-22-04-lts/ или https://serveradmin.ru/ustanovka-i-nastroyka-elasticsearch-logstash-kibana-elk-stack/ + + sudo apt update && sudo apt upgrade -y +Установи java как это делается смотри выше + sudo apt-get install nginx curl gnupg2 wget -y + sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg + sudo apt-get install apt-transport-httpssudo + echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list + sudo apt update + sudo apt-get install elasticsearch +Если не удалось подключить ключи к репозиторию то скачиваем deb пакет в ручную: + wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.2-amd64.deb + + sudo systemctl enable elasticsearch + sudo systemctl start elasticsearch + + sudo mcedit /etc/elasticsearch/elasticsearch.yml +И там раскоментить и прописать строку: network.host: 0.0.0.0 +Также там поправить на: xpack.security.enabled: false + + sudo systemctl restart elasticsearch + +Проверяю версию Elasticsearch + sudo ufw allow 9200/tcp + curl -X GET "http://localhost:9200/" + +У меня выдало: +{ + "name" : "igor-System-Version", + "cluster_name" : "elasticsearch", + "cluster_uuid" : "Li0_4xz2QTuy8ET7qRLTgg", + "version" : { + "number" : "8.13.2", + "build_flavor" : "default", + "build_type" : "deb", + "build_hash" : "16cc90cd2d08a3147ce02b07e50894bc060a4cbf", + "build_date" : "2024-04-05T14:45:26.420424304Z", + "build_snapshot" : false, + "lucene_version" : "9.10.0", + "minimum_wire_compatibility_version" : "7.17.0", + "minimum_index_compatibility_version" : "7.0.0" + }, + "tagline" : "You Know, for Search" +} + +**********Теперь устанавливаем Kibana********** + sudo apt-get install kibana -y + sudo systemctl start kibana + sudo systemctl enable kibana +Создаём административного пользователя: + sudo su + echo "admin:`openssl passwd -apr1`" | tee -a /etc/nginx/htpasswd.users +Выдало: + Дома: admin:$apr1$sFyWSvZH$E8tL1Zbo.i8q2vSsVy1HK/ + На в виртуалке работа пароль 123456 выдало: admin:$apr1$/n5ACpeE$WZBtYrZOgZ10GfdT4YFD31 +Далее создаём в Nginx виртуальный хост, создав конфигурационный файл для сервиса кибаны: + sudo mcedit /etc/nginx/sites-available/kibana + +server { + listen 80; + + server_name kibana.example.com; + + auth_basic "Restricted Access"; + auth_basic_user_file /etc/nginx/htpasswd.users; + + location / { + proxy_pass http://localhost:5601; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection 'upgrade'; + proxy_set_header Host $host; + proxy_cache_bypass $http_upgrade; + } +} + +Разрешаем виртуальный хост для проксирования: + sudo ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/ + sudo systemctl restart nginx + sudo systemctl status nginx + +Теперь кибана должна открыться по адресу: kibana.example.com если не открылась перезагружаем комп + +*********Устанавливаю logstash********** + sudo apt install logstash + + sudo systemctl restart logstash.service + sudo systemctl enable logstash.service + sudo systemctl status logstash.service + + + +По документу из: https://habr.com/ru/articles/236341/ и из https://coderlessons.com/tutorials/devops/uznaite-logstash/logstash-kratkoe-rukovodstvo +Настраиваю logstash открываю потр для отправки логов из Java приложения log4j: + +Так как установили через репозиторий то для включения плагина Log4j он включается командой: + sudo su + /usr/share/logstash/bin/logstash-plugin install logstash-input-log4j + +Так как logstash загрузает все конфигурации из деректории то создаю новый файл для log4j + mcedit /etc/logstash/conf.d/log4j.conf +И теперь можно настроить для приёма log4j логов: + +input { + log4j { + mode => server + host => "0.0.0.0" + port => 5044 + type => "log4j" + } +} +output { + elasticsearch { + hosts => ["http://localhost:9200"] + index => "igor-%{+YYYY.MM.dd}" + #index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" + #user => "elastic" + #password => "changeme" + } +} + +Затем нужно перезагрузить: + sudo systemctl restart logstash.service + +*********Устанавливаю filebeat********** + apt install filebeat + + + +**************************************************************************************************** +**********Устанавливаю Loki в месте с Grafana и другими компонентами (Promtail)********** +Согласно документации из: https://grafana.com/docs/loki/latest/get-started/quick-start/ Для Лва: https://www.youtube.com/watch?v=PBfKDyNPBug + +Создаём директорию в: + cd /opt + mkdir loki + cd loki + wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/loki-config.yaml -O loki-config.yaml + wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/promtail-local-config.yaml -O promtail-local-config.yaml + wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/docker-compose.yaml -O docker-compose.yaml + +Меням настройки, прописав в самый конец файла: loki-config.yaml следующее: +auth_enabled: false + + +Запускаем: + sudo docker compose up -d +Если нужно то для остановки можно выполнить следующую команду: + sudo docker compose down + +Пробуем открыть графану: + http://127.0.0.1:3000/ Логин: admin и пароль admin потом сгенерил пароль: gL%$FXVUrjP7zFf + + +Теперь можно отправить тестовую строку в логи label “foo=bar2” and a single log line “fizzbuzz”: + +curl -H "Content-Type: application/json" \ + -s -X POST "http://127.0.0.1:3100/loki/api/v1/push" \ + --data-raw '{"streams": [{ "stream": { "foo": "bar2" }, "values": [ [ "1717279123945000000", "fizzbuzz" ] ] }]}' + + + + +**********Устанавливаю Promtail********** +По мотивам: https://tech.pansolusi.com/2023/08/04/installing-promtail-on-ubuntu/ + + cd /opt + mkdir promtail + cd promtail + curl -O -L "https://github.com/grafana/loki/releases/download/v2.9.7/promtail-linux-amd64.zip" + unzip "promtail-linux-amd64.zip" + promtail -version + sudo mcedit /opt/promtail/promtail-local-config.yaml + +И записываем в файл: + +server: + http_listen_port: 9080 + grpc_listen_port: 0 + +positions: + filename: /tmp/positions.yaml + +clients: + - url: 'http://localhost:3100/loki/api/v1/push' + basic_auth: + username: alexander + password: eakrdutpnhjaE2EFrAoi + +scrape_configs: + - job_name: system + static_configs: + - targets: + - localhost + labels: + job: varlogs + __path__: /var/log/*log + - targets: + - localhost + labels: + job: nginx + __path__: /var/log/nginx/*log + + +Создаём сервис для запуска Promtail + sudo mcedit /etc/systemd/system/promtail.service +И записываем: + +[Unit] +Description=Promtail client for sending logs to Loki +After=network.target +[Service] +ExecStart=/opt/promtail/promtail -config.file=/opt/promtail/promtail-local-config.yaml +Restart=always +TimeoutStopSec=3 +[Install] +WantedBy=multi-user.target + +Запускаем: + sudo service promtail start + sudo service promtail stop + sudo service promtail restart + sudo service promtail status + sudo systemctl enable promtail + +Смотрим логи: + sudo journalctl -u promtail.service + +Теперь можно смотреть в графане логи: http://127.0.0.1:3000/ с label = file +Также можно взглянуть на простой WEB интерфейс promtail: http://127.0.0.1:9080 + +**********Устанавливаю Prometheus согласно инструкции из https://ruvds.com/ru/helpcenter/kak-ustanovit-prometheus-na-ubuntu/ ********** +Установка Prometheus + sudo apt update && + sudo apt upgrade -y && + sudo useradd --no-create-home --shell /bin/false prometheus && + sudo mkdir /etc/prometheus && + sudo mkdir /var/lib/prometheus && + sudo chown prometheus:prometheus /etc/prometheus && + sudo chown prometheus:prometheus /var/lib/prometheus && + cd /tmp && + wget https://github.com/prometheus/prometheus/releases/download/v3.1.0/prometheus-3.1.0.linux-amd64.tar.gz && + tar xvf prometheus-3.1.0.linux-amd64.tar.gz && + sudo cp prometheus-3.1.0.linux-amd64/prometheus /usr/local/bin/ && + sudo cp prometheus-3.1.0.linux-amd64/promtool /usr/local/bin/ && + sudo chown prometheus:prometheus /usr/local/bin/prometheus && + sudo chown prometheus:prometheus /usr/local/bin/promtool && + rm -rf prometheus-3.1.0.linux-amd64.tar.gz prometheus-3.1.0.linux-amd64 +Настройка Prometheus +Создайте файл конфигурации prometheus.yml: + sudo mcedit /etc/prometheus/prometheus.yml +Прописал туда настройки: + +global: + scrape_interval: 15s + +scrape_configs: + - job_name: 'prometheus' + static_configs: + - targets: ['localhost:9090'] + +Созданём systemd-сервис: + sudo mcedit /etc/systemd/system/prometheus.service + + +[Unit] +Description=Prometheus +Wants=network-online.target +After=network-online.target + +[Service] +User=prometheus +Group=prometheus +Type=simple +ExecStart=/usr/local/bin/prometheus \ + --config.file /etc/prometheus/prometheus.yml \ + --storage.tsdb.path /var/lib/prometheus/ + +[Install] +WantedBy=multi-user.target + + +Запускаю сервис: + sudo systemctl daemon-reload + sudo systemctl start prometheus + sudo systemctl enable prometheus + sudo systemctl status prometheus + +Пробуем открыть по адресу: + http://192.168.200.84:9090 + +Теперь настраиваем сбор логов при помощи node exporter (по мотивам из https://it-dev-journal.ru/articles/monitoring-linux-servera-s-prometheus-node-exporter): +Последний билд: https://github.com/prometheus/node_exporter/releases + + wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz + tar xf node_exporter-*.tar.gz + cd node_exporter-1.8.2.linux-amd64 + sudo cp node_exporter /usr/local/bin + sudo useradd --no-create-home --home-dir / --shell /bin/false node_exporter + +Создаём сервис: + sudo mcedit /etc/systemd/system/node_exporter.service + +[Unit] +Description=Prometheus Node Exporter +After=network.target + +[Service] +Type=simple +User=node_exporter +Group=node_exporter +ExecStart=/usr/local/bin/node_exporter + +SyslogIdentifier=node_exporter +Restart=always + +PrivateTmp=yes +ProtectHome=yes +NoNewPrivileges=yes + +ProtectSystem=strict +ProtectControlGroups=true +ProtectKernelModules=true +ProtectKernelTunables=yes + +[Install] +WantedBy=multi-user.target + + sudo systemctl daemon-reload + sudo systemctl start node_exporter + sudo systemctl enable node_exporter + sudo systemctl status node_exporter + +Теперь Node exporter будет выдавать метрики по адресу + wget http://localhost:9100/metrics -O - + wget --user=prometheus --password=PUaAMOhUEOmDmcsJDFWA https://geoserver2.ccalm.org/metrics -O - + + +Настраиваем HAProxy и basic авторизацию (если писать: insecure-password то пароль не захеширован если написать password то должен быть в md5 лил SHA-*): + userlist prometheus_list + user prometheus insecure-password PUaAMOhUEOmDmcsJDFWA + + acl v_metrics path_beg /metrics + acl v_basic_auth http_auth(prometheus) + http-request auth realm Metrics if v_metrics !v_basic_auth + use_backend metrics if v_metrics + + backend metrics + balance roundrobin + server web1 127.0.0.1:9100 check + option httpchk + + +Теперь нужно отредактировать файл sudo mcedit /etc/prometheus/prometheus.yml, добавив новый job_name в scrape_configs с этим адресом. + +- job_name: 'node_exporter_metrics' + scrape_interval: 10s + static_configs: + - targets: ['localhost:9100'] + +Перезагружаем prometheus чтобы он начал собирать метрики + sudo systemctl restart prometheus + +Смотрим: + http://192.168.200.84:9090/targets + + +Далее устанавливаем графану и добавляем графики для мониторинга + sudo apt-get install -y software-properties-common + sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main" + sudo apt-get install -y gnupg + sudo apt-get install -y apt-transport-https + sudo wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - + sudo apt-get update + sudo apt-get install grafana +Запустите и включите сервис Grafana: + sudo systemctl start grafana-server + sudo systemctl enable grafana-server +Проверьте статус: + sudo systemctl status grafana-server +Открываем: + http://192.168.200.84:3000 Логин: admin Пароль: admin + +Заходим в: Home->Connections->Data sources->Add data source + +Для Node Exporter есть шаблоны: + Node Exporter Full (ID: 1860) — Полный дашборд для мониторинга серверов с использованием Node Exporter. + Prometheus (ID: 10991) — Дашборд для мониторинга самого Prometheus. + Linux Server Monitoring (ID: 10244) — Дополнительный дашборд для мониторинга серверов на Linux. + +Если вам нужно больше вариантов, вы всегда можете найти готовые дашборды на официальном сайте https://grafana.com/grafana/dashboards/ + +Заходим в графану и в правом верхенем углу жмём + потом Import Dashboard + + +**********Если нужно то Grafana может быть установленна отдельно ********** +Установка GrafanaLoki через Docker Engine и Docker Compose на Ubuntu 24.04 + +Для установки графаны через докер: + cd /opt + sudo mkdir grafana + cd ./grafana + sudo mcedit docker-compose.yml +И прописываем в файл: + +version: "3.3" +services: + grafana: + image: grafana/grafana-enterprise + container_name: grafana + restart: unless-stopped + ports: + - '3000:3000' + loki: + image: grafana/loki:latest + container_name: loki + restart: unless-stopped + ports: + - "3100:3100" + +Затем для запуска контейнера выполняем: + sudo docker-compose up -d +Если нужно то для остановки можно выполнить следующую команду: + sudo docker-compose down + +Пробуем открыть графану: + http://127.0.0.1:3000/ Логин: admin и пароль admin потом сгенерил пароль: gL%$FXVUrjP7zFf +**************************************************************************************************** +Настраиваю Promtail agent для винды для сбора логов c Windows: +Скачал: https://github.com/grafana/loki/releases в разделе Assets файл promtail-windows-386.exe.zip +Переместите файл promtail.exe в каталог, например, C:\Program Files\promtail +Добавьте этот каталог в PATH, чтобы можно было запускать Promtail из командной строки. +Создаём файл конфигурации в C:\Program Files\promtail promtail-config.yaml со следующим содержимым: + +server: + http_listen_port: 9080 + grpc_listen_port: 0 + +positions: + filename: C:\Program Files\promtail\positions.yaml + +clients: + - url: http://192.168.200.106:3100/loki/api/v1/push + +scrape_configs: + - job_name: dbms_logs + static_configs: + - targets: + - localhost + labels: + job: dbms_logs + __path__: O:\MyDocuments\projects\Workspace_JavaWin\com.geovizor.dbms\logs\kz_mcp_dbms.log + + - job_name: jwt_logs + static_configs: + - targets: + - localhost + labels: + job: jwt_logs + __path__: O:\MyDocuments\projects\Workspace_JavaWin\com.geovizor.jwt\logs\kz_mcp_jwt.log + + +Замените C:\path\to\positions.yaml и C:\path\to\log\files\*.log на соответствующие вашему окружению пути. +promtail.exe --config.file=promtail-config.yaml + +**************************************************************************************************** +Установка графаны через докер Grafana в Docker, по мотивам нейросети DeepSeek: +Установка Docker: + sudo apt update + sudo apt install -y apt-transport-https ca-certificates curl software-properties-common + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + sudo apt update + sudo apt install -y docker-ce docker-ce-cli containerd.io +Установка Docker Compose: + sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + sudo chmod +x /usr/local/bin/docker-compose +Добавляем текущему пользователю группу чтобы он мог работать с докером: + sudo usermod -aG docker $USER + +Проверка установки: + docker --version + docker-compose --version + +Создайте директорию, где будут храниться данные Grafana: + sudo mkdir /opt/grafana + sudo mkdir /opt/grafana/data + sudo mkdir /opt/grafana/data/grafana-storage + sudo mkdir /opt/grafana/config + sudo chown -R 472:472 /opt/grafana/data/grafana-storage + sudo chmod -R 775 /opt/grafana/data/grafana-storage + cd /opt/grafana + mcedit docker-compose.yml +И записываем в него такие настройки: + +services: + grafana: + image: grafana/grafana:latest + container_name: grafana + restart: unless-stopped + ports: + - "3000:3000" + volumes: + - /opt/grafana/data/grafana-storage:/var/lib/grafana # Монтируем директорию хоста в контейнер + environment: + - GF_SECURITY_ADMIN_USER=admin + - GF_SECURITY_ADMIN_PASSWORD=admin + +Запускаем графану с логами для тестов: + docker-compose -f /opt/grafana/docker-compose.yml up +Теперь запускае в фоновом режиме: + docker-compose -f /opt/grafana/docker-compose.yml up -d + docker-compose -f /opt/grafana/docker-compose.yml down +Проверяем работу: + docker-compose -f /opt/grafana/docker-compose.yml ps + + +**************************************************************************************************** +Устанавливаю Gitea по мативам: https://linuxize.com/post/how-to-install-gitea-on-ubuntu-20-04/ + sudo apt update + sudo apt install sqlite3 + sudo apt install git + git --version + sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git + VERSION=1.22 + sudo wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64 + sudo mv /tmp/gitea /usr/local/bin + sudo chmod +x /usr/local/bin/gitea +Создаём директории для хранения данных: + sudo mkdir -p /var/lib/gitea/{custom,data,log} + sudo chown -R git:git /var/lib/gitea/ + sudo chmod -R 750 /var/lib/gitea/ + sudo mkdir /etc/gitea + sudo chown root:git /etc/gitea + sudo chmod 770 /etc/gitea + + sudo wget https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/systemd/gitea.service -P /etc/systemd/system/ + sudo systemctl daemon-reload + sudo systemctl enable --now gitea + sudo systemctl status gitea +Отобразило что можно зайти по: http://localhost:3000/ +Выбираем Database Type: SQLite3 остальные настройки можно оставить по умолчанию +Установил и задал логин: irigm@mail.ru пароль: PF"Ey7#7]mUZ49s + +Устанавливаем параметры только чтение: + sudo chmod 750 /etc/gitea + sudo chmod 640 /etc/gitea/app.ini + +По мотивам на сайте ещё описывается как сделать проксирование через nginx +А также как сделать отправку почты +А также как обновит если что + +**********CI/CD********** +Устанавливаю по инструкции из: https://gitea.com/gitea/act_runner +Скачиваю act_runner с https://about.gitea.com/products/runner/ в директорию: /usr/local/bin +Задаём права: + sudo chown root:root /usr/local/bin/act_runner +Проверяю версию: + act_runner --version +Выдало: v0.2.6 +Записываем в конец файла /etc/gitea/app.ini следующие настройки: +[actions] +ENABLED=true + +Потом: + sudo systemctl restart gitea +Далее переходим в настройки проекта в пункт "Действия": "Создать новый раннер" + Там был токен: CIaWAmzI4jYUCRnQcUCdBFPkg4FPGspnjdpqiqXl + +Создаю каталог: + /etc/act_runner + +Генерю конфиг по умолчанию: + act_runner generate-config > config.yaml + +Регистрирую новый runner + act_runner register + +В WEB интерфейсе gitea появится но похоже от туда можно только удалить. + +Можно попробовать запустить runner: + act_runner daemon + +Регистрация с конфигурационным файлом: + act_runner -c config.yaml register + +Запуск с конфигурационным файлом + act_runner -c config.yaml daemon + +Можно запустить act_runner как сервис, создав файл: sudo mcedit /etc/systemd/system/act_runner.service но нужно создать ползоветеля без привилений, такого: act_runner +Но у меня почему то не запустилось... +Так: + sudo adduser --disabled-password act_runner + sudo passwd act_runner + su act_runner + +Давать права не обязательно: sudo chown root:root /usr/local/bin/act_runner + +[Unit] +Description=Gitea Actions runner +Documentation=https://gitea.com/gitea/act_runner +After=docker.service + +[Service] +ExecStart=/usr/local/bin/act_runner daemon --config /etc/act_runner/config.yaml +ExecReload=/bin/kill -s HUP $MAINPID +WorkingDirectory=/var/lib/act_runner +TimeoutSec=0 +RestartSec=10 +Restart=always +User=act_runner + +[Install] +WantedBy=multi-user.target + + +Запускаем как сервис: + sudo systemctl daemon-reload + sudo systemctl enable act_runner + sudo systemctl restart act_runner + sudo systemctl stop act_runner + sudo systemctl start act_runner + sudo systemctl status act_runner + +Посмотреть на лог: + grep "act_runner" /var/log/syslog + + + + +# .gitea/workflows/publish.yml +on: + push: + branches: + - main + workflow_dispatch: + +jobs: + run_pull: + name: run pull + runs-on: igor + steps: + - name: CreateDate + run: touch /home/igor/runner/$(date +"%Y-%m-%d_%H-%M-%S").txt + +**************************************************************************************************** +Устанавливаю из Node.js из не стандартного репозитория так как там v12.22.9 а нужно >= 18 версия +Удаляем старое: + sudo apt-get remove nodejs npm +Устанавливаем новое: + curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - + sudo apt-get install -y nodejs + node -v + npm -v +**************************************************************************************************** +LDAP — легковесный протокол доступа к каталогам (Для адрестной книги) + sudo apt install slapd ldap-utils + sudo dpkg-reconfigure slapd + +Настраиваем в файле: /etc/ldap/ldap.conf + BASE dc=domain,dc=com + URI ldap://ldap01.domain.com + +**************************************************************************************************** +Простой инструмент для мониторинга ресурсов сервера: + sudo apt install netdata + systemctl restart netdata + sudo mcedit /etc/netdata/netdata.conf + # bind socket to IP = 127.0.0.1 + bind socket to IP = 0.0.0.0 + systemctl restart netdata +Можно открывать по адресу: + http://10.101.1.3:19999/ + http://10.101.1.6:19999/ +**************************************************************************************************** +Install .NET SDK or .NET Runtime on Ubuntu + sudo apt-get update + sudo apt-get install -y dotnet-sdk-8.0 + sudo apt-get install -y aspnetcore-runtime-8.0 + sudo apt-get install -y dotnet-runtime-8.0 + sudo apt install zlib1g +Теперь можно запустить C# ASP.NET Core +**************************************************************************************************** +ssl genkeypair spring boot java +Генерим самоподписанный SSL сертификат: + keytool -genkeypair -alias weather -keyalg RSA -keystore keystore.jks -keysize 2048 -validity 3650 +Потом прописать настройки: + +server: + port: 8081 + ssl: + key-store: classpath:keystore.jks + key-store-password: QyKtWPZB + key-store-type: JKS + key-alias: weather + +**************************************************************************************************** +Для разрешения поиска через Samba и NetBIOS: + sudo apt update + sudo apt install samba + sudo systemctl restart smbd + sudo systemctl enable smbd + +**************************************************************************************************** +Туннелирование SSH через HTTP при помощи https://github.com/larsbrinkhoff/httptunnel: + sudo apt-get install httptunnel + +Настроил haproxy примерно так, чтобы проверялся параметр "mybiglogfile" для редиректа: + +frontend frontend-http + bind *:80 + mode http + + acl v_tunnel url_param(mybiglogfile) -m found + use_backend httptunnel_backend if v_tunnel + + http-request redirect scheme https code 301 unless { ssl_fc } || v_tunnel + +Если есть проксирование через Nginx то добавляем в конфигурацю это: +proxy_http_version 1.1; +proxy_set_header Host $host; +proxy_set_header X-Real-IP $remote_addr; +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +proxy_set_header Connection ""; +proxy_pass_request_body on; + +Проверить нет ли редиректо можно так: + curl -I http://192.168.200.81/index.html?mybiglogfile=all + curl -I http://locust.kz/index.html?mybiglogfile=all + +На сервере запустил прослушку на 9999 и перенаправление на 22: + sudo hts -F 127.0.0.1:22 9999 +Для остановки + ps aux | grep hts + sudo kill 1854 + +Можно запустить как сервис так sudo mcedit /etc/systemd/system/httptunnel.service: +[Unit] +Description=HTTP Tunnel Service +After=network.target + +[Service] +ExecStart=hts -F 127.0.0.1:22 9999 +Restart=always +User=root + +[Install] +WantedBy=multi-user.target + +Потом: + sudo systemctl daemon-reload + sudo systemctl enable httptunnel + sudo systemctl start httptunnel + sudo systemctl status httptunnel + tail -f /var/log/syslog | grep --line-buffered "htc" + +На клиенте запускаем локальный порт также указал 9999 а ключь + htc -F 9999 --base-uri /index.html?mybiglogfile=all 192.168.200.81:80 + htc -F 9999 --base-uri /index.html?mybiglogfile=all locust.kz:80 + +Для остановки + ps aux | grep htc +Потом + sudo kill 783 + +Пробую подключиться после настройки тунеля: + ssh igor@127.0.0.1 -p 9999 +**************************************************************************************************** +Установка Gotify через докер контейнер + sudo apt update && sudo apt install -y docker.io docker-compose +sudo mkdir -p /opt/gotify + cd /opt/gotify +Создадим конфигурацию: + sudo nano /opt/gotify/docker-compose.yml + +