Majordomo - SrFatCat/LinuxHelp GitHub Wiki

Общее

sudo vcgencmd measure_volts # напряжение ядра
sudo vcgencmd measure_temp #температура
уменьшить размер образа

Обновление EEPROM Bootloader малины

sudo rpi-eeprom-update -d -a

Cooler

sudo nano /boot/config.txt 
  #Configure a GPIO pin to control a cooling fan.<br />
  #Load:   dtoverlay=gpio-fan,<param>=<val><br />
  #Params: gpiopin                 GPIO used to control the fan (default 12)<br />
  #       temp                    Temperature at which the fan switches on, in<br />
  #                               millicelcius (default 55000)<br />
  #       hyst                    Temperature delta (in millicelcius) below<br />
  #                               temp at which the fan will drop to minrpm<br />
  #                               (default 10000)<br />
  dtoverlay=gpio-fan,temp=65000 

btop

wget -qO btop.tbz https://github.com/aristocratos/btop/releases/latest/download/btop-armv7l-linux-musleabihf.tbz
sudo tar xf btop.tbz
cp btop/bin/btop /usr/local/bin/
rm btop.tbz
rm -R -f btop/

wiringPi lib установка

wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb

Начальные настройки

sudo raspi-config
	При помощи первого пункта данного окна можно сменить пароль пользователя.
	N2 вводим идентификатор беспроводной сети
	I1 change locale
		[*] ru_RU.UTF-8 UTF-8
	I2 Change Timezone	
	I4 Change Wi-fi Country:
qq	A1 Expand Filesystem
	P2 SSH

Исправление локали

sudo dpkg-reconfigure console-setup
	Управлять в меню вам будут мешать «квадраты», устанавливаем
	Используемая кодировка в консоли: UTF-8
	Используемая таблица символов:
	Определение оптимального набора символов (последний пункт)
	Консольный шрифт:
	Fixed или Позволить системе выбрать подходящий шрифт (последний пункт)
	Размер шрифта: 8x16
	Finish

NAS

cat /proc/filesystems #проверка установленных FS
sudo modprobe cifs #установка файловой системы
sudo ls /lib/modules/$(uname -r)/kernel/fs/cifs/cifs.ko #проверка что версия системы соответствует версии ядра (uname -r)
sudo apt reinstall raspberrypi-kernel && sudo apt reinstall raspberrypi-bootloader && sudo reboot #обновление версии ядра
sudo apt install samba samba-common-bin smbclient cifs-utils #установка cifs
sudo mount.cifs //192.168.0.50/Volume_1 /home/rasberry/nas_x -o user=Alex,password=marus14kaW7,vers=1.0,iocharset=utf8
sudo nano /etc/fstab

//192.168.0.50/Volume_1 /home/rasberry/nas_x cifs rw,username=Alex,password=marus14kaW7,vers=1.0,iocharset=utf8 0 0

SAMBA

sudo apt install samba 
sudo nano /etc/samba/smb.conf

...
[<ресур>]
comment = Shared OPi folder
path = </home/opi/opi_samba>
browseable = no
writeable = Yes
only guest = no
create mask = 0777
directory mask = 0777
public = no

sudo smbpasswd -a <username> #системного пользователя. не существующего добавлять нельзя
sudo service smbd restart

NFS взамен SAMBA

sudo apt install nfs-kernel-server	
sudo nano /etc/exports	
	/home   192.168.0.0/255.255.255.0(rw,sync,no_root_squash,no_subtree_check)
	#для указания конкретного адреса вроде надо писать 192.168.0.1/255.255.255.255
	#специальные шары создаются с chown nobody:nogroup и тогда no_root_squash нужно не указывать, в обычных папках указывать обязательно
	#если async - можно открывать уже занятые файлы, иначе нельзя двже открыть открытые на хосте для чтения
sudo systemctl restart nfs-kernel-server	

В винде NFS Client устанавливать Приложения -> Дополнительные компоненты -> Другие компоненты Windows -> Службы для NFS
Для записи в обычные шары под админом в реестре HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default создать
DWORD32 AnonymousUid = 0 и AnonymousGid = 0 (запись будет под рутом) и перезапустить службу "Клиент для NFS из оснастки 'Службы для NFS' (nfsmgmt.msc)"

Подключать сетевой диск из windows необходимо под anon с пустым паролем или mount -o anon \\KOM-FS01\mnt\vdo-vd1\ovirt-iso-domain I: Чтобы писать под пользователем

