disable wakeup by usb mouse / как отключить выход из спящего режима по движению мышки

1. Отключить в BIOS пробуждение по USB портам
Если нет - писать "костыль"

Смотрим какие USB девайсы есть

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 174f:116a Syntek
Bus 001 Device 004: ID 0cf3:e500 Atheros Communications, Inc.
Bus 001 Device 002: ID 248a:8367 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


Вытыкаем втыкаем мышь - видим что 248a исчезает

Идем в /sys/bus/usb/devices/ - выткаем втыкаем мышь - видим что 1-1 исчезает

user@note:/sys/bus/usb/devices$ ls -l
итого 0
lrwxrwxrwx 1 root root 0 ноя 30 12:22 1-0:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-0:1.0
lrwxrwxrwx 1 root root 0 ноя 30 12:22 1-1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1
lrwxrwxrwx 1 root root 0 ноя 30 12:22 1-1:1.0 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0
lrwxrwxrwx 1 root root 0 ноя 30 12:22 1-1:1.1 -> ../../../devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.1


Провряем что тот девайс

user@note:/sys/bus/usb/devices/1-1$ cat idVendor
248a


Кладем скрипт который будет прописывать disabled

#! /bin/sh

if [ ! -f /sys/bus/usb/devices/1-1/power/wakeup ]; then
    exit 0
fi
    echo disabled > /sys/bus/usb/devices/1-1/power/wakeup



Недостаток - если воткнуть в другой порт - скрипт работать не будет


Полезная ссылка https://askubuntu.com/questions/252743/mouse-movement-wakes-computer-from-suspend-how-to-disable-this

Быстрая установка графического интерфейса на Linux с доступом по VNC

Установка графического интерфейса на CentOS 7


Добавляем репозиторий epel
yum install epel-release

Затем устаналиваем X Window system
yum groupinstall "X Window system"

Устанавливаем MATE
yum groupinstall "MATE Desktop"

Настраиваем доступ по VNC штатными средствами X-сервера
yum install tigervnc-server-module

Раскоментировать запуск
vi /etc/X11/xorg.conf.d/10-libvnc.conf

Укажем пароль доступа по VNC (сохранится в /root/.vnc/passwd)
vncpasswd

Отройте порт VNC сервера
firewall-cmd --zone=public --add-port=5900/tcp --permanent
firewall-cmd --reload


Добавьте пользователя
useradd -m user -s /bin/bash
passwd user


Указываем загрузку графического интерфейса:
systemctl set-default graphical.target

Запустите X
systemctl isolate graphical.target
или перезагрузитесь

Русификация
MATE использует для отображения интерфейса системную локаль, поэтому достаточно выполнить
localectl set-locale LANG="ru_RU.UTF-8"

Далее при логине в систему выбирается на окне lightdm в правом верхнем углу и в параметрах клавиатуры добавляется раскладка и клавиша переключения уже через VNC интерфейс


Установка графического интерфейса на Debian 9


Установка производится одной командой
apt install task-mate-desktop

Настраиваем доступ по VNC штатными средствами X-сервера
apt install tigervnc-xorg-extension

Добавим данное расширение при запуске X сервера

vi /usr/share/X11/xorg.conf.d/99-vnc.conf

Section "Module"
    Load  "vnc"
EndSection
Section "Screen"
    Identifier "Screen0"
    DefaultDepth 16
    Option "SecurityTypes" "VncAuth"
    Option "PasswordFile" "/root/.vnc/passwd"
EndSection


Укажем пароль доступа по VNC (сохранится в /root/.vnc/passwd) 
vncpasswd

Добавьте пользователя
useradd -m user -s /bin/bash
passwd user


graphical.target будет включен автоматически поэтому
systemctl isolate graphical.target
или ребут
Полезная ссылка как это работает - https://www.thegeekdiary.com/rhel-centos-7-how-to-set-default-target-replaced-runlevel/

