воскресенье, 29 декабря 2019 г.

Как остановить, а затем продолжить архивирование

Кейс (не у меня):
"прошу помочь восстановить работу pjstgresql 9.6. из-за нехватки места вручную удалил журналы в pg_xlog и теперь идет постоянная ошибка "команда архивации завершилась ошибкой с кодом 1". Нет файла журнала, который база пытается поместить в архив.
как указать базе, чтобы архивировала с существующего файла журнала?"

Grigory Smolkin:
ALTER SYSTEM SET archive_command TO 'exit 0'  ;
select pg_reload_conf() ;
ALTER SYSTEM SET archive_command to 'ваша команда';
select pg_reload_conf() ;

вторник, 24 декабря 2019 г.

Astra Linux Орёл CE 2.12.22 (orel) КриптоПро 4.0.9963 госзакупки и площадки

Данная статья ремейк

Информация о необходимости проведения настройки рабочего места пользователя

А также требованием установить свежую КриптоПро 4.0.9963

Astra Linux Орёл 2.12 КриптоПро 4.0.9944 госзакупки и площадки
Astra Linux
Еще 
Загружаем  КриптоПро 4.0.9963

Устанавливаем КриптоПро 4.0.9963
$ tar -zxf linux-amd64_deb.tgz
$ cd linux-amd64_deb
$ sudo ./install_gui.sh

Ставим все галки, лицензию позднее.

Ставим лицензию на Крипто-Про при наличии
$ sudo /opt/cprocsp/sbin/amd64/cpconfig -license -set *****-*****-*****-*****-*****

Если при установке не ввели лицензию, установится demo лицензия
$ /opt/cprocsp/sbin/amd64/cpconfig -license -view
License validity:
4040E-G0037-EK8R3-C6K4U-*****
Expires: 3 month(s) 2 day(s)
License type: Server.


Проверяем версию:
$ /opt/cprocsp/bin/amd64/csptest -keyset -verifycontext
CSP (Type:80) v4.0.9019 KC2 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 32212163
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 KC2 CSP
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,010 sec
[ErrorCode: 0x00000000]



$ export PATH="$(/bin/ls -d /opt/cprocsp/{s,}bin/*|tr '\n' ':')$PATH"


$ sudo apt install alien
$ cd ~/
Скачать плагин  в ~/Загрузки/ (автоматическая загрузка версии плагина, соответствующей Вашей ОС)
$ cp ~/Загрузки/cades_linux_amd64.tar.gz ~/
$ tar -zxf cades_linux_amd64.tar.gz
$ cd ~/cades_linux_amd64

Установить плагин:
$ sudo alien -dc cprocsp-pki-2.0.0-amd64-cades.rpm
$ sudo alien -dc cprocsp-pki-2.0.0-amd64-plugin.rpm
$ sudo dpkg -i cprocsp-pki-cades_2.0.0-2_amd64.deb cprocsp-pki-plugin_2.0.0-2_amd64.deb


Сертификаты которые ставит Crypto-Pro:

$ sudo /opt/cprocsp/bin/amd64/certmgr -list -store mRoot
Certmgr 1.1 (c) "Crypto-Pro",  2007-2018.
program for managing certificates, CRLs and stores


Установка личного сертификата
$ mkdir -p /var/opt/cprocsp/keys/user
 Копируем контейнер в
$ cd /var/opt/cprocsp/keys/user
$ cp ~/vu2020.000  /var/opt/cprocsp/keys/user

$ /opt/cprocsp/bin/amd64/csptest -keyset -enum -verifycontext -fqcn
CSP (Type:80) v4.0.9019 KC2 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 8775715
\\.\HDIMAGE\vu2020
OK.
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,250 sec
[ErrorCode: 0x00000000]

Получим уникальное имя для манипуляций с контейнером:
$ /opt/cprocsp/bin/amd64/csptest -keys -enum -verifyc -fqcn -unique
CSP (Type:80) v4.0.9019 KC2 Release Ver:4.0.9963 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 11245603
\\.\HDIMAGE\vu2020                              |\\.\HDIMAGE\HDIMAGE\\vu2020.000\9D5E
OK.
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,100 sec
[ErrorCode: 0x00000000]

Установить скопированный контейнер:
$ /opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont '\\.\HDIMAGE\HDIMAGE\\vu2020.000\9D5E'

Установим сертификат:
$ cd ~/
$ /opt/cprocsp/bin/amd64/certmgr -inst -store uMy -file vu2020.cer -cont '\\.\HDIMAGE\HDIMAGE\\vu2020.000\9D5E'

Проверим:
$ /opt/cprocsp/bin/amd64/csptest -keyset -check -cont '\\.\HDIMAGE\HDIMAGE\\vu2020.000\9D5E'

Просмотор личных сертификатов:
$ /opt/cprocsp/bin/amd64/certmgr -list -store uMy

Установить расширение firefox на страничке с проверкой плагина:
Проверка плагина
Ниже инструкция (не нужна)
Настройка firefox на установку дополнений


Дожаться сообщения:



Проверить подпись.


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++В принципе установивки контейнера с личным сертификтом может быть достаточно.
Проверить можно:
Проверка цепочек
$ /opt/cprocsp/bin/amd64/certmgr -list -store uMy
Смотрим: 
 E=mail@vt70.com

Проверка по e-mail
$ /opt/cprocsp/bin/amd64/cryptcp -copycert -dn  mail@vt70.com -df ~/t.cer
CryptCP 4.0 (c) "КРИПТО-ПРО", 2002-2018.
Утилита командной строки для подписи и шифрования файлов.

Будет использован следующий сертификат:
Субъект: ......
........
Действителен с 17.05.2019 13:07:32 по 17.05.2020 13:07:32

Цепочки сертификатов проверены.
Копирование сертификатов завершено.
[ErrorCode: 0x00000000]

 Для работы будем пользоваться chromium-gost : 
#$ sudo apt install chromium - нельзя зайти не zakupki.gov.ru

$ wget https://github.com/deemru/chromium-gost/releases/download/79.0.3945.88/chromium-gost-79.0.3945.88-linux-amd64.deb
$ sudo dpkg -i chromium-gost-79.0.3945.88-linux-amd64.deb
$ sudo apt install -f

Для работы с сайтом госуслуг используем инструкцию ниже:
Вход с помощью электронной подписи на портал Госуслуг на Linux.

Плагин IFCPlugin-3.0.0-x86_64.deb.zip работать перестал!!!

Скачаем и установим плагин
Плагин качаем при входе в личный кабинет госуслуг по ЭЦП.
Прямая ссылка
Plugin для работы с электронной подписью
прямая ссылка в данный момент версия 3.0.7.0

Установим плагин:
$ cd ~/Загрузки/
$ wget https://ds-plugin.gosuslugi.ru/plugin/upload/assets/distrib/IFCPlugin-x86_64.deb
$ sudo apt install  libccid pcscd
$ sudo dpkg -i IFCPlugin-x86_64.deb
#$ sudo apt install -f

Также установим расширение chrom для сайта госуслуг.
Установить Расширение для gosuslugi.ru  в браузере chromium
Перейти в меню - Дополнительные инструменты - Расширения и включить плагин

Загрузить файл конфигурации для IFCPlugin ( x64) в домашнюю директорию текущего пользователя.
$ cd ~/Загрузки/
$ wget https://www.cryptopro.ru/sites/default/files/public/faq/ifcx64.cfg
$ sudo rm /etc/ifc.cfg
$ sudo cp ~/Загрузки/ifcx64.cfg /etc/ifc.cfg
$ /opt/cprocsp/bin/amd64/csptestf -absorb -certs -autoprov
Match: HDIMAGE\\vu2020.000\9D5E
OK.
Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,360 sec
[ErrorCode: 0x00000000]

