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

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

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;


делаем инклюдку для 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

debian 9 repository list /etc/apt/sources.list

deb http://deb.debian.org/debian/ stretch main contrib non-free
#deb-src http://deb.debian.org/debian/ stretch main contrib non-free

deb http://deb.debian.org/debian/ stretch-updates main contrib non-free
#deb-src http://deb.debian.org/debian/ stretch-updates main contrib non-free

deb http://security.debian.org/debian-security/ stretch/updates main contrib non-free
#deb-src http://security.debian.org/debian-security/ stretch/updates main contrib non-free

# debian backports for lasted backported software only
#deb http://deb.debian.org/debian stretch-backports main contrib non-free
#deb-src http://deb.debian.org/debian stretch-backports main contrib non-free

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: eth0 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

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