Русификация MATE выполняется в  /etc/default/locale прописать
LANG="ru_RU.UTF-8"
и затем выполнить
locale-gen

Либо достаточно выполнить dpkg-reconfigure locales и выбрать нужные локали в псевдографическом интерфейсе

Далее в параметрах клавиатуры добавляется раскладка и клавиша переключения уже через VNC интерфейс

Приоритет IPv4 над IPv6 - резолвинг имен

Когда у домена есть A и AAAA записи, то по-умолчанию IPv6 имеет приоритет над IPv4 и происходит подключение по IPv6 адресам, что не всегда имеет смысл.
Для изменения этого поведения в резолвинге имен следует отредактировать файл:
/etc/gai.conf
в нем найти строчку:

#precedence ::ffff:0:0/96  100

и раскомментировать ее. После этого если у ресурса есть и IPv6 и IPv4 запись в DNS, будет выбираться IPv4 (по умолчанию сперва ищется AAAA а уже после этого A запись). При этом IPv6 остается полностью рабочим

оптимизация mysql php

данная страница будет правиться чтобы была вся инфа в одном месте
php.ini

max_input_vars = 10000
max_execution_time = 300
post_max_size = 256M
upload_max_filesize = 256M
memory_limit = 256M
pcre.backtrack_limit = 1000000
pcre.recursion_limit = 100000
pcre.jit=0
realpath_cache_size = 4096k
mbstring.internal_encoding = UTF-8
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=100000
opcache.validate_timestamps=1
opcache.revalidate_freq=0
opcache.fast_shutdown=1

в случае битрикса остается добавить только
mbstring.func_overload = 2
и то не факт что последнему битриксу это надо и выключить open_basedir

my.cnf
sql_mode = ""
performance-schema = false
max_allowed_packet = 256M
table_open_cache = 1024
thread_cache_size = 4
query_cache_size = 32M
query_cache_type = 1
tmp_table_size = 128M
max_heap_table_size = 128M
innodb_buffer_pool_size = 1024M
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = O_DIRECT
transaction-isolation = READ-COMMITTED

в nginx gzip сжатие на двоечку и кэширование статики на 8 дней уже само прописывает в server


gzip on;
gzip_comp_level 2;
gzip_disable "msie6";
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;
expires 8d;

также в секции http

proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
send_timeout 300;

если php-fpm, то fastcgi_read_timeout увеличить

location @php {
...
...
fastcgi_read_timeout 300;
}

всё, 2/3 проблем с оптимизируйте что-нибудь будут решены

bitrix php-fpm rewrite

    location / {
    error_page 404 /404.php;
    if (!-e $request_filename) {
       rewrite  ^(.*)$  /bitrix/urlrewrite.php last;
    }
        location ~ [^/]\.ph(p\d*|tml)$ {
            try_files /does_not_exists @php;
        }
        location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
            expires 5m;
        }
    }

Склеть слайсы бэкапа

cat $(ls -v  *tar.*) > backup.tar

yum rpm error: Failed to initialize NSS library cannot import name ts

Скорее всего что-то не до обновилось, на CentOS 7 лечить так

wget https://mirror.yandex.ru/centos/7/os/x86_64/Packages/nspr-4.17.0-1.el7.x86_64.rpm
wget https://mirror.yandex.ru/centos/7/os/x86_64/Packages/nss-3.34.0-4.el7.x86_64.rpm
wget https://mirror.yandex.ru/centos/7/os/x86_64/Packages/nss-util-3.34.0-2.el7.x86_64.rpm


rpm2cpio nspr-4.17.0-1.el7.x86_64.rpm  | cpio -idmv
rpm2cpio nss-3.34.0-4.el7.x86_64.rpm | cpio -idmv
rpm2cpio nss-3.34.0-4.el7.x86_64.rpm | cpio -idmv

yes | cp /usr/lib64/libnssutil3.so /lib64/libnssutil3.so

Ubuntu 14.04 : mounting /dev/md1 on /root failed: Device or Resource busy