создаем симлинк для корректной работы связи расширения браузера с библиотекой установленного плагина
$ sudo cp /etc/opt/chrome/native-messaging-hosts/ru.rtlabs.ifcplugin.json /etc/chromium/native-messaging-hosts


Войти на госуслуги с помощью сертификата

Вход на госуслуги

Выйти.

После этого успешно заходим на сайт госзакупок браузером chromium-gost !!!

zakupki.gov.ru

После этого можно заходить на основные торговые площадки.
 

Проверено подписывает:
rts-tender.ru

Проверено подписывает:
Единая электронная торговая площадка


Проверно подписывает:
Сбербанк-АСТ


Электронная площадка  Березка с авторизацией на госуслугах

Портал поставщиков

Alternative downloads

Alternative downloads
$ wget http://cdimage.ubuntu.com/releases/18.04.3/release/ubuntu-18.04.3-server-amd64.iso
$ wget http://cdimage.ubuntu.com/releases/19.10/release/ubuntu-19.10-server-amd64.iso

воскресенье, 22 декабря 2019 г.

Электронная почта LXD, SMTP / IMAP / WebMail с OpenSMTPD, Dovecot и Roundcube.

Установка wordpress в контейнер lxd

lxd-wordpress
LXD now runs my WordPress
Get Docker Engine - Community for Ubuntu
[Ubuntu 18.04] 18.09.0 Docker на LXD 3.0.2 / 3.6 не работает


docker не работает в lxd !!!

$ lxc launch ubuntu:18.04 wordpress
#$ lxc config set wordpress linux.kernel_modules overlay
#$ lxc restart wordpress
$ lxc exec wordpress -- sudo --user ubuntu --login
$ sudo apt update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
 $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt update
$ sudo apt-get install docker-ce=18.06.1~ce~3-0~ubuntu
Ниже не делаем (на lxd работать не будет) :
sudo apt-get install docker-ce docker-ce-cli containerd.io

$ sudo adduser $USER docker
$ sudo systemctl start docker
$ sudo systemctl enable docker
$ sudo mkdir -p /etc/systemd/system/containerd.service.d/
$ sudo nano /etc/systemd/system/containerd.service.d/override.conf
[Service]
ExecStartPre=
Сохранить
$ sudo systemctl daemon-reload.
$ sudo systemctl restart docker

$ sudo reboot
$ lxc exec wordpress -- sudo --user ubuntu --login
$ docker run --name some-wordpress -p 80:80 -d wordpress

$ docker stop some-wordpress
$ docker rm  some-wordpress

суббота, 21 декабря 2019 г.

Установка lxd на Ubuntu 19.10 server

$ sudo apt-get install bridge-utils -y
$ sudo nano  /etc/netplan/50-cloud-init.yaml

network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: no
      dhcp6: no
  bridges:
    br0:
      interfaces: [enp0s3]
      addresses: [192.168.1.247/24]
      gateway4: 192.168.1.1
      mtu: 1500
      nameservers:
        addresses: [8.8.8.8]
      parameters:
        stp: true
        forward-delay: 4
      dhcp4: no
      dhcp6: no

Сохранить.

$ sudo netplan generate
$ sudo netplan --debug apply

$ nano tuning.sh

#!/bin/bash
# отключим ipv6
sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo '#net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
#тюнинг postgresql
sudo /bin/su -c "echo 'vm.swappiness=1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_migration_cost_ns = 5000000' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_autogroup_enabled = 0' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_background_bytes = 67108864' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_bytes = 536870912' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.zone_reclaim_mode = 0' >> /etc/sysctl.conf"
#lxd
sudo /bin/su -c "echo 'fs.inotify.max_queued_events = 1048576' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'fs.inotify.max_user_instances = 1048576' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'fs.inotify.max_user_watches = 1048576' >> /etc/sysctl.conf"
sudo sysctl -p


Сохранить.

$ sudo sh tuning.sh

$ sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, ceph, dir, lvm, zfs) [default=zfs]:
Create a new ZFS pool? (yes/no) [default=yes]:
Would you like to use an existing block device? (yes/no) [default=no]:
Size in GB of the new loop device (1GB minimum) [default=100GB]:
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]: no
Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
Name of the existing bridge or host interface: br0
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:


$ sudo reboot

Ubuntu 18.04 19.10 переименовать хост

$ sudo hostnamectl set-hostname u1910

Ubuntu 18.04 Root on ZFS

четверг, 19 декабря 2019 г.

Отменить поиск сетевого ключа защиты

Отменить поиск сетевого ключа защиты можно, поместив приложенный файла nethasp.ini в подкаталог conf каталога загрузочных модулей платформы.

nethasp.ini

[NH_COMMON]
NH_IPX = Disabled
NH_NETBIOS = Disabled
NH_TCPIP = Disabled


Snow дополнил:
можно еще на firewall закрыть TCP\UDP 475 порт исходящий траффик. В Windows можно в разрезе пользователей - соответственно каким-то пользователям можо будет брать ключ, а каким-то программную лицензию.

пятница, 13 декабря 2019 г.

Установка nextcloud в контейнер lxd

Putting the snap behind a reverse proxy
cadaver
How to download a file from owncloud with curl, wget

lxc launch ubuntu:18.04 web2
lxc exec web2 -- sudo --user ubuntu --login
sudo apt update
sudo apt upgrade
sudo apt install mc
sudo dpkg-reconfigure locales
sudo dpkg-reconfigure tzdata
sudo dpkg-reconfigure keyboard-configuration
sudo snap find nextcloud
sudo snap install nextcloud
exit
lxc list
| web2        | RUNNING | 10.91.211.95 (eth0)  |      | PERSISTENT | 0         |
lxc exec haproxy -- sudo --user ubuntu --login
sudo nano /etc/hosts
10.91.211.95 web2.lxd
Сохранить.
sudo reboot


lxc exec web2 -- sudo --user ubuntu --login
$ sudo nextcloud.occ config:system:set overwritehost --value="web2.mydomain.com"
$ sudo nextcloud.occ config:system:set overwriteprotocol --value="https"

https://web2.mydomain.com/remote.php/webdav/


sudo apt install cadaver
cadaver https://web2.mydomain.com/remote.php/webdav/

Использование cadaver в скриптах:

nano dl_8.3.15.1778.sh

#!/bin/bash
rm -f  ~/.netrc
cat > ~/.netrc <<EOF
machine web2.mydomain.com
login user
password password
EOF
chmod 600 ~/.netrc
rm -f  ~/setup-1c/dist/dat
cat > ~/setup-1c/dist/dat <<EOF
open https://web2.mydomain.com/remote.php/webdav/
ls
get postgresql_10.10_4.1C_amd64_deb.tar.bz2 postgresql_10.10_4.1C_amd64_deb.tar.bz2
get postgresql_11.5_7.1C_amd64_deb.tar.bz2 postgresql_11.5_7.1C_amd64_deb.tar.bz2
get client_8_3_15_1778.deb64.tar.gz client_8_3_15_1778.deb64.tar.gz
get deb64_8_3_15_1778.tar.gz deb64_8_3_15_1778.tar.gz
quit
EOF
cd ~/setup-1c/dist/
cadaver -r dat
rm -f  ~/.netrc
rm -f  ~/setup-1c/dist/dat
cd ~/setup-1c/scripts

Сохранить.

sh dl_8.3.15.1778.sh

$ curl -J -O https://.....
  • -J (use remote header name)
  • -O (use remote name)


воскресенье, 8 декабря 2019 г.

Using LXC/LXD Containers with HAProxy

LetsEncrypt с HAProxy
Using LXC/LXD Containers with HAProxy
Hosting multiple websites with containers and HAProxy
How to set up multiple secure (SSL/TLS, Qualys SSL Labs A+) websites using LXD containers
Обслуживание нескольких сайтов с помощью Nginx, HAProxy и LXD в Ubuntu 16.04
How to manage Let's Encrypt SSL/TLS certificates with certbot
Let's Encrypt: подстановочный сертификат с Certbot
Подстановочный сертификат Letsencrypt и запись GoDaddy _acme-challenge

