**************************************************************************************************** Настройка времени и NTP сервера Устанавливаем зону ```sh sudo timedatectl set-timezone Asia/Almaty ``` ```conf sudo date --set="2025-01-07 21:05:00.000" sudo timedatectl set-ntp on sudo apt install ntp ntpq -p ``` **************************************************************************************************** Добавляем нового пользователя ```sh sudo adduser sabyrzhan ``` ```sh sudo usermod -aG sudo имя_пользователя ``` **************************************************************************************************** Установка cinamon на Ubuntu 22.04 и 24/04: ```sh sudo apt update && sudo apt upgrade -y sudo apt install cinnamon -y sudo reboot ``` Настройка клавиатуры в cinamon удаляем: ibus ```sh 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 ```sh 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 **************************************************************************************************** 0) Для того чтобы архивировать и извлечь каталог: tar -cvf istransit.tar /opt/www/istransit.kz tar -xvf /opt/www/istransit.tar -C /opt/www 0)Выключить комп: shutdown -h now 1)Список процессов top или лучше установить htop Монтирование образа CD mount -o loop /some.iso /mnt/point mount -o loop -t iso9660 umount DIRECTORY umount DEVICE_NAME Посмотреть точки монтирования дисков: sudo fdisk -l 3.1) Посмотреть мак адрес по адресу /etc/udev/rules.d/z25_persistent-net.rules 4)DNS сервера в ubuntu прописываються в /etc/resolv.conf (теперь в другом месте см. инет) nameserver 212.19.149.53 nameserver 212.19.149.54 5)Список репозиториев в ubuntu расположен в nano /etc/apt/sources.list apt-get update apt-get install mc apt-get remove mc Если mc не найден то добавить в репозитории nano /etc/apt/sources.list эту строку: deb http://archive.ubuntu.com/ubuntu/ jaunty universe 6)Переменные окружения export PATH=$PATH:/usr/local/bin:/usr/local/sbin alias mc='mc -c' mc 7)Отобразить переменные окружения: export 8)Настройка PPPoE соединения комманда: pppoeconf Соединятся командой: sudo pon dsl-provider Завершить соединение: sudo poff dsl-provider **************************************************************************************************** Выполнение скрипта sh Check.sh **************************************************************************************************** Символическая ссылка Symbolic ссылка на папку: ln -s /mnt/data/ftp /var/www/html/upload ********** Настраиваю прокси сервер ********** sudo mcedit /etc/environment И в заголовок пишу: http_proxy=http://192.168.1.89:8888 https_proxy=http://192.168.1.89:8888 или http_proxy=http://192.168.0.170:7777 **************************************************************************************************** Для того чтобы посмотреть размер файлов: ncdu Для определения сколько свободного места выполнить: df -h **************************************************************************************************** Чтобы вывести информацию по ОЗУ (ram) выполните команду: sudo lshw -C memory **************************************************************************************************** Установка компилятора для разработки на c++ gcc sudo apt-get update -y sudo apt-get upgrade -y sudo apt-get install perl -y sudo apt-get install build-essential Для компиляции по 32 битный Linux (В еклипсе прописать g++ -m32 а также gcc -m32 а также g++ -m32): sudo apt-get install gcc-multilib sudo apt-get install g++-multilib Для eclipse установить: sudo apt install default-jre **************************************************************************************************** Установка кросс-компилятора Cross Compilers для Raspberry Pi на Ubuntu: https://github.com/raspberrypi/tools sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf Note: if building for Pi0/1 using --with-arch=armv6 --with-float=hard --with-fpu=vfp is recommended (and matches the default flags of the toolchains included here). /home/igor/toolchain/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf **************************************************************************************************** записать информацию о расположении загрузчика системы в фаил [root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx bs=512 count=1 **************************************************************************************************** Компиляция WIFI драйвера Для того чтобы узнать версию ядра "4.15.0-23-generic": uname -r Внмание: исходники ядра должны быть той же версии что и сейчас работают в системе! Вывести информацию о USB устройствах: lsusb -v У меня выдало: Для того чтобы посмотреть что подсоединено к pci: lspci -v Minipcie Для того чтобы посмотреть всех устройств: lsdev -v И так у меня RTL8821AE пробую скачать драйвер отсюда: Загрузка и проверка модулей: lsmod **************************************************************************************************** Подключение к wifi Настраиваемрегион командой: iw reg set CN То что мы живём в китае а то 5G WIFI не работает sudo -i echo "options cfg80211 ieee80211_regdom=CN" > /etc/modprobe.d/cfg80211.conf exit sudo ifconfig wlan0 up $ sudo iwconfig wlan0 essid Node5 $ sudo dhclient -v wlan0 http://help.ubuntu.ru/wiki/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D1%81%D0%B5%D1%82%D0%B8_%D0%B2%D1%80%D1%83%D1%87%D0%BD%D1%83%D1%8E#%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_wifi **************************************************************************************************** Активация DHCP клиента: **************************************************************************************************** Создание нового пользователя с домашней дерикторией: sudo useradd igor -g www-data Задаём пароль: sudo passwd igor Добавляем пользователя в дополнительную группу (группы через запятую): sudo usermod -a -G www-data administrator sudo usermod -a -G tomcat administrator sudo usermod -a -G sudo igor Разрешить доступ к последовательному порту Для этого помещаем себя в группу dialout sudo usermod -a -G dialout igor Для проверки настроек: id igor groups igor Назначить sudo привилегии пользователю: mcedit /etc/sudoers igor ALL=(ALL:ALL) ALL Рекурсивно назначить вледельца папки: sudo chown tomcat:tomcat -R /opt/tomcat/geoserver/ROOT/data sudo chown tomcat:tomcat ~/CCALM.war sudo chown tomcat:tomcat ~/SoilScience.war sudo chown : -R /.blabla Выставляем права на папку: sudo chmod -R 774 /var/www/ Для удаления пользователя c домашней и mail директорией выполнить: userdel -r igor **************************************************************************************************** Монтирование USB Flash mount -t vfat /dev/sda1 /flash umount /flash Автомонтирование USB при запуске системы http://www.fight.org.ua/hdddrives/linux_disk_mount_fstab.html http://help.ubuntu.ru/wiki/fstab: Выполнить команду: sudo blkid Найти строку: /dev/sdb1: LABEL="IGOR_8GB" UUID="94D2-1374" TYPE="vfat" /dev/sdb1: LABEL="SSD_2_5" UUID="14A3BBD52CB2F1C3" TYPE="ntfs" PARTUUID="56c83443-01" /dev/sdb5: UUID="17C59CBD70BFFBA5" TYPE="ntfs" PARTUUID="f9aec734-05" Добавить в sudo mcedit /etc/fstab следующее: UUID=94D2-1374 /media/usb vfat rw,auto,user,exec,async 0 0 UUID=7086E7317C4E478E /mnt/O_DRIVE ntfs-3g defaults 0 0 /dev/sda3 /mnt/ssd ntfs-3g rw,auto,user,exec,async 0 0 /dev/sda3 /mnt/windows ntfs-3g defaults 0 0 Монтирование сетевой файловой системы: mount -t cifs //192.168.0.11/o /mnt/smb -o username=igor,password=1245,iocharset=utf8,codepage=cp866 Для автоматического монтирования в /etc/fstab записать: //192.168.0.11/o /mnt/smb cifs username=igor,password=1245,rw,auto,noexec,iocharset=utf8,codepage=cp866,uid=1000,gid=100 0 0 **************************************************************************************************** Перенос системы на другой жеский диск (также можно делать недельные бакапы системы, на атоме установленна) Создаём копию системы на флешку: sudo tar cvpzf /media/usb/backup.tgz --exclude=/var/www --exclude=/etc/fstab --exclude=/boot/grub/grub.cfg --exclude=/mnt --exclude=/media --exclude=/proc --exclude=/lost+found --exclude=/sys / Потом извлекаем на новую установленную систему командой: sudo tar xvpfz /backup.tgz -C / Можно также скопировав с диска на диск без синхронизации: **************************************************************************************************** Измененние раздела без перезагрузки сервера после увеличения размера жеского диска (на основе: https://serverspace.ru/support/help/uvelichenie-diskovogo-prostranstva-ubuntu-18/) ТОЛЬКО ДЛЯ РАЗДЕЛОВ LVM Посмотреть список дисков: df -h lsblk Выполняем сканирование конфигурации и передачу данных ядру ОС: echo 1 > /sys/block/sda/device/rescan Запускаем утилиту: parted Выводим таблицу разделов: p Результат такой (для запоминания): Model: VMware Virtual disk (scsi) Disk /dev/sda: 537GB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 2097kB 1049kB bios_grub 2 2097kB 215GB 215GB ext4 Запускаем процедуру слияния: (parted) resizepart 2 Где «2» означает номер тома, на котором происходит изменение дискового пространства, вбиваю нужный размер: 537GB Потом: quit Информируем OC об изменениях: pvresize /dev/sda2 Меняем значение тома командой: lvextend -r -l +100%FREE /dev/mapper/vgroup1-root Проверяем результат: df –h ---------------------------------------- Вариант для не виртуальной файловой системы (https://habr.com/ru/post/450444/): Проверяем размер: sudo fdisk -l Выдало: Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 955FD603-437A-4A80-B5F6-90F1C2CCD1D0 Device Start End Sectors Size Type /dev/sda1 2048 4095 2048 1M BIOS boot /dev/sda2 4096 419921875 419917780 200,2G Linux filesystem Удаляем раздел и создаём новый командами: sudo fdisk /dev/sda p d n (Метку файловой системы не удаляем) Обновляем: sudo partprobe /dev/sda Перезаписываем метаданные файловой системы: sudo resize2fs /dev/sda2 Проверяем: sudo fdisk -l **************************************************************************************************** Добавление нового пользователя см. cat /etc/passwd и cat /etc/group sudo useradd tester -d /var/www/www.dirt.kz -g 33 -s /usr/sbin/nologin sudo passwd tester sudo userdel tester **************************************************************************************************** Настройка rsync для резервного копирования файлов в отдельную папку http://ashep.org/2010/backup-v-linux-nastraivaem-rsync-server/#.VPrB0_mQCNY 1 й командой на флешку: rsync -rlvt --modify-window=1 --delete /var/www /media/usb Меняем редактор по умолчанию на тот который от MC: export EDITOR=mcedit Для добавления в cron для дневной синхронизации: crontab -e И добавляем строчку чтоб это происходило в 3 часа ночи: 0 3 * * * rsync -rlvt --modify-window=1 --delete /var/www /media/usb **************************************************************************************************** Настройка cron: sudo update-alternatives --config editor update-alternatives --config editor export EDITOR=mcedit Или записать в "sudo mcedit /etc/environment" строку "EDITOR=mcedit" sudo crontab -e sudo crontab -e -u www-data sudo crontab -e -u tomcat В файле прописать: */5 * * * * wget -O /dev/null -q 'http://www.bigfoottrade.kz/cashier/work.php' */2 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/globalstar.php' 10 0 * * * wget -O /dev/null -q 'http://www.bigfoottrade.kz/sitemap.php' 0 * * * * wget -O /dev/null -q 'http://www.bigfoottrade.kz/shop/tree.php?fn=0&name=test_tree.js' */30 * * * * /usr/bin/php5 /var/www/update_ip.php */1 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/work.php' 0 3 * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/get/list.php' */1 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/mail.php' */1 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/iridium.php' */2 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/globalstar.php' 0 6 * * * wget -O /dev/null -q 'http://locust.kz/DownloadWeather?forecast=000' 0 7 * * * wget -O /dev/null -q 'http://locust.kz/DownloadWeather?forecast=048' 1 1 1 * * wget -O /dev/null -q 'http://locust.kz/SendMail' 0 1 * * * wget -O /dev/null -q 'http://locust.kz/get/list.php' 0 1 * * * /opt/backups/backup.sh Проверяю таблицу: sudo crontab -l -u www-data **************************************************************************************************** Установка MongoDB на Ubuntu https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-18-04-ru sudo apt update sudo apt install mongodb-server sudo systemctl status mongodb **************************************************************************************************** Установка MySQL на Ubuntu 22.04 apt-get update sudo apt-get install mysql-server Удаление MySQL sudo systemctl stop mysql sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-* sudo rm -rf /etc/mysql /var/lib/mysql sudo apt autoremove sudo apt autoclean Меняем пароль через SQL: sudo mysql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newIg@rR0'; SELECT user,authentication_string,plugin,host FROM mysql.user; SHOW GRANTS FOR 'root'@'localhost'; Также настроить чтобы он был не регистрозависемым в файле /etc/mysql/mysql.conf.d/mysqld.cnf в секции [mysqld] добавить строку: lower_case_table_names = 1 Для возможность удаленого подключения через внешку создаём спец пользователя, это я сделал через dbForge создав там пользователя root@192.168.0.%. sudo mysql -u root -pnewIg@rR0 CREATE USER 'root'@'192.168.0.%' IDENTIFIED WITH mysql_native_password BY 'newIg@rR0'; ALTER USER 'begaikin'@'192.168.0.%' IDENTIFIED BY 'Begaikin@2'; Проверить: GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.%'; GRANT ALL PRIVILEGES ON `%`.* TO 'root'@'192.168.0.%'; SHOW GRANTS FOR 'root'@'192.168.0.%'; А также для удалёного подключения закоментить параметр "bind-address = 127.0.0.1" в файле настроек mcedit /etc/mysql/mysql.conf.d/mysqld.cnf Перезагружаем MySQL: sudo service mysql restart База MySQL: db1109882_locust Логин: u1109882_root Пароль: root123456 mysqldump -uu1109882_root -proot123456 -h127.0.0.1 db1109882_locust > /root/db1109882_locust2.sql **************************************************************************************************** Установка MySQL для разработчика: sudo apt-get update sudo apt-get install libmysqld-dev **************************************************************************************************** Установка Apache и PHP (на посл версии Ubuntu php7): Подключаемся к серверу: ```sh ssh administrator@10.101.1.3 ``` Устанавливаем: ```sh 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 ``` Включаем модули: ```sh sudo phpenmod imap sudo phpenmod mbstring sudo a2enmod rewrite ``` В /etc/apache2/apache2.conf ставим AllowOverride All командой ```sh sudo sed -i 's/AllowOverride None/AllowOverride All/g' /etc/apache2/apache2.conf ``` Проверяем файл: ```sh sudo mcedit /etc/apache2/apache2.conf ``` ```sh sudo a2enmod php8.1 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 ```sh 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 Содержание файла виртуального хоста: ServerAdmin info@geovizor.com ServerName geovizor.com ServerAlias www.geovizor.com DocumentRoot /var/www/geovizor.com DirectoryIndex index.html index.php index.xyz AddType application/x-httpd-php .php .xyz SSLEngine on SSLCertificateFile /etc/ssl/certs/geovizor_com.crt SSLCertificateChainFile /etc/ssl/certs/geovizor_com.ca-bundle SSLCertificateKeyFile /etc/ssl/private/geovizor_com.key sudo a2ensite bigfoottrade.kz.ssl.conf sudo a2ensite bigfoottrade.kz.conf sudo a2ensite zatochnik.pro.conf sudo a2ensite zatochnik.pro.ssl.conf sudo a2ensite elektronnaya-ochered.kz.conf sudo a2ensite elektronnaya-ochered.kz.conf sudo a2ensite transit.istt.kz.conf sudo a2ensite geovizor.com.ssl.conf sudo a2ensite mqtt.kz.ssl.conf sudo a2ensite stations.istt.kz.ssl.conf sudo a2ensite stations.istt.kz.conf sudo a2ensite uspdmanager.istt.kz.conf sudo a2ensite msp.istt.kz.conf sudo a2ensite mog.istt.kz.conf sudo a2ensite mqtt.kz.conf sudo a2ensite data.ccalm.org sudo a2ensite rigor.kz.conf sudo a2ensite 000-default.conf sudo a2ensite transit.istt.kz.conf sudo a2ensite aistransit.kz.conf sudo a2ensite jwt.local.conf sudo a2ensite jwt2.local.conf sudo a2ensite transit_gpti_kg.conf Посмотреть все разрешонные сайты: a2query -s sudo a2dissite bigfoottrade.kz.conf sudo a2dissite zatochnik.pro.ssl.conf sudo a2dissite zatochnik.pro.conf sudo a2dissite geovizor.com.ssl.conf sudo a2dissite transit.istt.kz.conf sudo a2dissite 000-default.conf sudo a2dissite default-ssl.conf sudo a2dissite msp.istt.kz.ssl.conf sudo a2dissite mqtt.kz.ssl.conf sudo a2dissite transit.istt.kz.conf sudo a2dissite istransit.kz.conf sudo a2dissite jwt2.local.conf sudo a2dissite jwt.local.conf sudo a2dissite aistransit.kz.conf http://aistransit.kz/ Для проверки файла ключа: openssl x509 -noout -modulus -in /etc/ssl/certs/geovizor_com.crt openssl x509 -noout -modulus -in /etc/ssl/private/server.key openssl pkcs7 -print_certs -in /etc/ssl/certs/geovizor_com.crt -out /etc/ssl/certs/geovizor_com.pem Проверяем настройки командой: /usr/sbin/apache2 -S ***** Настраивем виртуальный хост ***** Копируем файлик примера: sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.istt.kz.conf sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/msp.istt.kz.ssl.conf В файлике настраиваю ServerAdmin и DocumentRoot : ServerAdmin ivanov.i@istt.kz ServerName transit.istt.kz ServerAlias transit2.istt.kz DocumentRoot /var/www/transit.istt.kz ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Активируем: sudo a2ensite bigfoottrade.kz.conf sudo a2ensite bigfoottrade.kz.ssl.conf sudo a2ensite uspdmanager.istt.kz.conf sudo a2ensite uspdmanager.istt.kz.ssl.conf sudo a2ensite msp.istt.kz.ssl.conf sudo a2ensite daloradius.istt.kz.conf sudo a2ensite stations.istt.kz sudo a2ensite zatochnik.pro sudo a2ensite elektronnaya-ochered.kz.conf sudo a2ensite integration-gateway.org.conf sudo a2ensite integration-gateway.org.ssl.conf sudo a2ensite motion-engine.ru.conf sudo a2ensite motion-engine.kz.conf sudo a2ensite motion-engine.com.conf sudo a2ensite observer.kz.conf sudo a2ensite transit.istt.kz.ssl.conf sudo a2ensite transit.istt.kz.conf sudo a2ensite geovizor_local.conf Или деактивируем sudo a2dissite 000-default.conf sudo a2dissite msp.istt.kz.ssl.conf sudo a2dissite bigfoottrade.kz.conf sudo a2dissite uspdmanager.istt.kz.conf sudo a2dissite earth.kz.conf sudo a2dissite integration-gateway.org.conf sudo a2dissite observer.kz.conf Перезагружаем sudo service apache2 restart **************************************************************************************************** Настройка SSH: sudo apt-get install openssh-server Поменять порт можно в настройках: sudo mcedit /etc/ssh/sshd_config Port 2222 Для рестарта: sudo /etc/init.d/ssh stop/start/restart Для подключения через Linux: ssh administrator@192.168.0.83 -p 2222 Для винды есть PUTTY.EXE настроить кодировку на utf-8 **************************************************************************************************** Подключение к последовательному порту ttyUSB через Minicom sudo apt-get install minicom sudo minicom -s После настройки зайти так sudo minicom **************************************************************************************************** ********** Устанавливаю и настраиваю FreeRadius ********** Настройка rlm_perl для FreeRadius: http://abills.net.ua/wiki/doku.php/abills:docs:rlm_perl:ru подсказки в http://www.m-200.com/base/index.php/%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA_FREERADIUS._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_3 Для того, чтобы использовать встроенный perl необходимо: 1. В файле modules/perl раскомментировать строку 'func_authorize = authorize'. 2. В файле radiusd.conf добавить: authorize { preprocess files perl } По инсткукции из http://ittraveler.org/ustanovka-i-nastrojka-radius-servera-na-ubuntu-s-veb-interfejsom/ Устанавливаем FreeRadius и пакеты sudo apt-get install freeradius sudo apt-get install freeradius-mysql sudo apt-get install freeradius-utils sudo apt-get install freeradius-perl sudo apt-get install freeradius-python Подключаемся к серверу Mysql mysql -u root -p Далее создаем базу данных radius create database radius; Назначим полные права пользователю radius grant all on radius.* to radius@localhost identified by "WP@$$w0rd"; Отключаемся от Mysql exit Импортируем таблицы в базу данных radius #mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql #mysql -u root -p radius < /etc/freeradius/sql/mysql/nas.sql Для проверки добавим тестовые значения в таблицу radcheck #mysql -u root -p #mysql> use radius; #mysql> INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('sqltest', 'Password', 'testpwd'); #mysql> exit Открываем файл настроек Freeradius для MySQL расположение файла — /etc/freeradius/sql.conf Редактируем строки до такого вида: database = mysql server = "localhost" port = 3306 login = radius password = "WP@$$w0rd" radius_db = "radius" readclients = yes Далее открываем файл сайта Freeradius Расположение файла — /etc/freeradius/sites-enabled/default Приводим следующие строки к виду: Uncomment sql on authorize{} # See “Authorization Queries” in sql.conf sql ... Uncomment sql on accounting{} # See “Accounting queries” in sql.conf sql ... Uncomment sql on session{} # See “Simultaneous Use Checking Queries” in sql.conf sql ... Uncomment sql on post-auth{} # See “Authentication Logging Queries” in sql.conf sql Далее правим основной конфигурационный файл Freeradius и включаем поддержку Mysql расскоментировав строку. Расположение файла — /etc/freeradius/radiusd.conf $INCLUDE sql.conf Теперь протестируем настройки сервера. Откройте 2 ssh окна терминала. В первом окне остановим сервис Freeradius sudo service freeradius stop И запустим сервис в режиме debug sudo freeradius -X - debug mode Теперь открываем второе окно терминала и вводим запрос radtest sqltest testpwd localhost 18128 testing123 Если вывод команды такой: Sending Access-Request of id 68 to 127.0.0.1 port 1812 User-Name = "sqltest" User-Password = "testpwd" NAS-IP-Address = 127.0.1.1 NAS-Port = 18128 rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=68, length=20 То все впорядке. Теперь нужно добавить Radius клиентов в файл /etc/freeradius/clients.conf Пример добавления: client 192.168.1.0/16 { secret = secretpass shortname = testclient nastype= testdevice } **************************************************************************************************** Проверить версию OpenSSL: openssl version -v Устанавливаю из исходников: wget https://www.openssl.org/source/openssl-3.0.1.tar.gz tar xzvf openssl-3.0.1.tar.gz cd openssl-3.0.1 ./config make sudo make install ln -s libssl.so.3 libssl.so sudo ldconfig openssl version -a Если выдало что не можжет найти: openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or director Для этого добавить путь к каталогу библиотек: sudo mcedit /etc/ld.so.conf.d/libc.conf и вставить: /usr/local/lib64 и запустить sudo ldconfig Также нужно добавить путь при компиляции: sudo export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig Проверить путь: pkg-config --cflags openssl pkg-config --variable pc_path pkg-config Не знал как указать путь на /usr/local/lib64/pkgconfig поэтому скопировал в /usr/local/lib/pkgconfig Если нужно установить OpenSSL для разработчика из репозитория (но там старая нужна > 3.0): apt-get update sudo apt-get install libssl-dev **************************************************************************************************** Установить ProFTPD для доступа через FTPS с сохранением пользователей в PostgreSQL по подсказки нейросети sudo apt-get update sudo apt-get install proftpd-basic proftpd-mod-pgsql proftpd-mod-crypto postgresql postgresql-contrib openssl Создание сертификата TLS: sudo mkdir /etc/proftpd/ssl sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/proftpd/ssl/proftpd.key -out /etc/proftpd/ssl/proftpd.crt Включаем модуль в: sudo nano /etc/proftpd/modules.conf Раскоментив строку: LoadModule mod_tls.c Настройка ProFTPD для использования TLS: sudo mcedit /etc/proftpd/tls.conf Добавьте или измените следующие строки: TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol TLSv1.2 TLSRSACertificateFile /etc/proftpd/ssl/proftpd.crt TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key TLSOptions NoCertRequest TLSVerifyClient off TLSRequired on TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:!SSLv3 Включение TLS в основной конфигурации ProFTPD: sudo mcedit /etc/proftpd/proftpd.conf Добавьте или измените следующие строки: Include /etc/proftpd/tls.conf Создаём и меняем базу данных CREATE DATABASE ftpusers; CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(30) NOT NULL UNIQUE, password VARCHAR(128) NOT NULL, uid INT NOT NULL, gid INT NOT NULL, homedir VARCHAR(255) NOT NULL, shell VARCHAR(255) NOT NULL ); INSERT INTO users (name, password, uid, gid, homedir, shell) VALUES ('', MD5(''), 1001, 1001, '/home/', '/bin/false'); INSERT INTO users (name, password, uid, gid, homedir, shell) VALUES ('administrator', MD5('administrator'), 1001, 1001, '/home/administrator', '/bin/false'); CREATE USER proftpd WITH PASSWORD 'ReULkD8M'; GRANT ALL PRIVILEGES ON DATABASE ftpusers TO proftpd; Включаем модуль в: sudo nano /etc/proftpd/modules.conf Раскоментив строку: LoadModule mod_sql.c LoadModule mod_sql_postgres.c LoadModule mod_sql_passwd.c Редактируем: sudo nano /etc/proftpd/pgsql.conf Настройка ProFTPD для использования PostgreSQL: sudo mcedit /etc/proftpd/pgsql.conf Вставить следующий код: SQLEngine on SQLBackend pgsql SQLAuthenticate users SQLConnectInfo ftpusers@10.101.1.6:5432 proftpd ReULkD8M SQLUserInfo users name password uid gid homedir shell # Логирование SQL-запросов SQLLogFile /var/log/proftpd/sql.log SQLLog ALL # Указание на использование открытых паролей SQLAuthTypes OpenPlaintext Добавляем ссылку на созданную настройку: sudo nano /etc/proftpd/proftpd.conf Добавилв следующее содержимое: Include /etc/proftpd/pgsql.conf Теперь можно перезапустить proftpd: sudo systemctl restart proftpd Проверяем что пользователи успешно считались из базы даныз командой: sudo mcedit -f /var/log/proftpd/sql.log **************************************************************************************************** Установить ProFTPD http://sys-admin.kz/os/nix/539-centod-install-proftpd.html для доступа через FTPS Настраиваем для пользователя www-data sudo apt-get install proftpd-basic openssl Проверить какие модули установленны: proftpd -vv sudo apt-get remove --purge proftpd-basic В настройках mcedit /etc/proftpd/proftpd.conf изменить: UseIPv6 off DefaultRoot ~ ServerIdent on "FTP Server ready." RequireValidShell off AuthUserFile /etc/proftpd/ftpd.passwd PassivePorts 40000 40100 Для создания нового виртуального пользователя "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 sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=jointech --uid=33 --gid=33 --home=/opt/SServerJointech/ftp --shell=/bin/false Задал пароль для apk пользователя: vooOtKBb7bckcNh Задал пароль для rebezov.a : BU39kb2 Задал пароль для jointech : jointech задал пароль: 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 **************************************************************************************************** Установка 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 перед geoserver2.ccalm.org Стандартные логин и пароль администратора admin и geoserver (поменял на geoserver1) Мастер пароль поменял с geoserver на geoserver1 http://uspdmanager.istt.kz:8080/geoserver Разрешаем запись для генерации тайлов: При переносе на другой сервер скопировать папку /opt/tomcat/webapps/geoserver/data Расширения такие как gs-web-wps-2.11.0.jar закинуть в папку: /opt/tomcat/webapps/geoserver/WEB-INF/lib Если перенаправлять через HAProxy с HTTPS на HTTTP то GeoServer будет глючить так как на строне клиента пытается подстраиваться под протокол, поэтому нужно включать HTTPS и на Tomcat! **************************************************************************************************** ***** Настройка https ssl для tomcat ***** Купил SSL сертификат в www.gogetssl.com сгенерировав на сайте SHA-256 CSR and Private Key. Подтвердил владение, выслали 2 файла в архиве: integration-gateway_org.ca-bundle, integration-gateway_org.crt Переписал Private ключ в текстовый файл locust_kz.key Также прислали сертификаты на почту: "Sectigo RSA Domain Validation Secure Server CA", "USERTrust RSA Certification Authority", "AAA Certificate Services" и использую CA сертификат. Либо при помощи самоподписанного сертификата, генерим с алиасом geoserver и паролем qw0qw1qw2: keytool -genkey -keyalg RSA -alias geoserver -keystore /opt/tomcat/conf/ssl/keystore.jks -storepass qw0qw1qw2 -validity 3650 -keysize 2048 Проверяем что ключь создан корректно: keytool -list -keystore /opt/tomcat/conf/ssl/keystore.jks -storepass qw0qw1qw2 Преобразую в хранилище pkcs12: openssl pkcs12 -export -in [my_certificate.crt] -inkey [my_key.key] -out [keystore.p12] -name [new_alias] -CAfile [my_ca_bundle.crt] -caname root openssl pkcs12 -export -in integration-gateway_org.crt -inkey integration-gateway_org.key -out keystore.p12 -name new_alias -CAfile integration-gateway_org.ca-bundle -caname root openssl pkcs12 -export -in locust_kz.crt -inkey locust_kz.key -out keystore.p12 -name new_alias -CAfile locust_kz.ca-bundle -caname root openssl pkcs12 -export -in ccalm_org.crt -inkey ccalm_org.key -out ccalm_org.p12 -name ccalm_org -CAfile ccalm_org.ca-bundle -caname root Задал пароль: qw0qw1qw2 для хранилища ключей Преобразую в хранилище java: keytool -importkeystore -deststorepass [new_keystore_pass] -destkeypass [new_key_pass] -destkeystore [keystore.jks] -srckeystore [keystore.p12] -srcstoretype PKCS12 -srcstorepass [pass_used_in_p12_keystore] -alias [alias_used_in_p12_keystore] keytool -importkeystore -deststorepass qw0qw1qw2 -destkeypass qw0qw1qw2 -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass qw0qw1qw2 -alias new_alias keytool -importkeystore -deststorepass qw0qw1qw2 -destkeypass qw0qw1qw2 -destkeystore ccalm_org.jks -srckeystore ccalm_org.p12 -srcstoretype PKCS12 -srcstorepass qw0qw1qw2 -alias ccalm_org Импорт ключа в хранилище (теперь в нём 2 ключа для locust.kz и для ccalm.org): keytool -importkeystore -srckeystore ccalm_org.p12 -destkeystore keystore.jks -srcstoretype pkcs12 -alias ccalm_org keytool -list -v -keystore keystore.jks Настроить томкат, добавив текст который ниже в: sudo mcedit /opt/tomcat/conf/server.xml Также при помощи authbind разрешить не-root программе быть назначенными младшим портам: sudo apt-get install authbind sudo touch /etc/authbind/byport/443 sudo chmod 500 /etc/authbind/byport/443 sudo chown tomcat /etc/authbind/byport/443 **************************************************************************************************** Для создания сервиса создайте service-файл /etc/systemd/system/zholak_gps.service (замените poc-smsc на имя вашего сервиса): sudo touch /etc/systemd/system/PServerARNAVI.service sudo chmod 664 /etc/systemd/system/PServerARNAVI.service sudo mcedit /etc/systemd/system/PServerARNAVI.service И пишем в этот файл следующий текст: [Unit] Description=zholak_ftp [Service] WorkingDirectory=/var/opt/servers/arnavi/ ExecStart=/var/opt/servers/arnavi/PServerARNAVI PServerARNAVI.ini RestartSec=10 Restart=always [Install] WantedBy=multi-user.target Для перепрочтения настроек выполнить: sudo systemctl daemon-reload Затем можно выполнять команды: sudo systemctl start geoserver2 sudo systemctl start SServerWialonIPS_transit sudo systemctl start PServerWialonIPS_transit_u sudo systemctl start PServerWialonIPS sudo systemctl start SServerARNAVI sudo systemctl start SServerWialonIPS sudo systemctl start PServerARNAVI sudo systemctl start PServerEGTS_transit sudo systemctl start PServerARNAVI_STATIONS_TEST sudo systemctl start SServerTKSTAR_STATIONS sudo systemctl start PServerTKSTAR_STATIONS sudo systemctl start SServerMQTT sudo systemctl start PServerMQTT sudo systemctl start SServerEGTS_transit sudo systemctl start SServerEGTS_transit_3241 sudo systemctl start Transit_RabbitMQ_Forwarding sudo systemctl start Transit_RabbitMQ_Forwarding_RUS sudo systemctl start Transit_RabbitMQ_Read sudo systemctl start SServerMT300_msp sudo systemctl start PServerMT300_msp sudo systemctl start SServerTeltonika sudo systemctl start PServerTeltonika sudo systemctl start SServerJointech sudo systemctl start PServerJointech sudo systemctl stop SServerEGTS_transit sudo systemctl stop SServerARNAVI_STATIONS_TEST sudo systemctl stop zholak_ftp sudo systemctl stop geoserver2 sudo systemctl stop Transit_RabbitMQ_Forwarding_RUS sudo systemctl stop SServerJointech sudo systemctl stop PServerJointech sudo systemctl stop PServerWialonIPS_transit sudo systemctl restart SServerWialonIPS_transit sudo systemctl restart zholak_ftp sudo systemctl restart PServerARNAVI sudo systemctl restart PServerARNAVI_TEST sudo systemctl restart PServerMT300_msp sudo systemctl restart SServerTeltonika sudo systemctl restart PServerTeltonika sudo systemctl restart Transit_RabbitMQ_Forwarding sudo systemctl restart Transit_RabbitMQ_Forwarding_RUS sudo systemctl restart Transit_RabbitMQ_Read sudo systemctl restart SServerJointech systemctl status geoserver2 systemctl status PServerARNAVI systemctl status SServerARNAVI_STATIONS systemctl status Virtuasudo systemctl start PServerWialonIPS_transitlTerminal systemctl status SServerARNAVI_STATIONS_TEST systemctl status SServerTKSTAR_STATIONS systemctl status PServerTKSTAR_STATIONS systemctl status SServerARNAVI systemctl status SServerWialonIPS systemctl status PServerEGTS_transit systemctl status PServerARNAVI systemctl status PServerWialonIPS systemctl status SServerMQTT systemctl status PServerMQTT systemctl status SServerEGTS_transit systemctl status SServerEGTS_transit_3241 systemctl status SServerWialonIPS_transit systemctl status PServerWialonIPS_transit systemctl status PServerWialonIPS_transit_u systemctl status Transit_RabbitMQ_Forwarding systemctl status Transit_RabbitMQ_Forwarding_RUS systemctl status Transit_RabbitMQ_Read systemctl status SServerMT300_msp systemctl status PServerMT300_msp systemctl status SServerTeltonika systemctl status PServerTeltonika systemctl status SServerJointech systemctl status PServerJointech Чтобы добавить сервис в автозагрузку, необходимо активировать его: sudo systemctl enable geoserver2 sudo systemctl enable SServerEGTS_transit sudo systemctl enable SServerEGTS_transit_3241 sudo systemctl enable PServerEGTS_transit sudo systemctl enable SServerWialonIPS_transit sudo systemctl enable PServerWialonIPS_transit_u sudo systemctl enable VirtualTerminal sudo systemctl enable SServerARNAVI_STATIONS sudo systemctl enable PServerARNAVI_STATIONS sudo systemctl enable PServerARNAVI_STATIONS_TEST sudo systemctl enable SServerTKSTAR_STATIONS sudo systemctl enable PServerTKSTAR_STATIONS sudo systemctl enable SServerMQTT sudo systemctl enable PServerMQTT sudo systemctl enable SServerMT300_msp sudo systemctl enable PServerMT300_msp sudo systemctl enable Transit_RabbitMQ_Forwarding sudo systemctl enable Transit_RabbitMQ_Forwarding_RUS sudo systemctl enable Transit_RabbitMQ_Read sudo systemctl enable SServerJointech sudo systemctl enable PServerJointech systemctl enable SServerARNAVI systemctl enable SServerWialonIPS systemctl enable PServerARNAVI systemctl enable PServerWialonIPS Чтобы проверить логи сервиса, выполните: journalctl -u zholak_gps journalctl -u SServerWialonIPS_transit journalctl -u PServerWialonIPS_transit journalctl -u geoserver2 **************************************************************************************************** Команды Linux pwd - получить имя текущей директории cd - изменить текущую директорию ls - распечатать информацию о файлах или директориях cat - слить или вывести файлы-аргументы на стандартный вывод cp - копировать файлы mv - переместить (переименовать) файлы ln - создать ссылку на файл rm - удалить файлы rmdir - удалить директорию mkdir - создать директорию echo - вывести аргументы командной строки на стандартный вывод ps - узнать номера выполняемых процессов kill - "убить" выполняемый процес по его номеру man - выдать справку об использовании и ключах команды **************************************************************************************************** Удалённая отладка c++ приложения на Ubuntu при помощи GDB-gdbserver debug Устанавливаем на удалённой машине: sudo apt install gdbserver Для того чтобы не писать каждый раз пароль авторизуемся по ключю Для этого генерим ключик локально: ssh-keygen -t rsa -b 2048 Значения по умолчанию оставил пустыми, сгенерился в /home/username/.ssh/id_rsa Копируем ключик на нужную машину командай: ssh-copy-id -p 22 administrator@10.101.1.3 Для копирования и запуска программы на целевую машину создаём скрипт копирования и запуска: #!/bin/bash echo "*** copy file to server ***" #scp -P 2222 /mnt/O_DRIVE/projects/Workspace_C++/GServer/Debug/GServer administrator@192.168.0.83:/var/www/server scp -P 2222 /mnt/O_DRIVE/projects/Workspace_C++/MServer/Debug/MServer administrator@192.168.0.83:/var/www/server #scp /mnt/O_DRIVE/projects/Workspace_C++/VTerminal/Debug/VTerminal administrator@192.168.0.83:/var/www/uspdmanager.istt.kz echo "*** exec program on server ***" #ssh -p 2222 administrator@192.168.0.83 gdbserver 192.168.0.83:10000 /var/www/server/GServer ssh -p 2222 administrator@192.168.0.83 gdbserver 192.168.0.83:10000 /var/www/server/MServer #ssh administrator@192.168.0.83 gdbserver 192.168.0.83:10000 /var/www/uspdmanager.istt.kz/VTerminal e101 Скрипт можно не делать так как в Eclipse это можно автоматизировать при помощи "C/C++ Remote Application". **************************************************************************************************** Настройка kannel для отправки SMS через SMPP (http://alexkorvin.blogspot.com/2011/05/sms-kannel-centos-55.html) Устанавливаю kannel sudo apt-get install kannel bearerbox – главный демон, который держит связь по SMPP в качестве клиента, работает с 3g-донглами, слушает порт для подключения других демонов. opensmppbox – демон, который работает как SMPP сервер для подключения других клиентов. Тоже подключается к bearerbox и работает через него. sudo mcedit /etc/kannel/kannel.conf Скрипт автостарта в ubuntu Автор: Zeboton Иногда нужно чтобы при загрузке Ubuntu выполнила какие-либо действия (к примеру, запустила какую-нибудь программу). Как же это сделать? Всё просто как 3 копейки! 1. Нужно создать файл с командами, которые нужно выполнить при старте системе: view source print ? 1. sudo nano /etc/init.d/autostart.script Как понятно, autostart.script это название файла в котором будут записаны команды и оно может быть любым, но не должно совпадать с именами уже существующих файлов в папке /etc/init.d/. В первой строке файла должно быть указано какая оболочка или интерпретатор будет выполнять команды в файле. Если вы хотите использовать те же команды, что и в терминале, то файл должен начинаться со строки: view source print ? 1. #!/bin/bash 2. Нужно разрешить файлу выполняться: view source print ? 1. sudo chmod +x /etc/init.d/autostart.script 3. Рассказываем системе что этот файл нужно исполнять при старте системы: view source print ? 1. sudo update-rc.d autostart.script defaults 95 Где 95 это порядок в очереди исполнения. Подробнее можно узнать из view source print ? 1. man update-rc.d Перезапускаем систему и радуемся результату P.S. Для удаления из автостарта нужно выполнить: view source print ? 1. sudo update-rc.d autostart.script remove **************************************************************************************************** Подключение стронних 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] **************************************************************************************************** Установка 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 **************************************************************************************************** Как установить и настроить Elasticsearch, Logstash, Kibana (ELK Stack) на Ubuntu, Debian, Centos: https://portforwarded.com/install-elastic-elk-stack-8-x-on-ubuntu-22-04-lts/ или https://serveradmin.ru/ustanovka-i-nastroyka-elasticsearch-logstash-kibana-elk-stack/ sudo apt update && sudo apt upgrade -y Установи java как это делается смотри выше sudo apt-get install nginx curl gnupg2 wget -y sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg sudo apt-get install apt-transport-httpssudo echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list sudo apt update sudo apt-get install elasticsearch Если не удалось подключить ключи к репозиторию то скачиваем deb пакет в ручную: wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.2-amd64.deb sudo systemctl enable elasticsearch sudo systemctl start elasticsearch sudo mcedit /etc/elasticsearch/elasticsearch.yml И там раскоментить и прописать строку: network.host: 0.0.0.0 Также там поправить на: xpack.security.enabled: false sudo systemctl restart elasticsearch Проверяю версию Elasticsearch sudo ufw allow 9200/tcp curl -X GET "http://localhost:9200/" У меня выдало: { "name" : "igor-System-Version", "cluster_name" : "elasticsearch", "cluster_uuid" : "Li0_4xz2QTuy8ET7qRLTgg", "version" : { "number" : "8.13.2", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "16cc90cd2d08a3147ce02b07e50894bc060a4cbf", "build_date" : "2024-04-05T14:45:26.420424304Z", "build_snapshot" : false, "lucene_version" : "9.10.0", "minimum_wire_compatibility_version" : "7.17.0", "minimum_index_compatibility_version" : "7.0.0" }, "tagline" : "You Know, for Search" } **********Теперь устанавливаем Kibana********** sudo apt-get install kibana -y sudo systemctl start kibana sudo systemctl enable kibana Создаём административного пользователя: sudo su echo "admin:`openssl passwd -apr1`" | tee -a /etc/nginx/htpasswd.users Выдало: Дома: admin:$apr1$sFyWSvZH$E8tL1Zbo.i8q2vSsVy1HK/ На в виртуалке работа пароль 123456 выдало: admin:$apr1$/n5ACpeE$WZBtYrZOgZ10GfdT4YFD31 Далее создаём в Nginx виртуальный хост, создав конфигурационный файл для сервиса кибаны: sudo mcedit /etc/nginx/sites-available/kibana server { listen 80; server_name kibana.example.com; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/htpasswd.users; location / { proxy_pass http://localhost:5601; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } Разрешаем виртуальный хост для проксирования: sudo ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/ sudo systemctl restart nginx sudo systemctl status nginx Теперь кибана должна открыться по адресу: kibana.example.com если не открылась перезагружаем комп *********Устанавливаю logstash********** sudo apt install logstash sudo systemctl restart logstash.service sudo systemctl enable logstash.service sudo systemctl status logstash.service По документу из: https://habr.com/ru/articles/236341/ и из https://coderlessons.com/tutorials/devops/uznaite-logstash/logstash-kratkoe-rukovodstvo Настраиваю logstash открываю потр для отправки логов из Java приложения log4j: Так как установили через репозиторий то для включения плагина Log4j он включается командой: sudo su /usr/share/logstash/bin/logstash-plugin install logstash-input-log4j Так как logstash загрузает все конфигурации из деректории то создаю новый файл для log4j mcedit /etc/logstash/conf.d/log4j.conf И теперь можно настроить для приёма log4j логов: input { log4j { mode => server host => "0.0.0.0" port => 5044 type => "log4j" } } output { elasticsearch { hosts => ["http://localhost:9200"] index => "igor-%{+YYYY.MM.dd}" #index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" #user => "elastic" #password => "changeme" } } Затем нужно перезагрузить: sudo systemctl restart logstash.service *********Устанавливаю filebeat********** apt install filebeat **************************************************************************************************** **********Устанавливаю Loki в месте с Grafana и другими компонентами (Promtail)********** Согласно документации из: https://grafana.com/docs/loki/latest/get-started/quick-start/ Для Лва: https://www.youtube.com/watch?v=PBfKDyNPBug Создаём директорию в: cd /opt mkdir loki cd loki wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/loki-config.yaml -O loki-config.yaml wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/promtail-local-config.yaml -O promtail-local-config.yaml wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/docker-compose.yaml -O docker-compose.yaml Меням настройки, прописав в самый конец файла: loki-config.yaml следующее: auth_enabled: false Запускаем: sudo docker compose up -d Если нужно то для остановки можно выполнить следующую команду: sudo docker compose down Пробуем открыть графану: http://127.0.0.1:3000/ Логин: admin и пароль admin потом сгенерил пароль: gL%$FXVUrjP7zFf Теперь можно отправить тестовую строку в логи label “foo=bar2” and a single log line “fizzbuzz”: curl -H "Content-Type: application/json" \ -s -X POST "http://127.0.0.1:3100/loki/api/v1/push" \ --data-raw '{"streams": [{ "stream": { "foo": "bar2" }, "values": [ [ "1717279123945000000", "fizzbuzz" ] ] }]}' **********Устанавливаю Promtail********** По мотивам: https://tech.pansolusi.com/2023/08/04/installing-promtail-on-ubuntu/ cd /opt mkdir promtail cd promtail curl -O -L "https://github.com/grafana/loki/releases/download/v2.9.7/promtail-linux-amd64.zip" unzip "promtail-linux-amd64.zip" promtail -version sudo mcedit /opt/promtail/promtail-local-config.yaml И записываем в файл: server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients: - url: 'http://localhost:3100/loki/api/v1/push' basic_auth: username: alexander password: eakrdutpnhjaE2EFrAoi scrape_configs: - job_name: system static_configs: - targets: - localhost labels: job: varlogs __path__: /var/log/*log - targets: - localhost labels: job: nginx __path__: /var/log/nginx/*log Создаём сервис для запуска Promtail sudo mcedit /etc/systemd/system/promtail.service И записываем: [Unit] Description=Promtail client for sending logs to Loki After=network.target [Service] ExecStart=/opt/promtail/promtail -config.file=/opt/promtail/promtail-local-config.yaml Restart=always TimeoutStopSec=3 [Install] WantedBy=multi-user.target Запускаем: sudo service promtail start sudo service promtail stop sudo service promtail restart sudo service promtail status sudo systemctl enable promtail Смотрим логи: sudo journalctl -u promtail.service Теперь можно смотреть в графане логи: http://127.0.0.1:3000/ с label = file Также можно взглянуть на простой WEB интерфейс promtail: http://127.0.0.1:9080 **********Устанавливаю Prometheus согласно инструкции из https://ruvds.com/ru/helpcenter/kak-ustanovit-prometheus-na-ubuntu/ ********** Установка Prometheus sudo apt update && sudo apt upgrade -y && sudo useradd --no-create-home --shell /bin/false prometheus && sudo mkdir /etc/prometheus && sudo mkdir /var/lib/prometheus && sudo chown prometheus:prometheus /etc/prometheus && sudo chown prometheus:prometheus /var/lib/prometheus && cd /tmp && wget https://github.com/prometheus/prometheus/releases/download/v3.1.0/prometheus-3.1.0.linux-amd64.tar.gz && tar xvf prometheus-3.1.0.linux-amd64.tar.gz && sudo cp prometheus-3.1.0.linux-amd64/prometheus /usr/local/bin/ && sudo cp prometheus-3.1.0.linux-amd64/promtool /usr/local/bin/ && sudo chown prometheus:prometheus /usr/local/bin/prometheus && sudo chown prometheus:prometheus /usr/local/bin/promtool && rm -rf prometheus-3.1.0.linux-amd64.tar.gz prometheus-3.1.0.linux-amd64 Настройка Prometheus Создайте файл конфигурации prometheus.yml: sudo mcedit /etc/prometheus/prometheus.yml Прописал туда настройки: global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] Созданём systemd-сервис: sudo mcedit /etc/systemd/system/prometheus.service [Unit] Description=Prometheus Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Type=simple ExecStart=/usr/local/bin/prometheus \ --config.file /etc/prometheus/prometheus.yml \ --storage.tsdb.path /var/lib/prometheus/ [Install] WantedBy=multi-user.target Запускаю сервис: sudo systemctl daemon-reload sudo systemctl start prometheus sudo systemctl enable prometheus sudo systemctl status prometheus ```sh 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 чтобы он начал собирать метрики ```sh sudo systemctl restart prometheus ``` Смотрим: http://192.168.200.84:9090/targets Далее устанавливаем графану и добавляем графики для мониторинга sudo apt-get install -y software-properties-common sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main" sudo apt-get install -y gnupg sudo apt-get install -y apt-transport-https sudo wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - sudo apt-get update sudo apt-get install grafana Запустите и включите сервис Grafana: sudo systemctl start grafana-server sudo systemctl enable grafana-server Проверьте статус: sudo systemctl status grafana-server Открываем: http://192.168.200.84:3000 Логин: admin Пароль: admin Заходим в: Home->Connections->Data sources->Add data source Для Node Exporter есть шаблоны: Node Exporter Full (ID: 1860) — Полный дашборд для мониторинга серверов с использованием Node Exporter. Prometheus (ID: 10991) — Дашборд для мониторинга самого Prometheus. Linux Server Monitoring (ID: 10244) — Дополнительный дашборд для мониторинга серверов на Linux. Если вам нужно больше вариантов, вы всегда можете найти готовые дашборды на официальном сайте https://grafana.com/grafana/dashboards/ Заходим в графану и в правом верхенем углу жмём + потом Import Dashboard **********Если нужно то Grafana может быть установленна отдельно ********** Установка GrafanaLoki через Docker Engine и Docker Compose на Ubuntu 24.04 Для установки графаны через докер: cd /opt sudo mkdir grafana cd ./grafana sudo mcedit docker-compose.yml И прописываем в файл: version: "3.3" services: grafana: image: grafana/grafana-enterprise container_name: grafana restart: unless-stopped ports: - '3000:3000' loki: image: grafana/loki:latest container_name: loki restart: unless-stopped ports: - "3100:3100" Затем для запуска контейнера выполняем: sudo docker-compose up -d Если нужно то для остановки можно выполнить следующую команду: sudo docker-compose down Пробуем открыть графану: http://127.0.0.1:3000/ Логин: admin и пароль admin потом сгенерил пароль: gL%$FXVUrjP7zFf **************************************************************************************************** Настраиваю Promtail agent для винды для сбора логов c Windows: Скачал: https://github.com/grafana/loki/releases в разделе Assets файл promtail-windows-386.exe.zip Переместите файл promtail.exe в каталог, например, C:\Program Files\promtail Добавьте этот каталог в PATH, чтобы можно было запускать Promtail из командной строки. Создаём файл конфигурации в C:\Program Files\promtail promtail-config.yaml со следующим содержимым: server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: C:\Program Files\promtail\positions.yaml clients: - url: http://192.168.200.106:3100/loki/api/v1/push scrape_configs: - job_name: dbms_logs static_configs: - targets: - localhost labels: job: dbms_logs __path__: O:\MyDocuments\projects\Workspace_JavaWin\com.geovizor.dbms\logs\kz_mcp_dbms.log - job_name: jwt_logs static_configs: - targets: - localhost labels: job: jwt_logs __path__: O:\MyDocuments\projects\Workspace_JavaWin\com.geovizor.jwt\logs\kz_mcp_jwt.log Замените C:\path\to\positions.yaml и C:\path\to\log\files\*.log на соответствующие вашему окружению пути. promtail.exe --config.file=promtail-config.yaml **************************************************************************************************** Установка графаны через докер Grafana в Docker, по мотивам нейросети DeepSeek: Установка Docker: sudo apt update sudo apt install -y apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io Установка Docker Compose: sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose Добавляем текущему пользователю группу чтобы он мог работать с докером: sudo usermod -aG docker $USER Проверка установки: docker --version docker-compose --version Создайте директорию, где будут храниться данные Grafana: sudo mkdir /opt/grafana sudo mkdir /opt/grafana/data sudo mkdir /opt/grafana/data/grafana-storage sudo mkdir /opt/grafana/config sudo chown -R 472:472 /opt/grafana/data/grafana-storage sudo chmod -R 775 /opt/grafana/data/grafana-storage cd /opt/grafana mcedit docker-compose.yml И записываем в него такие настройки: services: grafana: image: grafana/grafana:latest container_name: grafana restart: unless-stopped ports: - "3000:3000" volumes: - /opt/grafana/data/grafana-storage:/var/lib/grafana # Монтируем директорию хоста в контейнер environment: - GF_SECURITY_ADMIN_USER=admin - GF_SECURITY_ADMIN_PASSWORD=admin Запускаем графану с логами для тестов: docker-compose -f /opt/grafana/docker-compose.yml up Теперь запускае в фоновом режиме: docker-compose -f /opt/grafana/docker-compose.yml up -d docker-compose -f /opt/grafana/docker-compose.yml down Проверяем работу: docker-compose -f /opt/grafana/docker-compose.yml ps **************************************************************************************************** Устанавливаю Gitea по мативам: https://linuxize.com/post/how-to-install-gitea-on-ubuntu-20-04/ sudo apt update sudo apt install sqlite3 sudo apt install git git --version sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git VERSION=1.22 sudo wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64 sudo mv /tmp/gitea /usr/local/bin sudo chmod +x /usr/local/bin/gitea Создаём директории для хранения данных: sudo mkdir -p /var/lib/gitea/{custom,data,log} sudo chown -R git:git /var/lib/gitea/ sudo chmod -R 750 /var/lib/gitea/ sudo mkdir /etc/gitea sudo chown root:git /etc/gitea sudo chmod 770 /etc/gitea sudo wget https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/systemd/gitea.service -P /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now gitea sudo systemctl status gitea Отобразило что можно зайти по: http://localhost:3000/ Выбираем Database Type: SQLite3 остальные настройки можно оставить по умолчанию Установил и задал логин: irigm@mail.ru пароль: PF"Ey7#7]mUZ49s Устанавливаем параметры только чтение: sudo chmod 750 /etc/gitea sudo chmod 640 /etc/gitea/app.ini По мотивам на сайте ещё описывается как сделать проксирование через nginx А также как сделать отправку почты А также как обновит если что **********CI/CD********** Устанавливаю по инструкции из: https://gitea.com/gitea/act_runner Скачиваю act_runner с https://about.gitea.com/products/runner/ в директорию: /usr/local/bin Задаём права: sudo chown root:root /usr/local/bin/act_runner Проверяю версию: act_runner --version Выдало: v0.2.6 Записываем в конец файла /etc/gitea/app.ini следующие настройки: [actions] ENABLED=true Потом: sudo systemctl restart gitea Далее переходим в настройки проекта в пункт "Действия": "Создать новый раннер" Там был токен: CIaWAmzI4jYUCRnQcUCdBFPkg4FPGspnjdpqiqXl Создаю каталог: /etc/act_runner Генерю конфиг по умолчанию: act_runner generate-config > config.yaml Регистрирую новый runner act_runner register В WEB интерфейсе gitea появится но похоже от туда можно только удалить. Можно попробовать запустить runner: act_runner daemon Регистрация с конфигурационным файлом: act_runner -c config.yaml register Запуск с конфигурационным файлом act_runner -c config.yaml daemon Можно запустить act_runner как сервис, создав файл: sudo mcedit /etc/systemd/system/act_runner.service но нужно создать ползоветеля без привилений, такого: act_runner Но у меня почему то не запустилось... Так: sudo adduser --disabled-password act_runner sudo passwd act_runner su act_runner Давать права не обязательно: sudo chown root:root /usr/local/bin/act_runner [Unit] Description=Gitea Actions runner Documentation=https://gitea.com/gitea/act_runner After=docker.service [Service] ExecStart=/usr/local/bin/act_runner daemon --config /etc/act_runner/config.yaml ExecReload=/bin/kill -s HUP $MAINPID WorkingDirectory=/var/lib/act_runner TimeoutSec=0 RestartSec=10 Restart=always User=act_runner [Install] WantedBy=multi-user.target Запускаем как сервис: sudo systemctl daemon-reload sudo systemctl enable act_runner sudo systemctl restart act_runner sudo systemctl stop act_runner sudo systemctl start act_runner sudo systemctl status act_runner Посмотреть на лог: grep "act_runner" /var/log/syslog # .gitea/workflows/publish.yml on: push: branches: - main workflow_dispatch: jobs: run_pull: name: run pull runs-on: igor steps: - name: CreateDate run: touch /home/igor/runner/$(date +"%Y-%m-%d_%H-%M-%S").txt **************************************************************************************************** Устанавливаю из Node.js из не стандартного репозитория так как там v12.22.9 а нужно >= 18 версия Удаляем старое: sudo apt-get remove nodejs npm Устанавливаем новое: curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs node -v npm -v **************************************************************************************************** LDAP — легковесный протокол доступа к каталогам (Для адрестной книги) sudo apt install slapd ldap-utils sudo dpkg-reconfigure slapd Настраиваем в файле: /etc/ldap/ldap.conf BASE dc=domain,dc=com URI ldap://ldap01.domain.com **************************************************************************************************** Простой инструмент для мониторинга ресурсов сервера: sudo apt install netdata systemctl restart netdata sudo mcedit /etc/netdata/netdata.conf # bind socket to IP = 127.0.0.1 bind socket to IP = 0.0.0.0 systemctl restart netdata Можно открывать по адресу: http://10.101.1.3:19999/ http://10.101.1.6:19999/ **************************************************************************************************** Install .NET SDK or .NET Runtime on Ubuntu sudo apt-get update sudo apt-get install -y dotnet-sdk-8.0 sudo apt-get install -y aspnetcore-runtime-8.0 sudo apt-get install -y dotnet-runtime-8.0 sudo apt install zlib1g Теперь можно запустить C# ASP.NET Core **************************************************************************************************** ssl genkeypair spring boot java Генерим самоподписанный SSL сертификат: keytool -genkeypair -alias weather -keyalg RSA -keystore keystore.jks -keysize 2048 -validity 3650 Потом прописать настройки: server: port: 8081 ssl: key-store: classpath:keystore.jks key-store-password: QyKtWPZB key-store-type: JKS key-alias: weather **************************************************************************************************** Для разрешения поиска через Samba и NetBIOS: sudo apt update sudo apt install samba sudo systemctl restart smbd sudo systemctl enable smbd