Files
Ubuntu_docs/Ubuntu.md
2025-03-17 07:48:47 +05:00

165 KiB
Raw Blame History


Настройка времени и 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/


Для добавления ярлыка в меню пуск создав файл *.desktop

cd /usr/share/applications
sudo tee IDEA_JEE.desktop > /dev/null <<EOF
[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;
EOF

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


  1. Для того чтобы архивировать и извлечь каталог: 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 <your username>:<your usergroup> -R <path to>/.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):

Подключаемся к серверу:

  ssh administrator@10.101.1.3

Устанавливаем:

	sudo apt-get update &&
	sudo apt-get install apache2 php -y &&
	sudo apt-get install php libapache2-mod-php -y &&
	sudo apt-get install php gettext -y &&
	sudo apt-get install php php-gd -y &&
	sudo apt-get install php php-pgsql -y &&
	sudo apt-get install php php-mysql -y &&
	sudo apt-get install php php-mysqli -y &&
	sudo apt-get install php-imap -y &&
	sudo apt-get install php-mbstring -y &&
	sudo apt-get install php-curl -y &&
	sudo apt-get install php-xml -y &&
	sudo apt-get install php-soap -y

Включаем модули:

	sudo phpenmod imap
	sudo phpenmod mbstring
	sudo a2enmod rewrite

В /etc/apache2/apache2.conf ставим AllowOverride All командой

sudo sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf

Проверяем файл:

  sudo mcedit /etc/apache2/apache2.conf
	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 systemctl restart apache2 

********** Установка 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 Содержание файла виртуального хоста: <VirtualHost *:443> 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
</VirtualHost>

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 : <VirtualHost *:80> 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 }


Проверить версию 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 ('<username>', MD5('<password>'), 1001, 1001, '/home/<username>', '/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 ниже того что указывает на <Directory /var/www/> Alias /PostfixAdmin/ "/var/www/html/PostfixAdmin/public/" <Directory "/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 = </etc/haproxy/ssl/bigfoottrade_kz.pem ssl_key = </etc/haproxy/ssl/bigfoottrade_kz.pem

Указываем Dovecot автоматически создавать каталоги при первом подключении клиента: sudo mcedit /etc/dovecot/conf.d/15-lda.conf lda_mailbox_autocreate = yes

Теперь настройка подключения к базе данных. Открываем файл: sudo mcedit /etc/dovecot/conf.d/auth-sql.conf.ext

passdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}

Создаём файл с настройками для работы с PostgreSQL: sudo mcedit /etc/dovecot/dovecot-sql.conf.ext driver = pgsql connect = host=localhost dbname=mail user=mailreader password=major!reader1 default_pass_scheme = MD5-CRYPT password_query = SELECT password FROM mailbox WHERE username = '%u' user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u' user_query = SELECT CONCAT('/home/mail/',LOWER(domain),'/',LOWER(maildir)),1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'

Наконец, указываем интерфейсы, на которых будет слушать наш Dovecot: sudo mcedit /etc/dovecot/dovecot.conf listen = *

Также добавить в этот файл следующую настройку: service stats { unix_listener stats-reader { user = vmail group = vmail mode = 0660 }

unix_listener stats-writer {
    user = vmail
    group = vmail
    mode = 0660
}

}

Настройка Dovecot завершена. Осталось сгенерировать сертификаты или получить их с помощью Let's Encrypt. Для тестовых целей сгенерируем самоподписанные сертификаты. Мы их положим в /etc/postfix: openssl req -new -x509 -days 730 -nodes -out /etc/postfix/public.pem -keyout /etc/postfix/private.pem -subj "/C=RU/ST=Msk/L=Msk/O=Local/OU=Mail/CN=fedor.bigfoottrade.kz"

Добавляем пользователю "dovecot" группу "mail": usermod -a -G dovecot mail usermod -a -G vmail mail

sudo systemctl enable dovecot sudo systemctl start dovecot