Необходимо сделать паузу при детектировании устройств

# echo "sleep 60" > /etc/initramfs-tools/scripts/init-premount/delay_for_raid_array_to_build_before_mounting
 

# chmod +x /etc/initramfs-tools/scripts/init-premount/delay_for_raid_array_to_build_before_mounting

# update-initramfs -u

Подсчитать соединения к веб-серверу

netstat -na | awk '$4 ~ /.80/ && ! /.8080/ {print $5}' | cut -d . -f 1,2,3,4 | sort | uniq -c | sort -n

Использование планировщика AT в Linux

# at 12:00 +4day
at>


и пишем задание на 12:00 через 4 дня

CloudLinux 1 в 1 перенос особенность cagefs-skeleton

Собственно несем как обычно если ручками кроме каталога /usr/share/cagefs-skeleton/ (так как иначе едут залинкованные и закопированные туда файлы корня)

rsync -avP --exclude='/dev' --exclude='/proc' --exclude='/sys' --exclude='/run'  --exclude='/etc/fstab' --exclude='/usr/share/cagefs-skeleton/' root@62.10.10.10:/ /

Потом в rescue в /boot
dracut -f initramfs-3.10xxxx.img 3.10xxxx.x86_64
grub2-mkconfig -o /boot/grub2/grub.cfg

типа взлетает

но апач на все выдает ошибку 500 и в логи /var/log/lve.log
2017-02-12 10:33:38,682: (lvestats) [ERROR] Can't detect LVE version; [Errno 2] No such file or directory: '/proc/lve/list'

и апач в логи
Skeleton directory is not mounted: /usr/share/cagefs-skeleton
 
Делаем

cagefsctl --init
 
это закопирует линки с корня в /usr/share/cagefs-skeleton/
 
и 
 
cagefsctl --enable-cagefs

запустит систему LVE 

Полезная ссылка
https://docs.cloudlinux.com/index.html?moving_cagefs-skeleton_directory.html

mariadb в docker запустить

docker run --hostname 'mariadb-10.3' --name 'mariadb-10.3' -v '/var/lib/mariadb-10.3:/var/lib/mysql' -v '/etc/ispmysql/mariadb-10.3:/etc/mysql/conf.d' -p '127.0.0.1:3310:3306' --restart=always -d mariadb

bitrix решаем проблему с экспортом из 1с

Nginx

listen 82.140.12.12:80;

    if ($request_uri !~ "/bitrix/admin/1c_exchange.php"){
            return 301 https://domain.com$request_uri;
    }



Для апача чистого в .htaccess

RewriteEngine On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]

Ubuntu 18.04 firstvds настройка сети netplan systemd

Сеточка подымается в Ubuntu 18.04 через netplan как-то так на vkvm

# cat /etc/netplan/13-alj.yaml
network:
    version: 2
   renderer: networkd
   ethernets:
       ens3:
           dhcp4: no
           dhcp6: no
           addresses: [92.61.107.21/32,62.10.12.12/32,62.33.22.22/32,'2a01:230:2:47::161/64']
           gateway6: 2a01:230:2:47::1
           routes:
           - to: 0.0.0.0/0
             via: 10.0.0.1
             on-link: true
           nameservers:
               addresses:
               - 1.1.1.1
               - 8.8.8.8
               - 2606:4700:4700::1111
               search:
               - domain.com
           optional: true
   version: 2


И потом

netplan try
netplan apply


Через systemd (я лично против такого) есть статья https://nixtux.ru/506 - тупо копипаста ниже
nano /etc/systemd/network/50-1vds.network
 
[Match]
Name=ens*
[Network]
DHCP=no
# ping to Google DNS 8.8.8.8 is less than to Yandex 77.88.8.*
DNS=8.8.8.8
DNS=77.88.8.8
DNS=77.88.8.1
DNS=9.9.9.9
NTP=ntp.ubuntu.com
Gateway=10.0.0.1
[Address]
Address=21.109.197.147/32
Peer=10.0.0.1
 