Для  godaddy.com




$ lxc launch ubuntu:18.04 web1
$ lxc exec web1 -- sudo --user ubuntu --login
$ sudo apt update && sudo apt upgrade
$ sudo apt install apache2
$ sudo nano /var/www/html/index.html
Изменить строку 224
It works web1!
Сохранить.
$ sudo systemctl enable apache2
$ sudo systemctl start apache2

$ exit
$ curl 10.91.211.18 | grep web1
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 10923  100 10923    0     0  2666k      0 --:--:-- --:--:-- --:--:-- 2666k
          It works web1!
===============================================================
$ lxc launch ubuntu:18.04 web2
$ lxc exec web2 -- sudo --user ubuntu --login
$ sudo apt update && sudo apt upgrade
$ sudo apt install apache2
$ sudo nano /var/www/html/index.html
Изменить строку 224
It works web2!
Сохранить.
$ sudo systemctl enable apache2
$ sudo systemctl start apache2
$ exit
$ curl 10.91.211.77 | grep web2
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 10923  100 10923    0     0  3555k      0 --:--:-- --:--:-- --:--:-- 3555k
          It works web2!
===============================================================
$ lxc launch ubuntu:18.04 gitlab
$ lxc launch ubuntu:18.04 haproxy

$ lxc list



Using LXC/LXD Containers with HAProxy
$ lxc launch ubuntu:18.04 haproxy
$ lxc config device add haproxy myport80 proxy listen=tcp:0.0.0.0:80 connect=tcp:localhost:80
#$ lxc config device remove haproxy myport80 
$ lxc config device add haproxy myport443 proxy listen=tcp:0.0.0.0:443 connect=tcp:localhost:443
#$ lxc config device remove haproxy myport443
$ lxc exec haproxy -- sudo --user ubuntu --login
$ sudo apt update && sudo apt upgrade
$ sudo apt install haproxy
$ sudo systemctl enable haproxy
$ sudo systemctl start haproxy
$ sudo nano /etc/hosts
Добавить
10.91.211.18 web1.lxd
10.91.211.77 web2.lxd
10.91.211.176 gitlab.lxd 
Сохранить.
$ sudo nano /etc/haproxy/haproxy.cfg

Заменить:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon

#ssl-default-bind-options no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets
#ssl-default-bind-ciphers EECDH+AESGCM:EDH+AESGCM
#tune.ssl.default-dh-param 2048

defaults
log global
mode http
option httplog
option dontlognull
option forwardfor
option http-server-close
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http

#frontend www-https
#bind *:443 ssl crt /etc/letsencrypt/live/example.com/example.com.pem
#reqadd X-Forwarded-Proto:\ https

#acl host_web1 hdr(host) -i web1.example.com
#acl host_web2 hdr(host) -i web2.example.com

#use_backend subdomain1 if host_web1
#use_backend subdomain2 if host_web2

frontend http_frontend
bind *:80

acl web_host1 hdr(host) -i web1.example.com
acl web_host2 hdr(host) -i web2.example.com

use_backend subdomain1 if web_host1
use_backend subdomain2 if web_host2

backend subdomain1
balance leastconn
http-request set-header X-Client-IP %[src]
#redirect scheme https if !{ ssl_fc }
server web1 web1.lxd:80 check

Сохранить.

$ sudo systemctl restart haproxy

Установим Wildcard Certificates
вручную:

$ sudo add-apt-repository -y ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install -y certbot
$ sudo systemctl stop haproxy

$ sudo certbot certonly --manual --preferred-challenges dns-01 -d *.example.com
Можно было бы  включить не только поддомены, но и сам домен:
#$ sudo certbot certonly --manual --preferred-challenges dns-01 -d *.example.com -d example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please deploy a DNS TXT record under the name
_acme-challenge.example.com
with the following value:

kkjwKk4CieIWeMUZLGwuoizp1TA7linPuQ8GNMqLLy4

Before continuing, verify the record is deployed.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Press Enter to Continue


Для  godaddy.com



Press Enter to Continue
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2020-03-08. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot
   again. To non-interactively renew *all* of your certificates, run
   "certbot renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le


$ sudo - i

root@haproxy:~# cd /etc/letsencrypt/live/example.com
root@haproxy:~# cat fullchain.pem privkey.pem > example.com.pem

$ sudo nano /etc/haproxy/haproxy.cfg

Раскомментируем относящееся к https
Сохранить.

$ exit

Отключим http:
На хосте:

$ lxc config device remove haproxy myport80

$ sudo reboot  

$ sudo systemctl start haproxy

$ lxc file pull haproxy/etc/haproxy/haproxy.cfg .

=================================
Настроим  gitlab

$ lxc exec gitlab -- sudo --user ubuntu --login
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install mc
$ sudo dpkg-reconfigure locales
$ sudo dpkg-reconfigure tzdata
$ sudo dpkg-reconfigure keyboard-configuration
$ sudo apt install -y postfix
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
$ sudo EXTERNAL_URL="http://gitlab.lxd" apt-get install gitlab-ee

https://gitlab.example.com
Ввести пароль для root не менее 8 символов
Зайти.
Запретить регистрацию.

#$ sudo gitlab-ctl stop

Backup gitlab

$ mkdir /home/user/backup

$ nano backup_gitlab_lxd.sh

#!/usr/bin/env bash
set -ex
lxc stop gitlab
BACKUP_DIR=/home/user/backup
#HOSTS=$(lxc list -c n --format csv)
HOSTS=gitlab
for HOST in ${HOSTS}

do
    BACKUP_NAME=${HOST}-$(date +"%Y-%m-%d")

    lxc snapshot ${HOST} auto-backup
    lxc publish ${HOST}/auto-backup --alias ${BACKUP_NAME}
    #lxc image export ${BACKUP_NAME} ${BACKUP_DIR}/${BACKUP_NAME}.tar.gz
    lxc image export ${BACKUP_NAME} ${BACKUP_DIR}/${BACKUP_NAME}
    lxc image delete ${BACKUP_NAME}
    lxc delete ${HOST}/auto-backup
done
lxc start gitlab

Сохранить.

$ crontab -e

# m h  dom mon dow   command
00 5 * * * sh /home/user/backup_gitlab_lxd.sh

Восстановление на другом компьютере:

$ lxc image import gitlab-2019-12-16.tar.gz --alias gitlab-backup
$ lxc launch gitlab-backup gitlab
$ lxc image delete gitlab-backup


Установка lxd на vps

Как установить и настроить GitLab в Ubuntu 18.04
Set Up a Reverse Proxy in an LXD Container to Host Multiple Websites
Secure HTTP Traffic with Certbot

# apt update
# apt upgrade
# apt install mc
# adduser user
# usermod -aG sudo user
# su user
$ cd ~
$ mkdir ~/.ssh
$ cd ~/.ssh
$ ip a
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):user@X.X.X.X
$ ls
Скачать и использовать для входа /home/user/.ssh/user@X.X.X.X
$ cp ~/.ssh/user@X.X.X.X.pub ~/.ssh/authorized_keys
$ rm ~/.ssh/user@X.X.X.X.pub
$ rm ~/.ssh/user@X.X.X.X
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
$ exit
# nano /etc/ssh/sshd_config

Проверить:

PasswordAuthentication no
.....

PubkeyAuthentication yes
ChallengeResponseAuthentication no

PermitRootLogin no
 
Сохранить.

$ sudo systemctl reload sshd

Зайти от user



$ sudo apt install lxd
$ sudo lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (dir, lvm) [default=dir]:
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]:
What should the new bridge be called? [default=lxdbr0]:
What IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]:
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: none
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:

$ sudo reboot

суббота, 7 декабря 2019 г.