Теперь можно тестировать: Сначала необходимо убедиться в том, что почта доходит до нового ящика. Сделать это можно с помощью тестового письма: echo "Test mail" | mail -s "Test mail" admin@mqtt.kz Сообщение должно появиться в папке /home/mail/mqtt.kz/admin/new/. Если письма нет, проверьте лог Postfix: tail -f /var/log/mail.log

В настройках DNS настроил А запись на только что настроенный сервер: mail.mqtt.kz Также нужно настроить dkim чтобы почта не попадала в спам, записав открытый ключ шифрования в TXT запсь

********** Настройка dkim ********** https://fornex.com/ru/help/dkim-postfix/ sudo apt-get install opendkim opendkim-tools mkdir -p /etc/postfix/dkim && cd /etc/postfix/dkim opendkim-genkey -D /etc/postfix/dkim/ -d mqtt.kz -s mail opendkim-genkey -D /etc/postfix/dkim/ -d geovizor.com -s mail

mv mail.private mail.mqtt.kz.private
mv mail.private mail.geovizor.com.private

mv mail.txt mail.mqtt.kz.txt
mv mail.txt mail.geovizor.com.txt

Создаём файл mcedit keytable и записываем в него ключи #имя_ключа домен:селектор:/путь/до/ключа mail._domainkey.mqtt.kz mqtt.kz:mail:/etc/postfix/dkim/mail.mqtt.kz.private mail._domainkey.geovizor.com geovizor.com:mail:/etc/postfix/dkim/mail.geovizor.com.private Создаём файл mcedit signingtable и записывает что чем подписывать #домен имя ключа *@mqtt.kz mail._domainkey.mqtt.kz *@geovizor.com mail._domainkey.geovizor.com Задаю права доступа: chown root:opendkim * chmod u=rw,g=r,o= * chmod g+r /etc/postfix/dkim/ Смотрим содержимое TXT файла для записи в домен cat /etc/postfix/dkim/mail.mqtt.kz.txt cat /etc/postfix/dkim/mail.geovizor.com.txt И добавляю в DNS на хостинг: Name: mail._domainkey.mqtt.kz Text: v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtrObJxHaUBVtR4XzNuFzoa449K3l1z6+Mi4e83rFbBYmBZRYjiJn5h2PeiK1i2IpSaEKn32AlPy5gB7Ej41Fhg6LXswwRhhfvz8vClhRbUKT4I8oPBj9WZr7+4aohG1Vcks1q9cgmwdcGN+6qhKq/DJ+AC1TirNrEpSvR6JAqd4G70aJazI9su0bY5cbIv0pZGezvt+2pwJw6xpb501KudTFE8FTHxB51aLkgYS257MkovSu+qlVzPjoOsZcOY7hQtF8WB/Czod0QN05Ob/N3Qc/k2E4tpvxgokLXdYl/8KBMLMX9cRfIVbv+atuo59VFKHYIGD8Kom6akORkFeIlQIDAQAB

Заменяем все настройки на то что ниже: sudo mcedit /etc/opendkim.conf AutoRestart Yes AutoRestartRate 10/1h PidFile /var/run/opendkim/opendkim.pid Mode sv Syslog yes SyslogSuccess yes LogWhy yes UserID opendkim:opendkim Socket inet:8891@localhost Umask 022 Canonicalization relaxed/relaxed Selector default MinimumKeyBits 1024 KeyFile /etc/postfix/dkim/${MAIL_DOMAIN}.private KeyTable /etc/postfix/dkim/keytable SigningTable refile:/etc/postfix/dkim/signingtable

Добавляем в конец: sudo mcedit /etc/postfix/main.cf milter_default_action = accept milter_protocol = 2 smtpd_milters = inet:localhost:8891 non_smtpd_milters = inet:localhost:8891

sudo systemctl start opendkim
sudo systemctl enable opendkim
service opendkim restart
service postfix restart

********** Настройка SPF ********** Например, SPF-запись «example.com. TXT «v=spf1 +a +mx -all»» говорит о том, что отправлять письма от имени домена «example.com» могут сервера, указанные в A и MX-записях этого домена, а письма, отправленные от других серверов должны быть удалены (Fail). Содержимое TXT файла для записи в домен Имя домена пустое: Содержимое: v=spf1 +a +mx -all

