Sergey Chulanov
My notes to remember

Выпуск самоподписанного сертификата с помощью openssl.

Для выпуска сертификата локального домена сначала нужно сгенерировать корневой сертификат, на его основе будут выпускаться все остальные сертификаты.

Для каждого нового уровня домена, нужно будет выпускать свой сертификат. Для теста работы всего этого использовал docker контейнер nginx:latest

Сформируем закрытый ключ и сертификат центра сертификации. (Certification authority)

# DOMAIN=dodcaf.sweethome
# SUBJ="/C=RU/ST=someobl/L=somesity/O=somecompany/CN=$DOMAIN"
# openssl genrsa -out rootCA.key 2048
# openssl req -x509 -new -nodes -key rootCA.key -sha256 -days 1024 -subj "$SUBJ" -out rootCA.pem

Здесь я определил 2 переменные, чтобы не проходить через интерактивный режим заполнения настроек.

Настройка локали в Ubuntu.

Посмотрим установленные локали:

$ locale -a
C
C.UTF-8
POSIX

Мне нужны 2 локали en_US.utf8 и ru_RU.utf8. Для этого нужно раскомментировать в файле /etc/locale.gen следующие строки:

en_US.UTF-8 UTF-8
ru_RU.UTF-8 UTF-8

Теперь достаточно выполнить команду:

Установка и настройка оболочки zsh.

Установка zsh.

Обновим пакеты и установим необходимое:

$ sudo apt update
$ sudo apt install zsh
$ sudo apt install powerline fonts-powerline

Powerline - это плагин строки состояния для vim, который предоставляет строки состояния и подсказки для нескольких других приложений, включая zsh, bash, tmux, IPython, Awesome и Qtile.

Установка Oh my zsh.

Клонируем репозиторий Oh my zsh и создаём новый конфиг-файл .zshrc:

Ansible. Заметка об использовании gather_facts.

В ansible при запуске плейбука изначально выполняется модуль ansible.builtin.setup, который собирает факты о системе, где будет выполняться данный плейбук, если явно не указано gather_facts: no. Все факты хранятся внутри переменной ansible_facts, выведем её:

- name: Print all available facts
  debug:
    var: ansible_facts

Обычно это временная мера, чтобы подобрать переменные, для использования внутри playbook. Основываясь на этом, можно получить версию ОС и fqdn:

Настройка и виды репликаций Postgresql.

Write-Ahead Log (WAL) Когда данные в базе меняются, они сначала записываются в WAL, после записи в WAL система делает системный вызов fsync и данные записываются на диск, а не висят в кеше. Поэтому, если произойдёт выключение сервера или другой сбой, то при следующем включении СУБД во время старта прочитает данные из WAL и применит изменения к базе данных.

Потоковая репликация (Streaming Replication) Суть в том, что записи из WAL передаются от мастер-сервера(master) репликам(slave). Запись и изменение данных происходит только в master, но с реплик можно читать (hot standby). Если с реплики чтнение запрещено, то она называется warm standby или log shipping. Во многих приложениях очень много запросов на чтение (80% - 90%), поэтому репликация позволяет масштабировать базу данных горизонтально.

Установка 3proxy из исходников.

Установим пакет для компиляции программ:

$ apt-get install build-essential

Скачаем исходники отсюда:

$ wget https://github.com/z3APA3A/3proxy/archive/refs/tags/0.9.3.tar.gz -O 3proxy093.tgz
$ tar -zxvf 3proxy093.tgz
$ cd 3proxy-0.9.3

Собираем:

$ sudo apt install checkinstall
$ make -f Makefile.Linux

Создадим учётную запись для 3proxy:

$ sudo adduser --system --disabled-login --no-create-home --group proxy3

Копируем файл в /usr/bin/, а так же создаём директорию для log-файлов:

$ sudo mkdir -pv /var/log/3proxy /etc/3proxy
$ sudo cp -v bin/3proxy /usr/bin/

Установим права:

$ sudo chown -v proxy3:proxy3 -R /etc/3proxy /usr/bin/3proxy /var/log/3proxy

В конфиге нужно указать setuid и setgid. Узнаем, какие у нас:

id proxy3
uid=126(proxy3) gid=136(proxy3) groups=136(proxy3)

Создадим конфиг:

cat <<- EOF | tee /etc/3proxy/3proxy.cfg
setgid 136
setuid 126

nserver ns1.zavod.lan
# nserver 192.168.8.1
# nserver 8.8.8.8

nscache 65536
timeouts 1 5 30 60 180 1800 15 60

# ip внешнего интерфейса
external 91.122.226.82
# ip внутреннего интерфейса
internal 192.168.8.1

daemon

log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30

auth none

allow * * * 80-88,8080-8088 HTTP
allow * * * 443,8443 HTTPS

proxy -n
EOF

Запускаем 3proxy и проверяем, что всё работает:

$ sudo /usr/bin/3proxy /etc/3proxy/3proxy.cfg

Создадим systemd файл для запуска unit:

Как создавать unit файлы, я почитал тут.