Настройка сервера 1с в контейнере lxd

$ sudo adduser lxduser
$ sudo adduser lxduser lxd
от него и будем работать в дальнейшем. 

$ sudo su - lxduser

lxc launch ubuntu:18.04 srv1c
lxc config device add srv1c hasp3 unix-char path=/dev/bus/usb/001/003 mode=0777
lxc config device add srv1c hasp4 unix-char path=/dev/bus/usb/001/004 mode=0777
lxc config device add srv1c aks2 unix-char path=/dev/aks/hasp/1-3 mode=0777
lxc config device add srv1c aks3 unix-char path=/dev/aks/hasp/1-4 mode=0777
printf 'lxc.cgroup.devices.allow = c 198:* rwm' | lxc config set srv1c raw.lxc -
lxc restart srv1c
lxc exec srv1c -- sudo --user ubuntu --login
sudo apt update
sudo apt upgrade
sudo apt install mc samba -y
sudo dpkg-reconfigure locales
sudo dpkg-reconfigure tzdata
sudo dpkg-reconfigure keyboard-configuration
git clone  http://gitlab.lxd/user/setup-1c.git
cd setup-1c/scripts
sh download-pg.sh
#./download-pg.sh
Version: 10.10-4.1C
sudo sh setup-pg10.sh
#sudo ./setup-pg10.sh
Version: 10.10-4.1C
sh download-1c.sh
#./download-1c.sh
Version: 8.3.15.1778
sudo sh setup-1c.sh
Version: 8.3.15.1778
sudo poweroff
lxc copy srv1c srv1c-cop
lxc start srv1c
lxc list




=======================================================================

Обновление pg 10

git clone  http://gitlab.lxd/user/setup-1c.git
cd setup-1c
sh download-pg.sh
#Делаем dump баз и останавливаем сервер 1с
sudo sh dump.sh

sudo sh update-pg10.sh

Обновление 1с

git clone  http://gitlab.lxd/user/setup-1c.git
cd setup-1c
sh download-1c.sh
Version: 8.3.15.1778
sudo sh update-1c.sh
Version: 8.3.15.1778

=======================================================================

git config user.name user
git config user.email "you@example.com"
git add README.md
git commit -am "."
# git remote add origin http://192.168.0.221/user/setup-1c.git
git push -u origin master

четверг, 5 декабря 2019 г.

Установка lxd на ubuntu 18.04

Настройка Ubuntu 18.04.3 для работы с Back-UPS ES 700G от APC
systemd-networkd-wait-online.service Failed to start Wait for Network to be Configured with bridge
Использование journalctl для управления журналированием в systemd
решение для поддержки virtualbox
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install mc samba ssh
$ sudo reboot
$ sudo sh -c 'echo "deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian $(lsb_release -sc) contrib" >> /etc/apt/sources.list.d/virtualbox.list'
$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
$ sudo apt update
$ sudo apt install virtualbox-6.0
#$ sudo apt autoremove --purge virtualbox-6.0
$ sudo usermod -a -G vboxusers $USER
$ sudo /sbin/vboxconfig
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
$ sudo reboot

$ sudo apt-get install bridge-utils -y
$ ip a
enp0s31f6 192.168.0.5

$ sudo nano /etc/netplan/01-netcfg.yaml

# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s31f6:
      dhcp4: yes

  bridges:
    br0:
      interfaces: [enp0s31f6]
      addresses: [192.168.0.7/24]
      gateway4: 192.168.0.1
      mtu: 1500
      nameservers:
        addresses: [8.8.8.8]
      parameters:
        stp: true
        forward-delay: 4
      dhcp4: no
      dhcp6: no

Сохранить.

$ sudo netplan generate
$ sudo netplan --debug apply


$ cat /proc/cpuinfo | grep MHz
$ sudo systemctl stop ondemand
$ sudo systemctl disable ondemand

$ nano tuning.sh
 
#!/bin/bash
# отключим ipv6
sudo /bin/su -c "echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'net.ipv6.conf.lo.disable_ipv6 = 1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo '#net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
#тюнинг postgresql
sudo /bin/su -c "echo 'vm.swappiness=1' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_migration_cost_ns = 5000000' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'kernel.sched_autogroup_enabled = 0' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_background_bytes = 67108864' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.dirty_bytes = 536870912' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'vm.zone_reclaim_mode = 0' >> /etc/sysctl.conf"
#lxd
sudo /bin/su -c "echo 'fs.inotify.max_queued_events = 1048576' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'fs.inotify.max_user_instances = 1048576' >> /etc/sysctl.conf"
sudo /bin/su -c "echo 'fs.inotify.max_user_watches = 1048576' >> /etc/sysctl.conf"
sudo sysctl -p

Сохранить.

$ sudo sh tuning.sh
$ sudo reboot

$ mkdir archive
$ ls -l /dev/disk/by-uuid
$ sudo nano /etc/fstab
Добавить:
UUID=5238c225-69c3-4c28-a633-5177867f0696 /home/user/archive ext4 defaults 0 0
Сохранить.
$ sudo reboot
Конвертировать OVA в Qcow2


1. На хосте созаем файл (берем с машины где стоят драйвера)
$ sudo nano /etc/udev/rules.d/80-hasp.rules
# HASP rules
ACTION=="add|change|bind", SUBSYSTEM=="usb", ATTRS{idVendor}=="0529", ATTRS{idProduct}=="0001", MODE="664", ENV{HASP}="1", SYMLINK+="aks/hasp/%k", RUN+="/usr/sbin/aksusbd_x86_64 -c $root/aks/hasp/$kernel"
ACTION=="remove", ENV{HASP}=="1", RUN+="/usr/sbin/aksusbd_x86_64 -r $root/aks/hasp/$kernel"

# SENTINEL rules
ACTION=="add|change|bind", SUBSYSTEM=="usb", ATTRS{idVendor}=="0529", ATTRS{idProduct}=="0003", KERNEL!="hiddev*", MODE="666", GROUP="plugdev", ENV{SENTINELHID}="1", SYMLINK+="aks/sentinelhid/%k"

# SENTINEL rules для второго серверного ключа добавить еще запись:
ACTION=="add|change|bind", SUBSYSTEM=="usb", ATTRS{idVendor}=="0529", ATTRS{idProduct}=="0004", KERNEL!="hiddev*", MODE="666", GROUP="plugdev", ENV{SENTINELHID}="1", SYMLINK+="aks/sentinelhid/%k"

$ sudo reboot

$ ls -alFhR /dev/aks/


 

$ sudo lxd init

Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, dir, lvm) [default=btrfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]: no
Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
Name of the existing bridge or host interface: br0
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:


Создадим пользователя lxduser для работы  с консолью контейнеров без доступа sudo

$ sudo adduser lxduser
$ sudo adduser lxduser lxd

от него и будем работать в дальнейшем.

$ sudo su - lxduser

Восстанавливаем контейнер gitlab:

$ lxc image import gitlab-2019-12-06.tar.gz --alias gitlab-backup
$ lxc launch gitlab-backup gitlab

$ lxc image list
$ lxc image delete gitlab-backup


Восстанавливаем контейнер vbox:
$ lxc image import vbox.tar.gz --alias vbox-backup
Образ, импортирован с снимком: 4cc93c869cbc7686c61eabed84579b8386f4633ac1e0f7b7493c87274d000
$ lxc launch vbox-backup vbox
$ lxc stop vbox

На хосте проверим:
user@lxd:~$  ls -la /dev | grep vbox


crw-rw----  1 root vboxusers  10,  55 дек  5 16:18 vboxdrv
crw-rw-rw-  1 root root       10,  54 дек  5 16:18 vboxdrvu
crw-rw----  1 root vboxusers  10,  53 дек  5 16:18 vboxnetctl
drwxr-x---  3 root vboxusers       60 дек  5 16:18 vboxusb