sudo nano /etc/exports	
	/home   192.168.0.0/255.255.255.0(rw,sync,no_subtree_check,all_squash,anonuid=1000,anongid=1000)
	#где uid:gid под кем писать можно посмотреть cat /etc/passwd

Нужно ли при этом ковырять реестр в винде - не знаю.

NTP

sudo apt install ntp
sudo nano /etc/ntp.conf

pool ru.pool.ntp.org iburst
server ntp2.vniiftri.ru iburst prefer
server 0.ru.pool.ntp.org
server 1.ru.pool.ntp.org
server 2.ru.pool.ntp.org
server 3.ru.pool.ntp.org
...
restrict 192.168.0.0 mask 255.255.255.0
broadcast 192.168.0.255
broadcast 224.0.1.1

sudo systemctl restart ntp

Вспомогательное

MQTT

sudo apt install mosquitto mosquitto-clients
sudo mosquitto_passwd -c /etc/mosquitto/passwd <user>
#!!! других юзеров добавлять без -c

прописать:
sudo nano /etc/mosquitto/mosquitto.conf

  вначале <br />
  per_listener_settings true <br />

  #в середине или в конце   <br />

allow_anonymous false
listener 1883
password_file /etc/mosquitto/passwd

BLYNK

sudo apt install openjdk-11-jdk-headless -y
sudo apt install openjdk-11-jdk -y
java -version #см. последнюю версию 
wget "https://github.com/blynkkk/blynk-server/releases/download/v0.41.13/server-0.41.13-java8.jar"
wget "https://github.com/Peterkn2001/blynk-server/releases/download/v0.41.17/server-0.41.17.jar"
mkdir Blynk
java -jar server-0.41.17.jar -dataFolder /home/bogdan/Blynk &
sudo nano /etc/rc.local 

java -jar /home/bogdan/Blynk/server-0.41.17.jar -dataFolder /home/bogdan/Blynk &

crontab -e

@reboot java -jar /home/bogdan/Blynk/server-0.41.17.jar -dataFolder /home/bogdan/Blynk &

VPNKI

sudo apt-get install -y pptp-linux #Установим пакет pptp-linux
sudo pptpsetup --create vpnki --server msk.vpnki.ru --username <имя туннеля> --password <пароль туннеля> # Создадим соединени #Подключим туннель
sudo pon vpnki updetach
ifconfig -s #Проверим что создался интерфейс ppp0
ping 172.16.0.1 # Проверим пинг адреса VPNKI
sudo poff vpnki # Отключим туннель
ifconfig -s # Проверим отключение ppp0
sudo nano -B /etc/rc.local # Добавим установление PPTP туннеля при загрузке компьютера, открываем файл

И перед "exit 0" вставляем туда текст
vpn="on"
if [ $vpn = on ]; then
printf "\nVPN connection to VPNKI\n"
pon vpnki updetach &
sleep 5
sudo route add -net "172.16.0.0/16" dev "ppp0" & #Маршрут к сети VPNKI
sudo route add -net "192.168.100.0/24" dev "ppp0" #Например маршрут к "другому" вашему туннелю (в домашнюю сеть 192.168.100.0/24)
printf "Netstat output of all PPTP sockets\n"
netstat -a | grep "/var/run/pptp/"
fi

sudo /etc/rc.local # Тестируем работу local.rc без перезагрузки
sudo systemctl status rc-local # Тестируем работу local.rc без перезагрузки
sudo systemctl restart rc-local 
sudo journalctl -u rc-local

sudo nano -B /etc/ppp/peers/vpnki # В случае обрыва связи нам потребуется автоматическая переустановка соединения, для этого откройте файл

#В конец файла добавьте
persist
maxfail 0
holdoff 10

sudo nano -B /etc/ppp/ip-up.d/routeadd # В случае обрыва связи и ее восстановлении нам также потребуется автоматически прописать маршруты к сети VPNKI и к вашей "другой" сети. Для этого создайте файл

#!/bin/sh -e
route add -net "172.16.0.0/16" dev "ppp0" #Маршрут к сети VPNKI
#route add -net "192.168.100.0/24" dev "ppp0" #Например маршрут к вашей "другой" сети 192.168.100.0/24 (если такая существует через сеть VPNKI)

sudo chmod 755 /etc/ppp/ip-up.d/routeadd # Измените права на исполнение файла при поднятии интерфейса ppp0

RTL_433

Установка в docker здесь

