пятница, 16 ноября 2018 г.

Letsencrypt certbot entered correctly and the DNS A record(s) for that domain. Перенос certs на другой сервер, с добавлением к другим certs

Ошибка, хотя адрес правильный, права выставлены правильно.
Совмещены сертификаты с нескольких серверов
certbot renew --dry-run для части сертификатов выполняется
При запуске certbot certonly для одного домена, пишет укажите аккаунт

certbot certonly --webroot -w /home/www/acme -d www.domain.tld -d domain.tld --email testcert@domain.tld --non-interactive --agree-tos

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Missing command line flag or config entry for this setting:
Please choose an account
Choices: ['old1.hostname@2016-12-28T09:20:13Z (5d57)', 'old2.hostname@2018-04-25T12:50:13Z (ebbd)', 'real.hostname@2018-10-01T12:46:46Z (8656)']

Решение - объединить все на один реальный аккаунт, где real.hostname
Для этого в папке /etc/letsencrypt/renewal
во всех конфигах меняю account на один с сервера, на который были перенесены certs

[renewalparams]
authenticator = webroot
installer = None
account = 1d375aa7bda4c25k7ae464946751670a
renew_hook = /usr/local/bin/renew.sh

И удалил старые аккаунты из папки 
/etc/letsencrypt/accounts/acme-v01.api.letsencrypt.org/directory

После этого все заработало.

четверг, 8 ноября 2018 г.

OpenVPN revoke cert

link
cd /etc/openvpn/easy-rsa
# load your CA-related variables into the shell environment from the ./vars file
 . ./vars 
# run the revoke script for <clientcert.pem> 
./revoke-full clientcert
Проверить в /etc/openvpn/easy-rsa/keys/index.txt напротив clientcert появится R

понедельник, 5 ноября 2018 г.

Gitlab-ci работа с node

Использовал эту ссылку
Установил node, так как с nvm не получилось, не видит путь
curl -sL https://deb.nodesource.com/setup_8.x -o nodesource_setup.sh

stages:
  - build
  - lint
  - test

cache:
  paths:
    - node_modules/

install_dependencies:
  stage: build
  script:
    - npm install
  artifacts:
    paths:
      - node_modules/
  tags:
    - my_server
    
run_lint:
  stage: lint
  script:
    - npm run lint
  tags:
    - my_server

run_test:
  stage: test
  script:
    - npm run test
  tags:
    - my_server

Использование кэша при выполнении stage lint
Checking cache for default...
Successfully extracted cache
Downloading artifacts for install_dependencies (125982)...
Downloading artifacts from coordinator... ok id=125982 responseStatus=200 OK token=5poY2XJb
$ npm run lint

> my_server@1.0.0 lint /home/gitlab-runner/builds/92c49bi8/0/my_project
> eslint "**.js" "src/**/**.js" "migrations/**/**.js"

Creating cache default...
node_modules/: found 22300 matching files
Created cache
Job succeeded

среда, 31 октября 2018 г.

Linux Mariadb Can't start server: Bind on TCP/IP port. Got error: 98: Address already in use

Если не запускается mariadb с такой ошибкой, то проверить процессы, которые забиндили этот адрес командой:

lsof -i TCP:3306

Убить kill и стартовать mariadb

Gitlab-ci веб-интерфейс не отображает коммиты

Через gitlab log коммиты в v1.2.3 branch видно, через веб-интерфейс для этого branch коммитов нет с определенной даты.
Причиной оказался tag v1.2.3 созданный после той даты. После его удаления коммиты стали отображаться в веб-интерфейсе.

вторник, 30 октября 2018 г.

Linux Clear cache after site release

Проект Symphony, Nginx
Используется opcache
Как очистить cache, чтобы сайт корректно отображался после релиза.

Symphony
export APP_ENV=prod && php bin/console cache:clear
chown -R user:www-data user
opcache
php /usr/local/bin/cachetool.phar opcache:reset --fcgi=/dev/shm/php-user.sock --tmp-dir=/tmp
Nginx
очистить cache на стороне клиента
добавить в конфиг сервера
server
{
...
expires 10m
...
}