#$ lxc start vbox
$ lxc config device add vbox vboxdrv unix-char path=/dev/vboxdrv mode=0777
$ lxc config device add vbox vboxdrvu unix-char path=/dev/vboxdrvu mode=0777
$ lxc config device add vbox vboxnetctl unix-char path=/dev/vboxnetctl mode=0777

#$ lxc config set vbox linux.kernel_modules overlay
#$ lxc config set vbox security.privileged true 
$ printf 'lxc.cgroup.devices.allow = c 10:53 rwm lxc.cgroup.devices.allow = c 10:54 rwm lxc.cgroup.devices.allow = c 10:55 rwm' | lxc config set vbox raw.lxc -
Проверить:
$ lxc config edit vbox
  ......
  image.release: bionic
  raw.lxc: lxc.cgroup.devices.allow = c 10:53 rwm lxc.cgroup.devices.allow = c 10:54
    rwm lxc.cgroup.devices.allow = c 10:55 rwm
  .......
 $ lxc start vbox

$ lxc image import test-2019-11-12.tar.gz --alias test-backup
Образ, импортирован с снимком: f442e1c60b9c1353f3d665a61e67bb7c13d383fe65af530fbe7f482699233

$ lxc launch test-backup srv1c
$ lxc config device add srv1c hasp3 unix-char path=/dev/bus/usb/001/003 mode=0777
$ lxc config device add srv1c hasp4 unix-char path=/dev/bus/usb/001/004 mode=0777
$ lxc config device add srv1c aks2 unix-char path=/dev/aks/hasp/1-3 mode=0777
$ lxc config device add srv1c aks3 unix-char path=/dev/aks/hasp/1-4 mode=0777
#$ lxc config set srv1c security.privileged true
$ printf 'lxc.cgroup.devices.allow = c 198:* rwm' | lxc config set srv1c raw.lxc -

$ lxc config edit srv1c
$ lxc restart srv1c
$ lxc exec srv1c -- rm -rf /home/usr1cv8/.server1c-8.3.15.1700
$ lxc restart srv1c


Поскольку сервер рабочий настроим архивацию

Настройка Ubuntu 16.04, 18.04

$ sudo nano /etc/default/rsync

#RSYNC_ENABLE=false
RSYNC_ENABLE=true

Сохранить.


$ sudo nano /etc/rsyncd.conf

[backup]
# destination directory to copy

path = /home/user/archive
# hosts you allow to access

hosts allow = 192.168.0.0/255.255.255.0
hosts deny = *
list = true
uid = user
gid = user
read only = false

Сохранить.

#$ sudo mkdir -p  /home/user/archive
$ sudo systemctl enable rsync
$ sudo systemctl start rsync


Под windows 10 :


Можно сделать один скрипт и поставить в планировщик:

ping -n 1 -w 1000 192.168.0.5|Find "TTL=">nul
If %ErrorLevel%==0 (
CALL d:\Copy\rsync\rsync -avz  /cygdrive/D/Copy/Archiv 192.168.0.5::backup --progress
) Else (
Echo Offline
)

 $ sudo crontab -e
@reboot fstrim / -v

$ nano backup_lxd.sh

#!/usr/bin/env bash
set -ex

BACKUP_DIR=/home/user/archive/lxd/backup
HOSTS=$(lxc list -c n --format csv)
for HOST in ${HOSTS}

do
    BACKUP_NAME=${HOST}-$(date +"%Y-%m-%d")

    lxc snapshot ${HOST} auto-backup
    lxc publish ${HOST}/auto-backup --alias ${BACKUP_NAME}
    #lxc image export ${BACKUP_NAME} ${BACKUP_DIR}/${BACKUP_NAME}.tar.gz
    lxc image export ${BACKUP_NAME} ${BACKUP_DIR}/${BACKUP_NAME}
    lxc image delete ${BACKUP_NAME}
    lxc delete ${HOST}/auto-backup
done

Сохранить.

$ sh backup_lxd.sh

+ date +%Y-%m-%d
+ BACKUP_NAME=ud1804-2019-11-10
+ lxc snapshot ud1804 auto-backup
+ lxc publish ud1804/auto-backup --alias ud1804-2019-11-10
Контейнер публикуется с отпечатком: b900ce0db69f0a57afd52af682f8a47229b5ea8fcdfa2a566af2034a6f6766a2
+ lxc image export ud1804-2019-11-10 /home/user/backup/ud1804-2019-11-10.tar.gz
Image exported successfully!
+ lxc image delete ud1804-2019-11-10
+ lxc delete ud1804/auto-backup

Восстановление на другом компьютере:

$ lxc image import ud1804-2019-11-10.tar.gz.tar.gz --alias ud1804-backup
Образ, импортирован с снимком: b900ce0db69f0a57afd52af682f8a47229b5ea8fcdfa2a566af2034a6f6766a2
$ lxc launch ud1804-backup ud1804
#lxc image delete ud1804-backup

$ lxc info gitlab
$ lxc delete gitlab/auto-backup
$ lxc image list
$ lxc image delete gitlab-2019-12-06

вторник, 3 декабря 2019 г.

rsync-time-backup

Настройка Git-сервера в контейнере lxd

Установка GitLab в Ubuntu 18.04 
Как настроить Git-сервер на Linux
4.4 Git on the Server - Setting Up the Server
Linode:Install GitLab on Ubuntu 18.04
DO:Установка Git в Ubuntu 18.04 [Краткое руководство]
DO:Установка Git в Ubuntu 18.04

Запись А gitlab.examle.com host  в DNS домена example.com

$ lxc launch ubuntu:18.04 gitlab
$ lxc exec gitlab /bin/bash
# adduser user
# usermod -aG sudo user
# apt update
# apt upgrade
## apt install qemu-user-static -y
# apt install mc samba sudo ssh wget -y
# dpkg-reconfigure locales
## Выбираем ru_RU.UTF-8 ru_RU.UTF-8 UTF-8
# locale -a  
## timedatectl set-timezone Europe/Moscow
# dpkg-reconfigure tzdata
## apt install keyboard-configuration
# dpkg-reconfigure keyboard-configuration
# nano /etc/ssh/sshd_config
#PasswordAuthentication no
PasswordAuthentication yes
Сохранить.
# systemctl reload sshd
##apt install tasksel
## tasksel --list-tasks 
## tasksel install xubuntu-core
## apt install xrdp
## systemctl enable xrdp
## apt install x2goserver x2goserver-xsession
# reboot

Зайти по ssh

$ sudo apt install -y postfix
$ curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
$ ip a

### Запись А gitlab.examle.com host  в DNS домена example.com, должна существовать,
### если указать "https" - будет попытка создать сертификат.
### предполагаем, что преобразованием https займется haproxy.
$ sudo EXTERNAL_URL=://gitlab.example.com" apt-get install gitlab-ee

http://gitlab
Ввести пароль для root не менее 8 символов
Зайти.

$ lxc list
| gitlab     | RUNNING | 192.168.0.221 (eth0) |      | PERSISTENT | 0         |

$ mkdir /home/user/setup-1c
$ cd /home/user/setup-1c
$ git init
Инициализирован пустой репозиторий Git в /home/user/setup-1c/.git/
$ git config user.name user
$ git config user.email "you@example.com"
$ git add README.md
$ git commit -am "Update README.md"
#$ git remote add origin http://192.168.0.221/user/setup-1c.git
$ git push -u origin master
=============================

user@lxd:~$ lxc delete u1804
user@lxd:~$ lxc copy u1804-cop u1804
user@lxd:~$ lxc start u1804
$ git clone http://192.168.0.221/user/setup-1c.git
$ cd setup-1c
$ sudo sh setup-1c.sh

Настройка почты с отправкой через yandex:
ещё