docker run -d --restart always --name RTL_433 --device /dev/bus/usb/001/004 hertzg/rtl_433 -X "n=PIR815K,m=OOK_PWM,s=352,l=1116,r=1180,g=0,t=200,bits=25,get=@0:{25}:id" -F "mqtt://192.168.0.60:1883,user=bogdan,pass=marus14kaMQT9,events=rtl_433"
# или из запущенного контейнера копируем файл конфигурации

Обычная установка

cd /usr/src
sudo apt install git git-core cmake libusb-1.0-0-dev
sudo git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr/ && sudo mkdir build && cd build/
sudo cmake ../ -DINSTALL_UDEV_RULES=ON
sudo make
sudo make install
sudo ldconfig
cd ../..
sudo cp ./rtl-sdr/rtl-sdr.rules /etc/udev/rules.d/
sudo reboot	
sudo nano /etc/modprobe.d/no-rtl.conf
	blacklist dvb_usb_rtl28xxu
	blacklist rtl2832
	blacklist rtl2830
sudo reboot
rtl_test -t
#если не исполняется скрипт (так и не понял о чем. У меня устройство находит, но пишет в конце абортед и он работает)
#lsusb
# получаем вида Bus 005 Device 003: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
#sudo nano /etc/udev/rules.d/rtl-sdr.rules
#	SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", MODE:="0666"
#sudo service udev restart
#sudo reboot
sudo apt install libtool librtlsdr-dev rtl-433
#компиляция из исходников если в репе нет rtl-433
#cd /usr/src
#sudo git clone https://github.com/merbanan/rtl_433.git
#cd rtl_433/ && sudo mkdir build && cd build && sudo cmake ../ && sudo make
#sudo make install
cd /usr/local/etc/rtl_433
sudo cp rtl_433.exmple.conf rtl_433.conf
sudo nano rtl_433.conf
	decoder n=PIR815K,m=OOK_PWM,s=352,l=1116,r=1180,g=0,t=200,bits=25,get=@0:{25}:id #добавляем поддержку ДД PIR815K
nano /home/bogdan/rtl433_test.sh 	
	#!/bin/bash
	if [[ "$(ps -A | grep rtl_433)" != *rtl_433* ]]; then
	    echo "exec"
	    sudo rtl_433 -c /home/bogdan/rtl_433.conf |  mosquitto_pub -h 192.168.0.60 -u bogdan -P marus14kaMQT9 -t rtl_433 -l&
	fi	
crontab -e 
	@reboot /home/bogdan/rtl433_test.sh
	*/1 * * * * /home/bogdan/rtl433_test.sh

ZIGBEE2MQTT

Смотрим сюда

sudo su # это важно!
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - #подключаем	репозитарий, с первого раза не прошло и со второго пока sudo su не сделал
sudo apt install -y nodejs git make g++ gcc
node --version  # Should output v14.X, V16.x, V17.x or V18.X
npm --version  # Should output 6.X, 7.X or 8.X
sudo mkdir /opt/zigbee2mqtt
sudo chown -R ${USER}: /opt/zigbee2mqtt
git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt
cd /opt/zigbee2mqtt
npm ci
#должно закончиться 
#node-pre-gyp info ok
#added 383 packages in 111.613s
#сообщение типа 73 packages are looking for funding означает, что есть пакеты которые хотят твои деньги, платить по желанию
nano /opt/zigbee2mqtt/data/configuration.yaml
npm start
#Ctrl-c
sudo nano /etc/systemd/system/zigbee2mqtt.service
    [Unit]
    Description=zigbee2mqtt
    After=network.target

    [Service]
    Environment=NODE_ENV=production
    ExecStart=/usr/bin/npm start
    WorkingDirectory=/opt/zigbee2mqtt
    StandardOutput=inherit
    # Or use StandardOutput=null if you don't want Zigbee2MQTT messages filling syslog, for more options see systemd.exec(5)
    StandardError=inherit
    Restart=always
    RestartSec=10s
    User=bogdan

    [Install]
    WantedBy=multi-user.target

Majordomo

Оригинальная инструкция по установке

MariaDB

apt4 install mariadb-server mariadb-client -y
sudo mysql -uroot -e "CREATE DATABASE db_terminal;"
sudo mysql -uroot -e "CREATE USER 'majordomo'@'%' IDENTIFIED BY 'marus14kaMJD9';"
sudo mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO 'majordomo'@'%';"
sudo mysql -uroot -e "FLUSH PRIVILEGES;"

nginx & PHP

apt4 -y install nginx
sudo nano /etc/nginx/nginx.conf
    events {
        ...
        multi_accept on;
    }
    http {
        ...
        #Богдан
        keepalive_timeout 5s;
        client_max_body_size  16m;
        ...
    }     