Gitlab-ci runner file remote: Access denied fatal: unable to access The requested URL returned error: 403

Resolving
Проект с галочкой private, тот кто делал merge с правами админа, но не состоял в группе проекта. В pipeline имели такую ошибку. После добавления в группу и retry все job из pipeline выполнились без вмешательства.

пятница, 26 октября 2018 г.

NGINX alias

Нужно отдавать png файлы из папки email подпапок folder1 folder2 etc на сайте domain.tld/email/folder/img.png
Использую alias
    location ~ ^/email/(.+\.(?:gif|jpe?g|png))$ {
        alias /home/www/email/$1;
    }

четверг, 25 октября 2018 г.

NVM version "N/A -> N/A" is not yet installed

Как избежать сообщения при запуске node
N/A: version "N/A -> N/A" is not yet installed. You need to run "nvm install N/A" to install it before using it.
Это мешает в ansible playbooks так как определяется как ошибка

Решение: изменить алиас
например
nvm alias default 8

среда, 24 октября 2018 г.

Gitlab-CI add gitlab-runner

1) Install
I need a version
apt-get install gitlab-runner=11.1.0

2) Register runner
It is located on this page http://take.ms/1u9oJ
Take address and token from here http://take.ms/3ypc0
Run
gitlab-runner register
Running in system-mode.

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
https://gitlab.domain.org/
Please enter the gitlab-ci token for this runner:
t6jJhKgcxxWjMvmZBddM
Please enter the gitlab-ci description for this runner:
[SERVERNAME]: project_name
Please enter the gitlab-ci tags for this runner (comma separated):
project_name
Registering runner... succeeded                     runner=t6jJhKgc
Please enter the executor: docker, docker-ssh, docker+machine, kubernetes, parallels, shell, ssh, virtualbox, docker-ssh+machine:
shell
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!


вторник, 16 октября 2018 г.

Linux bash сравнить даты файлов

Это ситуация, когда на одном https домене много IP. Обновляем на одном, потом rsync раскладываем по остальным и обновляем в случае изменения даты.

old=`/usr/bin/stat -c %Y /etc/letsencrypt/live/www.site/privkey.pem`
new=`/usr/bin/stat -c %Y /home/letsencrpt/etc/letsencrypt/live/www.site/privkey.pem`
difference=`expr "$new" - "$old"`

#checking the difference whether is number
if ! [[ "$difference" =~ ^-?[0-9]+$ ]]; then
      logging "Something was wrong with privkey.pem file, the script was stopped with error"
      rm /home/letsencrpt/letsencrypt.tar
      exit 1
fi

if [[ $difference -gt 0 ]]; then
      logging "Updating certs..."
      logging "Old creating date is $old, new creating date is $new"
      /bin/tar xvpf /home/letsencrpt/letsencrypt.tar -C /
fi

понедельник, 15 октября 2018 г.

Certbot auto renew

Где добавлять renew?
1) manual https://certbot.eff.org/docs/using.html?highlight=renew#renewing-certificates
    By default, the following locations are searched:
    /etc/letsencrypt/cli.ini
добавляем в этот файл
renew-hook = /usr/local/bin/renew.sh

в /usr/local/bin/renew.sh файл добавляем
#!/bin/sh
/bin/systemctl reload nginx

Проверяем в /var/log/letsencrypt

2) Если обновляется через systemd, то смотрим:

/lib/systemd/system/certbot.timer
и добавляем там
 --renew-hook "/bin/systemctl reload nginx"

вторник, 25 сентября 2018 г.

Linux Zabbix как убрать в графиках округления значений тысяч в К

link1 link2
/usr/share/zabbix/include/func.inc.php

// black list wich do not require units metrics.. 
$blacklist = array('%', 'ms', 'rpm', 'rpm');

Сюда добавляем свое значение (например height), и такое же значение ставим в 
Item -> Unit
Применилось в графике сразу без перезагрузки