$ lxc exec gitlab bash
# nano /etc/gitlab/gitlab.rb
Добавить в конец
external_url 'http://gitlab'
gitlab_rails['gitlab_email_from'] = 'user@yandex.ru'
gitlab_rails['gitlab_email_display_name'] = 'Private GitLab'
gitlab_rails['gitlab_email_reply_to'] = 'user@yandex.ru'
gitlab_rails['gitlab_email_subject_suffix'] = ''
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.yandex.ru"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "user@yandex.ru"
gitlab_rails['smtp_password'] = "password_user@yandex.ru"
gitlab_rails['smtp_domain'] = "yandex.ru"
#gitlab_rails['gitlab_email_from'] = 'user@yandex.ru'
#gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_authentication'] = "plain"
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'peer'

Сохранить.


# reboot
# gitlab-rails console
Notify.test_email('mail@domen.com', 'Message Subject', 'Message Body').deliver_now

Дальнейшая настройка (если понадобиться)

$ lxc exec gitlab -- sudo --user ubuntu --login
$ sudo nano /etc/gitlab/gitlab.rb

external_url 'http://gitlab.example.com'
 
Сохранить.

$ sudo gitlab-ctl reconfigure
$ exit



   

PGConf.Сибирь 2019

суббота, 30 ноября 2019 г.

LXC в контейнере LXD

How to Install and Configure LXC Container on Ubuntu 16.04

Запустить орла в lxd, полноценно перенести напрямую не удалось глючит - интерфейс.
Выбран путь хост орел lxc  орел, контейнер lxc переносим на ubuntu 18.04  в контейнере lxd


Перенос контейнера lxc в lxd на другую машину

копируем контейнер с орлом на орле
$ sudo -i
# cd /var/lib/lxc/
# tar --numeric-owner -jcvf /home/user/astra.tar.bz2 astra/




Создаем на хосте контейнер astralxc

$ lxc launch ubuntu:18.04 astralxc
$ lxc config set astralxc security.privileged true
$ lxc config set astralxc security.nesting true
$ lxc restart astralxc
$ lxc exec astralxc bash
# ip a
192.168.1.187

# apt update
# apt-get install bridge-utils

# nano /etc/netplan/50-cloud-init.yaml


# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
#  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes

  bridges:
    br0:
      interfaces: [eth0]
      addresses: [192.168.1.187/24]
      gateway4: 192.168.1.1
      mtu: 1500
      nameservers:
        addresses: [8.8.8.8]
      parameters:
        stp: true
        forward-delay: 4
      dhcp4: no
      dhcp6: no

Сохранить.

# reboot

$ lxc exec astralxc bash
# apt update 
# apt install lxc mc
# nano /etc/default/lxc-net
USE_LXC_BRIDGE="false"

# nano /etc/lxc/default.conf
lxc.net.0.type = veth
lxc.net.0.link = br0
lxc.net.0.flags = up
lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx

# service lxc-net restart
# apt install lxc-templates
## lxc-create -n ubuntu -t ubuntu

# cd /var/lib/lxc/
# tar jxfv /root/astra.tar.bz2
# lxc-ls -f
# lxc-start -n astra
# lxc-stop -n astra
# lxc-destroy  -n astra
# lxc-console -n astra

$ lxc copy astralxc astralxc-cop
$ lxc start astralxc
$ lxc exec astralxc bash
# lxc-start -n astra
# lxc-console -n astra
admin
astralinux

$ sudo apt update
$ sudo dpkg-reconfigure locales
## Выбираем ru_RU.UTF-8
$ sudo dpkg-reconfigure tzdata
$ sudo apt install keyboard-configuration
## dpkg-reconfigure keyboard-configuration
$ sudo apt install mc ssh fly-data fly-wm
$ sudo reboot
$ sudo lxc-console -n astra
$ sudo apt install xrdp
$ ip a
192.168.1.189
$ sudo reboot


  

пятница, 29 ноября 2019 г.

orel установка lxd из snap

FireJail и LXC
$ sudo apt install bridge-utils
$ ip a
192.168.0.120
$ sudo nano /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback
#auto eth0
#iface eth0 inet dhcp
#iface  eth0 inet static
#address 192.168.0.120
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8

##Bridge  Name ###
auto br0

# Bridge setup
iface br0 inet static
   bridge_ports  eth0
       address 192.168.0.120
       broadcast 192.168.0.255
       netmask 255.255.255.0
       gateway 192.168.0.1
   bridge_stp off
   bridge_fd 9

Сохранить.

$ sudo reboot

Установка lxd

$ sudo apt install debian-archive-keyring dirmngr
$ sudo sh -c 'echo "deb https://mirror.yandex.ru/debian/ stretch main contrib non-free" >>  /etc/apt/sources.list'
$ sudo apt update
$ sudo apt install snapd
$ sudo snap install lxd
#$ sudo usermod -a -G lxd ${USER}
$ sudo usermod -a -G lxd  user
$ sudo -i
# lxd init
Would you like to use LXD clustering? (yes/no) [default=no]:
Do you want to configure a new storage pool? (yes/no) [default=yes]:
Name of the new storage pool [default=default]:
Name of the storage backend to use (btrfs, ceph, dir, lvm, zfs) [default=zfs]: dir
Would you like to connect to a MAAS server? (yes/no) [default=no]:
Would you like to create a new local network bridge? (yes/no) [default=yes]: no
Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
Name of the existing bridge or host interface: br0
Would you like LXD to be available over the network? (yes/no) [default=no]:
Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
# exit
#$ sudo usermod -a -G lxd ${USER}

orel установка lxc

FireJail и LXC
$ sudo apt install bridge-utils
$ ip a
192.168.0.120
$ sudo nano /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback
#auto eth0
#iface eth0 inet dhcp
#iface  eth0 inet static
#address 192.168.0.120
#netmask 255.255.255.0
#gateway 192.168.0.1
#dns-nameservers 8.8.8.8

##Bridge  Name ###
auto br0

# Bridge setup
iface br0 inet static
   bridge_ports  eth0
       address 192.168.0.120
       broadcast 192.168.0.255
       netmask 255.255.255.0
       gateway 192.168.0.1
   bridge_stp off
   bridge_fd 9

Сохранить.

$ sudo reboot


$ sudo apt install lxc lxc-dev cgroup-tools
$ sudo apt install lxc-astra
$ sudo nano /etc/default/lxc-net

USE_LXC_BRIDGE="false"

$ sudo nano /etc/lxc/default.conf

lxc.network.type = veth
lxc.network.link = br0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:xx:xx:xx

$ sudo service lxc-net restart

$ sudo lxc-create -t astralinux-ce -n astra

$ sudo lxc-start -n astra
#$ sudo lxc-stop -n astra
#$ sudo lxc-destroy -n astra
$ sudo lxc-ls -f
NAME  STATE   AUTOSTART GROUPS IPV4         IPV6
astra RUNNING 0         -      192.168.0.73 -

$ sudo lxc-console -n astra
admin
astralinux

$ sudo nano /etc/apt/sources.list
Изменить на http
$ sudo apt update
$ sudo apt install apt-transport-https
$ sudo nano /etc/apt/sources.list
Изменить на https
$ sudo apt update
$ sudo dpkg-reconfigure locales
## Выбираем ru_RU.UTF-8
$ sudo dpkg-reconfigure tzdata
$ sudo apt install keyboard-configuration
## dpkg-reconfigure keyboard-configuration
$ sudo apt install mc ssh fly-data fly-wm
$ sudo reboot
$ sudo lxc-console -n astra

Можно заходить по xrdp

Перенос контейнера lxc в lxd на другую машину

$ sudo -i
# cd /var/lib/lxc/astra/
# tar --numeric-owner -jcvf astra.tar.bz2 rootfs/


$ lxc launch images:debian/9 ast
$ lxc stop ast
$ sudo -i
$ cd /var/lib/lxd/containers/ast
# ls -n

# rm -rf  /var/lib/lxd/containers/ast/rootfs/
# tar jxfv /home/user/astra.tar.bz2


