Wekan, Docker и сохранение изменений.

По официальному мануалу для быстрого запуска Wekan можно использовать Docker. Для этого необходимо развернуть всего два docker контейнера. В одном контейнере БД и Web приложение во втором. Это быстро, удобно и работает из коробки. Но есть проблема.

При остановке контейнера все изменения теряются, чтобы этого не происходило нужно либо делать commit изменений контейнера перед выключением, либо хранить данные вне контейнера. Первый вариант нас не спасет при нештатном выключении контейнера, и вообще он в принципе не правильный.

Для реализации второго варианта в команду запуска контейнера БД нужно добавить всего один параметр:

-v /путь/к/локальной/директории:/путь/внутри/контейнера

Создаем папку для хранения нашей БД. К примеру «/home/user/DB».

mkdir /home/user/DB

Нужно выяснить где в контейнере хранятся наши данные. Узнать это можно из документации к ПО, либо из документации к контейнеру. В нашем случае файлы БД хранятся по пути «/data/db». Берем команду запуска контейнера, для Wekan это «docker run -d --restart=always --name wekan-db mongo:3.2.12«, и добавляем наш параметр:

docker run -d --restart=always --name wekan-db -v /home/user/DB:/data/db mongo:3.2.12

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

Docker. Перенос образа на другой хост.

Имеем docker контейнер который нужно перенести на другой хост. По сути наша задача сводится с переносу образа на новый хост и запуску контейнера из этого образа.

Читать далееDocker. Перенос образа на другой хост.

Let’s Encrypt получаем wildcard. Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA. You may need to use an authenticator plugin that can do challenges over DNS.

При попытке получить wildcard получаем ошибку «Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA. You may need to use an authenticator plugin that can do challenges over DNS.»

Можно использовать plugin для DNS челленджа, но плагины есть только для крупных сервисов. Если плагина нет, придется проходить челлендж в ручную.

 certbot certonly -d *.domain.com --manual --preferred-challenges dns

Вместо «domain.com» нужно указать свой домен. Далее certbot предупредит о том, что ваш IP будет сохранен и попросит создать TXT запись для вашего домена:

Please deploy a DNS TXT record under the name
_acme-challenge.domain.com with the following value:

cxAGAsIvxQggW5FRAqUJfjsnknsYBjb3

Before continuing, verify the record is deployed.

Бывает что certbot не сразу видит запись. В таком случае нужно просто повторно запустить процесс получения сертификата, но в этот раз после добавления записи подождать 5-10 минут.

Nextcloud не отправляет почту. stream_socket_enable_crypto(): SSL operation failed with code 1

Nextcloud не отправляет письма. При попытке отправить тестовое письмо получаем ошибку:
«stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed at /var/www/nextcloud/3rdparty/swiftmailer/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php#94»

Читать далееNextcloud не отправляет почту. stream_socket_enable_crypto(): SSL operation failed with code 1

Linux. Меняем кодировку mp3 тегов.

Большинству плееров необходима кодировка тегов UTF-8, иначе вместо кириллических названий треков мы будем видеть кракозябры.

Для начала нужно установить пакет который поможет нам конвертировать теги:

А теперь натравим его на папку с музыкой:

Easy-RSA 3.0.3. Создание ключей для OpenVPN.

После обновления утилиты Easy-RSA изменился процесс создания ключей.

Переходим в директорию Easy-RSA, по умолчанию /usr/share/easy-rsa/3.0.3.

Создаем CA:

После создания попросят придумать пароль. Этот пароль необходимо запомнить т.к. он понадобится для создания клиентских сертификатов.

Читать далееEasy-RSA 3.0.3. Создание ключей для OpenVPN.

iptables. Forward трафика.

Задача выпустить компьютеры локальной сети в интернет через сервер с Linux и двумя интерфейсами. Eth0 — внешний интерфейс, Eth1 внутренний.

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

Теперь нужно поднять NAT. В данном примере в роли внешнего интерфейса выступает eth0:

Не забываем включить форвардинг в системе. Для этого редактируем /etc/sysctl.conf и исправляем параметр net.ipv4.ip_forward = 0 на net.ipv4.ip_forward = 1
В итоге получаем функционал гейтвея во внешнюю сеть.

Bash. Добавление строк в таблицу MySQL.

Как добавить строку в таблицу MySQL при помощи Bash скрипта на примере добавления пачки доменов в blacklist. Исходные данные:

1. Файл со списком доменов
2. Таблица в бд с двумя полями(имя домена и действие)