пятница, 21 сентября 2018 г.

Linux Hyper-treading ACPI

Столкнулся с такой проблемой. На двух-процессорном по 4 ядра сервере было только 8 потоков (должно быть 16). Выглядит, как будто не включен Hyper-treading в BIOS.
При проверке оказалось что он в BIOS включен.
Проблема была в параметре grub acpi=off . При удалении его из строки загрузки, 16 потоков появилось. Почему отключали acpi уже не вспомнили.

вторник, 18 сентября 2018 г.

Linux chown висит при большом количестве файлов

Большая задержка при
chown -R ./dir
найдена альтернатива
find ./dir -uid 0 -print0 | xargs -0 -r chown user:user

Почему  -print0 и xargs -0, если это не использовать, то при именах с пробелами будет ошибка не найдена директория. После добавления этих параметров файлы с пробелами стали обрабатываться

пятница, 14 сентября 2018 г.

Linux как узнать из какой директории запущен скрипт

Есть скрипт, который видно в процессах как ./script.sh
Нужно узнать из какого каталога его запустили.
Для этого находим pid, например:

pgrep -l script.sh

потом по pid находим полный путь

readlink /proc/PID/cwd

среда, 5 сентября 2018 г.

Gitlab-ci sshkey fingerprint

Чтобы проверить, есть ли такой ключ в gitlab нужно сверить fingerprint
ssh-keygen -l -f id_rsa.pub

ssh-keygen -E md5 -l -f id_rsa.pub
для старого формата

пятница, 31 августа 2018 г.

Windows Hyper-V автоматический запуск низкоуровневой оболочки

Windows 10 с Hyper-V виртуалкой на диске D. Был установлен SSD диск и перенесен диск C на него, на диске D были удалены все партиции, связанные с диском C и был расширен диск D на все освободившееся пространство посредством Acronis. После перезагрузки виртуалка с диска D автоматически не загрузилось, среди рекомендуемых решений была проверка включения автоматического запуска низкоуровневой оболочки. Помогла эта статья команда:

bcdedit /set hypervisorlaunchtype auto
и перезагрузил.

пятница, 17 августа 2018 г.

Linux disable swap

1. Отключить в fstab
2. systemctl list-unit-files | grep swap
3. systemctl mask dev-sda4.swap
4. Добавить OOMScoreAdjust=-500 в сервисы

четверг, 24 мая 2018 г.

Linux копирование каталога со скрытыми подкаталогами

Если нужно скопировать каталог со скрытыми подкаталогами (folder/.subfolder folder/files), то