212.109.197.147 замените на IP-адрес своего виртуального сервера (VPS, VDS) с виртуализацией KVM на хостинге. Name=ens* — проверьте, что в выводе команды ip a сетевой интерфейс называется, например, ens3, а не eth0; если eth0, то тогда: Name=eth*
sudo systemctl enable systemd-networkd
sudo systemctl start systemd-networkd

Добавлю что резолверы FirstVDS которые в ДЦ у них находятся
188.120.247.2
188.120.247.8
82.146.59.250

Настройка модуля Push and Pull birix модуля nginx с ISPmanager

Компилим nginx с модулем утянув его выше в папку из git https://github.com/wandenberg/nginx-push-stream-module

./configure --add-module=../nginx-push-stream-module

делаем общую include в /etc/nginx/conf.d/push-stream-module.conf


# Common settings for nginx-push-stream-module
push_stream_shared_memory_size 256M;
push_stream_max_messages_stored_per_channel 1000;
push_stream_max_channel_id_length 32;
push_stream_max_number_of_channels 200000;
push_stream_message_ttl 86400;

# поддержка мобильных платформ, для http запросов
server {
    # nginx-push-stream-module server for push & pull

    listen 8893;
    server_name _;
    
    # Include error handlers
    #include bx/conf/errors.conf;
    
    # Include im subscrider handlers
    #include bx/conf/im_subscrider.conf;
    
    location ^~ / { deny all; }
}

# поддержка мобильных платформ, для https запросов
# SSL enabled server for reading personal channels
server {
    listen 8894 ssl;
    server_name _;
 
    ssl_certificate "/var/www/httpd-cert/www-root/example.com.crtca";
    ssl_certificate_key "/var/www/httpd-cert/www-root/example.com.key"; 
 
    #include bx/conf/ssl.conf;
    
    # Include error handlers
    #include bx/conf/errors.conf;
    
    # Include im subscrider handlers
    #include bx/conf/im_subscrider.conf;
    
    location ^~ / { deny all; }
}

# для публикации сообщений
# Server to push messages to user channels
server {
    listen 127.0.0.1:8895;
    server_name _;
    
    location ^~ /bitrix/pub/ {
        push_stream_publisher admin;
        push_stream_channels_path $arg_CHANNEL_ID;
        push_stream_store_messages on;
        allow 127.0.0.0/8;
        deny all;
    }
    
    location ^~ / { deny all; }
    
    # Include error handlers
    #include bx/conf/errors.conf;
} 
 
 
 
 
делаем инклюдку для server {}

include /etc/nginx/push-stream-module-vhost.inc 


# Location for long-polling connections
location ^~ /bitrix/sub {
    # we don't use callback and droppped it (XSS)
    if ( $arg_callback ) {
        return 400;
    }

    push_stream_subscriber            long-polling;
    push_stream_allowed_origins "*";
    push_stream_channels_path        $arg_CHANNEL_ID;
    push_stream_last_received_message_tag    $arg_tag;
    if ($arg_time) {
        push_stream_last_received_message_time "$arg_time";
    }
    push_stream_longpolling_connection_ttl    40;
    push_stream_authorized_channels_only    on;
    push_stream_message_template '#!NGINXNMS!#{"id":~id~,"channel":"~channel~","tag":"~tag~","time":"~time~","eventid":"~event-id~","text":~text~}#!NGINXNME!#';
}

# Location for websocet connections
location ^~ /bitrix/subws/ {
    push_stream_subscriber websocket;
    push_stream_channels_path        $arg_CHANNEL_ID;
    push_stream_websocket_allow_publish    off;
    push_stream_ping_message_interval    40s;
    push_stream_authorized_channels_only     on;
    push_stream_last_received_message_tag    "$arg_tag";
    push_stream_last_received_message_time    "$arg_time";
    push_stream_message_template '#!NGINXNMS!#{"id":~id~,"channel":"~channel~","tag":"~tag~","time":"~time~","eventid":"~event-id~","text":~text~}#!NGINXNME!#';
}