********** Настройка DMARC https://www.unisender.com/ru/glossary/dmarc/********** Содержимое TXT файла для записи в домен Имя домена: _dmarc Содержимое: v=DMARC1; p=none;

!!! Для тестирования сервера на прохождение спам фильтра пишем письмо на https://www.mail-tester.com/ или https://spamtest.smtp.bz !!! ********** web интерфейс для postfix — Roundcube ********** cd /var/www/html wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz tar xzvf roundcubemail-1.6.5-complete.tar.gz chown -R www-data:www-data /var/www/html/Roundcube sudo apt-get install aspell aspell-en dbconfig-common fonts-glyphicons-halflings javascript-common libaspell15 libjs-bootstrap libjs-bootstrap4 libjs-codemirror libjs-jquery libjs-jquery-minicolors libjs-jquery-ui libjs-jstimezonedetect libjs-popper.js libjs-sizzle node-jquery php-auth-sasl php-mail-mime php-masterminds-html5 php-net-sieve php-net-smtp php-net-socket php-pspell php7.4-pspell https://bigfoottrade.kz/Roundcube/installer/ language — ru_RU Предварительно создать базу: https://bigfoottrade.kz/Roundcube http://77.240.38.108/Roundcube


Установка sendmail для почты на php sudo apt-get install php-mail sudo apt-get install sendmail sudo sendmailconfig Проверить доменное имя: sudo mcedit /etc/hosts Настраиваем PHP: sudo mcedit /etc/php/8.1/apache2/php.ini Прописав: sendmail_path = /usr/sbin/sendmail -t -i Или если используем ssmtp то (ниже есть настройка для внешнего почтового сервера): sendmail_path = /usr/sbin/ssmtp -t

Перезагружаем апач: sudo service apache2 restart


Настройка переадресации почты: sudo apt-get install postfix В файл /etc/postfix/main.cf recipient_bcc_maps = hash:/etc/postfix/virtual В файл /etc/postfix/virtual записать: @bigfoottrade.kz irigm@mail.ru @bigfoottrade.kz instruments@asia.com поле чего: postmap /etc/postfix/virtual postfix reload Также добавить в фаирволл: sudo ufw allow Postfix sudo ufw allow 'Postfix SMTPS'

sudo ufw deny Postfix
sudo ufw deny 'Postfix SMTPS'

Использование для почты внешнего сервера например mail.ru (в php и других программах) sudo apt-get install mailutils sudo apt-get install ssmtp Потом заходим в настройки и меняем параметры sudo mcedit /etc/ssmtp/ssmtp.conf

Для yandex.ru должно быть такое: root=no_reply@bigfoottrade.kz mailhub=smtp.yandex.ru:465 #hostname=localhost UseTLS=YES AuthUser=no_reply@bigfoottrade.kz AuthPass=Rp1ZB1nB340kSQAoPor3 FromLineOverride=YES Debug=NO Для локального сервера istt.kz должно быть такое: root=no-reply@istt.kz mailhub=mail.istt.kz:465 #hostname=localhost UseTLS=YES AuthUser=no-reply@istt.kz AuthPass=je6&HHCEmJ FromLineOverride=YES Debug=NO

А в файле sudo mcedit /etc/ssmtp/revaliases прописать: administrator:no_reply@bigfoottrade.kz:smtp.yandex.ru:465 www-data:no_reply@bigfoottrade.kz:smtp.yandex.ru:465 igor:no_reply@bigfoottrade.kz:smtp.yandex.ru:465 root:no_reply@bigfoottrade.kz:smtp.yandex.ru:465 zabbix:no_reply@bigfoottrade.kz:smtp.yandex.ru:465 Тестируем отправку в консоли: echo test_message | ssmtp irigm@mail.ru Логи находятся в папке sudo mcedit /var/log/maillog


Старую версию агента/сервера из репазитория можно установить так: cd /usr/src wget http://repo.zabbix.com/zabbix/2.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_2.2-1+trusty_all.deb sudo dpkg -i zabbix-release_2.2-1+trusty_all.deb sudo apt-get update sudo apt-get install zabbix-agent service zabbix-agent start