cp -R folder/* /destination - так не работает для .subfolder

cp -R folder/. /destination - так работает для всего

среда, 7 марта 2018 г.

GitLab-ci некорректное отображение автора в истории коммитов

Для удобного просмотра статистики работы над проектом есть gitinspector. Но есть одна проблема в течении долгой работы над проектом возникает ситуация, когда один и тот же автор коммитит под разными контактными данными. Чтобы это увидеть, можно выполнить команду
git shortlog -sne
или
git log --pretty='%aN <%aE>'

Результат
 user1 <blogvic123@gmail.com>
 user2 <blogvic123@gmail.com>
 user1 <another@gmail.com>

Чтобы это исправить, нужно использовать .mailmap в корне проекта
Для формирования можно использовать
git shortlog -se | awk -F'\t' '{print $2,$3,$2,$3}' | sort > .mailmap

Я использовал линк линк

среда, 28 февраля 2018 г.

GitLab-ci gitinspector

We used gitinspector for generating statistics of work with gitlab project.

If we got error on clean installed Ubuntu 16.04,

apt-get install gitinspector
gitinspector

Traceback (most recent call last):
  File "/usr/bin/gitinspector", line 5, in <module>
    from pkg_resources import load_entry_point
ImportError: No module named pkg_resources

need install
apt-get install install python-setuptools -y

We can get extension files of project:

gitinspector -l

The extensions below were found in the repository history (extensions used during statistical analysis are marked):
* beforeobfuscating cache dist html [js] json lock md php scss svg twig txt xlf xml yml

It use for run gitinspector with parameter -f

Example:

gitinspector -F html -r -T -H -f dist,html,js,json,lock,md,php,scss,svg,twig,txt,xlf,xml,yml -x "var,bin,composer.lock,author:NameForExclude" --since="1/1/2017" --until="12/31/2017" > 2017.html

generate since to until date (--since="" --until=""), without list directories and author NameForExclude (-x), in html format (-F), included extensions (-f)

среда, 21 февраля 2018 г.

JS Grunt Минификация js css

Очень понятный гайд хорошая статья в которой используется несколько плагинов, sample с официального сайта
Устанавливаем из репо node js
далее
npm install -g grunt-cli
В папке с проектом запускаем
npm install
grunt
Warning: Task "default" not found. Use --force to continue.

пятница, 2 февраля 2018 г.

Linux Postfix базовая конфигурация с защитой от спама

В статье был описан базовый конфиг.
После запуска и тестирования отправки на внешние ящики и приемке писем с внешних ящиков, можно добавить защиту от спама из статьи с сайта postfix.

Linux Postfix errors

554 5.7.1 <mail-it0-f51.google.com[209.85.214.51]>: Client host rejected: Access denied

за это отвечает настройка
# Allow connections from trusted networks only.
smtpd_client_restrictions = permit_mynetworks, reject

Закомментировал


554 5.7.1 <user@ttt.pp.ua>: Relay access denied

За это отвечает настройка
# Relay control (Postfix 2.10 and later): local clients and
# authenticated clients may specify any destination domain.
smtpd_relay_restrictions = permit_mynetworks,
                           permit_sasl_authenticated,

                           reject_unauth_destination



master.cf
  -o smtpd_relay_restrictions=permit_sasl_authenticated,reject


454 4.7.1 <user@ttt.pp.ua>: Relay access denied

нужно проверить mydestination

Почему была у меня ошибка, из-за не понимания значений переменных.
myhostname = mail.ttt.pp.ua (этот хост прописан как MX в DNS записях)
mydomain = ttt.pp.ua (это купленный домен)
myorigin = $mydomain (это то что стоит после @ при отправке)
mydestination = ttt.pp.ua, mail.ttt.pp.ua, localhost.ttt.pp.ua, localhost
(это домены для которых принимает почту)

я не указал в mydestination домен ttt.pp.ua и ловил эту ошибку

четверг, 1 февраля 2018 г.

Linux Roundcube ошибка авторизации 250

Ошибка возникает при попытке отправки сообщения

При настройке указал в default.inc.php

$config['smtp_auth_type'] = 'LOGIN PLAIN';

LOGIN похоже не рабочий метод

Если поставить
$config['smtp_auth_type'] = null;

или

$config['smtp_auth_type'] = 'PLAIN';

То ошибка уходит. В логе отправки видно, что используется PLAIN.

Для обнаружения ошибок - при сообщении ошибка авторизации 250 в Roundcube смотреть логи nginx error.log. Успешность доставки в mail.log (авторизация PLAIN).

Linux Debian Postfix Dovecot Roundcube base work config

   Сделано по материалам с этой ссылке плюс добавлен Rouncube (Nginx, php5-fpm, MySQL) для отправки через веб-интерфейс, плюс в процессе вносились изменения. Почта будет хранится в личном каталоге в подкаталоге Maildir.

Конспект для себя. В итоге будет базовая настройка Postfix+Dovecot+Roundcube.

Система Debian 8. Есть домен ttt.pp.ua и доступ к днс записям, статический белый IP.
Имя машины mail.ttt.pp.ua. В hosts прописал <белый IP>  mail.ttt.pp.ua.
/etc/mailname mail.ttt.pp.ua

суббота, 20 января 2018 г.

Linux Debian not fully installed or removed.

При установке через ap-get глюкануло и не туда не сюда. Ничего не давало не установить не переустновить.
Через dpkg -r удалил эти пакеты, потом через apt-get их уже не было