add new files and refactor
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
# Заметки по докеру
|
||||
1) Для того что бы compose перечитал файл конфигурации нужно сделать стоп, а потом старт. Рестар не перечитывает конфигурацию
|
||||
@@ -78,20 +78,20 @@ git --version
|
||||
```
|
||||
adduser \
|
||||
--system \
|
||||
--shell /bin/bash \
|
||||
--shell /bin/false \
|
||||
--gecos 'Git Version Control' \
|
||||
--group \
|
||||
--disabled-password \
|
||||
--home /home/git \
|
||||
git
|
||||
gitea
|
||||
```
|
||||
1) Создадим необходимые для работы директории и выдадим созданному юзеру права на них. Права 770 на директорию /etc/gitea выдаются только для первоначальной настройки.
|
||||
```
|
||||
mkdir -p /var/lib/gitea/{custom,data,log}
|
||||
chown -R git:git /var/lib/gitea/
|
||||
chmod -R 750 /var/lib/gitea/
|
||||
mkdir -p /mnt/data/gitea/{custom,data,log}
|
||||
chown -R gitea:gitea /mnt/data/gitea/
|
||||
chmod -R 750 /mnt/data/gitea/
|
||||
mkdir /etc/gitea
|
||||
chown root:git /etc/gitea
|
||||
chown root:gitea /etc/gitea
|
||||
chmod 770 /etc/gitea
|
||||
```
|
||||
1) Создадим системный юнит для запуска gitea как сервиса systemd. Создадим файл юнита по пути /etc/systemd/system/gitea.service
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
# Заметки по синтаксису Markdown
|
||||
## Зачеркнуть
|
||||
Что бы сделать зачеркнутый текст поместите его в ~~ТЕКСТ~~
|
||||
@@ -0,0 +1,41 @@
|
||||
# Установка Opensearch
|
||||
Ссылка на офф доку https://docs.opensearch.org/latest/install-and-configure/install-opensearch/tar/
|
||||
Установка опенсерча производится из архива.
|
||||
Стендэлон
|
||||
Подготавливаем ноду для установки. Все это дело работает на джаве. И хоть в архиве опенсерча уже есть жаба лучше поставить ее прямо на машину, что бы было проще работать
|
||||
```
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
sudo apt install -y openjdk-25-jdk
|
||||
```
|
||||
Отключим свап и настроем виртуальную память хоста
|
||||
```
|
||||
sudo vim /etc/sysctl.conf
|
||||
|
||||
vm.max_map_count=262144
|
||||
|
||||
sudo sysctl -p
|
||||
cat /proc/sys/vm/max_map_count
|
||||
```
|
||||
После обновления и установки жабы, лучше всего перезагрузится. Далее мы качаем архив с опенсерчем с оффсайта
|
||||
```
|
||||
wget https://artifacts.opensearch.org/releases/bundle/opensearch/3.6.0/opensearch-3.6.0-linux-x64.deb
|
||||
sudo env OPENSEARCH_INITIAL_ADMIN_PASSWORD=5ruXurur! dpkg -i opensearch-3.6.0-linux-x64.deb
|
||||
sudo systemctl enable opensearch
|
||||
```
|
||||
|
||||
Выполним скрипт ssl.sh (лежит в доке как пример) для создания самоподписанных сертификатов и хранилища сертификатов. СОздадутся корневой сертификат ЦА. Так же создастся на его основе админский сертификат и сертификаты для каждой ноды. Это нужно что бы общение между нодами и дашбордой были зашифрованы. Так же выпустится админский серт для зашифрованного подключения админа.
|
||||
После завершения подготовки требуется нарисовать кофниг. Конфиг имеет формат YAML и различается в зависимости от кластера или стендэлон опенсерча
|
||||
|
||||
|
||||
mv /etc/opensearch/opensearch.yml /etc/opensearch/opensearch.yml.back
|
||||
|
||||
rm /etc/opensearch/*.pem
|
||||
|
||||
vim /etc/opensearch/opensearch.yml
|
||||
|
||||
systemctl start opensearch
|
||||
|
||||
|
||||
wget https://artifacts.opensearch.org/releases/bundle/opensearch-dashboards/3.6.0/opensearch-dashboards-3.6.0-linux-x64.deb
|
||||
|
||||
$2y$12$7.7YOQi6.CEN1VSNXg3BqefgQLEeqDbsqxNBNhY1tgZ085q1eZeCK
|
||||
@@ -0,0 +1,2 @@
|
||||
opensearch=3.5.0
|
||||
jdk=25.0.2+10-LTS
|
||||
@@ -0,0 +1,12 @@
|
||||
cluster.name: kal-cluster
|
||||
node.name: opensearch-1
|
||||
node.roles: [ cluster_manager, data ]
|
||||
cluster.initial_cluster_manager_nodes: ["opensearch-cluster_manager"]
|
||||
discovery.seed_hosts: ["opensearch-1.sailor.com", "opensearch-2.sailor.com", "opensearch-3.sailor.com"]
|
||||
network.host: 0.0.0.0
|
||||
http.port: 9200
|
||||
plugins.security.disabled: true
|
||||
# Path to directory where to store the data (separate multiple locations by comma):
|
||||
path.data: /var/lib/opensearch
|
||||
# Path to log files:
|
||||
path.logs: /var/log/opensearch
|
||||
@@ -0,0 +1,12 @@
|
||||
cluster.name: kal-cluster
|
||||
node.name: opensearch-2
|
||||
node.roles: [ cluster_manager, data ]
|
||||
cluster.initial_cluster_manager_nodes: ["opensearch-cluster_manager"]
|
||||
discovery.seed_hosts: ["opensearch-1.sailor.com", "opensearch-2.sailor.com", "opensearch-3.sailor.com"]
|
||||
network.host: 0.0.0.0
|
||||
http.port: 9200
|
||||
plugins.security.disabled: true
|
||||
# Path to directory where to store the data (separate multiple locations by comma):
|
||||
path.data: /var/lib/opensearch
|
||||
# Path to log files:
|
||||
path.logs: /var/log/opensearch
|
||||
@@ -0,0 +1,12 @@
|
||||
cluster.name: kal-cluster
|
||||
node.name: opensearch-3
|
||||
node.roles: [ cluster_manager, data ]
|
||||
cluster.initial_cluster_manager_nodes: ["opensearch-cluster_manager"]
|
||||
discovery.seed_hosts: ["opensearch-1.sailor.com", "opensearch-2.sailor.com", "opensearch-3.sailor.com"]
|
||||
network.host: 0.0.0.0
|
||||
http.port: 9200
|
||||
plugins.security.disabled: true
|
||||
# Path to directory where to store the data (separate multiple locations by comma):
|
||||
path.data: /var/lib/opensearch
|
||||
# Path to log files:
|
||||
path.logs: /var/log/opensearch
|
||||
@@ -0,0 +1,40 @@
|
||||
cluster.name: kal-cluster
|
||||
node.name: opensearch-2
|
||||
node.roles: [ cluster_manager, data ]
|
||||
cluster.initial_cluster_manager_nodes: ["opensearch-cluster_manager"]
|
||||
discovery.seed_hosts: ["opensearch-1.sailor.com", "opensearch-2.sailor.com", "opensearch-3.sailor.com"]
|
||||
network.host: 0.0.0.0
|
||||
http.port: 9200
|
||||
plugins.security.nodes_dn:
|
||||
- "CN=opensearch-1.sailor.com,OU=Lab,O=Sailor Lab,L=Moscow,ST=Moscow,C=RU"
|
||||
- "CN=opensearch-2.sailor.com,OU=Lab,O=Sailor Lab,L=Moscow,ST=Moscow,C=RU"
|
||||
- "CN=opensearch-3.sailor.com,OU=Lab,O=Sailor Lab,L=Moscow,ST=Moscow,C=RU"
|
||||
plugins.security.ssl.transport.keystore_filepath: /etc/opensearch/ssl/keystore.jks
|
||||
plugins.security.ssl.transport.keystore_password: Passw0rd
|
||||
plugins.security.ssl.transport.keystore_keypassword: Passw0rd
|
||||
plugins.security.ssl.transport.truststore_filepath: /etc/opensearch/ssl/truststore.jks
|
||||
plugins.security.ssl.transport.truststore_password: Passw0rd
|
||||
transport.ssl.enforce_hostname_verification: false
|
||||
|
||||
plugins.security.ssl.http.enabled: true #Whether to enable TLS on the REST layer. If enabled, only HTTPS is allowed. Optional. Default is false.
|
||||
plugins.security.ssl.http.keystore_filepath: /etc/opensearch/ssl/keystore.jks
|
||||
plugins.security.ssl.http.keystore_password: Passw0rd
|
||||
plugins.security.ssl.http.keystore_keypassword: Passw0rd
|
||||
plugins.security.ssl.http.truststore_filepath: /etc/opensearch/ssl/truststore.jks
|
||||
plugins.security.ssl.http.truststore_password: Passw0rd
|
||||
plugins.security.authcz.admin_dn:
|
||||
- "EMAILADDRESS=medik19999@mail.ru,CN=grigory,OU=Lab,O=Sailor Lab,L=Moscow,ST=Moscow,C=RU"
|
||||
|
||||
plugins.security.ssl.transport.pemcert_filepath: /etc/opensearch/ssl/node1.pem
|
||||
plugins.security.ssl.transport.pemkey_filepath: /etc/opensearch/ssl/node1-key.pem
|
||||
plugins.security.ssl.transport.pemtrustedcas_filepath: /etc/opensearch/ssl/root-ca.pem
|
||||
plugins.security.ssl.transport.enforce_hostname_verification: false
|
||||
plugins.security.ssl.http.enabled: true
|
||||
plugins.security.ssl.http.pemcert_filepath: /etc/opensearch/ssl/node1.pem
|
||||
plugins.security.ssl.http.pemkey_filepath: /etc/opensearch/ssl/node1-key.pem
|
||||
plugins.security.ssl.http.pemtrustedcas_filepath: /etc/opensearch/ssl/root-ca.pem
|
||||
|
||||
# Path to directory where to store the data (separate multiple locations by comma):
|
||||
path.data: /var/lib/opensearch
|
||||
# Path to log files:
|
||||
path.logs: /var/log/opensearch
|
||||
@@ -0,0 +1,32 @@
|
||||
cluster.name: kal-cluster
|
||||
node.name: opensearch-2
|
||||
node.roles: [ cluster_manager, data ]
|
||||
cluster.initial_cluster_manager_nodes: ["opensearch-cluster_manager"]
|
||||
discovery.seed_hosts: ["opensearch-1.sailor.com", "opensearch-2.sailor.com", "opensearch-3.sailor.com"]
|
||||
network.host: 0.0.0.0
|
||||
http.port: 9200
|
||||
plugins.security.nodes_dn:
|
||||
- "CN=opensearch-1.sailor.com,OU=Lab,O=Sailor Lab,L=Moscow,ST=Moscow,C=RU"
|
||||
- "CN=opensearch-2.sailor.com,OU=Lab,O=Sailor Lab,L=Moscow,ST=Moscow,C=RU"
|
||||
- "CN=opensearch-3.sailor.com,OU=Lab,O=Sailor Lab,L=Moscow,ST=Moscow,C=RU"
|
||||
plugins.security.ssl.transport.keystore_filepath: /etc/opensearch/ssl/keystore.jks
|
||||
plugins.security.ssl.transport.keystore_password: Passw0rd
|
||||
plugins.security.ssl.transport.keystore_keypassword: Passw0rd
|
||||
plugins.security.ssl.transport.truststore_filepath: /etc/opensearch/ssl/truststore.jks
|
||||
plugins.security.ssl.transport.truststore_password: Passw0rd
|
||||
|
||||
plugins.security.ssl.http.enabled: true #Whether to enable TLS on the REST layer. If enabled, only HTTPS is allowed. Optional. Default is false.
|
||||
plugins.security.ssl.http.keystore_filepath: /etc/opensearch/ssl/keystore.jks
|
||||
plugins.security.ssl.http.keystore_password: Passw0rd
|
||||
plugins.security.ssl.http.keystore_keypassword: Passw0rd
|
||||
plugins.security.ssl.http.truststore_filepath: /etc/opensearch/ssl/truststore.jks
|
||||
plugins.security.ssl.http.truststore_password: Passw0rd
|
||||
plugins.security.authcz.admin_dn:
|
||||
- "EMAILADDRESS=medik19999@mail.ru,CN=grigory,OU=Lab,O=Sailor Lab,L=Moscow,ST=Moscow,C=RU"
|
||||
|
||||
|
||||
|
||||
# Path to directory where to store the data (separate multiple locations by comma):
|
||||
path.data: /var/lib/opensearch
|
||||
# Path to log files:
|
||||
path.logs: /var/log/opensearch
|
||||
@@ -0,0 +1,61 @@
|
||||
#!/bin/sh
|
||||
# Root CA
|
||||
openssl genrsa -out root-ca-key.pem 2048
|
||||
openssl req -new -x509 -sha256 -key root-ca-key.pem -subj "/C=RU/ST=Moscow/L=Moscow/O=Sailor Lab/OU=Lab/CN=opensearch-1.sailor.com" -out root-ca.pem -days 730 \
|
||||
-addext 'basicConstraints = critical, CA:TRUE, pathlen:0' \
|
||||
-addext 'keyUsage = critical, keyCertSign, cRLSign' \
|
||||
-addext 'authorityKeyIdentifier = keyid'
|
||||
# Admin cert
|
||||
openssl genrsa -out admin-key-temp.pem 2048
|
||||
openssl pkcs8 -inform PEM -outform PEM -in admin-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out admin-key.pem
|
||||
openssl req -new -key admin-key.pem -subj "/C=RU/ST=Moscow/L=Moscow/O=Sailor Lab/OU=Lab/CN=grigory/emailAddress=medik19999@mail.ru" -out admin.csr
|
||||
openssl x509 -req -in admin.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out admin.pem -days 730
|
||||
# Node cert 1
|
||||
openssl genrsa -out node1-key-temp.pem 2048
|
||||
openssl pkcs8 -inform PEM -outform PEM -in node1-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out node1-key.pem
|
||||
openssl req -new -key node1-key.pem -subj "/C=RU/ST=Moscow/L=Moscow/O=Sailor Lab/OU=Lab/CN=opensearch-1.sailor.com" -out node1.csr
|
||||
echo 'subjectAltName=DNS:opensearch-1.sailor.com' > node1.ext
|
||||
openssl x509 -req -in node1.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node1.pem -days 730 -extfile node1.ext
|
||||
# Node cert 2
|
||||
openssl genrsa -out node2-key-temp.pem 2048
|
||||
openssl pkcs8 -inform PEM -outform PEM -in node2-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out node2-key.pem
|
||||
openssl req -new -key node2-key.pem -subj "/C=RU/ST=Moscow/L=Moscow/O=Sailor Lab/OU=Lab/CN=opensearch-2.sailor.com" -out node2.csr
|
||||
echo 'subjectAltName=DNS:opensearch-2.sailor.com' > node2.ext
|
||||
openssl x509 -req -in node2.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out node2.pem -days 730 -extfile node2.ext
|
||||
# Client cert
|
||||
openssl genrsa -out client-key-temp.pem 2048
|
||||
openssl pkcs8 -inform PEM -outform PEM -in client-key-temp.pem -topk8 -nocrypt -v1 PBE-SHA1-3DES -out client-key.pem
|
||||
openssl req -new -key client-key.pem -subj "/C=RU/ST=Moscow/L=Moscow/O=Sailor Lab/OU=Lab/CN=opensearch-2.sailor.com" -out client.csr
|
||||
echo 'subjectAltName=DNS:opensearch-3.sailor.com' > client.ext
|
||||
openssl x509 -req -in client.csr -CA root-ca.pem -CAkey root-ca-key.pem -CAcreateserial -sha256 -out client.pem -days 730 -extfile client.ext
|
||||
# Convert node certificate
|
||||
cat root-ca.pem node1.pem node1-key.pem > combined-node1.pem
|
||||
echo "Enter password for node1-cert.p12"
|
||||
openssl pkcs12 -export -in combined-node1.pem -out node1-cert.p12 -name node1
|
||||
echo "Enter password for keystore.jks"
|
||||
keytool -importkeystore -srckeystore node1-cert.p12 -srcstoretype pkcs12 -destkeystore keystore.jks
|
||||
|
||||
# Convert admin certificate
|
||||
cat root-ca.pem admin.pem admin-key.pem > combined-admin.pem
|
||||
echo "Enter password for admin-cert.p12"
|
||||
openssl pkcs12 -export -in combined-admin.pem -out admin-cert.p12 -name admin
|
||||
echo "Enter password for keystore.jks"
|
||||
keytool -importkeystore -srckeystore admin-cert.p12 -srcstoretype pkcs12 -destkeystore keystore.jks
|
||||
|
||||
# Import certificates to truststore
|
||||
keytool -importcert -keystore truststore.jks -file root-ca.pem -storepass changeit -trustcacerts -deststoretype pkcs12 # Сменить пароль
|
||||
|
||||
# Cleanup
|
||||
rm admin-key-temp.pem
|
||||
rm admin.csr
|
||||
rm node1-key-temp.pem
|
||||
rm node1.csr
|
||||
rm node1.ext
|
||||
rm node2-key-temp.pem
|
||||
rm node2.csr
|
||||
rm node2.ext
|
||||
rm client-key-temp.pem
|
||||
rm client.csr
|
||||
rm client.ext
|
||||
rm combined-admin.pem
|
||||
rm combined-node1.pem
|
||||
@@ -0,0 +1,13 @@
|
||||
Установка из тарбола завершилась тем что я не разложил бинарники логи и тд по папкам. Так же все напутал с правами, юзерами, группами и т.д. Секурити плагин не смог прочитать кейстор, видимо что то я сделал неправильно
|
||||
Попробуем установить его через апт завтра. Так же откатимся в хотелках и просто сгенерим сертификаты, без кестора и трастстора
|
||||
|
||||
20/04/2026 Установка через апт работает. Но проблема с сертификатами остается. Смиряемся и откатываемся. Возможно я генерю сертификаты не правильно. Из важного сертификаты надо генерить на 1 ноде. А потом раскидать все это дело по узлам.
|
||||
Из важного записать все ноды в файлы хостс или поднять свой днс
|
||||
|
||||
27.04.2026 Решил поднимать свой днс. Помучил нейронки. Из предлженных вариантов только powerdns имеет апи и тераформ провайдера. Подолбится ли с базовой инфрой? Или попытатся обойтись костылями?
|
||||
04.05.2026 Днс сработал и решил 1 проблему. Как приятно держать свою инфру. Выяснил что с винды не создавалась тачка потому как был включен впн, а я забыл что прокс виртуальный с винды и трафик тунелируется через вмваре бридж прямо в тунель. Собрал кластер без секюрити плагина. Установил дашборду. Столкнулся с пробелмой авторизации. Пока отключил все настройки безопасности на серче и дашборде.
|
||||
Шаг 0 выполнен. Теперь надо поднять все то же самое но с включенным секьюрити плагином. И прокинуть пользаков в опенсерч.
|
||||
Так же можно задуматься какие логи я буду писать в опенсерч. Для начала можно попробовать напрямую логи самого серча
|
||||
Для сбора используем fluenbit. Шаг 0 заставить это как то работать
|
||||
|
||||
На заметку поискать мб какую то Пошечку для автоматизации выпуска сертификатов и их доставки на сервера
|
||||
@@ -0,0 +1,11 @@
|
||||
storage "file" { # Указываем что храним секреты в файле, а не БД
|
||||
path = "/mnt/vault/data" # Путь до файла с данным
|
||||
}
|
||||
listener "tcp" { # Указываем какой сервер слушаем
|
||||
address = "0.0.0.0:8200"
|
||||
# tls_cert_file = "/etc/vault/vault-cert.pem"
|
||||
# tls_key_file = "/etc/vault/vault-key.pem"
|
||||
tls_disable = 1 # Отключение https://
|
||||
}
|
||||
ui = true # Включить UI
|
||||
disable_mlock = true
|
||||
@@ -0,0 +1,37 @@
|
||||
# Инструкция по установке Vault
|
||||
Система ubuntu 22.04
|
||||
Vault 2.0.0
|
||||
## Скачивание
|
||||
Компания Hashicorp запретила скачивать свои продукты из России. Пользуемся ВПН или скачиваем с зеркала яндекса
|
||||
```
|
||||
VAULT_VERSION="2.0.0"
|
||||
wget https://hashicorp-releases.yandexcloud.net/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip
|
||||
```
|
||||
## Установка
|
||||
Установим архиватор, что бы распаковать бинарник
|
||||
```
|
||||
sudo apt-get install -y unzip
|
||||
```
|
||||
Распакуем и перенесем бинарник в папку с бинарниками
|
||||
```
|
||||
unzip vault_${VAULT_VERSION}_linux_amd64.zip
|
||||
sudo mv vault /usr/local/bin/
|
||||
```
|
||||
Проверим что работает
|
||||
```
|
||||
vault --version
|
||||
```
|
||||
Далее нужно создать системного юзера и директории для конфигов и данных
|
||||
```
|
||||
adduser \
|
||||
--system \
|
||||
--shell /bin/false \
|
||||
--gecos 'Vault user' \
|
||||
--group \
|
||||
--disabled-password \
|
||||
--no-create-home \
|
||||
vault
|
||||
```
|
||||
```
|
||||
sudo nano /etc/vault/vault.hcl
|
||||
```
|
||||
@@ -0,0 +1,29 @@
|
||||
[Unit]
|
||||
Description="HashiCorp Vault - A tool for managing secrets"
|
||||
Documentation=https://www.vaultproject.io/docs/
|
||||
Requires=network-online.target
|
||||
After=network-online.target
|
||||
ConditionFileNotEmpty=/etc/vault/config.hcl
|
||||
|
||||
[Service]
|
||||
User=vault
|
||||
Group=vault
|
||||
ProtectSystem=full
|
||||
ProtectHome=read-only
|
||||
PrivateTmp=yes
|
||||
PrivateDevices=yes
|
||||
SecureBits=keep-caps
|
||||
AmbientCapabilities=CAP_IPC_LOCK
|
||||
NoNewPrivileges=yes
|
||||
ExecStart=/usr/local/bin/vault server -config=/etc/vault/config.hcl
|
||||
ExecReload=/bin/kill --signal HUP
|
||||
KillMode=process
|
||||
KillSignal=SIGINT
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
TimeoutStopSec=30
|
||||
StartLimitBurst=3
|
||||
LimitNOFILE=65536
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Reference in New Issue
Block a user