Files
Ubuntu_docs/Ubuntu.md
2025-02-18 07:27:32 +05:00

4231 lines
196 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

****************************************************************************************************
Настройка времени и NTP сервера
Устанавливаем зону
sudo timedatectl set-timezone Asia/Almaty
sudo date --set="2025-01-07 21:05:00.000"
sudo timedatectl set-ntp on
sudo apt install ntp
ntpq -p
****************************************************************************************************
Добавляем нового пользователя
sudo adduser sabyrzhan
sudo usermod -aG sudo имя_пользователя
****************************************************************************************************
Установка cinamon на Ubuntu 22.04 и 24/04:
sudo apt update && sudo apt upgrade -y
sudo apt install cinnamon -y
sudo reboot
Настройка клавиатуры в cinamon удаляем: ibus
sudo apt-get remove ibus
Добавить в конец файла: sudo mcedit /etc/fstab
/media/sf_O_DRIVE /mnt/O_DRIVE none bind 0 0
/media/sf_D_DRIVE /mnt/D_DRIVE none bind 0 0
sudo chmod 777 /mnt/O_DRIVE
sudo usermod -aG vboxsf $USER
****************************************************************************************************
Для монтирования O_DRIVE в VitrualBox прописывать точку монтирования: /mnt/O_DRIVE
****************************************************************************************************
Авторизация на базе ключей SSH https://selectel.ru/blog/ssh-authentication/
****************************************************************************************************
Для добавления ярлыка в меню пуск
cd /usr/share/applications
И там создать файл: *.desktop
[Desktop Entry]
Encoding=UTF-8
Name=IDEA_JEE
Exec=/opt/idea-IU-221.5787.30/bin/idea.sh
Icon=/opt/idea-IU-221.5787.30/bin/idea.svg
Type=Application
Categories=TextEditor;Development;IDE;
MimeType=text/html
Comment=Java development
Keywords=java;development;
****************************************************************************************************
Linux в Windows https://winitpro.ru/index.php/2020/07/13/zapusk-linux-v-windows-wsl-2/
wsl --list --online
wsl --install -d Ubuntu
После чего установится Ubuntu, перезагрузил, создал пользователя igor и задал простой пароль
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install mc
****************************************************************************************************
Меняем временую зону Ubuntu
sudo timedatectl set-timezone UTC
****************************************************************************************************
Убрать звуковые щелчки при работе в Ubuntu которые появляются из-за режима энергосбережения:
Отключить режим низкого энергопотребления для зуковой карты sound
sudo su
echo '0' > /sys/module/snd_hda_intel/parameters/power_save
Фаил авто выполнения скрипта при загрузки:
sudo mcedit /etc/rc.local
В начале файла поставить: #!/bin/bash
sudo chmod +x /etc/rc.local
sudo mcedit /etc/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
sudo systemctl enable rc-local
sudo systemctl status rc-local
****************************************************************************************************
Для того чтобы консоль бястро не отключалась добавить в конец файла: sudo mcedit /etc/sysctl.conf
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 10
net.ipv4.tcp_keepalive_probes = 6
Перезагрузить:
sysctl -p
Проверить:
cat /proc/sys/net/ipv4/tcp_keepalive_time
****************************************************************************************************
Обновить ядро Ubuntu на самое новое:
uname -r
Выдало:
4.15.0-167-generic
5.4.0-99-generic
Пытаюсь поменять на 5.13.0 или 5.16.10 ищем ядро:
sudo apt-cache search linux-image | more
Устанавливаем ядро:
sudo apt-get install linux-image-5.13.0-1029-oem
sudo apt install gdebi
****************************************************************************************************
Тест памяти Ubuntu:
Объем оперативной памяти:
free -h
sudo apt install memtester
Для примера запустим проверку блока ОЗУ, размером в 100 мегабайт состоящую из двух циклов:
sudo memtester 100M 2
Для более тщательного тестирования памяти можно воспользоваться утилитой memtest86+ из меню загрузчика Grub.
****************************************************************************************************
Если grub загрузчик установился на флешку то так можно установать на нужный диск
sudo fdisk -l
sudo grub-install --root-directory=/ /dev/sda
В Ubuntu server при неправильном выключениии высвечивается меню grub без времени чтобы его отключить:
Для поиска Windows если он исчез:
sudo os-prober
sudo update-grub
Или так:
sudo mcedit /etc/default/grub
GRUB_DISABLE_OS_PROBER=true
Или так:
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt update
sudo apt install -y boot-repair && boot-repair
****************************************************************************************************
Установка и добавление себя в sudo
su -c "apt-get update"
su -c "apt-get -y install sudo"
su -c "addgroup ваш_логин sudo"
****************************************************************************************************
Установка сервиса времени и часовой пояс
apt-get -y install ntp
dpkg-reconfigure tzdata
****************************************************************************************************
0) Для того чтобы архивировать и извлечь каталог:
tar -cvf istransit.tar /opt/www/istransit.kz
tar -xvf /opt/www/istransit.tar -C /opt/www
0)Выключить комп:
shutdown -h now
1)Список процессов
top или лучше установить htop
Монтирование образа CD
mount -o loop /some.iso /mnt/point
mount -o loop -t iso9660 <isofilename> <mountpoint>
umount DIRECTORY
umount DEVICE_NAME
Посмотреть точки монтирования дисков:
sudo fdisk -l
3.1) Посмотреть мак адрес по адресу /etc/udev/rules.d/z25_persistent-net.rules
4)DNS сервера в ubuntu прописываються в /etc/resolv.conf (теперь в другом месте см. инет)
nameserver 212.19.149.53
nameserver 212.19.149.54
5)Список репозиториев в ubuntu расположен в nano /etc/apt/sources.list
apt-get update
apt-get install mc
apt-get remove mc
Если mc не найден то добавить в репозитории nano /etc/apt/sources.list эту строку:
deb http://archive.ubuntu.com/ubuntu/ jaunty universe
6)Переменные окружения
export PATH=$PATH:/usr/local/bin:/usr/local/sbin
alias mc='mc -c'
mc
7)Отобразить переменные окружения: export
8)Настройка PPPoE соединения комманда: pppoeconf
Соединятся командой: sudo pon dsl-provider
Завершить соединение: sudo poff dsl-provider
****************************************************************************************************
Выполнение скрипта
sh Check.sh
****************************************************************************************************
Символическая ссылка Symbolic
ссылка на папку:
ln -s /mnt/data/ftp /var/www/html/upload
********** Настраиваю прокси сервер **********
sudo mcedit /etc/environment
И в заголовок пишу:
http_proxy=http://192.168.1.89:8888
https_proxy=http://192.168.1.89:8888
или
http_proxy=http://192.168.0.170:7777
****************************************************************************************************
Для того чтобы посмотреть размер файлов:
ncdu
Для определения сколько свободного места выполнить:
df -h
****************************************************************************************************
Чтобы вывести информацию по ОЗУ (ram) выполните команду:
sudo lshw -C memory
****************************************************************************************************
Установка компилятора для разработки на c++ gcc
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get install perl -y
sudo apt-get install build-essential
Для компиляции по 32 битный Linux (В еклипсе прописать g++ -m32 а также gcc -m32 а также g++ -m32):
sudo apt-get install gcc-multilib
sudo apt-get install g++-multilib
Для eclipse установить:
sudo apt install default-jre
****************************************************************************************************
Установка кросс-компилятора Cross Compilers для Raspberry Pi на Ubuntu: https://github.com/raspberrypi/tools
sudo apt-get install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf
Note: if building for Pi0/1 using --with-arch=armv6 --with-float=hard --with-fpu=vfp is recommended (and matches the default flags of the toolchains included here).
/home/igor/toolchain/gcc-linaro-4.9-2016.02-x86_64_arm-linux-gnueabihf
****************************************************************************************************
записать информацию о расположении загрузчика системы в фаил
[root]# dd if=/dev/hda3 of=/mnt/floppy/bootsect.lnx bs=512 count=1
****************************************************************************************************
Компиляция WIFI драйвера
Для того чтобы узнать версию ядра "4.15.0-23-generic":
uname -r
Внмание: исходники ядра должны быть той же версии что и сейчас работают в системе!
Вывести информацию о USB устройствах:
lsusb -v
У меня выдало:
Для того чтобы посмотреть что подсоединено к pci:
lspci -v
Minipcie
Для того чтобы посмотреть всех устройств:
lsdev -v
И так у меня RTL8821AE пробую скачать драйвер отсюда:
Загрузка и проверка модулей:
lsmod
****************************************************************************************************
Подключение к wifi
Настраиваемрегион командой: iw reg set CN
То что мы живём в китае а то 5G WIFI не работает
sudo -i
echo "options cfg80211 ieee80211_regdom=CN" > /etc/modprobe.d/cfg80211.conf
exit
sudo ifconfig wlan0 up
$ sudo iwconfig wlan0 essid Node5
$ sudo dhclient -v wlan0
http://help.ubuntu.ru/wiki/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D1%81%D0%B5%D1%82%D0%B8_%D0%B2%D1%80%D1%83%D1%87%D0%BD%D1%83%D1%8E#%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_wifi
****************************************************************************************************
Активация DHCP клиента:
****************************************************************************************************
Создание нового пользователя с домашней дерикторией:
sudo useradd igor -g www-data
Задаём пароль:
sudo passwd igor
Добавляем пользователя в дополнительную группу (группы через запятую):
sudo usermod -a -G www-data administrator
sudo usermod -a -G tomcat administrator
sudo usermod -a -G sudo igor
Разрешить доступ к последовательному порту Для этого помещаем себя в группу dialout
sudo usermod -a -G dialout igor
Для проверки настроек:
id igor
groups igor
Назначить sudo привилегии пользователю:
mcedit /etc/sudoers
igor ALL=(ALL:ALL) ALL
Рекурсивно назначить вледельца папки:
sudo chown tomcat:tomcat -R /opt/tomcat/geoserver/ROOT/data
sudo chown tomcat:tomcat ~/CCALM.war
sudo chown tomcat:tomcat ~/SoilScience.war
sudo chown <your username>:<your usergroup> -R <path to>/.blabla
Выставляем права на папку:
sudo chmod -R 774 /var/www/
Для удаления пользователя c домашней и mail директорией выполнить:
userdel -r igor
****************************************************************************************************
Монтирование USB Flash
mount -t vfat /dev/sda1 /flash
umount /flash
Автомонтирование USB при запуске системы http://www.fight.org.ua/hdddrives/linux_disk_mount_fstab.html http://help.ubuntu.ru/wiki/fstab:
Выполнить команду: sudo blkid
Найти строку:
/dev/sdb1: LABEL="IGOR_8GB" UUID="94D2-1374" TYPE="vfat"
/dev/sdb1: LABEL="SSD_2_5" UUID="14A3BBD52CB2F1C3" TYPE="ntfs" PARTUUID="56c83443-01"
/dev/sdb5: UUID="17C59CBD70BFFBA5" TYPE="ntfs" PARTUUID="f9aec734-05"
Добавить в sudo mcedit /etc/fstab следующее:
UUID=94D2-1374 /media/usb vfat rw,auto,user,exec,async 0 0
UUID=7086E7317C4E478E /mnt/O_DRIVE ntfs-3g defaults 0 0
/dev/sda3 /mnt/ssd ntfs-3g rw,auto,user,exec,async 0 0
/dev/sda3 /mnt/windows ntfs-3g defaults 0 0
Монтирование сетевой файловой системы:
mount -t cifs //192.168.0.11/o /mnt/smb -o username=igor,password=1245,iocharset=utf8,codepage=cp866
Для автоматического монтирования в /etc/fstab записать: //192.168.0.11/o /mnt/smb cifs username=igor,password=1245,rw,auto,noexec,iocharset=utf8,codepage=cp866,uid=1000,gid=100 0 0
****************************************************************************************************
Перенос системы на другой жеский диск (также можно делать недельные бакапы системы, на атоме установленна)
Создаём копию системы на флешку:
sudo tar cvpzf /media/usb/backup.tgz --exclude=/var/www --exclude=/etc/fstab --exclude=/boot/grub/grub.cfg --exclude=/mnt --exclude=/media --exclude=/proc --exclude=/lost+found --exclude=/sys /
Потом извлекаем на новую установленную систему командой: sudo tar xvpfz /backup.tgz -C /
Можно также скопировав с диска на диск без синхронизации:
****************************************************************************************************
Измененние раздела без перезагрузки сервера после увеличения размера жеского диска (на основе: https://serverspace.ru/support/help/uvelichenie-diskovogo-prostranstva-ubuntu-18/)
ТОЛЬКО ДЛЯ РАЗДЕЛОВ LVM
Посмотреть список дисков:
df -h
lsblk
Выполняем сканирование конфигурации и передачу данных ядру ОС:
echo 1 > /sys/block/sda/device/rescan
Запускаем утилиту:
parted
Выводим таблицу разделов:
p
Результат такой (для запоминания):
Model: VMware Virtual disk (scsi)
Disk /dev/sda: 537GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 2097kB 1049kB bios_grub
2 2097kB 215GB 215GB ext4
Запускаем процедуру слияния:
(parted) resizepart 2
Где «2» означает номер тома, на котором происходит изменение дискового пространства, вбиваю нужный размер:
537GB
Потом:
quit
Информируем OC об изменениях:
pvresize /dev/sda2
Меняем значение тома командой:
lvextend -r -l +100%FREE /dev/mapper/vgroup1-root
Проверяем результат:
df h
----------------------------------------
Вариант для не виртуальной файловой системы (https://habr.com/ru/post/450444/):
Проверяем размер:
sudo fdisk -l
Выдало:
Disk /dev/sda: 500 GiB, 536870912000 bytes, 1048576000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 955FD603-437A-4A80-B5F6-90F1C2CCD1D0
Device Start End Sectors Size Type
/dev/sda1 2048 4095 2048 1M BIOS boot
/dev/sda2 4096 419921875 419917780 200,2G Linux filesystem
Удаляем раздел и создаём новый командами:
sudo fdisk /dev/sda
p
d
n (Метку файловой системы не удаляем)
Обновляем:
sudo partprobe /dev/sda
Перезаписываем метаданные файловой системы:
sudo resize2fs /dev/sda2
Проверяем:
sudo fdisk -l
****************************************************************************************************
Добавление нового пользователя см. cat /etc/passwd и cat /etc/group
sudo useradd tester -d /var/www/www.dirt.kz -g 33 -s /usr/sbin/nologin
sudo passwd tester
sudo userdel tester
****************************************************************************************************
Настройка rsync для резервного копирования файлов в отдельную папку http://ashep.org/2010/backup-v-linux-nastraivaem-rsync-server/#.VPrB0_mQCNY
1 й командой на флешку: rsync -rlvt --modify-window=1 --delete /var/www /media/usb
Меняем редактор по умолчанию на тот который от MC:
export EDITOR=mcedit
Для добавления в cron для дневной синхронизации:
crontab -e
И добавляем строчку чтоб это происходило в 3 часа ночи:
0 3 * * * rsync -rlvt --modify-window=1 --delete /var/www /media/usb
****************************************************************************************************
Настройка cron:
sudo update-alternatives --config editor
update-alternatives --config editor
export EDITOR=mcedit
Или записать в "sudo mcedit /etc/environment" строку "EDITOR=mcedit"
sudo crontab -e
sudo crontab -e -u www-data
sudo crontab -e -u tomcat
В файле прописать:
*/5 * * * * wget -O /dev/null -q 'http://www.bigfoottrade.kz/cashier/work.php'
*/2 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/globalstar.php'
10 0 * * * wget -O /dev/null -q 'http://www.bigfoottrade.kz/sitemap.php'
0 * * * * wget -O /dev/null -q 'http://www.bigfoottrade.kz/shop/tree.php?fn=0&name=test_tree.js'
*/30 * * * * /usr/bin/php5 /var/www/update_ip.php
*/1 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/work.php'
0 3 * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/get/list.php'
*/1 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/mail.php'
*/1 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/iridium.php'
*/2 * * * * wget -O /dev/null -q 'http://uspdmanager.istt.kz/engine/globalstar.php'
0 6 * * * wget -O /dev/null -q 'http://locust.kz/DownloadWeather?forecast=000'
0 7 * * * wget -O /dev/null -q 'http://locust.kz/DownloadWeather?forecast=048'
1 1 1 * * wget -O /dev/null -q 'http://locust.kz/SendMail'
0 1 * * * wget -O /dev/null -q 'http://locust.kz/get/list.php'
0 1 * * * /opt/backups/backup.sh
Проверяю таблицу:
sudo crontab -l -u www-data
****************************************************************************************************
Установка MongoDB на Ubuntu https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-18-04-ru
sudo apt update
sudo apt install mongodb-server
sudo systemctl status mongodb
****************************************************************************************************
Установка MySQL на Ubuntu 22.04
apt-get update
sudo apt-get install mysql-server
Удаление MySQL
sudo systemctl stop mysql
sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt autoremove
sudo apt autoclean
Меняем пароль через SQL:
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newIg@rR0';
SELECT user,authentication_string,plugin,host FROM mysql.user;
SHOW GRANTS FOR 'root'@'localhost';
Также настроить чтобы он был не регистрозависемым в файле /etc/mysql/mysql.conf.d/mysqld.cnf в секции [mysqld] добавить строку:
lower_case_table_names = 1
Для возможность удаленого подключения через внешку создаём спец пользователя, это я сделал через dbForge создав там пользователя root@192.168.0.%.
sudo mysql -u root -pnewIg@rR0
CREATE USER 'root'@'192.168.0.%' IDENTIFIED WITH mysql_native_password BY 'newIg@rR0';
ALTER USER 'begaikin'@'192.168.0.%' IDENTIFIED BY 'Begaikin@2';
Проверить: GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.%';
GRANT ALL PRIVILEGES ON `%`.* TO 'root'@'192.168.0.%';
SHOW GRANTS FOR 'root'@'192.168.0.%';
А также для удалёного подключения закоментить параметр "bind-address = 127.0.0.1" в файле настроек mcedit /etc/mysql/mysql.conf.d/mysqld.cnf
Перезагружаем MySQL:
sudo service mysql restart
База MySQL: db1109882_locust
Логин: u1109882_root
Пароль: root123456
mysqldump -uu1109882_root -proot123456 -h127.0.0.1 db1109882_locust > /root/db1109882_locust2.sql
****************************************************************************************************
Установка MySQL для разработчика:
sudo apt-get update
sudo apt-get install libmysqld-dev
****************************************************************************************************
Установка Apache и PHP (на посл версии Ubuntu php7):
sudo apt-get update
sudo apt-get install apache2 php
sudo apt-get install php libapache2-mod-php
sudo apt-get install php gettext
sudo apt-get install php php-gd
sudo apt-get install php php-pgsql
sudo apt-get install php php-mysql
sudo apt-get install php php-mysqli
sudo apt-get install php-imap
sudo apt-get install php-mbstring
sudo apt-get install php-curl
sudo apt-get install php-soap
sudo apt-get install libapache2-mod-passenger #Для redmine
sudo apt-get install libapache2-mod-fastcgi #Для redmine
Включаем модули:
sudo phpenmod imap
sudo phpenmod mbstring
sudo a2enmod rewrite
И в sudo mcedit /etc/apache2/apache2.conf ставим AllowOverride All
sudo a2enmod php8.0
sudo a2enmod ssl #Так как в последнее время делаю через haproxy то SSL в апачи не использую
sudo a2enmod headers
sudo a2enmod expires
sudo a2enmod passenger #Для redmine
sudo a2enmod fastcgi #Для redmine
sudo a2dismod info #Чтобы не светить статистикой в сеть
sudo a2dismod status #Чтобы не светить статистикой в сеть
Также добавляем обработку раширения .xyz как .php файл.
Настраиваем PHP /etc/php/8.3/apache2/php.ini:
max_execution_time = 60
max_input_time = 120
short_open_tag = On
display_errors = On
post_max_size = 20M
upload_max_filesize = 20M
session.gc_maxlifetime = 14400 #Увеличиваем время жизнисесии до 4 часов
Если выдаёт такое:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Настройка Apache:
httpd - запустить Apache
Перезапустить Apache
sudo /etc/init.d/apache2 restart
sudo service apache2 restart
********** Установка Composer для php **********
Скачиваю в домашнюю папку пользователя
curl -sS https://getcomposer.org/installer -o composer-setup.php
Выполняем загрузку и установку:
sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer
Потом можно будет переходить в папку с сайтом и выполнять
composer require mpdf/mpdf
********** Настройка laravel под Windows php фреймворк **********
https://www.tutorialspoint.com/laravel/laravel_installation.htm
После установки композера раскоментить расширение ;extension=fileinfo и выполнить команду:
composer create-project laravel/laravel rigor --prefer-dist
Потом можно запустить сервер зайдя в созданную папку:
php artisan serve
********** Настройка https ssl для apache под Windows **********
https://apache-windows.ru/apache-ssl-переход-apache-на-https/
********** Настройка https ssl для apache под Linux **********
Создаём ключ командой:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout server.key -out server.crt
На вопрос пароля написал "test!irigm"
Снимаем пароль с ключа:
cp server.key{,.orig}
openssl rsa -in server.key.orig -out server.key
rm server.key.orig
Скопируем их в /etc/ssl и назначим файлу ключа права чтения только администратору:
sudo cp server.crt /etc/ssl/certs/
sudo cp server.key /etc/ssl/private/
sudo chmod 0600 /etc/ssl/private/geovizor_com.key
Для начала необходимо активировать mod_ssl:
sudo a2enmod ssl
Содержание файла виртуального хоста:
<VirtualHost *:443>
ServerAdmin info@geovizor.com
ServerName geovizor.com
ServerAlias www.geovizor.com
DocumentRoot /var/www/geovizor.com
DirectoryIndex index.html index.php index.xyz
AddType application/x-httpd-php .php .xyz
SSLEngine on
SSLCertificateFile /etc/ssl/certs/geovizor_com.crt
SSLCertificateChainFile /etc/ssl/certs/geovizor_com.ca-bundle
SSLCertificateKeyFile /etc/ssl/private/geovizor_com.key
</VirtualHost>
sudo a2ensite bigfoottrade.kz.ssl.conf
sudo a2ensite bigfoottrade.kz.conf
sudo a2ensite zatochnik.pro.conf
sudo a2ensite zatochnik.pro.ssl.conf
sudo a2ensite elektronnaya-ochered.kz.conf
sudo a2ensite elektronnaya-ochered.kz.conf
sudo a2ensite transit.istt.kz.conf
sudo a2ensite geovizor.com.ssl.conf
sudo a2ensite mqtt.kz.ssl.conf
sudo a2ensite stations.istt.kz.ssl.conf
sudo a2ensite stations.istt.kz.conf
sudo a2ensite uspdmanager.istt.kz.conf
sudo a2ensite msp.istt.kz.conf
sudo a2ensite mog.istt.kz.conf
sudo a2ensite mqtt.kz.conf
sudo a2ensite data.ccalm.org
sudo a2ensite rigor.kz.conf
sudo a2ensite 000-default.conf
sudo a2ensite transit.istt.kz.conf
sudo a2ensite aistransit.kz.conf
sudo a2ensite jwt.local.conf
sudo a2ensite jwt2.local.conf
sudo a2ensite transit_gpti_kg.conf
Посмотреть все разрешонные сайты:
a2query -s
sudo a2dissite bigfoottrade.kz.conf
sudo a2dissite zatochnik.pro.ssl.conf
sudo a2dissite zatochnik.pro.conf
sudo a2dissite geovizor.com.ssl.conf
sudo a2dissite transit.istt.kz.conf
sudo a2dissite 000-default.conf
sudo a2dissite default-ssl.conf
sudo a2dissite msp.istt.kz.ssl.conf
sudo a2dissite mqtt.kz.ssl.conf
sudo a2dissite transit.istt.kz.conf
sudo a2dissite istransit.kz.conf
sudo a2dissite jwt2.local.conf
sudo a2dissite jwt.local.conf
http://aistransit.kz/
Для проверки файла ключа:
openssl x509 -noout -modulus -in /etc/ssl/certs/geovizor_com.crt
openssl x509 -noout -modulus -in /etc/ssl/private/server.key
openssl pkcs7 -print_certs -in /etc/ssl/certs/geovizor_com.crt -out /etc/ssl/certs/geovizor_com.pem
Проверяем настройки командой:
/usr/sbin/apache2 -S
***** Настраивем виртуальный хост *****
Копируем файлик примера:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.istt.kz.conf
sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/msp.istt.kz.ssl.conf
В файлике настраиваю ServerAdmin и DocumentRoot :
<VirtualHost *:80>
ServerAdmin ivanov.i@istt.kz
ServerName transit.istt.kz
ServerAlias transit2.istt.kz
DocumentRoot /var/www/transit.istt.kz
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Активируем:
sudo a2ensite bigfoottrade.kz.conf
sudo a2ensite bigfoottrade.kz.ssl.conf
sudo a2ensite uspdmanager.istt.kz.conf
sudo a2ensite uspdmanager.istt.kz.ssl.conf
sudo a2ensite msp.istt.kz.ssl.conf
sudo a2ensite daloradius.istt.kz.conf
sudo a2ensite stations.istt.kz
sudo a2ensite zatochnik.pro
sudo a2ensite elektronnaya-ochered.kz.conf
sudo a2ensite integration-gateway.org.conf
sudo a2ensite integration-gateway.org.ssl.conf
sudo a2ensite motion-engine.ru.conf
sudo a2ensite motion-engine.kz.conf
sudo a2ensite motion-engine.com.conf
sudo a2ensite observer.kz.conf
sudo a2ensite transit.istt.kz.ssl.conf
sudo a2ensite transit.istt.kz.conf
sudo a2ensite geovizor_local.conf
Или деактивируем
sudo a2dissite 000-default.conf
sudo a2dissite msp.istt.kz.ssl.conf
sudo a2dissite bigfoottrade.kz.conf
sudo a2dissite uspdmanager.istt.kz.conf
sudo a2dissite earth.kz.conf
sudo a2dissite integration-gateway.org.conf
sudo a2dissite observer.kz.conf
Перезагружаем
sudo service apache2 restart
****************************************************************************************************
Настройка SSH:
sudo apt-get install openssh-server
Поменять порт можно в настройках:
sudo mcedit /etc/ssh/sshd_config
Port 2222
Для рестарта: sudo /etc/init.d/ssh stop/start/restart
Для подключения через Linux: ssh administrator@192.168.0.83 -p 2222
Для винды есть PUTTY.EXE настроить кодировку на utf-8
****************************************************************************************************
Подключение к последовательному порту ttyUSB через Minicom
sudo apt-get install minicom
sudo minicom -s
После настройки зайти так
sudo minicom
****************************************************************************************************
********** Устанавливаю и настраиваю FreeRadius **********
Настройка rlm_perl для FreeRadius: http://abills.net.ua/wiki/doku.php/abills:docs:rlm_perl:ru подсказки в http://www.m-200.com/base/index.php/%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA_FREERADIUS._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_3
Для того, чтобы использовать встроенный perl необходимо:
1. В файле modules/perl раскомментировать строку 'func_authorize = authorize'.
2. В файле radiusd.conf добавить:
authorize {
preprocess
files
perl
}
По инсткукции из http://ittraveler.org/ustanovka-i-nastrojka-radius-servera-na-ubuntu-s-veb-interfejsom/
Устанавливаем FreeRadius и пакеты
sudo apt-get install freeradius
sudo apt-get install freeradius-mysql
sudo apt-get install freeradius-utils
sudo apt-get install freeradius-perl
sudo apt-get install freeradius-python
Подключаемся к серверу Mysql
mysql -u root -p
Далее создаем базу данных radius
create database radius;
Назначим полные права пользователю radius
grant all on radius.* to radius@localhost identified by "WP@$$w0rd";
Отключаемся от Mysql
exit
Импортируем таблицы в базу данных radius
#mysql -u root -p radius < /etc/freeradius/sql/mysql/schema.sql
#mysql -u root -p radius < /etc/freeradius/sql/mysql/nas.sql
Для проверки добавим тестовые значения в таблицу radcheck
#mysql -u root -p
#mysql> use radius;
#mysql> INSERT INTO radcheck (UserName, Attribute, Value) VALUES ('sqltest', 'Password', 'testpwd');
#mysql> exit
Открываем файл настроек Freeradius для MySQL расположение файла — /etc/freeradius/sql.conf
Редактируем строки до такого вида:
database = mysql
server = "localhost"
port = 3306
login = radius
password = "WP@$$w0rd"
radius_db = "radius"
readclients = yes
Далее открываем файл сайта Freeradius
Расположение файла — /etc/freeradius/sites-enabled/default
Приводим следующие строки к виду:
Uncomment sql on authorize{}
# See “Authorization Queries” in sql.conf
sql
...
Uncomment sql on accounting{}
# See “Accounting queries” in sql.conf
sql
...
Uncomment sql on session{}
# See “Simultaneous Use Checking Queries” in sql.conf
sql
...
Uncomment sql on post-auth{}
# See “Authentication Logging Queries” in sql.conf
sql
Далее правим основной конфигурационный файл Freeradius и включаем поддержку Mysql расскоментировав строку.
Расположение файла — /etc/freeradius/radiusd.conf
$INCLUDE sql.conf
Теперь протестируем настройки сервера.
Откройте 2 ssh окна терминала.
В первом окне остановим сервис Freeradius
sudo service freeradius stop
И запустим сервис в режиме debug
sudo freeradius -X - debug mode
Теперь открываем второе окно терминала и вводим запрос
radtest sqltest testpwd localhost 18128 testing123
Если вывод команды такой:
Sending Access-Request of id 68 to 127.0.0.1 port 1812
User-Name = "sqltest"
User-Password = "testpwd"
NAS-IP-Address = 127.0.1.1
NAS-Port = 18128
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=68, length=20
То все впорядке.
Теперь нужно добавить Radius клиентов в файл /etc/freeradius/clients.conf
Пример добавления:
client 192.168.1.0/16 {
secret = secretpass
shortname = testclient
nastype= testdevice
}
****************************************************************************************************
Установка PostgreSQL 11.5 windows10 из https://www.enterprisedb.com/download-postgresql-binaries:
Скачал, создаю дирректорию хранения данных:
O:\MyDocuments\DataBases\postgresql-12.3-1-windows-x64-binaries\pgsql\bin\initdb.exe -D O:\MyDocuments\DataBases\Data_PostgreSQL_12.3
O:\MyDocuments\DataBases\postgresql-10.13-1-windows-x64-binaries\pgsql\bin\initdb.exe -D O:\MyDocuments\DataBases\Data_PostgreSQL_10.13
Потом создать BAT файл с тем текстом что отобразится при создании каталога базы
База данных создаётся не под пользователем postgres а под локальным пользователем igor
****************************************************************************************************
Установка PostgreSQL 14 ubuntu 22.04 или 24.04
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib -y
Или так если нужно установить PostGIS
sudo apt-get install postgis
Для удаления PostGIS в месте с зависимыми пакетами:
sudo apt-get remove --auto-remove postgis
sudo apt-get purge postgis
Добавить русскую локаль если её нет:
sudo locale-gen ru_RU
sudo locale-gen ru_RU.UTF-8
sudo locale-gen kk_KZ
sudo locale-gen kk_KZ.UTF-8
Проверить какая локаль по умолчанию:
localectl status
И переконфигурировать локаль по умолчанию в ru_RU.UTF-8 (а то в mc могут быть кракозябры):
sudo dpkg-reconfigure locales
Для задания пароля в PostgreSQL выполнить:
sudo -u postgres psql
\password postgres
\q
Роль входа по умолчанию: postgres пароль можно поменять когда в pg_hba.conf установить trust
Задать пароль:
sudo -u postgres psql
postgres=> SELECT usename FROM pg_user;
postgres=> alter user postgres password 'PasSecrKey1';
postgres=> \q
Настройка postgresql.conf: http://www.lissyara.su/archive/1c_8.2+postgresql/
Создаём базу данных выполнив функцию:
CREATE DATABASE CCALM
WITH OWNER = postgres
TEMPLATE = template0
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'ru_RU.UTF-8'
LC_CTYPE = 'ru_RU.UTF-8'
CONNECTION LIMIT = -1;
Файл настроек postgresql: sudo mcedit /etc/postgresql/16/main/postgresql.conf
listen_addresses='*' #Разрешить подключение с внешки
#Для 9й версии разрешаем экранирующие символы \' и другие без спец символа "E" перед строкой
backslash_quote = on
escape_string_warning = off
standard_conforming_strings = off
Чтобы воводил двоичные данные по старому изменить на:
bytea_output = 'escape'
Настраиваю лимиты а то в саранче не выполняло большой запрос "Ошибка ввода/ввывода при отправке бэкенду"
Для создания нового пользователя выполнить:
sudo -u postgres psql
CREATE ROLE zholak LOGIN ENCRYPTED PASSWORD 'md5c0029083b93a3b16207a83b45e8a324a' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE REPLICATION;
Для подключения к определённой базе данных выполнить команду:
sudo -u postgres psql
\list or \l: для отображения всех баз
\connect zholak zholak
\dt для отображения всех таблиц
или написать со своим IP: host all all 2.133.238.240/24 trust
Для подключения с любых IP адресов в "sudo mcedit /etc/postgresql/16/main/pg_hba.conf" прописать:
host all all 0.0.0.0/0 md5
Либо с одного конкретного то: host all all 92.46.48.37/24 md5
А также поменять на listen_addresses = '*' в postgresql.conf
Потом перезагрузить postgres:
sudo service postgresql restart
sudo /etc/init.d/postgresql stop
sudo /etc/init.d/postgresql restart
sudo /etc/init.d/postgresql start
Проверить запущен или нет то:
sudo /etc/init.d/postgresql status
Посмотрель лог загрузки PostGreSQL:
dmesg |grep pg
Чтобы посмотреть чем занят порт выполнить команду:
sudo netstat -tap | grep 5432
Создать Backup (при переносе со старой на новую версию может быть не совместим для этого нужно делать бакам в текстовом формате: plain):
pg_dump bigfoott_shop>/home/igor/bigfoott_shop.sql --host=127.0.0.1 --username=bigfoott_root
pg_dump ASDC_Locust>/home/igor/ASDC_Locust.sql --host=127.0.0.1 --username=postgres
pg_dump zholak>/home/zholak/zholak.sql --host=127.0.0.1 --username=postgres
pg_dump stations>/home/administrator/pg_dump.sql --host=127.0.0.1 --username=postgres --format=custom
pg_dump transit>/home/administrator/transit.sql --host=127.0.0.1 --username=postgres
pg_dump weather>weather.backup --host=127.0.0.1 --username=postgres --format=custom
pg_dump transit>transit.backup --host=127.0.0.1 --username=postgres --format=custom
pg_dump weather_ru>weather_ru.backup --host=127.0.0.1 --username=postgres --format=custom
pg_dump -d CCALM -h 192.168.0.161 -U postgres -f O:\dumps\CCALM.sql
pg_dump --dbname=postgresql://postgres:PostPas1key@127.0.0.1:5432/ShopMaster | gzip > /mnt/disk1/backup/$(date +%Y-%m-%d).ShopMaster.gz
Востановить Dump из текстового файла:
psql ASDC_Locust < /home/igor/ASDC_Locustfcron.backup
psql -h 127.0.0.1 -U bigfoott_root -d bigfoott_shop_old2 < E:\dumps\bigfoottrade\dump.sql
psql -h 127.0.0.1 -U postgres -d monitoring < /home/igor/pg_dump.sql
psql -h 127.0.0.1 -U postgres -d transit_2024 < /home/administrator/transit.sql
psql -h 127.0.0.1 -U postgres -d bigfoot_shop < /home/igor/goods.sql
Создание SH скрипта для ежедневного бакапирования и архивации в ZIP файл:
/mnt/O_DRIVE/MyDocuments/DataBases/dumps/run.sh
#!/bin/sh
pg_dump --dbname=postgresql://postgres:A6dCgeDDWHbC@127.0.0.1:5432/Queue | gzip > /mnt/disk1/backup/$(date +%Y-%m-%d).Queue.gz
Для востановления через pg_restore (версии баз должны совпадать а то может не восстановиться):
su - postgres
pg_restore -U <username> -d <dbname> -1 <filename>.dump
pg_restore -U postgres -d zholak -1 /home/zholak/zholak_16.01.2019.backup
pg_restore -U postgres -d monitoring -1 /home/igor/stations_20200626.backup
pg_restore -U postgres -d transit_new -1 /home/administrator/temp/transit.backup
pg_restore -U postgres -d transit -1 /home/administrator/transit.backup
pg_restore --host=127.0.0.1 --username=postgres --dbname=transit_2024 --verbose /home/administrator/transit.backup
sudo -u postgres psql -d transit -f /tmp/transit.backup
Или из архива (первоначально задать trust на 127.0.0.1) так:
gunzip -c /var/www/dump.sql.gz | psql -h 127.0.0.1 -U bigfoott_root -d bigfoott_shop
****************************************************************************************************
Настройка отображения статистики для PostgreSQL:
https://habr.com/ru/articles/488968/
SELECT * FROM pg_stat_statements ORDER BY total_exec_time DESC;
SELECT * FROM pg_stat_activity
SELECT * FROM pg_stat_replication
SELECT * FROM pg_stat_all_tables
Полный список: https://postgrespro.ru/docs/postgrespro/9.5/monitoring-stats
Установить Prometheus сграфаной Grafana для PostgreSQL там по умолчанию есть набор настроек для сбора статистики с PostgreSQL
По мотивам: https://grafana.com/oss/prometheus/exporters/postgres-exporter/
По мотивам: https://www.youtube.com/watch?v=B_yz37CR1XU
****************************************************************************************************
Установка pgagent
sudo apt-get update
sudo apt-get install pgagent
Выполнить в консоли запрос:
psql -h localhost -U postgres
create extension pgagent;
\q
Для разрешения подключения откройте файл pg_hba.conf и замените строку на:
host all all 127.0.0.1/32 md5
Можно для теста запустить pgagent с повышенным уровнем логирования:
/usr/bin/pgagent -f -l 2 hostaddr=127.0.0.1 dbname=postgres user=postgres password=lelPfAtgQWhHYfy1SsHk
Если файла нет то пытаюсь его создать:
sudo mcedit /lib/systemd/system/pgagent.service
[Unit]
Description=PostgreSQL PgAgent Service
After=network.target
[Service]
Type=simple
User=postgres
ExecStart=/usr/bin/pgagent -f hostaddr=127.0.0.1 dbname=postgres user=postgres password=PasSecrKey1
[Install]
WantedBy=multi-user.target
Проверяю что сервис был запущен:
sudo systemctl daemon-reload
sudo systemctl enable pgagent
sudo service pgagent start
sudo systemctl status pgagent
Для проверки пробуем подключиться к базе данных
sudo -u postgres psql -h 127.0.0.1 -U postgres -d postgres
\q
Похоже что нужно ещё создать файл паролей так как агент не знает как подключаться:
sudo -u postgres touch /var/lib/postgresql/.pgpass
sudo -u postgres chmod 600 /var/lib/postgresql/.pgpass
sudo -u postgres mcedit /var/lib/postgresql/.pgpass
И прописать в него:
127.0.0.1:5432:postgres:postgres:PasSecrKey1
Где используется такой формат: hostname:port:database:username:password
Затем:
sudo systemctl enable pgagent
sudo service pgagent start
sudo service pgagent status
Посмотреть логи:
sudo journalctl -u pgagent
****************************************************************************************************
Для добавления автоматического бакапирования Postgresql базы *.backup создать скрипт:
****************************************************************************************************
Перенос базы PostgreSQL на другой диск: https://internet-lab.ru/postgresql_ubuntu_move
****************************************************************************************************
Установка PostGIS на PostgreSQL выше 9.0 версии:
sudo apt-get install postgis postgresql-9.3-postgis-2.1
Для 10й версии:
sudo apt install postgresql-10-postgis-2.4
sudo apt install postgresql-10-postgis-scripts
Для 12й версии:
sudo apt install postgresql-12-postgis-2.4
Создать базу данных и выполнть на ней следующие команды:
-- Enable PostGIS (includes raster)
CREATE EXTENSION postgis;
-- Enable Topology
CREATE EXTENSION postgis_topology;
-- fuzzy matching needed for Tiger
CREATE EXTENSION fuzzystrmatch;
-- rule based standardizer
CREATE EXTENSION address_standardizer;
-- example rule data set
CREATE EXTENSION address_standardizer_data_us;
-- Enable US Tiger Geocoder
CREATE EXTENSION postgis_tiger_geocoder;
У меня начало выдавать NOTICE: version "2.2.1" of extension "postgis_topology" is already installed и PostGIS перестал работать на моём PostgreSQL 9.5.17
Аказывается расширение кудато делось установил:
sudo apt-get install postgresql-9.5-postgis-2.2
****************************************************************************************************
Для добавления TOTP авторизации в Postgresql выполнить:
CREATE EXTENSION otp;
****************************************************************************************************
Проверка паролей Gcredcheck и многое другое для PostgreSQL https://www.postgresql.org/about/news/credcheck-v200-released-2654/
Ищем есть ли:
apt search credcheck
Устанавливаем:
sudo apt update
sudo apt install postgresql-16-credcheck
Либо из репозиториев:
sudo apt-get install postgresql-server-dev-16 # Для PostgreSQL 16
sudo apt-get install build-essential
git clone https://github.com/2ndQuadrant/credcheck.git
cd credcheck
make
sudo make install
Теперь можно исползовать расширение на базе postgres:
CREATE EXTENSION credcheck;
Теперь можно настроить расширение по https://tembo.io/docs/getting-started/postgres_guides/extensions/credcheck:
-- Configure credential policies to enforce username and password standards and reload configuration files
ALTER SYSTEM SET credcheck.username_min_length = 4;
ALTER SYSTEM SET credcheck.password_min_length = 8;
ALTER SYSTEM SET credcheck.password_min_special = 1;
SELECT pg_reload_conf();
-- Attempt to create a user for a new park ranger, which does not meet the credential policies
CREATE USER ranger_ WITH PASSWORD 'forest';
ERROR: password length should match the configured credcheck.password_min_length
Для пароля установить:
ALTER SYSTEM SET credcheck.password_expiration_days = 90;
SELECT pg_reload_conf();
Для приложений нужно изменить политику паролей (менять не автоматически а по расписанию у администратора):
****************************************************************************************************
sudo apt-get install libpq-dev libpq-fe
Если есть несовместимость libpq-dev : Зависит: libpq5 (= 14.3-0ubuntu0.22.04.1) но 14.3-1.pgdg22.04+1 должен быть установлен
То удали ранее добавленный репозиторий: /etc/apt/sources.list.d/pgadmin4.list и обнови а потом попробуй установить заново libpq-dev
apt update
****************************************************************************************************
Установка phpPgAdmin через репозиторий:
sudo apt-get install phppgadmin
Можно открыть так: http://localhost/phppgadmin
Для доступа с любых ip адресов в файле: /etc/phppgadmin/apache.conf изменить на allow from all
Чтоб можно было залогинется под пользователем postgres меняем в:
/etc/phppgadmin/config.inc.php extra_login_security в false
Если phpphadmin не дает залогиниться и пишет "Неверный логин", нужно в postgresql.conf прописать $conf['servers'][0]['host'] = 'localhost';
Другой вариант скачать с сайта последнюю версию с "http://phppgadmin.sourceforge.net/doku.php".
****************************************************************************************************
Установка pgAdmin4 в Linux Mint 20.04 (inxi -S) Проверить версию линукса: cat /etc/os-release у меня выдало: NAME="Linux Mint" VERSION="20.3 (Una)"
Проверить что не записан левый репозиторий для phppgadmin в /ect/opt/
curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/bionic pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
sudo apt install pgadmin4
И не запустился сервер оболочка пытается стартануть а сервер нет...
sudo curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/focal pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
sudo apt install pgadmin4
Тоже не заработал
Попробовать так: https://www.tecmint.com/install-postgresql-with-pgadmin4-on-linux-mint/
****************************************************************************************************
Балансировщик назрузки и потоковая репликация:
Pgpool-II https://www.youtube.com/watch?v=qpxKlH7DBjU сервер с высокой доступностью
https://ritorika.com.ua/dokument/6/pgpool-chto-jeto
****************************************************************************************************
Мониторинг запросов postgresql
****************************************************************************************************
Проверить версию OpenSSL: openssl version -v
Устанавливаю из исходников:
wget https://www.openssl.org/source/openssl-3.0.1.tar.gz
tar xzvf openssl-3.0.1.tar.gz
cd openssl-3.0.1
./config
make
sudo make install
ln -s libssl.so.3 libssl.so
sudo ldconfig
openssl version -a
Если выдало что не можжет найти: openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or director
Для этого добавить путь к каталогу библиотек: sudo mcedit /etc/ld.so.conf.d/libc.conf и вставить: /usr/local/lib64 и запустить sudo ldconfig
Также нужно добавить путь при компиляции: sudo export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib64/pkgconfig
Проверить путь:
pkg-config --cflags openssl
pkg-config --variable pc_path pkg-config
Не знал как указать путь на /usr/local/lib64/pkgconfig поэтому скопировал в /usr/local/lib/pkgconfig
Если нужно установить OpenSSL для разработчика из репозитория (но там старая нужна > 3.0):
apt-get update
sudo apt-get install libssl-dev
****************************************************************************************************
Установить ProFTPD для доступа через FTPS с сохранением пользователей в PostgreSQL по подсказки нейросети
sudo apt-get update
sudo apt-get install proftpd-basic proftpd-mod-pgsql proftpd-mod-crypto postgresql postgresql-contrib openssl
Создание сертификата TLS:
sudo mkdir /etc/proftpd/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/proftpd/ssl/proftpd.key -out /etc/proftpd/ssl/proftpd.crt
Включаем модуль в:
sudo nano /etc/proftpd/modules.conf
Раскоментив строку:
LoadModule mod_tls.c
Настройка ProFTPD для использования TLS:
sudo mcedit /etc/proftpd/tls.conf
Добавьте или измените следующие строки:
<IfModule mod_tls.c>
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
</IfModule>
Включение TLS в основной конфигурации ProFTPD:
sudo mcedit /etc/proftpd/proftpd.conf
Добавьте или измените следующие строки:
Include /etc/proftpd/tls.conf
Создаём и меняем базу данных
CREATE DATABASE ftpusers;
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(30) NOT NULL UNIQUE,
password VARCHAR(128) NOT NULL,
uid INT NOT NULL,
gid INT NOT NULL,
homedir VARCHAR(255) NOT NULL,
shell VARCHAR(255) NOT NULL
);
INSERT INTO users (name, password, uid, gid, homedir, shell) VALUES ('<username>', MD5('<password>'), 1001, 1001, '/home/<username>', '/bin/false');
INSERT INTO users (name, password, uid, gid, homedir, shell) VALUES ('administrator', MD5('administrator'), 1001, 1001, '/home/administrator', '/bin/false');
CREATE USER proftpd WITH PASSWORD 'ReULkD8M';
GRANT ALL PRIVILEGES ON DATABASE ftpusers TO proftpd;
Включаем модуль в:
sudo nano /etc/proftpd/modules.conf
Раскоментив строку:
LoadModule mod_sql.c
LoadModule mod_sql_postgres.c
LoadModule mod_sql_passwd.c
Редактируем:
sudo nano /etc/proftpd/pgsql.conf
Настройка ProFTPD для использования PostgreSQL:
sudo mcedit /etc/proftpd/pgsql.conf
Вставить следующий код:
<IfModule mod_sql.c>
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
</IfModule>
Добавляем ссылку на созданную настройку:
sudo nano /etc/proftpd/proftpd.conf
Добавилв следующее содержимое:
Include /etc/proftpd/pgsql.conf
Теперь можно перезапустить proftpd:
sudo systemctl restart proftpd
Проверяем что пользователи успешно считались из базы даныз командой:
sudo mcedit -f /var/log/proftpd/sql.log
****************************************************************************************************
Установить ProFTPD http://sys-admin.kz/os/nix/539-centod-install-proftpd.html для доступа через FTPS
Настраиваем для пользователя www-data
sudo apt-get install proftpd-basic openssl
Проверить какие модули установленны:
proftpd -vv
sudo apt-get remove --purge proftpd-basic
В настройках mcedit /etc/proftpd/proftpd.conf изменить:
UseIPv6 off
DefaultRoot ~
ServerIdent on "FTP Server ready."
RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
Для создания нового виртуального пользователя "tester" "firsttester" в файле выполнить комманду (uid и gid должны быть как у пользователя www-data смотри: cat /etc/passwd и cat /etc/group)
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=tester --uid=33 --gid=33 --home=/var/www/www.dirt.kz --shell=/bin/false
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=ftpzhol --uid=33 --gid=33 --home=/mnt/ssd/ftp --shell=/bin/false
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=zatochnik --uid=33 --gid=33 --home=/var/www/www.zatochnik.pro --shell=/bin/false
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=evak --uid=33 --gid=33 --home=/var/www/evak --shell=/bin/false
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=apk --uid=33 --gid=33 --home=/var/www/istransit.kz/apk --shell=/bin/false
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=rebezov.a --uid=33 --gid=33 --home=/var/www/test2.istransit.kz --shell=/bin/false
sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=rebezov.a --uid=33 --gid=33 --home=/opt/www/istransit.kz --shell=/bin/false
Задал пароль для apk пользователя: vooOtKBb7bckcNh
Задал пароль для rebezov.a : BU39kb2
задал пароль:
zoto!23+
Назначить права на файл:
sudo chown proftpd:nogroup /etc/proftpd/ftpd.passwd
Сменить пароль: ftpasswd --passwd --name=tester --change-password
Перезапустить: /etc/init.d/proftpd restart
Задать права на папку: sudo chown -R 33:33 /var/www
Задать права на папку: sudo chown -R 33:33 /opt/www
******************************************************
Для настройки SSL для proftpd Выполнить в консоли:
Включаем модуль в:
sudo mcedit /etc/proftpd/modules.conf
Раскоментив строку:
LoadModule mod_tls.c
Проверить какие модули установленны, если нет tls то дальше не выполнять:
proftpd -vv
sudo mkdir /etc/proftpd/ssl
sudo openssl req -new -x509 -days 365 -nodes -out /etc/proftpd/ssl/proftpd.cert.pem -keyout /etc/proftpd/ssl/proftpd.key.pem
sudo chown -R proftpd:nogroup /etc/proftpd/ssl
Потом в /etc/proftpd/proftpd.conf раскоментируем строку Include /etc/proftpd/tls.conf
И откоректируем этот файл так:
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23 TLSv1
TLSRSACertificateFile /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key.pem
TLSOptions NoCertRequest
TLSVerifyClient off
TLSRequired on
Перезапустить: /etc/init.d/proftpd restart
****************************************************************************************************
На Ubuntu включить файрвол брандмауэр firewall:
http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/firewall
Желательно сменить порт для ssh допустим на 2222
sudo ufw allow ssh
sudo ufw enable
sudo ufw allow 80/tcp
sudo ufw allow 8080/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10050/tcp
sudo ufw allow 50000:50010/tcp
sudo ufw allow 5432/tcp
sudo ufw allow 3219/tcp
sudo ufw allow 3221/tcp
Эти настройки были до переустановки сервера
443/tcp ALLOW Anywhere
80/tcp ALLOW Anywhere
10000/tcp ALLOW 192.168.0.0/24
3306/tcp ALLOW 192.168.0.0/24
10050/tcp ALLOW 192.168.0.0/24
10051/tcp ALLOW 192.168.0.0/24
2222/tcp ALLOW Anywhere
8080/tcp ALLOW Anywhere
5432/tcp ALLOW Anywhere
1812/udp ALLOW Anywhere
1813/udp ALLOW Anywhere
3799/udp ALLOW Anywhere
Эти порты для терминалов:
3211/tcp ALLOW Anywhere
3212/tcp ALLOW Anywhere
3213/tcp ALLOW Anywhere
3214/tcp ALLOW Anywhere
3215/tcp ALLOW Anywhere
3216/tcp ALLOW Anywhere
3217/tcp ALLOW Anywhere
3218/tcp ALLOW Anywhere
3219/tcp ALLOW Anywhere
3220/tcp ALLOW Anywhere
3221/tcp ALLOW Anywhere
Для freeredius:
sudo ufw allow 1812/udp
sudo ufw allow 1813/udp
sudo ufw allow 3799/udp
sudo ufw deny ftps
sudo ufw delete
deny 80/tcp
sudo ufw allow from 192.168.0.89 to any port 3306
sudo ufw allow from 192.168.0.0/24 to any port 2222 proto tcp
sudo ufw delete from 192.168.0.0/24 to any port 5432 proto tcp
Для отключения:
sudo ufw disable
Для получения списка включнных
sudo ufw status
****************************************************************************************************
https://pro-gram.ru/bridge-utils-ubuntu-server-18-04.html
Устанавливаю ПО для сетевого моста:
sudo apt install bridge-utils
Смотрим интерфейсы:
ifconfig -a
Открываю: sudo nano /etc/netplan/50-cloud-init.yaml
Файлик для жолака есть в папке "Заливка"
****************************************************************************************************
Отключить IP v6: http://www.linuxrussia.com/2013/05/disable-ipv6-ubuntu.html
****************************************************************************************************
Настройка почты на POSTFIX(агент передачи почты) И DOVECOT на основе https://www.alex-math.ru/administrirovaniye/ustanovka-postfix-dovecot-posfixadmin-na-ubuntu-20-04/ и https://www.youtube.com/watch?v=_pbH7GsVTrw&t=649s и https://www.youtube.com/watch?v=VptKRBVeCMo
********** Устанавливаю Postfixadmin **********
Для начала создаю базу в PostgreSQL с базой mail и пользователем mailreader и паролем major!reader1
cd /var/www/html
sudo wget https://yer.dl.sourceforge.net/project/postfixadmin/postfixadmin-3.3.8/PostfixAdmin%203.3.8.tar.gz
sudo tar xzvf "PostfixAdmin 3.3.8.tar.gz"
Создаю временный каталог в /var/www/html/PostfixAdmin/templates_c
правлю способ подключения к базе:
sudo mcedit /srv/http/PostfixAdmin/config.inc.php
На это:
$CONF['configured'] = true;
$CONF['database_type'] = 'pgsql';
$CONF['database_host'] = 'localhost';
$CONF['database_user'] = 'mailreader';
$CONF['database_password'] = 'major!reader1';
$CONF['database_name'] = 'mail';
$CONF['emailcheck_resolve_domain'] = 'NO';
Также нужно поднастроить апачи добавив следующтй код в: sudo mcedit /etc/apache2/apache2.conf ниже того что указывает на <Directory /var/www/>
Alias /PostfixAdmin/ "/var/www/html/PostfixAdmin/public/"
<Directory "/var/www/html/PostfixAdmin/public/">
Options FollowSymLinks
AllowOverride None
Allow from all
Order allow,deny
</Directory>
Перезагружаю:
systemctl restart apache2.service
На последок:
sudo chown www-data:www-data -R /var/www/
sudo chown www-data:www-data -R /opt/app_api_mobile_v2/mobile_v2
Теперь можно открывать сайт по IP: http://77.240.38.108/PostfixAdmin/setup.php
Просит задать пароль, задал такой: 11qazxsw22
Результат генерации: $CONF['setup_password'] = '$2y$10$ySo40K0pOn0Q5jLcBoK1yua5JaGXI.NIzTmUVBn1dreTaP2RkZ2My';
И добавляем эту стору в: sudo mcedit /srv/http/PostfixAdmin/config.inc.php
Потом обновляем страницу.
Добавляем администратора введя пароль 11qazxsw22 емайл в качестве логина irigm@mail.ru и пароль: 33edcvfr44
Можно взглянуть базу там должны создаться таблицы
Теперь осталось пойти на Postfixadmin, завести сначала почтовый домен, потом ящик и протестировать нашу почтовую систему, например, с помощью Thunderbird. Отправляем письма себе, другому пользователю в нашей системе. Потом пробуем послать себе письма с Gmail, Yandex, Mail.ru и наблюдаем за поведением системы, изучая логи. Основная настройка почты завершена. Теперь необходимо настроить DKIM, SPF, чтобы другие почтовые системы воспринимали нас как доверенных отправителей. Но об этом я расскажу в другом посте.
********** Устанавливаю Postfix **********
sudo apt-get update
sudo apt install postfix postfix-pgsql dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-pgsql mailutils postgresql
Ссохраняю оригинальный конфигурационный файл:
cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
Конфигурирую:
sudo dpkg-reconfigure postfix
Настраиваю так:
General type of mail configuration?: Internet Site
System mail name: example.com (не mail.example.com)
Root and postmaster mail recipient: имя пользователя основной учетной записи Linux (в наших примерах sammy)
Other destinations to accept mail for: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
Force synchronous updates on mail queue?: No
Local networks: 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
Mailbox size limit: 0
Local address extension character: +
Internet protocols to use: all
Можно взглянуть на настройки так: sudo mcedit /etc/postfix/main.cf
Через pgAdmin создаю нового пользователя mailreader с паролем major!reader1
CREATE DATABASE mail WITH OWNER mailreader;
Добавляю: sudo mc edit /etc/postgresql/12/main/pg_hba.conf:
local postfix postfix md5
Перезагружаю базу данных:
service postgresql reload
Создаём файл для обращения к базе с алиасами: sudo mcedit /etc/postfix/pgsql_virtual_alias_maps.cf https://www.alex-math.ru/administrirovaniye/ustanovka-postfix-dovecot-posfixadmin-na-ubuntu-20-04/
user = mailreader
password = major!reader1
hosts = localhost
dbname = mail
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'
Создаём файл для получения информации по виртуальным доменам: sudo mcedit /etc/postfix/pgsql_virtual_domains_maps.cf
user = mailreader
password = major!reader1
hosts = localhost
dbname = mail
query = SELECT domain FROM domain WHERE domain='%u'
Создаём файл для получения информации о почтовых ящиках: sudo mcedit /etc/postfix/pgsql_virtual_mailbox_maps.cf
user = mailreader
password = major!reader1
hosts = localhost
dbname = mail
query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'
Прописываем ранее созданные файлы в: sudo mcedit /etc/postfix/main.cf добавив строчки:
virtual_mailbox_base = /home/mail
virtual_alias_maps = proxy:pgsql:/etc/postfix/pgsql_virtual_alias_maps.cf
virtual_mailbox_domains = proxy:pgsql:/etc/postfix/pgsql_virtual_domains_maps.cf
virtual_mailbox_maps = proxy:pgsql:/etc/postfix/pgsql_virtual_mailbox_maps.cf
virtual_minimum_uid = 1024
virtual_uid_maps = static:1024
virtual_gid_maps = static:1024
virtual_transport = dovecot
dovecot_destination_recipient_limit = 1
Настройки безопасного соединения (также просто вставил в конец файла):
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_tls_cert_file = /etc/ssl/certs/bigfoottrade_kz.crt
smtpd_tls_key_file = /etc/ssl/private/bigfoottrade_kz.key
smtpd_tls_security_level = encrypt
Похоже опции что ниже устарели:
smtpd_use_tls = yes
smtp_use_tls = yes
smtp_tls_security_level = encrypt
smtp_enforce_tls=yes
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtp_tls_protocols = !SSLv2, !SSLv3
smtpd_tls_protocols = !SSLv2, !SSLv3
tls_preempt_cipherlist = yes
smtpd_tls_mandatory_ciphers = high
tls_high_cipherlist = ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:ADH-AES256-GCM-SHA384:ADH-AES256-SHA256:ECDH-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384:ECDH-RSA-AES256-SHA384:ECDH-ECDSA-AES256-SHA384:AES256-GCM-SHA384:AES256-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:ADH-AES128-GCM-SHA256:ADH-AES128-SHA256:ECDH-RSA-AES128-GCM-SHA256:ECDH-ECDSA-AES128-GCM-SHA256:ECDH-RSA-AES128-SHA256:ECDH-ECDSA-AES128-SHA256:AES128-GCM-SHA256:AES128-SHA256:NULL-SHA256
smtpd_tls_auth_only = yes
smtpd_helo_required = yes
smtp_tls_security_level = may
smtp_tls_ciphers = export
smtp_tls_loglevel = 1
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
Снимаем комментарии со следующих строк, или дописываем их при необходимости: sudo mcedit /etc/postfix/master.cf (просто добавил в конец файла)
submission inet n - n - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=may
-o smtpd_sasl_auth_enable=yes
-o smtpd_sasl_type=dovecot
-o smtpd_sasl_path=/var/spool/postfix/private/auth
-o smtpd_sasl_security_options=noanonymous
-o smtpd_sasl_local_domain=$myhostname
-o smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
-o smtpd_relay_restrictions=permit_mynetworks,permit_sasl_authenticated,defer_unauth_destination
-o milter_macro_daemon_name=ORIGINATING
smtps inet n - n - - smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_mynetworks,permit_sasl_authenticated,reject
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -f ${sender} -d ${recipient}
Проверяю на наличие ошибок:
sudo postfix check
В конфигурационном файле прописывается список дорменов которых обслуживает данный агент доставки.
sudo mcedit /etc/postfix/main.cf
Примерно таокое:
mydestination = $myhostname, your_domain, localhost.com, , localhost
Перезапускаем:
sudo systemctl restart postfix
********** Настройка dovecot the Secure IMAP server **********
Теперь устанавливаю и настраиваю Dovecot:
sudo apt install -y dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd
Создаю пользователя и каталог
sudo adduser --system --no-create-home --uid 1024 --group --disabled-password --disabled-login --gecos 'dovecot virtual mail user' vmail
mkdir /home/mail
chown vmail:vmail /home/mail
chmod 700 /home/mail
Смотрим что мы создали:
groups vmail
Настраиваем способ хранения сообщений: sudo mcedit /etc/dovecot/conf.d/10-mail.conf
mail_location = maildir:/home/mail/%d/%u/
Настраиваем слушателя аутентификации: sudo mcedit /etc/dovecot/conf.d/10-master.conf
service auth {
unix_listener auth-userdb {
mode = 0600
user = vmail
group = vmail
}
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}
Настраиваем аутентификацию в Dovecot: sudo mcedit /etc/dovecot/conf.d/10-auth.conf
Комментируем одну строку, снимаем комментарий с другой.
#!include auth-system.conf.ext
!include auth-sql.conf.ext
Настраиваем шифрование Dovecot: sudo mcedit /etc/dovecot/conf.d/10-ssl.conf
ssl = required
ssl_cert = </etc/haproxy/ssl/bigfoottrade_kz.pem
ssl_key = </etc/haproxy/ssl/bigfoottrade_kz.pem
Указываем Dovecot автоматически создавать каталоги при первом подключении клиента: sudo mcedit /etc/dovecot/conf.d/15-lda.conf
lda_mailbox_autocreate = yes
Теперь настройка подключения к базе данных. Открываем файл: sudo mcedit /etc/dovecot/conf.d/auth-sql.conf.ext
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
Создаём файл с настройками для работы с PostgreSQL: sudo mcedit /etc/dovecot/dovecot-sql.conf.ext
driver = pgsql
connect = host=localhost dbname=mail user=mailreader password=major!reader1
default_pass_scheme = MD5-CRYPT
password_query = SELECT password FROM mailbox WHERE username = '%u'
user_query = SELECT maildir, 1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
user_query = SELECT CONCAT('/home/mail/',LOWER(domain),'/',LOWER(maildir)),1024 AS uid, 1024 AS gid FROM mailbox WHERE username = '%u'
Наконец, указываем интерфейсы, на которых будет слушать наш Dovecot: sudo mcedit /etc/dovecot/dovecot.conf
listen = *
Также добавить в этот файл следующую настройку:
service stats {
unix_listener stats-reader {
user = vmail
group = vmail
mode = 0660
}
unix_listener stats-writer {
user = vmail
group = vmail
mode = 0660
}
}
Настройка Dovecot завершена. Осталось сгенерировать сертификаты или получить их с помощью Let's Encrypt. Для тестовых целей сгенерируем самоподписанные сертификаты. Мы их положим в /etc/postfix:
openssl req -new -x509 -days 730 -nodes -out /etc/postfix/public.pem -keyout /etc/postfix/private.pem -subj "/C=RU/ST=Msk/L=Msk/O=Local/OU=Mail/CN=fedor.bigfoottrade.kz"
Добавляем пользователю "dovecot" группу "mail":
usermod -a -G dovecot mail
usermod -a -G vmail mail
sudo systemctl enable dovecot
sudo systemctl start dovecot
Теперь можно тестировать:
Сначала необходимо убедиться в том, что почта доходит до нового ящика. Сделать это можно с помощью тестового письма:
echo "Test mail" | mail -s "Test mail" admin@mqtt.kz
Сообщение должно появиться в папке /home/mail/mqtt.kz/admin/new/. Если письма нет, проверьте лог Postfix:
tail -f /var/log/mail.log
В настройках DNS настроил А запись на только что настроенный сервер:
mail.mqtt.kz
Также нужно настроить dkim чтобы почта не попадала в спам, записав открытый ключ шифрования в TXT запсь
********** Настройка dkim ********** https://fornex.com/ru/help/dkim-postfix/
sudo apt-get install opendkim opendkim-tools
mkdir -p /etc/postfix/dkim && cd /etc/postfix/dkim
opendkim-genkey -D /etc/postfix/dkim/ -d mqtt.kz -s mail
opendkim-genkey -D /etc/postfix/dkim/ -d geovizor.com -s mail
mv mail.private mail.mqtt.kz.private
mv mail.private mail.geovizor.com.private
mv mail.txt mail.mqtt.kz.txt
mv mail.txt mail.geovizor.com.txt
Создаём файл mcedit keytable и записываем в него ключи
#имя_ключа домен:селектор:/путь/до/ключа
mail._domainkey.mqtt.kz mqtt.kz:mail:/etc/postfix/dkim/mail.mqtt.kz.private
mail._domainkey.geovizor.com geovizor.com:mail:/etc/postfix/dkim/mail.geovizor.com.private
Создаём файл mcedit signingtable и записывает что чем подписывать
#домен имя ключа
*@mqtt.kz mail._domainkey.mqtt.kz
*@geovizor.com mail._domainkey.geovizor.com
Задаю права доступа:
chown root:opendkim *
chmod u=rw,g=r,o= *
chmod g+r /etc/postfix/dkim/
Смотрим содержимое TXT файла для записи в домен
cat /etc/postfix/dkim/mail.mqtt.kz.txt
cat /etc/postfix/dkim/mail.geovizor.com.txt
И добавляю в DNS на хостинг:
Name: mail._domainkey.mqtt.kz
Text: v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtrObJxHaUBVtR4XzNuFzoa449K3l1z6+Mi4e83rFbBYmBZRYjiJn5h2PeiK1i2IpSaEKn32AlPy5gB7Ej41Fhg6LXswwRhhfvz8vClhRbUKT4I8oPBj9WZr7+4aohG1Vcks1q9cgmwdcGN+6qhKq/DJ+AC1TirNrEpSvR6JAqd4G70aJazI9su0bY5cbIv0pZGezvt+2pwJw6xpb501KudTFE8FTHxB51aLkgYS257MkovSu+qlVzPjoOsZcOY7hQtF8WB/Czod0QN05Ob/N3Qc/k2E4tpvxgokLXdYl/8KBMLMX9cRfIVbv+atuo59VFKHYIGD8Kom6akORkFeIlQIDAQAB
Заменяем все настройки на то что ниже: sudo mcedit /etc/opendkim.conf
AutoRestart Yes
AutoRestartRate 10/1h
PidFile /var/run/opendkim/opendkim.pid
Mode sv
Syslog yes
SyslogSuccess yes
LogWhy yes
UserID opendkim:opendkim
Socket inet:8891@localhost
Umask 022
Canonicalization relaxed/relaxed
Selector default
MinimumKeyBits 1024
KeyFile /etc/postfix/dkim/${MAIL_DOMAIN}.private
KeyTable /etc/postfix/dkim/keytable
SigningTable refile:/etc/postfix/dkim/signingtable
Добавляем в конец: sudo mcedit /etc/postfix/main.cf
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
sudo systemctl start opendkim
sudo systemctl enable opendkim
service opendkim restart
service postfix restart
********** Настройка SPF **********
Например, SPF-запись «example.com. TXT «v=spf1 +a +mx -all»» говорит о том, что отправлять письма от имени домена «example.com» могут сервера, указанные в A и MX-записях этого домена, а письма, отправленные от других серверов должны быть удалены (Fail).
Содержимое TXT файла для записи в домен
Имя домена пустое:
Содержимое: v=spf1 +a +mx -all
********** Настройка DMARC https://www.unisender.com/ru/glossary/dmarc/**********
Содержимое TXT файла для записи в домен
Имя домена: _dmarc
Содержимое: v=DMARC1; p=none;
!!! Для тестирования сервера на прохождение спам фильтра пишем письмо на https://www.mail-tester.com/ или https://spamtest.smtp.bz !!!
********** web интерфейс для postfix — Roundcube **********
cd /var/www/html
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz
tar xzvf roundcubemail-1.6.5-complete.tar.gz
chown -R www-data:www-data /var/www/html/Roundcube
sudo apt-get install aspell aspell-en dbconfig-common fonts-glyphicons-halflings javascript-common libaspell15 libjs-bootstrap libjs-bootstrap4 libjs-codemirror libjs-jquery libjs-jquery-minicolors libjs-jquery-ui libjs-jstimezonedetect libjs-popper.js libjs-sizzle node-jquery php-auth-sasl php-mail-mime php-masterminds-html5 php-net-sieve php-net-smtp php-net-socket php-pspell php7.4-pspell
https://bigfoottrade.kz/Roundcube/installer/
language — ru_RU
Предварительно создать базу:
https://bigfoottrade.kz/Roundcube
http://77.240.38.108/Roundcube
****************************************************************************************************
Установка sendmail для почты на php
sudo apt-get install php-mail
sudo apt-get install sendmail
sudo sendmailconfig
Проверить доменное имя:
sudo mcedit /etc/hosts
Настраиваем PHP:
sudo mcedit /etc/php/8.1/apache2/php.ini
Прописав:
sendmail_path = /usr/sbin/sendmail -t -i
Или если используем ssmtp то (ниже есть настройка для внешнего почтового сервера):
sendmail_path = /usr/sbin/ssmtp -t
Перезагружаем апач:
sudo service apache2 restart
****************************************************************************************************
Настройка переадресации почты:
sudo apt-get install postfix
В файл /etc/postfix/main.cf
recipient_bcc_maps = hash:/etc/postfix/virtual
В файл /etc/postfix/virtual записать:
@bigfoottrade.kz irigm@mail.ru
@bigfoottrade.kz instruments@asia.com
поле чего:
postmap /etc/postfix/virtual
postfix reload
Также добавить в фаирволл:
sudo ufw allow Postfix
sudo ufw allow 'Postfix SMTPS'
sudo ufw deny Postfix
sudo ufw deny 'Postfix SMTPS'
****************************************************************************************************
Использование для почты внешнего сервера например mail.ru (в php и других программах)
sudo apt-get install mailutils
sudo apt-get install ssmtp
Потом заходим в настройки и меняем параметры
sudo mcedit /etc/ssmtp/ssmtp.conf
Для yandex.ru должно быть такое:
root=no_reply@bigfoottrade.kz
mailhub=smtp.yandex.ru:465
#hostname=localhost
UseTLS=YES
AuthUser=no_reply@bigfoottrade.kz
AuthPass=Rp1ZB1nB340kSQAoPor3
FromLineOverride=YES
Debug=NO
Для локального сервера istt.kz должно быть такое:
root=no-reply@istt.kz
mailhub=mail.istt.kz:465
#hostname=localhost
UseTLS=YES
AuthUser=no-reply@istt.kz
AuthPass=je6&HHCEmJ
FromLineOverride=YES
Debug=NO
А в файле sudo mcedit /etc/ssmtp/revaliases прописать:
administrator:no_reply@bigfoottrade.kz:smtp.yandex.ru:465
www-data:no_reply@bigfoottrade.kz:smtp.yandex.ru:465
igor:no_reply@bigfoottrade.kz:smtp.yandex.ru:465
root:no_reply@bigfoottrade.kz:smtp.yandex.ru:465
zabbix:no_reply@bigfoottrade.kz:smtp.yandex.ru:465
Тестируем отправку в консоли:
echo test_message | ssmtp irigm@mail.ru
Логи находятся в папке sudo mcedit /var/log/maillog
****************************************************************************************************
Старую версию агента/сервера из репазитория можно установить так:
cd /usr/src
wget http://repo.zabbix.com/zabbix/2.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_2.2-1+trusty_all.deb
sudo dpkg -i zabbix-release_2.2-1+trusty_all.deb
sudo apt-get update
sudo apt-get install zabbix-agent
service zabbix-agent start
****************************************************************************************************
Устанавливаю zabbix сервер 5.2 https://techexpert.tips/zabbix/zabbix-5-install-ubuntu-linux/ на Ubuntu 18.04
sudo apt update && sudo apt upgrade
sudo apt install apache2
sudo apt install php php-cli php-common php-pgsql
Скачиваю настройки репозитория для zabbix для Ubuntu server 18.04 bionic x64:
wget -P ~ https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1%2Bubuntu18.04_all.deb
Добавляю репозиторий заббикса:
sudo dpkg -i ./zabbix-release_5.2-1+ubuntu18.04_all.deb
Устанавливаю необходимые пакеты:
sudo apt update
sudo apt install zabbix-server-pgsql zabbix-frontend-php zabbix-apache-conf zabbix-agent zabbix-get
Создаю начальную базу, через WEB интерфейс, название базы: zabbix пароль z123456
CREATE DATABASE transit
WITH OWNER = postgres
TEMPLATE = template0
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'ru_RU.UTF-8'
LC_CTYPE = 'ru_RU.UTF-8'
CONNECTION LIMIT = -1;
Импортируем изначальную схему и данные:
zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix
Настраиваем логин пароль:
mcedit /etc/zabbix/zabbix_server.conf
Прописываем:
DBPassword=z123456
Проверяю настройку PHP: mcedit /etc/php/7.2/apache2/php.ini
date.timezone = Asia/Almaty
Затем:
sudo service apache2 restart
Запускаем процессы сервера и агента
sudo service zabbix-server start
sudo update-rc.d zabbix-server enable
sudo systemctl restart zabbix-server zabbix-agent apache2
sudo systemctl enable zabbix-server zabbix-agent apache2
Логи при такой установке в:
/var/log/zabbix
Пробуем зайти
http://94.247.128.218/zabbix
Проходимся по WEB настройке и авторизуемся: Admin с паролем zabbix там создаём узел сети и добавляем нужные шаблоны.
Поменял пароль на: ze0bra
Настройка E-mail для оповещений при помощи скрипта http://efsol-it.blogspot.com/2014/05/zabbix-email.html:
Узнаём куда нужно ложить скрипты:
cat /etc/zabbix/zabbix_server.conf | grep alertscripts
Выдало:
# AlertScriptsPath=/usr/lib/zabbix/alertscripts
Записал туда этот путь: /usr/local/etc/zabbix/alertscripts
Скрипт для отправки почты (закинул в 2 пуми в alertscripts и externalscripts):
#!/bin/bash
to="$1"
subject="$2"
body="$3"
echo $body | mail -s $subject $to
exit 0
Прописываем права для скрипта:
chown zabbix.zabbix /usr/local/etc/zabbix/alertscripts/email.sh
chmod +x /usr/local/etc/zabbix/alertscripts/email.sh
Потом внастройках Администрирование -> Способы оповещений -> Создать способ оповещения
После того как создали в настройках пользователя присваиваем оповещение.
Потом активируем действия в "Настройка -> действия"
Перезапускаем
sudo service zabbix-server restart
****************************************************************************************************
Установка TomCat на Ubuntu 23.04 по руководству из https://www.digitalocean.com/community/tutorials/install-tomcat-9-ubuntu-1804
Обновляем пакеты:
sudo apt-get update
Устанавливаем Java Development Kit 8 (не ниже 8й версии) (так старая установиться: sudo apt-get install default-jdk)
sudo apt install openjdk-21-jdk openjdk-21-jre
java -version
Создаём группу для томкат пользователя:
sudo groupadd tomcat
Создаём пользователя:
sudo useradd -s /bin/false -g tomcat -d /opt/tomcat tomcat
Скачиваю tomcat:
cd /tmp
curl -O https://archive.apache.org/dist/tomcat/tomcat-10/v10.1.30/bin/apache-tomcat-10.1.30.tar.gz
Извлекаю tomcat:
sudo mkdir /opt/tomcat
sudo tar xzvf apache-tomcat-10*.tar.gz -C /opt/tomcat --strip-components=1
Обновляю владельца папки:
cd /opt/tomcat
sudo chown tomcat:tomcat -R /opt/tomcat
sudo chgrp -R tomcat /opt/tomcat
sudo chmod -R g+r conf
sudo chmod g+x conf
sudo chown -R tomcat webapps/ work/ temp/ logs/
Указываем где находится java:
sudo update-java-alternatives -l
Выдаст: /usr/lib/jvm/java-1.21.0-openjdk-amd64
sudo mcedit /etc/environment
Записать: JAVA_HOME="/usr/lib/jvm/java-1.21.0-openjdk-amd64"
echo $JAVA_HOME
Пропишу на всяк случай и $CATALINA_HOME (не обязательно)
sudo mcedit /etc/environment
Записать: CATALINA_HOME="/opt/tomcat"
echo $CATALINA_HOME
Создаём сервис для автозапуска в Ubuntu 16: https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-ubuntu-16-04):
sudo mcedit /etc/systemd/system/tomcat.service
И записываем в него следующее содержимое:
[Unit]
Description=Apache Tomcat Web Application Container
After=network.target
[Service]
Type=forking
Environment=JAVA_HOME=/usr/lib/jvm/java-1.21.0-openjdk-amd64
Environment=CATALINA_PID=/opt/tomcat/temp/tomcat.pid
Environment=CATALINA_HOME=/opt/tomcat
Environment=CATALINA_BASE=/opt/tomcat
Environment='CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC'
Environment='JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom'
ExecStart=/opt/tomcat/bin/startup.sh
ExecStop=/opt/tomcat/bin/shutdown.sh
User=tomcat
Group=tomcat
UMask=0007
RestartSec=10
Restart=always
[Install]
WantedBy=multi-user.target
Затем:
sudo systemctl daemon-reload
sudo systemctl start tomcat
sudo systemctl status tomcat
Для автозапуска сервиса томката выполнить команду:
sudo systemctl enable tomcat
Разрешаем порт в фаерволе:
sudo ufw allow 8080
Для использования менеджера веб. приложений томката настраиваем пользователя:
sudo mcedit /opt/tomcat/conf/tomcat-users.xml
В этот файл добавить роли в раздел <tomcat-users>...</tomcat-users> запихнуть:
<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager"/>
<role rolename="admin-gui"/>
<role rolename="admin"/>
<user username="tomcat" password="igareb0s" roles="admin-gui, tomcat, manager-gui, manager-script, manager,admin"/>
Также закоментить содержимое тега Context в sudo mcedit $CATALINA_HOME/webapps/manager/META-INF/context.xml см.: http://tomcat.apache.org/tomcat-8.0-doc/manager-howto.html#Configuring_Manager_Application_Access
<Context antiResourceLocking="false" privileged="true" >
<!--<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />-->
</Context>
Для того чтобы поменять порт на 80 нужно в: sudo mcedit /opt/tomcat/conf/server.xml
<Connector connectionTimeout="20000" port="80" protocol="HTTP/1.1" redirectPort="8443"/>
Также при помощи authbind разрешить не-root программе быть назначенными младшим портам:
sudo apt-get install authbind
sudo touch /etc/authbind/byport/80
sudo chmod 500 /etc/authbind/byport/80
sudo chown tomcat /etc/authbind/byport/80
Создать файл $CATALINA_HOME/bin/setenv.sh и добавить строку:
CATALINA_OPTS="-Djava.net.preferIPv4Stack=true"
AUTHBIND=yes
Также заменить в $CATALINA_HOME/bin/startup.sh заменить: exec "$PRGDIR"/"$EXECUTABLE" start "$@" на
exec authbind --deep "$PRGDIR"/"$EXECUTABLE" start "$@"
Так как размер WAR архива может быть большим чем 52428800 байт то в файле sudo mcedit /opt/tomcat/webapps/manager/WEB-INF/web.xml увеличиваем параметр "max-file-size" до 100000000 байт.
Перезагружаю томкат:
sudo service tomcat restart
Останавливаю томкат:
sudo service tomcat stop
Теперь можно запускать WEB интерфейс и деплоить проект:
http://server_IP_address:8080
****************************************************************************************************
Для копирования библиотек запустить:
mvn dependency:copy-dependencies -DoutputDirectory=${project.build.directory}/libs
Потом эти библиотеки хранить рядом с jar
Скомпилировать в "IntelliJ IDEA -> Maven -> package" создастца TransitToRabbitMQ-1.0-SNAPSHOT.jar
Используем команду "-cp" а не "-jar" так как в манифесте нет описания главного класса:
/usr/bin/java -jar /opt/TransitToRabbitMQ.jar
/usr/bin/java -cp /opt/TransitToRabbitMQ.jar kz.istt.app.Forwarding
Для создания сервиса для запуска .jar необходимо создать файл Transit_RabbitMQ_Forwarding.service:
[Unit]
Description=Forwarding RabbitMQ DATA
After=syslog.target
[Service]
WorkingDirectory=/opt/
ExecStart=/usr/bin/java -cp /opt/TransitToRabbitMQ.jar kz.istt.app.Forwarding
User=tomcat
Group=tomcat
UMask=0007
RestartSec=120
Restart=always
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
[Journal]
SystemMaxUse=64M
Устанавливаем владельца:
sudo chown tomcat:tomcat -R /opt/
Смотрим что выдаёт:
sudo journalctl -e -u Transit_RabbitMQ_Forwarding
****************************************************************************************************
Установка GeoServer на Tomcat
Скачиваем WAR с сайта http://geoserver.org/release/stable/
cd /tmp
curl -O https://nav.dl.sourceforge.net/project/geoserver/GeoServer/2.23.2/geoserver-2.23.2-war.zip
Извлекаю tomcat:
sudo mkdir /opt/tomcat/geoserver
sudo apt-get install unzip
sudo unzip geoserver-2*war.zip
mv geoserver.war ROOT.war
cp ROOT.war /opt/tomcat/geoserver
sudo chown tomcat:tomcat -R /opt/tomcat/geoserver
Добавляем в sudo mcedit /opt/tomcat/conf/server.xml перед <Host name="localhost" appBase="webapps" следующий текст:
<Host name="geoserver2.locust.kz" appBase="geoserver" unpackWARs="true" autoDeploy="true">
<Alias>geoserver2.ccalm.org</Alias>
</Host>
Стандартные логин и пароль администратора 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
<Connector port="443"
protocol="org.apache.coyote.http11.Http11NioProtocol"
sslImplementationName="org.apache.tomcat.util.net.jsse.JSSEImplementation"
maxThreads="150"
SSLEnabled="true"
scheme="https"
secure="true"
defaultSSLHostConfigName="locust.kz">
<SSLHostConfig hostName="locust.kz">
<Certificate certificateKeystoreFile="conf/keystore.jks"
certificateKeystorePassword="qw0qw1qw2"
certificateKeyAlias="new_alias"
type="RSA" />
</SSLHostConfig>
<SSLHostConfig hostName="ccalm.org">
<Certificate certificateKeystoreFile="conf/keystore.jks"
certificateKeystorePassword="qw0qw1qw2"
certificateKeyAlias="ccalm_org"
type="RSA" />
</SSLHostConfig>
</Connector>
Также при помощи 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
<mosquitto>/certs/m2mqtt_ca.crt
<mosquitto>/certs/m2mqtt_srv.crt
<mosquitto>/certs/m2mqtt_srv.key
Далее открываем <mosquitto>/mosquitto.conf и
listener 1883 0.0.0.0
listener 8883 0.0.0.0
cafile C:\Program Files\mosquitto\certs\m2mqtt_ca.crt
certfile C:\Program Files\mosquitto\certs\m2mqtt_srv.crt
keyfile C:\Program Files\mosquitto\certs\m2mqtt_srv.key
Дальше перезапускаем mosquitto
Проверить кто занял порт:
netstat -ab
Для получения отпечастка сертификата выполнить:
openssl x509 -in m2mqtt_srv.crt -noout -fingerprint -sha1 -inform pem
Для преобразования в pem файл выполнить:
openssl rsa -in m2mqtt_srv.key -text > m2mqtt_srv.key.pem
openssl x509 -inform PEM -in m2mqtt_srv.crt > m2mqtt_srv.crt.pem
****************************************************************************************************
Установка home-assistanto c Supervisor на Ubuntu Server 20.04, Linux Mint(и малинки) по мативам https://pikabu.ru/story/ustanovka_home_assistant_supervised_v_docker_na_ubuntu_2004_na_besplatnom_vps_servere_ot_oracle_testovaya_sistema_umnogo_doma_7980354
sudo apt-get update
sudo apt-get upgrade -y
sudo apt autoremove -y
sudo apt-get install -y software-properties-common apparmor-utils apt-transport-https avahi-daemon ca-certificates curl dbus jq network-manager socat
Деактивируем и отключаем ModemManager:
sudo systemctl disable ModemManager
sudo systemctl stop ModemManager
На всякий случай перезагружаем систему
reboot
Устанавливаем Docker:
curl -fsSL get.docker.com | sudo sh
Загружаем скрипт "supervised-installer":
curl -Lo installer.sh https://raw.githubusercontent.com/home-assistant/supervised-installer/master/installer.sh
И запускаем установку одним из способов:
- установщик сам выбирает директории (папки установки): sudo bash installer.sh
- мы выбираем директории (папки установки - нужно сначала создать)***: sudo bash installer.sh -p /home -d $PREFIX/hassio (это пример, подробнее на фото)
Разварачивание HA может занять 5 минут
****************************************************************************************************
Установка Docker на Ubuntu 22.04 по мотивам: https://infoit.com.ua/linux/kak-ustanovit-docker-na-linux-mint-20/
Обновляем и устанавливаем зависимости:
sudo apt update
sudo apt install curl software-properties-common ca-certificates apt-transport-https -y
wget -O- https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor | sudo tee /etc/apt/keyrings/docker.gpg > /dev/null
echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable"| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce -y
sudo systemctl status docker
Устанавливаем Docker Compose с сервера:
Так старая версия установится: sudo apt-get install docker-compose
curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
После установки будет создана группа докеров. Добавьте своего пользователя в группу, которая будет запускать команды докеров:
sudo usermod -aG docker $USER
После этого проверьте установку Docker, используя следующую команд
sudo docker --version
docker compose version
**********PORTAINER**********
Также можно установить удобный интерфейс для управления докер контейнерами PORTAINER по документации из: https://timeweb.cloud/tutorials/docker/ustanovka-i-ispolzovanie-portainer и видео: https://www.youtube.com/watch?v=EmtNCo7SGbQ
cd /opt
sudo mkdir portainer
cd ./portainer
sudo mcedit docker-compose.yml
И прописываем в файл:
version: "3.3"
services:
twportainer:
image: portainer/portainer-ce:latest
container_name: portainer
environment:
- TZ=Europe/Moscow
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /opt/portainer/portainer_data:/data
ports:
- "8000:8000"
- "9443:9443"
restart: always
version: "3.3": Указывает версию Docker-compose, которую вы используете. Версия 3.3 подходит для большинства современных приложений.
services: В этой секции описываются запускаемые сервисы.
twportainer: Имя сервиса. Используется в качестве идентификатора.
image: portainer/portainer-ce:latest: Определяет образ, который будет использоваться. Здесь используется последняя версия Community Edition.
container_name: twportainer: Назначает имя контейнера, чтобы было легче его идентифицировать.
environment: Позволяет задать переменные окружения. Например, - TZ=Europe/Moscow устанавливает временную зону контейнера.
volumes:
/var/run/docker.sock:/var/run/docker.sock позволяет Portainer взаимодействовать с Docker на вашем хосте;
/opt/twportainer/portainer_data:/data создает постоянное хранилище данных.
ports:
"8000:8000" и "9443:9443" открывают соответствующие порты для доступа к Portainer. 9443 используется для HTTPS подключения.
restart: always: Гарантирует, что контейнер будет автоматически перезапускаться при необходимости, например, после перезагрузки сервера.
Разрешаем пользователю запускать докер:
sudo usermod -aG docker $USER
Теперь можно запустить конфигурацию командой:
sudo docker-compose up -d
Открываем: https://127.0.0.1:9443
После предложения задания пароля для пользователя admin задал такой пароль на дом компе: &b2C6nyN2,qUNM]
****************************************************************************************************
Собственный DynDNS на Linux для observer.kz для начала устанавливаем BIND 9.13 and later по этому мануалу https://www.dmosk.ru/miniinstruktions.php?mini=bind-ubuntu и по этому для новой версии https://www.netss.by/?p=26
sudo apt-get update
sudo apt-get install bind9 dnsutils
sudo apt-get install bind9utils
Добавляем сервис в автозапуск
systemctl enable bind9
Проверяем что сервис работает
nslookup dmosk.ru 127.0.0.1
Открываем настройки:
mcedit /etc/bind/named.conf.options
Для глобальных запросов добавляем строку: allow-query { any; };
Также добавляем в этот файл DNS сервера пересылки, на них будут перенаправляться запросы если локальный не содержит данных
//forwarders {
// 8.8.8.8;
// 8.8.4.4;
//};
Проверяем настройки командой (ответ должен быть пустым):
sudo named-checkconf
Перезагружаем:
sudo systemctl restart bind9
Проверяю версию BIND:
named -v
Выдало: BIND 9.16.1-Ubuntu (Stable Release) <id:d497c32>
Можно проверить какой IP выдаст на DNS запрос
dig locust.kz A
На этом базовая настройка закончена. Наш сервер готов принимать и отдавать запросы и работать, как кэширующий dns.
Далее создаём клиента согласно: https://help.ubuntu.ru/wiki/динамический_днс_своими_руками
Перейдем в него.
cd /etc/bind/
Генерируем пару ключь для обмена информацией между клиентом и сервером:
sudo tsig-keygen -a hmac-sha512 dirt.kz > dirt.kz.key
sudo tsig-keygen -a hmac-sha512 locust.kz > locust.kz.key
Для загрузки ключа добавляем его файл mcedit /etc/bind/named.conf строчку с указанием файла, где определен ключ.
include "/etc/bind/dirt.kz.key";
include "/etc/bind/locust.kz.key";
Следующим шагом необходимо в файл mcedit /etc/bind/named.conf.local прописать доменную зону, которой мы оперируем.
zone "dirt.kz" {
type master;
allow-update {key dirt.kz;};
file "/var/cache/bind/dirt.kz";
};
zone "locust.kz" {
type master;
allow-update {key locust.kz;};
file "/var/cache/bind/locust.kz";
};
В файле "mcedit /var/cache/bind/dirt.kz" должны быть прописанны записи домена где:
В файле "mcedit /var/cache/bind/locust.kz" должны быть прописанны записи домена где:
Поле $ORIGIN для подставки имени в знак @, поэтому знак @ не используется просто так в тексте
Если используется символ @ то он заменяется на то что было прописанно в $ORIGIN смотреть в: https://help.dyn.com/how-to-format-a-zone-file/
SOA — Начало полномочий подробней смотри в https://k.psu.ru/wiki/BIND9_(методическое_пособие)#SOA
NS — Сервер имён
A — рекорд
MX — Почта для обмена
CN — Каноническое имя
PTR — указатель
И таким содержимым:
$ORIGIN dirt.kz
$TTL 604800
@ IN SOA bigfoottrade.kz. root.bigfoottrade.kz. (
8 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS bigfoottrade.kz.
Второй файл для locust.kz:
$ORIGIN .
$TTL 604800 ; 1 week
locust.kz IN SOA bigfoottrade.kz. irigm.mail.ru. (
134 ; serial
604800 ; refresh (1 week)
86400 ; retry (1 day)
1419200 ; expire (2 weeks 2 days 10 hours 13 minutes 20 seconds)
604800 ; minimum (1 week)
)
NS bigfoottrade.kz.
$TTL 3600 ; 1 hour
A 5.76.254.182
$ORIGIN locust.kz.
* A 127.0.0.1
Правлю права доступа:
sudo chown -R bind:bind /etc/bind
Если настройки были первоначальными то стоит удалить файл /var/cache/bind/locust.kz.jnl и переинициализировать его командой:
sudo rndc reconfig
Потом следует вызвать:
sudo systemctl restart bind9
Команда выше также переписывет накопившиеся данные из /var/cache/bind/locust.kz.jnl в /var/cache/bind/locust.kz так что после обновления если охото быстрей взглянуть на текстовое значение следует повторно вызвать эту команду
После настроек сервера перезагружаем его:
sudo named-checkconf
sudo rndc reload
sudo systemctl restart bind9
sudo rndc status
journalctl | grep bind
sudo journalctl -u bind9 -n 50
Создаю скрипт /etc/ddns/ddns.sh для обновления доменных зон удалённо с доступом по ключу:
Файл из примера:
#!/bin/bash
TTL=3600
SERVER=ns.dyndns.my
HOSTNAME=dhost.dyndns.my
ZONE=dyndns.my
KEYFILE=Kdyndns.my.+157+48025.private
new_ip_address=`curl http://dyndns.my/ip.php` #Этот файлик создадим позднее на сервере!
cd /etc/ddns
nsupdate -v -k $KEYFILE << EOF
server $SERVER
zone $ZONE
update delete $HOSTNAME A
update add $HOSTNAME $TTL A $new_ip_address
send
EOF
Мой модифицированный файл для обновления IP в Bind9 DNS сервису по созданному файлу ip.txt, файл ip.txt создаётся в PHP скрипте который описан ниже:
#!/bin/bash
TTL=3600
SERVER=127.0.0.1
HOSTNAME=*.dirt.kz
ZONE=dirt.kz
KEYFILE=/etc/bind/dirt.kz.key
new_ip_address=
FILE=/etc/ddns/ip.txt
if test -f "$FILE"; then
new_ip_address=`cat $FILE`
rm $FILE
fi
len=${#new_ip_address}
if [ $len -gt 3 ]
then
echo "New IP address = $new_ip_address"
else
echo "Not find IP address"
exit
fi
cd /etc/ddns
sudo nsupdate -v -k $KEYFILE << EOF
server $SERVER
zone $ZONE
update delete $HOSTNAME A
update add $HOSTNAME $TTL A $new_ip_address
update delete dirt.kz A
update add dirt.kz $TTL A $new_ip_address
send
EOF
echo "OK"
Так как PHP работает за HAProxy то немного модифицировал скрипт который сохраняет IP обратившегося клиента в файл, а именно использую "x-forwarded-for" для передачи IP адреса клиента:
<?php
echo '<pre>'; print_r(getallheaders()); echo '</pre>';
// PROBLEM IS each browser has different "x-forwarder-for" some "X-Forwarder-for" and some browser gave you 2x ip "x.x.x.x, x.x.x.x"
foreach ( getallheaders() as $k => $v) {
if ( strtolower($k) == 'x-forwarded-for' ) {
$tmp = explode(', ', $v);
if ( $tmp[count($tmp)-1] != '' )
$_SERVER['REMOTE_ADDR'] = $tmp[count($tmp)-1];
}
}
if(isset($_GET["key"]) && $_GET["key"]=='4fygxNq539NFfUm6SOd2vn52GwL7o7NA'){
$myfile = fopen("/etc/ddns/ip.txt", "w");
fwrite($myfile, $_SERVER['REMOTE_ADDR']);
fclose($myfile);
}
echo $_SERVER['REMOTE_ADDR'];
?>
Проверяем что находит IP по доменному имени
nslookup dirt.kz 127.0.0.1
****************************************************************************************************
DynDNS на PowerDNS авторитативный сервер DNS на Ubuntu 22.04 согласно инстркции https://phoenixnap.com/kb/powerdns-ubuntu:
Можно было-бы использовать не 53 порт, но провайдер не даёт указывать порт при настройке DNS серверов (не знаю какие локальные проблемы могут возникнуть если задать не 53 порт)
Устанавливаем сам PowerDNS https://doc.powerdns.com/authoritative/installation.html
sudo apt-get install pdns-server
sudo apt-get install pdns-backend-pgsql
Подключаюсь к базе и создаю схему базу со схемой из: https://doc.powerdns.com/authoritative/backends/generic-postgresql.html
Настраиваю соединение с базой данных в:
sudo mcedit /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
Со следующим содержимым:
launch+=gpgsql
# gmysql parameters
gpgsql-host=127.0.0.1
gpgsql-port=5432
gpgsql-dbname=powerdns
gpgsql-user=powerdns
gpgsql-password=y7HMHi0ATxx1VC3UU5WG
gpgsql-dnssec=no
Задаю права доступа к файлу:
sudo chown pdns: /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
sudo chmod 640 /etc/powerdns/pdns.d/pdns.local.gpgsql.conf
На всякий случай делаю резервные копии исходных файлов настрое:
cd /etc/powerdns
sudo cp named.conf named.conf.bak
sudo cp pdns.conf pdns.conf.bak
Наспройку файла pdns.conf авторитетный сервер, есть такой пример который следует изучить: https://raw.githubusercontent.com/trinv/PowerDNS/a56b9122f4a2de9c1f789009f09b9831f74d8bf1/pdns.template.master.conf (естественно без 1й табуляции):
#allow-recursion=0.0.0.0/0 не включил так как не предполагаю использоват как рккурсивный DNS
webserver=yes
webserver-address=0.0.0.0 #Если 0.0.0.0 то слушаем все имеющиеся
webserver-allow-from=5.76.254.182 #если из любой сети то так: ::/0, 0.0.0.0/0 но я поставил только домашний
webserver-port=8090
Перезагружаем и пытаемся открыть
sudo systemctl stop pdns.service
http://77.240.38.137:8090
Проверяю соединение к базе перезапустив PowerDNS:
sudo systemctl stop pdns.service
sudo pdns_server --daemon=no --guardian=no --loglevel=9
Если всё норм выполняем:
sudo systemctl restart pdns
sudo systemctl enable pdns
sudo systemctl status pdns
Проверяем что порт 53 открыт для DNS:
sudo ss -alnp4 | grep pdns
Проверяем отправляя запрос к dns серверу
dig @127.0.0.1 google.com
ping google.com
проверяем кто слушает на порту 53
sudo netstat -tulnp | grep :53
Для примера авторитетный для домена example.com то в базе данных должны быть такие настройки:
********** рекурсивный DNS от PowerDNS, тоже 53 порт и будет конфликт, поэтому на одном IP можно настроить PowerDNS чтобы он выполнял функцию рекурсивного резольвера **********
Чтобы работал резольвер от PowerDNS а не тот который от ubuntu:
sudo apt-get install pdns-recursor -y
sudo mcedit /etc/powerdns/recursor.conf
И там прописать:
forward-zones=.=8.8.8.8;8.8.4.4
Также нужно настроить sudo mcedit /etc/resolv.conf и прописать туда (так как файл символическая ссылка то сервис systemd-resolved нужно остановить иначе он его перезапишет) это чтобы программы перенаправляли запросы поднятому резольверу:
nameserver 127.0.0.1
Чтобы запросы переходили на pdns-recursor
Затем перезагружаем:
sudo systemctl restart pdns-recursor
Проверяем что преобразование DNS нормально работает:
dig @127.0.0.1 google.com
********** Отключаю systemd-resolved иначе он будет конфликтовать с PowerDNS **********
Редактирую /etc/netplan/ для того чтобы прописать поднятый DNS сервер на 127.0.0.1 (не знаю сработает ли так как отключу systemd-resolved)
sudo netplan apply
Смотрим что сгенерировалось автоматически в resolv.conf после модификации файла
cat /etc/resolv.conf
Проверяем что интернет не перестал работать:
ping changelogs.ubuntu.com
Может быть что команда выше пытается по IP6 работать тогда попробовать по
ping -4 changelogs.ubuntu.com
Либо так:
ping6 changelogs.ubuntu.com
Взглянем на текущие DNS сервера, у меня такое выдало: DNS Servers: 195.210.46.195 195.210.46.132 на команду ниже:
resolvectl status
Отредактировал файл /etc/systemd/resolved.conf заменив nameservers на 8.8.8.8 и 8.8.4.4
Проверяем структуру файла командой: sudo yamllint /etc/netplan/50-cloud-init.yaml
Применяем настройки:
sudo netplan apply
Проверяем что настройки изменились:
resolvectl status
Изменил /etc/systemd/resolved.conf настроив так:
[Resolve]
DNS=8.8.8.8 8.8.4.4
FallbackDNS=1.1.1.1 1.0.0.1
Потом перезагрузил:
sudo systemctl restart systemd-resolved
Проверяем что заняло порт 53 командой:
sudo lsof -i :53
Выдало:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 670 systemd-resolve 13u IPv4 20070 0t0 UDP localhost:domain
systemd-r 670 systemd-resolve 14u IPv4 20071 0t0 TCP localhost:domain (LISTEN)
Останавливаем systemd-resolved (поисковик IP по домену по умолчанию от Ubuntu)
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
********** PowerAdmin **********
Устанавливаю PowerAdmin согласно: https://phoenixnap.com/kb/powerdns-ubuntu#ftoc-heading-6
sudo apt install libpq-dev
sudo apt install python3-dev
sudo apt install python3-flask
sudo apt install python3-pip
pip install flask-mail && pip install Flask-Migrate && pip install flask-session && pip install python-ldap && pip install flask-login && pip install qrcode[pil] && pip install pytimeparse && pip install dnspython && pip install flask-seasurf && pip install flask-session-captcha && pip install zxcvbn && pip install authlib && pip install pyotp && pip install flask-login && pip install lima && pip install flask-assets && pip install lima && pip install psycopg2 && pip install asyncpg
sudo apt install -y git libmysqlclient-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https python3-venv build-essential curl
sudo apt install -y nodejs
sudo apt install -y yarn
Clone the PowerDNS Admin Git repository to /opt/web/powerdns-admin
git clone https://github.com/PowerDNS-Admin/PowerDNS-Admin.git /opt/web/powerdns-admin
cd /opt/web/powerdns-admin
python3 -mvenv ./venv
source ./venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
Конфигугрируем PowerDNS Admin.
Для начала копирую пример конфигураци, потом открываю его в редакторе:
cp /opt/web/powerdns-admin/configs/development.py /opt/web/powerdns-admin/configs/production.py
mcedit /opt/web/powerdns-admin/configs/production.py
И редактируем следующие строки:
#import urllib.parse
SECRET_KEY = 'e951e5a1f4b94151b360f47edf596dd0'
SQLA_DB_PASSWORD = 'changeme'
Cекретный ключ можно сгенерировать при помощи такой команды: python3 -c "import os; print(os.urandom(16))"
Также настраиваю подключение к базе данных (сам строку составил):
SQLALCHEMY_DATABASE_URI = 'postgresql://powerdns:y7HMHi0ATxx1VC3UU5WG@127.0.0.1/powerdnsadmin'
Остальное коментирую:
#SQLA_DB_USER = 'powerdns'
#SQLA_DB_PASSWORD = 'y7HMHi0ATxx1VC3UU5WG'
#SQLA_DB_HOST = '127.0.0.1'
#SQLA_DB_NAME = 'powerdnsadmin'
#SQLALCHEMY_DATABASE_URI = 'postgres://{}:{}@{}/{}'.format(
# urllib.parse.quote_plus(SQLA_DB_USER),
# urllib.parse.quote_plus(SQLA_DB_PASSWORD),
# SQLA_DB_HOST,
# SQLA_DB_NAME
#)
#SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'pdns.db')
Экспортируем переменную:
cd /opt/web/powerdns-admin
export FLASK_CONF=../configs/production.py
export FLASK_APP=powerdnsadmin/__init__.py
Upgrade the database schema:
flask db upgrade
устанавливаем другие зависемости:
sudo apt install npm
sudo apt remove yarn
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt update
sudo apt install yarn
yarn --version
sudo yarn install --pure-lockfile
flask assets build
Можно запускать:
./run.py
Проже запустить с использованием SQLite по инструкции из: https://github.com/PowerDNS-Admin/PowerDNS-Admin/blob/master/docs/wiki/install/Running-PowerDNS-Admin-on-Ubuntu-or-Debian.md
SALT = '$2b$12$yLUMTIfl21FKJQpTkRQXC0'
SECRET_KEY = 'e951e5a1f4b94151b360f47edf596dd0'
****************************************************************************************************
Установка сервиса обмена сообщениями RabbitMQ менеджер сообщений (message broker), написан на Erlang, ближайший аналог в AWS SQS. По документации из: https://rtfm.co.ua/ru/rabbitmq-zapusk-opisanie-primery/
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt install rabbitmq-server
Посмотреть список используемых плагинов:
sudo rabbitmq-plugins list
Активируем плагин rabbitmq_management для наблюдения за системой по HTTP https://www.rabbitmq.com/management.html https://thewebland.net/development/devops/chast-3-interfejs-upravleniya-rabbitmq/#:~:text=RabbitMQ%20Management%20%20это%20удобный%20интерфейс,и%20отправлять%20%2F%20получать%20сообщения%20вручную.
sudo rabbitmq-plugins enable rabbitmq_management
rabbitmq_management активирует поддержку API на порту 15672: http://192.168.0.144:15672 http://10.1.7.70:15672 http://192.168.0.83:15672
Но для активации нужно добавить пользователя, смотрим пользователей:
sudo rabbitmqctl list_users
sudo rabbitmqctl add_user admin paRabbit! или test test для локального тестового сервера
sudo rabbitmqctl set_user_tags admin administrator
sudo rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
Также можно создать пользователя для публикации сообщений но уже это можно сделать через WEB интерфейс: producer lgGDWAJEwI для guest с паролем: efewG!4ev Александра: alex jefruf!43
Теперь можно логинется по test test поменять пароль можно: https://kb.vmware.com/s/article/323520#:~:text=Log%20in%20to%20the%20RabbitMQ,host%20where%20RabbitMQ%20is%20installed.
Или так можно поменять пароль: sudo rabbitmqctl change_password zenoss New-Password
producer: клиент, выполняющий отправку сообщения
queue: собственно очередь сообщений
consumer: клиент, получающий сообщения из очереди
exchange: получает сообщения от producer, и отправялет их в очереди в соответствии с его типом (см. тут https://www.rabbitmq.com/tutorials/tutorial-three-python.html)
Дальше можно пробовать отправлять данные в очередь используя допустим java библиотеку урок: https://www.youtube.com/watch?v=6lPK_LgTZ9Y
https://www.rabbitmq.com/devtools.html :
Создаю Maven проект в консоли:
cd O:\projects\Workspace_Java\
mvn archetype:generate -DgroupId=kz.istt.app -DartifactId=TransitToRabbitMQ -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Открываю его в idea64 и добавляю в POM следующую зависемость из https://mvnrepository.com/artifact/com.rabbitmq/amqp-client:
<!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.14.2</version>
</dependency>
Также поставил C:\Program Files\Java\jdk-14.0.2 а то не запускалось, также просит рут права для IntelliJ IDEA.
Урок создания maven проекта: https://devcolibri.com/unit/урок-1-подготовка-и-создание-maven-проекта/
или https://www.jetbrains.com/idea/guide/tutorials/working-with-maven/creating-a-project/
Добавил в POM файл:
<repositories>
<repository>
<name>RabbitMQ</name>
<url>https://repo1.maven.org/maven2/com/rabbitmq/amqp-client/5.16.0</url>
<id>com.rabbitmq</id>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.16.0</version>
</dependency>
</dependencies>
Перезагружаем:
sudo service rabbitmq-server restart
****************************************************************************************************
Установка Shovels Plugin для RabbitMQ (лопата) по мотивам из: https://www.rabbitmq.com/docs/shovel
Активирую плагин командой:
sudo rabbitmq-plugins enable rabbitmq_shovel
sudo rabbitmq-plugins enable rabbitmq_shovel_management
Настраиваю Shovels Dynamic плагин в RabbitMQ через командную строку:
sudo rabbitmqctl set_parameter shovel kaz_to_kaz '{
"src-protocol": "amqp091",
"src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation",
"src-queue": "TO_KAZ",
"dest-protocol": "amqp091",
"dest-uri": "amqp://admin:paRabbit!@10.101.1.11:20000/playground",
"dest-exchange": "swap",
"dest-exchange-key": ".KAZ.",
"ack-mode": "on-confirm",
"publish-properties": {
"delivery_mode": 2
}
}'
Для Росии такие настройки:
sudo rabbitmqctl set_parameter shovel kaz_to_rus '{
"src-protocol": "amqp091",
"src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation_rus",
"src-queue": "TO_RUS",
"dest-protocol": "amqp091",
"dest-uri": "amqp://iktt_kaz:jkrjHL7xj7PrW1D@192.168.89.133:20000/playground",
"dest-exchange": "swap",
"dest-exchange-key": "KZ",
"ack-mode": "on-confirm",
"publish-properties": {
"delivery_mode": 2
}
}'
Для Беларусии такие настройки:
sudo rabbitmqctl set_parameter shovel kaz_to_blr '{
"src-protocol": "amqp091",
"src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation_blr",
"src-queue": "TO_BLR",
"dest-protocol": "amqp091",
"dest-uri": "amqp://KZ_IKTT:DK34xDNlZQfQ551k@192.168.90.133:20000/plumber",
"dest-exchange": "eec.swap",
"dest-exchange-key": "KZ",
"ack-mode": "on-confirm",
"publish-properties": {
"delivery_mode": 2
}
}'
Для Армении такие настройки:
sudo rabbitmqctl set_parameter shovel kaz_to_arm '{
"src-protocol": "amqp091",
"src-uri": "amqp://admin:password@127.0.0.1:20000/transportation_arm",
"src-queue": "TO_ARM",
"dest-protocol": "amqp091",
"dest-uri": "amqp://kz_istt:password@192.168.89.158:20000/transportation",
"dest-exchange": "swap_kz",
"dest-exchange-key": "KZ_ISTT",
"ack-mode": "on-confirm",
"publish-properties": {
"delivery_mode": 2
}
}'
Для Кыргызстана (таможенная инфраструктура)
sudo rabbitmqctl set_parameter shovel kaz_to_kgz '{
"src-protocol": "amqp091",
"src-uri": "amqp://admin:paRabbit!@127.0.0.1:20000/transportation_kgz",
"src-queue": "TO_KGZ",
"dest-protocol": "amqp091",
"dest-uri": "amqp://kz_istt:uzZNYbVTElMDXnfwQx16@192.168.70.133:20000/transportation_kaz",
"dest-exchange": "swap",
"dest-exchange-key": "KAZ",
"ack-mode": "on-confirm",
"publish-properties": {
"delivery_mode": 2
}
}'
Удалять так:
sudo rabbitmqctl clear_parameter shovel kaz_to_kgz
Для отправки из Киргизии нам то такие настройки:
sudo rabbitmqctl set_parameter shovel kgz_to_kaz '{
"src-protocol": "amqp091",
"src-uri": "amqp://admin:pfta2OFt@127.0.0.1:20000/transportation_kaz",
"src-queue": "TO_KAZ",
"dest-protocol": "amqp091",
"dest-uri": "amqp://kg_amap:qrd2fjEjkegdi7bfb@192.168.70.134:20000/transportation_kgz",
"dest-exchange": "swap",
"dest-exchange-key": "KGZ",
"ack-mode": "on-confirm",
"publish-properties": {
"delivery_mode": 2
}
}'
Удалять так:
sudo rabbitmqctl clear_parameter shovel kgz_to_kaz
Чтобы проверить текущие параметры Shovel:
sudo rabbitmqctl list_parameters
А также можно взглянуть что создалось через WEB интерфейс
Не забывать что Exchange: swap должен быть не "direct" а как "topic" иначе маршрутизация не сработает.
****************************************************************************************************
Установка wxWidgets на Linux mint, скачал 3.0.5 по инструкции из https://www.binarytides.com/install-wxwidgets-ubuntu/
sudo apt-get install libgtk-3-dev build-essential checkinstall
mkdir gtk-build
cd gtk-build
../configure --disable-shared --enable-unicode
make
sudo make install
sudo ldconfig
sudo checkinstall
****************************************************************************************************
Wildfly (JBoss) https://helpingbox.net/ru/установите-и-настройте-wildfly-jboss-в-ubuntu-18-04-lts
****************************************************************************************************
Установка Redmine на Ubuntu 22.04 по https://www.redmine.org/projects/redmine/wiki/HowTo_Install_Redmine_50x_on_Ubuntu_2004_with_Apache2
Потом скопировать и подправить на PostgreSQL
admin admin поменял на admin deSert!123
Готово теперь можно авторизоваться через WEB интерфейс
Username: admin
Password: admin
****************************************************************************************************
Установка расширения https://github.com/michelp/pgjwt на ubuntu сервер
Для компиляции устанавливаю (На тестовую машину, не боевую):
sudo apt-get update
sudo apt-get install postgresql-server-dev-14
apt install ca-certificates curl gnupg lsb-release
Остановился на том что потребовало установить докер при компиляции: https://www.cherryservers.com/blog/how-to-install-and-use-docker-compose-on-ubuntu-20-04
sudo apt-get install docker-compose-plugin
sudo apt-get install docker-compose-plugin
Клонирую репозиторий:
sudo apt install git
git clone https://github.com/michelp/pgjwt.git
Потом
make
Ошибка на мейке...
install
****************************************************************************************************
Install Redis по мативам: https://timeweb.cloud/tutorials/redis/ustanovka-i-nastrojka-redis-dlya-raznyh-os
sudo apt-get update
sudo apt install redis
redis-cli --version
sudo systemctl status redis
Config:
sudo mcedit /etc/redis/redis.conf
И меняем в конфигурации на: supervised systemd
Также желательно проверить настройку чтобы слушался только IP: 127.0.0.1
bind 0.0.0.0
Также в поле SECURITY нужно установить пароль, сгенерированный при помощи:
openssl rand 25 | openssl base64 -A
Примерно такой должен быть получиться:
requirepass 9F3/NKWeOjd815vkadT2DcgVHf6fEpVQXw==
Перезагружаем:
sudo systemctl restart redis-server
Проверяем Redis:
redis-cli
Или так проверяем:
redis-cli -h 127.0.0.1 -p 6379 -a 9F3/NKWeOjd815vkadT2DcgVHf6fEpVQXw==
И пишем: ping
Проверяем какие порты прослушиваются на компе:
sudo netstat -lnp | grep redis
****************************************************************************************************
Для настройки локального сервера имен DNS сервер в место Bind9 теперь Dnsmasq так как он проще, понадобилось для haproxy
sudo apt-get install dnsmasq
sudo apt-get install resolvconf
sudo apt-get install net-tools
sudo apt-get install net-tools
На ошибку "failed to create listening socket for port 53: Address already in use" не обрашаем внимания это норма.
Настраиваем пакеты:
sudo mcedit /etc/dnsmasq.conf
Там будет всё закоментированно, добавляем это:
no-resolv
server=8.8.8.8
listen-address=127.0.0.1
bind-interfaces
Далее добавляем пути в /etc/hosts пример
127.0.0.1 jwt.local
Перезагружаеи
sudo /etc/init.d/dnsmasq restart
Проверяем:
telnet 127.0.0.1 53
dig @127.0.0.1 -p 53 jwt.local
****************************************************************************************************
Установка GitLab на Ubuntu сервер по https://itslinuxfoss.com/install-gitlab-ubuntu-22-04/
sudo apt update && sudo apt upgrade -y
sudo apt install tzdata curl ca-certificates openssh-server
sudo apt install curl debian-archive-keyring lsb-release ca-certificates apt-transport-https software-properties-common -y
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo apt install gitlab-ce
Также для CI/CD устанавливаем runner, выполняет команды из .gitlab-ci.yml описание: https://habr.com/ru/companies/slurm/articles/306596/
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
sudo apt-get install gitlab-runner
Редактируем имя хоста:
sudo mcedit /etc/gitlab/gitlab.rb
И прописываем туда
external_url 'http://gitlab.local:8081'
Затем:
sudo gitlab-ctl reconfigure
Как завершиться, проверяем:
sudo gitlab-ctl status
Должно выдать быть что-то в роде:
run: alertmanager: (pid 92581) 18s; run: log: (pid 92343) 80s
run: gitaly: (pid 92590) 18s; run: log: (pid 91561) 189s
run: gitlab-exporter: (pid 92551) 20s; run: log: (pid 92078) 98s
run: gitlab-kas: (pid 92520) 22s; run: log: (pid 91845) 175s
run: gitlab-workhorse: (pid 92531) 21s; run: log: (pid 91985) 117s
run: grafana: (pid 92610) 17s; run: log: (pid 92471) 38s
run: logrotate: (pid 91486) 202s; run: log: (pid 91494) 201s
run: nginx: (pid 91993) 114s; run: log: (pid 92013) 110s
run: node-exporter: (pid 92540) 21s; run: log: (pid 92049) 104s
run: postgres-exporter: (pid 92601) 18s; run: log: (pid 92367) 76s
run: postgresql: (pid 91693) 184s; run: log: (pid 91704) 183s
run: prometheus: (pid 92560) 20s; run: log: (pid 92297) 88s
run: puma: (pid 91904) 132s; run: log: (pid 91917) 129s
run: redis: (pid 91521) 196s; run: log: (pid 91538) 193s
run: redis-exporter: (pid 92553) 20s; run: log: (pid 92217) 94s
run: sidekiq: (pid 91922) 126s; run: log: (pid 91934) 122s
Теперь можно задать логин пользователя (команда долго инициализируется)
sudo gitlab-rake "gitlab:password:reset"
Пользователь: root пароль: q12!qwW@ww
Пробуем зайти по http://gitlab.local:8081 прописав домен в hosts
Для настройки непрерывного развёртывания испотльзовать инструкцию: https://serverspace.ru/support/help/nastrojka-konvejera-nepreryvnogo-razvertyvaniya--gitlab-ubuntu-20-22/?utm_source=google.com&utm_medium=organic&utm_campaign=google.com&utm_referrer=google.com
Клонирование через токен так:
https://oauth2:PERSONAL_ACCESS_TOKEN@git.istt.kz/locust/org.ccalm.jwt.git
https://oauth2:glpat-MCMi4iPS8GQzUusT3XUC@git.istt.kz/locust/org.ccalm.jwt.git
https://oauth2:glpat-fseNuqu3Ftb7zwjv-kbT@git.istt.kz/locust/org.ccalm.dbms.git
https://oauth2:glpat-5fJzjVymFqVumq6FC1yq@git.istt.kz/locust/org.ccalm.main
https://oauth2:glpat-sKQh2x88gsmZbBCz4SfJ@git.istt.kz/transit/dispatcher/kz.istransit.dispatcher
****************************************************************************************************
Установка nginx по инсткукции с сайта: https://www.8host.com/blog/sozdanie-samopodpisannogo-ssl-sertifikata-dlya-nginx-v-ubuntu-18-04/
sudo apt-get update
sudo apt-get install nginx
Настройка самоподписанного сертификата для SSL nginx
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
Самой важной строкой является Common Name (введите FQDN или свое имя). Как правило, в эту строку вносят доменное имя, с которым нужно связать сервер. В случае если доменного имени нет, внесите в эту строку IP-адрес сервера.
sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096
Создаём файл:
sudo mcedit /etc/nginx/conf.d/ssl.conf
И вписываем в него:
server {
listen 8091 ssl http2;
listen [::]:8091 ssl http2;
server_name istransit.kg;
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
ssl_dhparam /etc/nginx/dhparam.pem;
root /opt/www/istransit.kg;
index index.html index.htm;
location / {
try_files $uri $uri/ =404; # Попытка найти файл или возвращение 404
}
}
sudo systemctl restart nginx
Также есть такие команды:
nginx -s stop — быстрое завершение
nginx -s quit — плавное завершение
nginx -s reload — перезагрузка конфигурационного файла
nginx -s reopen — переоткрытие лог-файлов
Создаю виртуальный хост:
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/istransit.kz
sudo mcedit /etc/nginx/sites-available/aistransit.kz
Модифицируем текст настройки:
server {
listen 8081;
listen [::]:8081;
root /opt/www/istransit.kz;
index index.html;
server_name istransit.kz www.istransit.kz;
location / {
try_files $uri $uri/ =404;
}
}
Теперь можно включить виртуальный хост:
sudo ln -s /etc/nginx/sites-available/istransit.kz /etc/nginx/sites-enabled/
Проверяем правильность конфигурации:
sudo nginx -t
Перезапускаем:
sudo systemctl restart nginx
****************************************************************************************************
Как установить и настроить Elasticsearch, Logstash, Kibana (ELK Stack) на Ubuntu, Debian, Centos: https://portforwarded.com/install-elastic-elk-stack-8-x-on-ubuntu-22-04-lts/ или https://serveradmin.ru/ustanovka-i-nastroyka-elasticsearch-logstash-kibana-elk-stack/
sudo apt update && sudo apt upgrade -y
Установи java как это делается смотри выше
sudo apt-get install nginx curl gnupg2 wget -y
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
sudo apt-get install apt-transport-httpssudo
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
sudo apt update
sudo apt-get install elasticsearch
Если не удалось подключить ключи к репозиторию то скачиваем deb пакет в ручную:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.2-amd64.deb
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
sudo mcedit /etc/elasticsearch/elasticsearch.yml
И там раскоментить и прописать строку: network.host: 0.0.0.0
Также там поправить на: xpack.security.enabled: false
sudo systemctl restart elasticsearch
Проверяю версию Elasticsearch
sudo ufw allow 9200/tcp
curl -X GET "http://localhost:9200/"
У меня выдало:
{
"name" : "igor-System-Version",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "Li0_4xz2QTuy8ET7qRLTgg",
"version" : {
"number" : "8.13.2",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "16cc90cd2d08a3147ce02b07e50894bc060a4cbf",
"build_date" : "2024-04-05T14:45:26.420424304Z",
"build_snapshot" : false,
"lucene_version" : "9.10.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
**********Теперь устанавливаем Kibana**********
sudo apt-get install kibana -y
sudo systemctl start kibana
sudo systemctl enable kibana
Создаём административного пользователя:
sudo su
echo "admin:`openssl passwd -apr1`" | tee -a /etc/nginx/htpasswd.users
Выдало:
Дома: admin:$apr1$sFyWSvZH$E8tL1Zbo.i8q2vSsVy1HK/
На в виртуалке работа пароль 123456 выдало: admin:$apr1$/n5ACpeE$WZBtYrZOgZ10GfdT4YFD31
Далее создаём в Nginx виртуальный хост, создав конфигурационный файл для сервиса кибаны:
sudo mcedit /etc/nginx/sites-available/kibana
server {
listen 80;
server_name kibana.example.com;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd.users;
location / {
proxy_pass http://localhost:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Разрешаем виртуальный хост для проксирования:
sudo ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
sudo systemctl restart nginx
sudo systemctl status nginx
Теперь кибана должна открыться по адресу: kibana.example.com если не открылась перезагружаем комп
*********Устанавливаю logstash**********
sudo apt install logstash
sudo systemctl restart logstash.service
sudo systemctl enable logstash.service
sudo systemctl status logstash.service
По документу из: https://habr.com/ru/articles/236341/ и из https://coderlessons.com/tutorials/devops/uznaite-logstash/logstash-kratkoe-rukovodstvo
Настраиваю logstash открываю потр для отправки логов из Java приложения log4j:
Так как установили через репозиторий то для включения плагина Log4j он включается командой:
sudo su
/usr/share/logstash/bin/logstash-plugin install logstash-input-log4j
Так как logstash загрузает все конфигурации из деректории то создаю новый файл для log4j
mcedit /etc/logstash/conf.d/log4j.conf
И теперь можно настроить для приёма log4j логов:
input {
log4j {
mode => server
host => "0.0.0.0"
port => 5044
type => "log4j"
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "igor-%{+YYYY.MM.dd}"
#index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
Затем нужно перезагрузить:
sudo systemctl restart logstash.service
*********Устанавливаю filebeat**********
apt install filebeat
****************************************************************************************************
**********Устанавливаю Loki в месте с Grafana и другими компонентами (Promtail)**********
Согласно документации из: https://grafana.com/docs/loki/latest/get-started/quick-start/ Для Лва: https://www.youtube.com/watch?v=PBfKDyNPBug
Создаём директорию в:
cd /opt
mkdir loki
cd loki
wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/loki-config.yaml -O loki-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/promtail-local-config.yaml -O promtail-local-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/main/examples/getting-started/docker-compose.yaml -O docker-compose.yaml
Меням настройки, прописав в самый конец файла: loki-config.yaml следующее:
auth_enabled: false
Запускаем:
sudo docker compose up -d
Если нужно то для остановки можно выполнить следующую команду:
sudo docker compose down
Пробуем открыть графану:
http://127.0.0.1:3000/ Логин: admin и пароль admin потом сгенерил пароль: gL%$FXVUrjP7zFf
Теперь можно отправить тестовую строку в логи label “foo=bar2” and a single log line “fizzbuzz”:
curl -H "Content-Type: application/json" \
-s -X POST "http://127.0.0.1:3100/loki/api/v1/push" \
--data-raw '{"streams": [{ "stream": { "foo": "bar2" }, "values": [ [ "1717279123945000000", "fizzbuzz" ] ] }]}'
**********Устанавливаю Promtail**********
По мотивам: https://tech.pansolusi.com/2023/08/04/installing-promtail-on-ubuntu/
cd /opt
mkdir promtail
cd promtail
curl -O -L "https://github.com/grafana/loki/releases/download/v2.9.7/promtail-linux-amd64.zip"
unzip "promtail-linux-amd64.zip"
promtail -version
sudo mcedit /opt/promtail/promtail-local-config.yaml
И записываем в файл:
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: 'http://localhost:3100/loki/api/v1/push'
basic_auth:
username: alexander
password: eakrdutpnhjaE2EFrAoi
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /var/log/*log
- targets:
- localhost
labels:
job: nginx
__path__: /var/log/nginx/*log
Создаём сервис для запуска Promtail
sudo mcedit /etc/systemd/system/promtail.service
И записываем:
[Unit]
Description=Promtail client for sending logs to Loki
After=network.target
[Service]
ExecStart=/opt/promtail/promtail -config.file=/opt/promtail/promtail-local-config.yaml
Restart=always
TimeoutStopSec=3
[Install]
WantedBy=multi-user.target
Запускаем:
sudo service promtail start
sudo service promtail stop
sudo service promtail restart
sudo service promtail status
sudo systemctl enable promtail
Смотрим логи:
sudo journalctl -u promtail.service
Теперь можно смотреть в графане логи: http://127.0.0.1:3000/ с label = file
Также можно взглянуть на простой WEB интерфейс promtail: http://127.0.0.1:9080
**********Устанавливаю Prometheus согласно инструкции из https://ruvds.com/ru/helpcenter/kak-ustanovit-prometheus-na-ubuntu/ **********
Установка Prometheus
sudo apt update &&
sudo apt upgrade -y &&
sudo useradd --no-create-home --shell /bin/false prometheus &&
sudo mkdir /etc/prometheus &&
sudo mkdir /var/lib/prometheus &&
sudo chown prometheus:prometheus /etc/prometheus &&
sudo chown prometheus:prometheus /var/lib/prometheus &&
cd /tmp &&
wget https://github.com/prometheus/prometheus/releases/download/v3.1.0/prometheus-3.1.0.linux-amd64.tar.gz &&
tar xvf prometheus-3.1.0.linux-amd64.tar.gz &&
sudo cp prometheus-3.1.0.linux-amd64/prometheus /usr/local/bin/ &&
sudo cp prometheus-3.1.0.linux-amd64/promtool /usr/local/bin/ &&
sudo chown prometheus:prometheus /usr/local/bin/prometheus &&
sudo chown prometheus:prometheus /usr/local/bin/promtool &&
rm -rf prometheus-3.1.0.linux-amd64.tar.gz prometheus-3.1.0.linux-amd64
Настройка Prometheus
Создайте файл конфигурации prometheus.yml:
sudo mcedit /etc/prometheus/prometheus.yml
Прописал туда настройки:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
Созданём systemd-сервис:
sudo mcedit /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
--config.file /etc/prometheus/prometheus.yml \
--storage.tsdb.path /var/lib/prometheus/
[Install]
WantedBy=multi-user.target
Запускаю сервис:
sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
sudo systemctl status prometheus
Пробуем открыть по адресу:
http://192.168.200.84:9090
Теперь настраиваем сбор логов при помощи node exporter (по мотивам из https://it-dev-journal.ru/articles/monitoring-linux-servera-s-prometheus-node-exporter):
Последний билд: https://github.com/prometheus/node_exporter/releases
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
tar xf node_exporter-*.tar.gz
cd node_exporter-1.8.2.linux-amd64
sudo cp node_exporter /usr/local/bin
sudo useradd --no-create-home --home-dir / --shell /bin/false node_exporter
Создаём сервис:
sudo mcedit /etc/systemd/system/node_exporter.service
[Unit]
Description=Prometheus Node Exporter
After=network.target
[Service]
Type=simple
User=node_exporter
Group=node_exporter
ExecStart=/usr/local/bin/node_exporter
SyslogIdentifier=node_exporter
Restart=always
PrivateTmp=yes
ProtectHome=yes
NoNewPrivileges=yes
ProtectSystem=strict
ProtectControlGroups=true
ProtectKernelModules=true
ProtectKernelTunables=yes
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
sudo systemctl status node_exporter
Теперь Node exporter будет выдавать метрики по адресу
wget http://localhost:9100/metrics -O -
wget --user=prometheus --password=PUaAMOhUEOmDmcsJDFWA https://geoserver2.ccalm.org/metrics -O -
Настраиваем HAProxy и basic авторизацию (если писать: insecure-password то пароль не захеширован если написать password то должен быть в md5 лил SHA-*):
userlist prometheus_list
user prometheus insecure-password PUaAMOhUEOmDmcsJDFWA
acl v_metrics path_beg /metrics
acl v_basic_auth http_auth(prometheus)
http-request auth realm Metrics if v_metrics !v_basic_auth
use_backend metrics if v_metrics
backend metrics
balance roundrobin
server web1 127.0.0.1:9100 check
option httpchk
Теперь нужно отредактировать файл sudo mcedit /etc/prometheus/prometheus.yml, добавив новый job_name в scrape_configs с этим адресом.
- job_name: 'node_exporter_metrics'
scrape_interval: 10s
static_configs:
- targets: ['localhost:9100']
Перезагружаем prometheus чтобы он начал собирать метрики
sudo systemctl restart prometheus
Смотрим:
http://192.168.200.84:9090/targets
Далее устанавливаем графану и добавляем графики для мониторинга
sudo apt-get install -y software-properties-common
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt-get install -y gnupg
sudo apt-get install -y apt-transport-https
sudo wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install grafana
Запустите и включите сервис Grafana:
sudo systemctl start grafana-server
sudo systemctl enable grafana-server
Проверьте статус:
sudo systemctl status grafana-server
Открываем:
http://192.168.200.84:3000 Логин: admin Пароль: admin
Заходим в: Home->Connections->Data sources->Add data source
Для Node Exporter есть шаблоны:
Node Exporter Full (ID: 1860) — Полный дашборд для мониторинга серверов с использованием Node Exporter.
Prometheus (ID: 10991) — Дашборд для мониторинга самого Prometheus.
Linux Server Monitoring (ID: 10244) — Дополнительный дашборд для мониторинга серверов на Linux.
Если вам нужно больше вариантов, вы всегда можете найти готовые дашборды на официальном сайте https://grafana.com/grafana/dashboards/
Заходим в графану и в правом верхенем углу жмём + потом Import Dashboard
**********Если нужно то Grafana может быть установленна отдельно **********
Установка GrafanaLoki через Docker Engine и Docker Compose на Ubuntu 24.04
Для установки графаны через докер:
cd /opt
sudo mkdir grafana
cd ./grafana
sudo mcedit docker-compose.yml
И прописываем в файл:
version: "3.3"
services:
grafana:
image: grafana/grafana-enterprise
container_name: grafana
restart: unless-stopped
ports:
- '3000:3000'
loki:
image: grafana/loki:latest
container_name: loki
restart: unless-stopped
ports:
- "3100:3100"
Затем для запуска контейнера выполняем:
sudo docker-compose up -d
Если нужно то для остановки можно выполнить следующую команду:
sudo docker-compose down
Пробуем открыть графану:
http://127.0.0.1:3000/ Логин: admin и пароль admin потом сгенерил пароль: gL%$FXVUrjP7zFf
****************************************************************************************************
Настраиваю Promtail agent для винды для сбора логов c Windows:
Скачал: https://github.com/grafana/loki/releases в разделе Assets файл promtail-windows-386.exe.zip
Переместите файл promtail.exe в каталог, например, C:\Program Files\promtail
Добавьте этот каталог в PATH, чтобы можно было запускать Promtail из командной строки.
Создаём файл конфигурации в C:\Program Files\promtail promtail-config.yaml со следующим содержимым:
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: C:\Program Files\promtail\positions.yaml
clients:
- url: http://192.168.200.106:3100/loki/api/v1/push
scrape_configs:
- job_name: dbms_logs
static_configs:
- targets:
- localhost
labels:
job: dbms_logs
__path__: O:\MyDocuments\projects\Workspace_JavaWin\com.geovizor.dbms\logs\kz_mcp_dbms.log
- job_name: jwt_logs
static_configs:
- targets:
- localhost
labels:
job: jwt_logs
__path__: O:\MyDocuments\projects\Workspace_JavaWin\com.geovizor.jwt\logs\kz_mcp_jwt.log
Замените C:\path\to\positions.yaml и C:\path\to\log\files\*.log на соответствующие вашему окружению пути.
promtail.exe --config.file=promtail-config.yaml
****************************************************************************************************
Установка графаны через докер Grafana в Docker, по мотивам нейросети DeepSeek:
Установка Docker:
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
Установка Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Добавляем текущему пользователю группу чтобы он мог работать с докером:
sudo usermod -aG docker $USER
Проверка установки:
docker --version
docker-compose --version
Создайте директорию, где будут храниться данные Grafana:
sudo mkdir /opt/grafana
sudo mkdir /opt/grafana/data
sudo mkdir /opt/grafana/data/grafana-storage
sudo mkdir /opt/grafana/config
sudo chown -R 472:472 /opt/grafana/data/grafana-storage
sudo chmod -R 775 /opt/grafana/data/grafana-storage
cd /opt/grafana
mcedit docker-compose.yml
И записываем в него такие настройки:
services:
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- /opt/grafana/data/grafana-storage:/var/lib/grafana # Монтируем директорию хоста в контейнер
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
Запускаем графану с логами для тестов:
docker-compose -f /opt/grafana/docker-compose.yml up
Теперь запускае в фоновом режиме:
docker-compose -f /opt/grafana/docker-compose.yml up -d
docker-compose -f /opt/grafana/docker-compose.yml down
Проверяем работу:
docker-compose -f /opt/grafana/docker-compose.yml ps
****************************************************************************************************
Устанавливаю Gitea по мативам: https://linuxize.com/post/how-to-install-gitea-on-ubuntu-20-04/
sudo apt update
sudo apt install sqlite3
sudo apt install git
git --version
sudo adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git
VERSION=1.22
sudo wget -O /tmp/gitea https://dl.gitea.io/gitea/${VERSION}/gitea-${VERSION}-linux-amd64
sudo mv /tmp/gitea /usr/local/bin
sudo chmod +x /usr/local/bin/gitea
Создаём директории для хранения данных:
sudo mkdir -p /var/lib/gitea/{custom,data,log}
sudo chown -R git:git /var/lib/gitea/
sudo chmod -R 750 /var/lib/gitea/
sudo mkdir /etc/gitea
sudo chown root:git /etc/gitea
sudo chmod 770 /etc/gitea
sudo wget https://raw.githubusercontent.com/go-gitea/gitea/main/contrib/systemd/gitea.service -P /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now gitea
sudo systemctl status gitea
Отобразило что можно зайти по: http://localhost:3000/
Выбираем Database Type: SQLite3 остальные настройки можно оставить по умолчанию
Установил и задал логин: irigm@mail.ru пароль: PF"Ey7#7]mUZ49s
Устанавливаем параметры только чтение:
sudo chmod 750 /etc/gitea
sudo chmod 640 /etc/gitea/app.ini
По мотивам на сайте ещё описывается как сделать проксирование через nginx
А также как сделать отправку почты
А также как обновит если что
**********CI/CD**********
Устанавливаю по инструкции из: https://gitea.com/gitea/act_runner
Скачиваю act_runner с https://about.gitea.com/products/runner/ в директорию: /usr/local/bin
Задаём права:
sudo chown root:root /usr/local/bin/act_runner
Проверяю версию:
act_runner --version
Выдало: v0.2.6
Записываем в конец файла /etc/gitea/app.ini следующие настройки:
[actions]
ENABLED=true
Потом:
sudo systemctl restart gitea
Далее переходим в настройки проекта в пункт "Действия": "Создать новый раннер"
Там был токен: CIaWAmzI4jYUCRnQcUCdBFPkg4FPGspnjdpqiqXl
Создаю каталог:
/etc/act_runner
Генерю конфиг по умолчанию:
act_runner generate-config > config.yaml
Регистрирую новый runner
act_runner register
В WEB интерфейсе gitea появится но похоже от туда можно только удалить.
Можно попробовать запустить runner:
act_runner daemon
Регистрация с конфигурационным файлом:
act_runner -c config.yaml register
Запуск с конфигурационным файлом
act_runner -c config.yaml daemon
Можно запустить act_runner как сервис, создав файл: sudo mcedit /etc/systemd/system/act_runner.service но нужно создать ползоветеля без привилений, такого: act_runner
Но у меня почему то не запустилось...
Так:
sudo adduser --disabled-password act_runner
sudo passwd act_runner
su act_runner
Давать права не обязательно: sudo chown root:root /usr/local/bin/act_runner
[Unit]
Description=Gitea Actions runner
Documentation=https://gitea.com/gitea/act_runner
After=docker.service
[Service]
ExecStart=/usr/local/bin/act_runner daemon --config /etc/act_runner/config.yaml
ExecReload=/bin/kill -s HUP $MAINPID
WorkingDirectory=/var/lib/act_runner
TimeoutSec=0
RestartSec=10
Restart=always
User=act_runner
[Install]
WantedBy=multi-user.target
Запускаем как сервис:
sudo systemctl daemon-reload
sudo systemctl enable act_runner
sudo systemctl restart act_runner
sudo systemctl stop act_runner
sudo systemctl start act_runner
sudo systemctl status act_runner
Посмотреть на лог:
grep "act_runner" /var/log/syslog
# .gitea/workflows/publish.yml
on:
push:
branches:
- main
workflow_dispatch:
jobs:
run_pull:
name: run pull
runs-on: igor
steps:
- name: CreateDate
run: touch /home/igor/runner/$(date +"%Y-%m-%d_%H-%M-%S").txt
****************************************************************************************************
Устанавливаю из Node.js из не стандартного репозитория так как там v12.22.9 а нужно >= 18 версия
Удаляем старое:
sudo apt-get remove nodejs npm
Устанавливаем новое:
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v
npm -v
****************************************************************************************************
LDAP — легковесный протокол доступа к каталогам (Для адрестной книги)
sudo apt install slapd ldap-utils
sudo dpkg-reconfigure slapd
Настраиваем в файле: /etc/ldap/ldap.conf
BASE dc=domain,dc=com
URI ldap://ldap01.domain.com
****************************************************************************************************
Простой инструмент для мониторинга ресурсов сервера:
sudo apt install netdata
systemctl restart netdata
sudo mcedit /etc/netdata/netdata.conf
# bind socket to IP = 127.0.0.1
bind socket to IP = 0.0.0.0
systemctl restart netdata
Можно открывать по адресу:
http://10.101.1.3:19999/
http://10.101.1.6:19999/
****************************************************************************************************
Install .NET SDK or .NET Runtime on Ubuntu
sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0
sudo apt-get install -y aspnetcore-runtime-8.0
sudo apt-get install -y dotnet-runtime-8.0
sudo apt install zlib1g
Теперь можно запустить C# ASP.NET Core
****************************************************************************************************
ssl genkeypair spring boot java
Генерим самоподписанный SSL сертификат:
keytool -genkeypair -alias weather -keyalg RSA -keystore keystore.jks -keysize 2048 -validity 3650
Потом прописать настройки:
server:
port: 8081
ssl:
key-store: classpath:keystore.jks
key-store-password: QyKtWPZB
key-store-type: JKS
key-alias: weather
****************************************************************************************************
Для разрешения поиска через Samba и NetBIOS:
sudo apt update
sudo apt install samba
sudo systemctl restart smbd
sudo systemctl enable smbd