воскресенье, 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

понедельник, 23 декабря 2019 г.

LXD: Resource control

LXD 2.0: Resource control
Setting CPU Resource Limits With LXC


$ lxc config set test limits.cpu 1
 
cat /proc/cpuinfo | grep processor
 
 
$ lxc config set test limits.memory 8GB
 

Установка 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

четверг, 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

среда, 4 декабря 2019 г.

Error: Failed to run: /usr/lib/lxd/lxd forkstart vbox /var/lib/lxd/containers /var/log/lxd/vbox/lxc.conf:

cannot start any container: error: Failed to run:
error: Failed to run: 
Custom user mappings in LXD containers 



user@lxd:~$ cat /etc/subuid
lxd:100000:65536
root:100000:65536
user:165536:65536
user@lxd:~$ cat /etc/subgid
lxd:100000:65536
root:100000:65536
user:165536:65536

$ lxc profile set default security.privileged true

$ lxc profile unset default security.privileged

$ sudo nano /etc/subuid

lxd:100000:65536
root:100000:65536
#user:165536:65536
user:100000:65536





$ sudo nano /etc/subgid
lxd:100000:65536
root:100000:65536
#user:165536:65536
user:100000:65536

Настройка 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