Устанавливаю zabbix сервер 5.2 https://techexpert.tips/zabbix/zabbix-5-install-ubuntu-linux/ на Ubuntu 18.04 sudo apt update && sudo apt upgrade sudo apt install apache2 sudo apt install php php-cli php-common php-pgsql Скачиваю настройки репозитория для zabbix для Ubuntu server 18.04 bionic x64: wget -P ~ https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1%2Bubuntu18.04_all.deb Добавляю репозиторий заббикса: sudo dpkg -i ./zabbix-release_5.2-1+ubuntu18.04_all.deb Устанавливаю необходимые пакеты: sudo apt update sudo apt install zabbix-server-pgsql zabbix-frontend-php zabbix-apache-conf zabbix-agent zabbix-get Создаю начальную базу, через WEB интерфейс, название базы: zabbix пароль z123456 CREATE DATABASE transit 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; Импортируем изначальную схему и данные: zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix Настраиваем логин пароль: mcedit /etc/zabbix/zabbix_server.conf Прописываем: DBPassword=z123456 Проверяю настройку PHP: mcedit /etc/php/7.2/apache2/php.ini date.timezone = Asia/Almaty Затем: sudo service apache2 restart Запускаем процессы сервера и агента sudo service zabbix-server start sudo update-rc.d zabbix-server enable sudo systemctl restart zabbix-server zabbix-agent apache2 sudo systemctl enable zabbix-server zabbix-agent apache2 Логи при такой установке в: /var/log/zabbix Пробуем зайти http://94.247.128.218/zabbix

Проходимся по WEB настройке и авторизуемся: Admin с паролем zabbix там создаём узел сети и добавляем нужные шаблоны. Поменял пароль на: ze0bra

Настройка E-mail для оповещений при помощи скрипта http://efsol-it.blogspot.com/2014/05/zabbix-email.html: Узнаём куда нужно ложить скрипты: cat /etc/zabbix/zabbix_server.conf | grep alertscripts Выдало: # AlertScriptsPath=/usr/lib/zabbix/alertscripts

Записал туда этот путь: /usr/local/etc/zabbix/alertscripts

Скрипт для отправки почты (закинул в 2 пуми в alertscripts и externalscripts): #!/bin/bash to="$1" subject="$2" body="$3" echo $body | mail -s $subject $to exit 0 Прописываем права для скрипта: chown zabbix.zabbix /usr/local/etc/zabbix/alertscripts/email.sh chmod +x /usr/local/etc/zabbix/alertscripts/email.sh Потом внастройках Администрирование -> Способы оповещений -> Создать способ оповещения После того как создали в настройках пользователя присваиваем оповещение. Потом активируем действия в "Настройка -> действия" Перезапускаем sudo service zabbix-server restart


Для копирования библиотек запустить: 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 перед <Host name="localhost" appBase="webapps" следующий текст: 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 ?

sudo nano /etc/init.d/autostart.script

Как понятно, autostart.script это название файла в котором будут записаны команды и оно может быть любым, но не должно совпадать с именами уже существующих файлов в папке /etc/init.d/. В первой строке файла должно быть указано какая оболочка или интерпретатор будет выполнять команды в файле. Если вы хотите использовать те же команды, что и в терминале, то файл должен начинаться со строки: view source print ? 1. #!/bin/bash

  1. Нужно разрешить файлу выполняться: view source print ?

sudo chmod +x /etc/init.d/autostart.script

  1. Рассказываем системе что этот файл нужно исполнять при старте системы: view source print ?

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


Подключение стронних 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) id:d497c32 Можно проверить какой 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 адреса клиента:

<?php echo '
'; 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


Установка сервиса обмена сообщениями 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

<dependencies>
    <dependency>
        <groupId>com.rabbitmq</groupId>
        <artifactId>amqp-client</artifactId>
        <version>5.16.0</version>
    </dependency>
</dependencies>

Перезагружаем: 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:

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

sudo systemctl restart 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:

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