Включаем в битриксе

Оригинал https://dermanov.ru/exp/configure-push-and-pull-module-for-bitrix24/

libvirt kvm restart

# rm -f /run/ebtables.lock ; killall -9 virsh; systemctl restart systemd-{journald,udevd,logind,machined} ; systemctl restart libvirtd

посмотреть нагрузку openvz по контейнерам

# vzlist -octid,laverage -s -laverage | head -n11

dante socks proxy с авторизацией из файла паролей

Debian 9 : Dante socks proxy v1.4.1 с авторизацией через pam из файла паролей (а не из системных пользователей)
Также можно использовать Ubuntu 16.04, но там старый danted версии 1.2 и надо поставить свежий, например из ppa http://ppa.launchpad.net/dajhorn/dante/ubuntu/pool/main/d/dante/
Следовательно, просто меняя socksmethod мы меняем авторизацию с системных юзеров (/etc/passwd) на pam файл паролей
libpam-pwdfile https://github.com/tiwe-de/libpam-pwdfile имеет некоторые ограничения, а именно, пароли необходимо шифровать используя md5crypt и длинна ограничена в 8 символов, больше обрезается (наподобие как в vnc)
Если известны более современные способы, то welcome в комментарии к посту

# apt install dante-server libpam-pwdfile apache2-utils

# mv /etc/danted.conf /etc/danted.conf.orig
 

# vi /etc/danted.conf

#logoutput: stderr

logoutput: syslog
internal: 0.0.0.0 port = 1080
external: eth0

#socksmethod: username
socksmethod: pam.username
user.privileged: root
user.unprivileged: nobody


client block {
        from:  0/0 to: lo
        log: error
}


client pass {
        from: 0/0 to: 0/0
        log: error connect
}

socks pass {
        from: 0/0 to: 0/0
        log: error connect
}


# vi /etc/pam.d/sockd
auth required pam_pwdfile.so pwdfile /etc/danted.passwd
account required pam_permit.so


# htpasswd -b -d -c /etc/danted.passwd username pass

# danted


и если все работает успешно, то в автозапуск и запускаем сервис
 

# systemctl enable danted && systemctl start danted

Запретить локальному пользователю перезагружать систему

В системах которые используют systemd локальный пользователь может перезагружать систему без авторизации командой reboot (он же alias для /bin/systemctl, он же systemctl reboot)
Что может привести к незапланированной перезагрузке, например, если ошибиться окном терминала
Чтобы это отключить в Ubuntu 16.04 создайте файл конфигурации

/etc/polkit-1/localauthority/50-local.d/99-disallow-shutdown.pkl

и в нем пропишите следующее:

[Disallow shutdown]
Identity=unix-group:*
Action=org.freedesktop.login1.reboot;org.freedesktop.login1.reboot-multiple-sessions;org.freedesktop.login1.power-off;org.freedesktop.login1.power-off-multiple-sessions
ResultAny=auth_admin_keep
ResultInactive=auth_admin_keep
ResultActive=auth_admin_keep



Полезные ссылки:
https://wiki.archlinux.org/index.php/Polkit_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)
http://rus-linux.net/MyLDP/sec/PolicyKit_pr1.html

Отключить push уведомления в firefox глобально для всех сайтов

Каждый раз когда мы заходим в firefox на какой-либо сайт, в нем всплывает push уведомление с предложением подписаться на новости сайта и приходится его закрывать
Как же это отключить глобально? Очень просто

about:config => dom.push.enabled, dom.webnotifications.enabled => false

И больше уведомления беспокоить не будут.

В Chrome данные настройки делаются через интерфейс

chrome://settings/content

В появившемся окне находим блок «Оповещения» и устанавливаем переключатель в положение «Не показывать оповещения на сайтах»