# exit

$ nano changeuid.sh

#!/bin/bash
####################################################
# This Skript changed all uids & gids in the path of
# '$1' to BASE_UID + uid & BASE_GID + gid
#
# License: GPLv3 or higher
####################################################

###
# You might need to change these:
BASE_UID=100000
BASE_GID=100000
###

# Params & Usage
DIR=$1
if [ -z "$DIR" ] ; then
    echo "Usage: $0 <Directory>"
    exit 1
fi

IFS=$'\n'
echo "Starting chown on $DIR... this might take a while..."
for line in $(find $DIR -exec stat -c '%n:%u:%g' {} \;) ; do
    # Split line into variables
    file=$(echo $line | cut -f1 -d:)
    old_owner=$(echo $line | cut -f2 -d:)
    old_group=$(echo $line | cut -f3 -d:)

    # Skip if something went wrong
    [ -z "$file" -o -z "$old_owner" -o -z "$old_group" ] && continue

    # Calculate new uids/gids
    new_owner=$old_owner
    new_group=$old_group
    if [ $old_owner -lt $BASE_UID ] ; then
        new_owner=$(($BASE_UID + $old_owner))
    fi

    if [ $old_group -lt $BASE_GID ] ; then
        new_group=$(($BASE_GID + $old_group))
    fi

    # Set new owner/group if it has to be changed
    if [ $new_owner -ne $old_owner -o $new_group -ne $old_group ] ; then
        echo "Changing: $file from $old_owner:$old_group to $new_owner:$new_group"
        chown $new_owner:$new_group "$file"
    fi
done

echo "DONE!"
exit 0

Сохранить.

$ sudo sh changeuid.sh /var/lib/lxd/containers/ast/rootfs/

$ sudo -i
$ cd /var/lib/lxd/containers/ast
# ls -n
$ lxc copy ast astra
$ lxc config set astra security.privileged true
$ lxc start astra
$ lxc exec astra bash
# nano /etc/apt/sources.list
http
Сохранить.
# apt update
# apt install apt-transport-https
# nano /etc/apt/sources.list
https
Сохранить.
# apt update
# apt install mc ssh
# dpkg-reconfigure locales
## Выбираем ru_RU.UTF-8
# dpkg-reconfigure tzdata
# apt install keyboard-configuration
## dpkg-reconfigure keyboard-configuration
# apt install fly-data fly-wm
$ sudo reboot
$ lxc exec astra bash

# apt install fly-data fly-wm
# apt install xrdp
# restart







четверг, 28 ноября 2019 г.

lxd debian 10 сборка PostgreSQL 11.6 (По Олегу Харину)

Платформа 8.3 → Тестирование PostgreSQL, версия 10.8-13.1C 8.3.15.1565 ubuntu

Там есть патч 999-pg_dump_bin.patch. Если его применить, то можно делать pg_dump с бинарным COPY указав в командной строке опцию --binary-copy. Пример если выгружать на самом сервере:
pg_dump --binary-copy -j 4 -h /var/run/postgresql/ -U postgres -Fd uvadrev -f 1C-uvadrev-2019-12-12.backup


$ lxc image list images: > 1.txt
$ lxc launch images:debian/10 deb10h
$ lxc list
$ lxc config set deb10h security.privileged true
$ lxc restart deb10h
$ lxc exec deb10h /bin/bash
# adduser builder
# usermod -aG sudo builder

# apt update
# apt upgrade
# apt install qemu-user-static -y
# apt install mc samba sudo ssh wget -y

# poweroff
#$ lxc stop deb10h
$ lxc copy deb10h harin116

$ lxc start harin116
$ lxc list
+------------+---------+---------------------+------+------------+-----------+
| deb10harin | RUNNING | 192.168.0.36  (eth0) |      | PERSISTENT | 0         |
+------------+---------+---------------------+------+------------+-----------+


Соединяемся по ssh builder@192.168.0.36

Последовательность сборки по шагам (работаем под пользователем не root):

  1. Ставим необходимые общие пакеты для сборки:
    $ sudo apt-get install build-essential fakeroot devscripts -y
    $ wget http://apt.postgresql.org/pub/repos/apt/pool/main/p/postgresql-11/postgresql-11_11.6.orig.tar.bz2
  2. Распаковываем приложенный архив для сборки PostgreSQL:
    $ mkdir postgresql-11_11.6-1.1C
    $ cd postgresql-11_11.6-1.1C
  3. Копируем:
    $ cp ~/postgresql-11_11.6-1.1C.opt.dsc .
    $ cp ~/postgresql-11_11.6-1.1C.opt.debian.tar.xz .
    $ cp ~/postgresql-11_11.6.orig.tar.bz2 .
  4. Распаковываем и накладываем патчи:
    $ dpkg-source -x postgresql-11_11.6-1.1C.opt.dsc
  5. Переходим в каталог сборки:
    $ cd postgresql-11-11.6
  6. Устанавливаем пакеты, необходимые для сборки PostgreSQL:
    $ sudo mk-build-deps -i
    1. - для Ubuntu-сервер потребовалось ещё предварительно установить пакет equivs (для Debian нет надобности):
        $ sudo apt-get install equivs
  7. Запускаем сборку:
    $ debuild -b -uc -us
На хорошем компьютере сборка примерно 20 минут.
Если всё проходит нормально, то получаем в каталоге postgresql-11_11.6-1.1C файлы *.deb.

Для работы 1С достаточно установить:

libpq5_11.6-1.1C.opt_amd64.deb
postgresql-11_11.6-1.1C.opt_amd64.deb
postgresql-client-11_11.6-1.1C.opt_amd64.deb


Пакуем в postgresql-11_11.6-1.1C.tar.gz



#$ grep -i failed build/src/test/regress/regression.out


Установка в контейнер debian

Можно создать новый контейнер:
 

$ lxc launch images:debian/10 dpg
$ lxc config set dpg security.privileged true
$ lxc restart dpg
$ lxc exec dpg /bin/bash
# adduser user
# usermod -aG sudo user
# apt update
# apt upgrade
# apt install qemu-user-static -y
# apt install mc samba sudo ssh wget -y
# dpkg-reconfigure locales
## Выбираем ru_RU.UTF-8
# locale -a  
## timedatectl set-timezone Europe/Moscow
# dpkg-reconfigure tzdata
# apt install keyboard-configuration
## dpkg-reconfigure keyboard-configuration
Сохранить.
# poweroff
$ lxc copy dpg pgh116
$ lxc start pgh116


$ lxc list
| pgh116     | RUNNING | 192.168.0.173 (eth0) |


В контейнере со сборкой
$ scp postgresql-11_11.6-1.1C.tar.gz user@192.168.0.173:/home/user


Соединяемся по ssh user@192.168.0.173

$ ssh user@192.168.0.173
#$ sudo apt search postgresql-common
$ wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O - | sudo apt-key add -
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
$ sudo apt-get update
$ sudo apt install libllvm7 libxslt1.1
$ tar xvzf postgresql-11_11.6-1.1C.tar.gz
$ cd postgresql-11_11.6-1.1C
$ sudo dpkg -i libpq5_11.6-1.1C.opt_amd64.deb
$ sudo dpkg -i postgresql-client-11_11.6-1.1C.opt_amd64.deb
$ sudo dpkg -i postgresql-11_11.6-1.1C.opt_amd64.deb
$ dpkg -l | grep 11.6-1.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold

$ sudo pg_dropcluster --stop 11 main$ sudo pg_createcluster --locale ru_RU.utf8 11 main --  --data-checksums
$ sudo pg_ctlcluster 11 main start
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ sudo pg_ctlcluster 11 main stop 
$ sudo apt install nano
$ sudo nano /etc/postgresql/11/main/postgresql.conf

Добавить в конец

# DB Version: 11
# OS Type: linux
# DB Type: oltp
# Total Memory (RAM): 16 GB
# Data Storage: ssd