apt4 install php php-fpm php-cgi php-cli php-pear php-mysql php-mbstring php-xml -y
sudo nano /etc/nginx/sites-available/default
    server {
        ...
        #Богдан
        access_log  off; #отключаем лог подключений
        error_log  /var/log/nginx/error.log; #файл лога ошибок
        ...
        location / {
            rewrite pda$ /popup/pda.html redirect;
            rewrite ^api/ /api.php;

            if (!-e $request_filename){
                rewrite ^(.*)$ /nf.php;
            }
        }

        location /config.php {
            deny all;
        }

        location /debmes.txt {
            deny all;
        }
        location ~ [^/]\.php(/|$) { #обработка php
                fastcgi_split_path_info ^(.+?\.php)(/.*)?$;
                set $path_info $fastcgi_path_info;
                fastcgi_pass unix:/run/php/php7.4-fpm.sock; #путь к php-fpm
                fastcgi_index index.php;
                fastcgi_param PATH_INFO    $fastcgi_path_info;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
                include fastcgi_params;
                        #подробное описание настроек выше можно прочитать по ссылке https://nginx.org/ru/docs/http/ngx_http_fastcgi_module.html#fastcgi_split_path_info
                        #настройки ниже относятся к настройкам PHP
                fastcgi_param PHP_VALUE "short_open_tag=on"; #разрешаем короткую форму записи (<? ?>) тегов PHP.
                fastcgi_param PHP_VALUE "error_reporting=E_ALL & ~E_NOTICE"; #задаем уровни ошибок
                fastcgi_param PHP_VALUE "max_execution_time=90"; #задаем максимальное время в секундах, в течение которого скрипт должен полностью загрузиться
                fastcgi_param PHP_VALUE "max_input_time=180"; #задаем максимальное время в секундах, в течение которого скрипт должен разобрать все входные данные, переданные запросами вроде POST или GET
                fastcgi_param PHP_VALUE "post_max_size=200M"; #задаем максимальный размер отправляемого через POST-запрос файла
                fastcgi_param PHP_VALUE "upload_max_filesize=50M"; #задаем максимальный размер файла для закачки
                fastcgi_param PHP_VALUE "max_file_uploads=150"; #задаем максимальное количество одновременных загрузок
        }
    }
sudo nginx -t #проверка ошибок в конф. файле
sudo systemctl restart nginx

phpMyAdmin

apt4 install phpmyadmin -y
sudo nano /etc/nginx/sites-available/default
    server {
        ...
        location /phpmyadmin {
                alias /usr/share/phpmyadmin/;
                location ~ \.php$ {
                        fastcgi_pass unix:/run/php/php7.4-fpm.sock;
                        fastcgi_index index.php;
                        fastcgi_param SCRIPT_FILENAME $request_filename;
                        include fastcgi_params;
                        fastcgi_ignore_client_abort off;
                }
                location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                        access_log    off;
                        log_not_found    off;
                        expires 1M;
                }
        }
        ...
     }
sudo nginx -t #проверка ошибок в конф. файле
sudo systemctl restart nginx

Прочее ПО

MINIDLNA

sudo apt install minidlna
sudo nano /etc/minidlna.conf

<#>media_dir=</media/DataY/Torrents>
<#>db_dir=...
<#>log_dir=...
port=8200
<#>friendly_name=OrangePi
<#>inotify=yes
<#>notify_interval=20

ip link set eth1 multicast on
ip link set lo multicast on
sudo service minidlna restart

TorrServer

Инструкция отсюда, здесь же смотреть оптимальные настройки.
Последнюю версию смотреть здесь

sudo mkdir /opt/torrserver
sudo chown -R $USER:$USER /opt/torrserver
wget https://github.com/YouROK/TorrServer/releases/download/MatriX.124/TorrServer-linux-arm7 -O /opt/torrserver/torrserver
sudo chmod o+x /opt/torrserver/torrserver
sudo nano /etc/systemd/system/torrserver.service

    [Unit]
    Description=torrserver
    Wants=network-online.target
    After=network-online.target

    [Service]
    User=root
    Type=simple NonBlocking=true
    WorkingDirectory=/opt/torrserver
    ExecStart=/opt/torrserver/torrserver -p 8090
    Restart=on-failure
    RestartSec=58

    [Install]
    WantedBy=multi-user.target

export GODEBUG=madvdontneed=1
sudo systemctl daemon-reload
sudo systemctl enable --now torrserver

⚠️ **GitHub.com Fallback** ⚠️