max_connections = 1000
shared_buffers = 4GB
temp_buffers = 256MB
work_mem = 64MB
effective_cache_size = 8GB # 4GB for 1c
maintenance_work_mem = 1GB
wal_buffers = 16MB
min_wal_size = 2GB
max_wal_size = 4GB

default_statistics_target = 100
effective_io_concurrency = 2
random_page_cost = 1.1
autovacuum = on
autovacuum_max_workers = 4
autovacuum_naptime = 20s
bgwriter_delay = 20ms
bgwriter_lru_multiplier = 4.0
bgwriter_lru_maxpages = 400
synchronous_commit = off
checkpoint_completion_target = 0.9
ssl = off
fsync = on
commit_delay = 1000
commit_siblings = 5
row_security = off
max_files_per_process = 1000
standard_conforming_strings = off
escape_string_warning = off
max_locks_per_transaction = 256
#log_min_duration_statement = 0
log_line_prefix = '%t [%p]: [%l-1] user=%u,db=%d,client=%h '
log_checkpoints = on
log_connections = on
log_disconnections = on
log_lock_waits = on
log_temp_files = 0
#log_autovacuum_min_duration = 0
#log_duration = on
#log_statement = all
log_destination = stderr
plantuner.fix_empty_table = 'on'
online_analyze.table_type = 'temporary'
online_analyze.verbose = 'off'

Сохранить.

$ sudo pg_ctlcluster 11 main start 

Выход.
$ sudo poweroff

#$ lxc stop pgh116
$ lxc copy pgh116 pgh116-cop
$ lxc start pgh116
Начинаем испытания.

Орел в докере

среда, 27 ноября 2019 г.

Как перенести размещенный сервер за 5 простых шагов с помощью Rsync

Как перенести размещенный сервер за 5 простых шагов с помощью Rsync
Инструкция по переносу установленной системы на другой носитель

1. Установим орла на виртуальную машину без поддержки сети.
2. Подключим сеть:
$ sudo nano /etc/network/interfaces
Добавим:
auto eth0
iface eth0 inet dhcp
Сохранить.
$ sudo reboot
$ sudo apt update
$ sudo apt upgrade
$ sudo reboot
$ sudo apt install rsync xrdp
$ sudo reboot
$ Зайти через консоль виртуальной машины
$ ip a
192.168.1.220
выйти из консоли виртуальной машины.
Зайти по xrdp



Создаем новый контейнер lxd:
$ lxc launch images:debian/9 ast
$ lxc config set ast security.privileged true
$ lxc restart ast
$ lxc exec ast bash
# passwd
# apt install nano mc rsync ssh
# nano /etc/ssh/sshd_config
PermitRootLogin yes
# service ssh reload
#reboot
$ lxc list
 | ast     | RUNNING | 192.168.1.248 (eth0) |      | PERSISTENT | 0         |

На компе с орлом (сессия ssh выйти из xrdp):
# rsync -ayz -e  ssh --exclude=/proc --exclude=/sys --exclude=/dev / root@192.168.0.244:/ --progress --stats
# rsync -auHxv –numeric-ids –exclude=/etc/fstab –exclude=/etc/network/* –exclude=/proc/* –exclude=/tmp/* –exclude=/sys/* –exclude=/dev/* –exclude=/mnt/* –exclude=/boot/* –exclude=/root/*  /* root@192.168.1.248:/
$ lxc stop ast
$ lxc copy ast astra
$ lxc start astra
$ lxc list
$ lxc exec astra bash
$ systemctl restart xrdp
3. LXD Containers run in unprivileged-mode (default) with uid/gid 100000:100000

$ nano changeuid.sh


#!/bin/bash
####################################################
# This Skript changed all uids & gids in the path of
# '$1' to BASE_UID + uid & BASE_GID + gid
#
# License: GPLv3 or higher
####################################################

###
# You might need to change these:
BASE_UID=100000
BASE_GID=100000
###

# Params & Usage
DIR=$1
if [ -z "$DIR" ] ; then
    echo "Usage: $0 <Directory>"
    exit 1
fi

IFS=$'\n'
echo "Starting chown on $DIR... this might take a while..."
for line in $(find $DIR -exec stat -c '%n:%u:%g' {} \;) ; do
    # Split line into variables
    file=$(echo $line | cut -f1 -d:)
    old_owner=$(echo $line | cut -f2 -d:)
    old_group=$(echo $line | cut -f3 -d:)

    # Skip if something went wrong
    [ -z "$file" -o -z "$old_owner" -o -z "$old_group" ] && continue

    # Calculate new uids/gids
    new_owner=$old_owner
    new_group=$old_group
    if [ $old_owner -lt $BASE_UID ] ; then
        new_owner=$(($BASE_UID + $old_owner))
    fi

    if [ $old_group -lt $BASE_GID ] ; then
        new_group=$(($BASE_GID + $old_group))
    fi

    # Set new owner/group if it has to be changed
    if [ $new_owner -ne $old_owner -o $new_group -ne $old_group ] ; then
        echo "Changing: $file from $old_owner:$old_group to $new_owner:$new_group"
        chown $new_owner:$new_group "$file"
    fi
done

echo "DONE!"
exit 0

Сохранить.

На хосте lxd:
$ lxc stop astra
$ sudo  sh  changeuid.sh /var/lib/lxd/containers/astra/rootfs/
$ lxc config set astra security.privileged false
$ lxc start astra
$ sudo -i
root@u1804:~# cd /var/lib/lxd/containers/astra/rootfs/
root@u1804:/var/lib/lxd/containers/astra/rootfs# ls -n
итого 92
drwxr-xr-x   2 100000 100000  4096 мая 25  2019 bin
drwxr-xr-x   3 100000 100000  4096 мая 25  2019 boot
drwxr-xr-x   2 100000 100000  4096 ноя 28 08:30 dev



=========================================
Установка 
$ sudo apt install fly-data fly-wm


=========================================
Установка 
$ sudo apt install fly-data fly-wm

Загрузиться на виртуальной машине с live-cd
F12 c

$ sudo add-apt-repository universe
$ sudo apt update
$ sudo apt install mc
подключиться к системе загруженной с флешки по ssh

$ sudo apt install ssh
Зададим пароль для пользователя ubuntu
$ passwd
Смотрим ip для подключения
$ ip a

$ sudo -i
# fdisk -l
Device     Boot      Start        End    Sectors Size Id Type
/dev/sda1  *          2048 4278190079 4278188032   2T 83 Linux
/dev/sdb2       976896 240252927 239276032 114.1G  7 HPFS/NTFS/exFAT

# mount /dev/sda1 /mnt/disk
# mkdir /mnt/arh
# umount /dev/sdb2
# mount /dev/sdb2 /mnt/arh

# mkdir /mnt/disk
# mount /dev/sda1 /mnt/disk
# cd /mnt/disk

# tar --xattrs --acls -czpf /mnt/arh/disk.tar.bz2 --exclude=/mnt/disk/proc --exclude=/mnt/disk/lost+found --exclude=/mnt/disk/mnt --exclude=/mnt/disk/sys --exclude=/mnt/disk/parsecfs .

$  lxc stop ast
$ sudo -i
# rm -rf /var/lib/lxd/containers/ast/rootfs/*
# cd var/lib/lxd/containers/ast/rootfs/
# tar --xattrs --xattrs-include=security.{PDPL,AUDIT,DEF_AUDIT} --acls -xzf /home/user/disk.tar.bz2
## tar --xattrs --xattrs-include=security.{PDPL,AUDIT,DEF_AUDIT} --acls -xzf /home/user/disk.tar.bz2 -С /var/lib/lxd/containers/ast/rootfs
# exit

$ lxc start ast
$ lxc list
192.168.1.248
$ lxc exec ast bash
$ systemctl restart xrdp