• Почему OpenVPN не отзывает сертификат пользователя?

    @mureevms
    В конфиге сервера нехватает параметра
    crl-verify /path/to/crl.pem
    Ответ написан
    7 комментариев
  • Несколько вопросов по развертывании докер контейнеров на сервере?

    @mureevms
    1. Образ и контейнер это разные сущности:
    Образ - это сущность, которая образуется после команды docker build, затем которая может быть помещена в регистри или в докер хаб. Можно провести аналогию с ISO образом ОС.
    Контейнер - это сущность, которая образуется после команды docker run. Т.е. контейнер - это определенным образом запущенный образ. Можно из одного образа запустить множество контейнеров

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

    контейнер !== образ, а контейнер === сервисы, где сервис === образ

    Контейнер != образ, факт.
    Контейнер может быть сервисом, а может и не быть, все зависит от того, что внутри.
    Сервис != образ. В данном случае нет понятия сервиса, это что-то внутри контейнера. Если там демон, принимающий запросы - это сервис. В широком смысле образ это образ и он ничему не равен.
    2. Как будет удобно, не принципиально. Но раз уж есть compose, то через него будет удобнее
    3. Нет причин не хранить docker-compose.yml в репе. Главное, чтобы в нем не было секретов. Все "ненужное" должно быть вынесено в переменные. Далее, как и сказал Дмитрий, надо правильно доставить это на прод
    Ответ написан
    Комментировать
  • Как передать через include_role в роль ansible переменную, которая сама является переменной?

    @mureevms
    У Ansible есть приоритет переменных. Переменная, которую вы пытаетесь вынести, по приоритету находятся ниже, чем roles/role_name/vars/main.yml. Скорее всего вы выносите эту переменную в host_vars или group_vars, что логично, но не достаточно, поскольку roles/role_name/vars/main.yml имеет больший приоитет. Для решения я бы рекомендовал использовать roles/role_name/defaults/main.yml файл, он имеет наименьший приоритет и переменная будет переопределена из любого другого места, если там объявлена.

    Т.е. для вашего случая просто переименуйте каталог в роли с vars на defaults или же перенесите только эту переменную в defaults
    Ответ написан
    3 комментария
  • VPN в виде виртуалок?

    @mureevms
    1. Чем принципиально отличаются "Dedicated" от "впски"? (риторический вопрос, побуждающий понять различия в темниах)
    2. Мне кажется, вы не верно ставите вопрос. Ваш звучит так: Что будет дешевле, "Dedicated" или "впски". А правильный - сколько пользавателей может потянуть ВПН сервак при таких-то условиях (нагрузка на сеть и железо)
    3. Если вы мини хостер ВПН доступа - можно начать с малого. Сделать маленький инстанс и посмотреть на метрики сети и железа, сделать выводы и действовать относительно них
    Ответ написан
    Комментировать
  • Как правильно запустить контейнер от имени другого пользователя?

    @mureevms
    Его надо запускать от имени elkf_adm (uid=1002, gid=1002)

    Его не надо запускать от этого имени. Системный пользователь не при чем. Все дело в правах на файлы в файловой системе.

    Смотря на сборку этого имаджа видно, что в 11 и 13 строках создается группа filebeat с GID 1000 и пользователь filebeat с UID 1000. Еще раз обращаю внимание, это не относится к системному пользователю, которй запускает контейнер, это пользователь внутри контейнера. В 12-й строке создаются каталоги и назначается владельцем root:filebeat, т.е. пользователь root и группа filebeat. Ранее при создани пользователя уже видели, что пользователь filebeat добавляется в группу filebeat. И в 14 строке указывается пользователь от которого будет запускаться сам демон. А раз демон работает от него, то и права на файлы у него должны быть.

    Добавление user: "1002:1002" не поможет, потому что внутри контейнера нет пользователя с такими ID.

    Решить можно рекурсивной сменой владельца chown 0:1000 /path/ -R по каталогам, которые биндятся к контейнеру
    Ответ написан
  • Каким образом узнать ImageId Ubuntu 20.04?

    @mureevms
    aws ec2 describe-images \
        --filters \
           "Name=owner-id,Values=099720109477" \
           "Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-*-20.04-*-server-*"  \
           "Name=architecture,Values=x86_64" \
           "Name=creation-date,Values=2023-*" \
        --query 'Images[*].[CreationDate, ImageId]' \
        --region us-east-1 \
        --output table \
        | sort

    Последняя строка в выводе - искомый AMI
    Обратите внимание на параметр region. В разных регионах будет разный image-id.
    owner-id = 099720109477 это Canonical

    Вспомнил о сервисе поиска AMI на сайте ubuntu, там можно отфильтровать по параметрам, в качестве результата выводится последний созданный образ https://cloud-images.ubuntu.com/locator/ec2/
    Ответ написан
    Комментировать
  • Как вынести поддомен в отдельную зону и управлять ею с помощью другого менеджера DNS?

    @mureevms
    В принципе все просто
    - Создать зону api.company.com на втором DNS сервере
    - На первом DNS cоздать NS записи для этого домена, в качестве хоста указать api, в качестве значения NS сервера второго хостера
    Должно выглядеть примерно так
    $ dig company.com NS
    ...
    ;; ANSWER SECTION:
    company.com.		900	IN	NS	dns2.yandex.net.
    company.com.		900	IN	NS	dns1.yandex.net.
    ...
    
    $ dig api.company.com NS
    ...
    ;; ANSWER SECTION:
    api.company.com.	3600	IN	NS	ns1.dns.npdc.ru.
    api.company.com.	3600	IN	NS	ns2.dns.npdc.ru.
    ...
    Ответ написан
    1 комментарий
  • Почему APP не подключается к контейнеру с Postgres?

    @mureevms
    container_name: postgres-db

    В коннекшн стринг приложения в качестве хоста БД надо указывать имя контейнера, т.е. self.HOST = 'dbpostgres-db'
    Ответ написан
    Комментировать
  • Свой почтовый сервер взамен яндекс почты для домена?

    @mureevms
    У меня такая же ситуация. Нашел mail.ru сервис, больше ничего нет. Скорее всего и он через какое-то время станет платным, но может и ситуация к тому времени тоже изменится. Свой сервер не хочу категорически, поскольку уже имел и знаю, чем это чревато.
    Ответ написан
  • Какой vps посоветуете для ноды биткоин?

    @mureevms
    Сервер
    Факт в том, что для синхронизации блокчейна Bitcoin нужно больше ресурсов. Чем больше ресурсов, тем быстрее блокчейн засинкается. Если будет мало, может никогда не засинкаться, поскольку демон будет тупо прибиваться OOM Killer'ом. Поэтому, если есть возможность менять характеристики VPS, лучше сделать на первые несколько дней, сервак помощнее, как блокчейн засинкается - уменьшить ресурсы.
    Характеристики на которых блокчейн будет активно синкаться - 4 ядра CPU и 16 GB памяти
    Характеристики на которых работает засинканный блокчейн - 2 ядра CPU и 8 GB памяти

    Можете воспользоваться этими цифрами. Думаю их можно изменить касательно памяти в меньшую сторону, но придется следить за статусом синхронизации. Мной были выбраны именно эти, поскольку такая градация серверов в AWS. Если интересно, это t3a.xlarge и t3a.large соответсвенно. Менее 4 гиг памяти делать не советую, да и на 4х гигах не факт, что будет работать.

    На таком сервере с SSD диском блокчейн синкается примерно за неделю.

    Диск
    Не уверен, что хватит скорости обычного сетевого хранилища. Я сам не проверял, сейчас тестируем подобное решение на работоспособность, поскольку такое хранилище дешевле. В моем случае это требуется больше для безопасности, а вам бы посоветовал пойти другим путем.
    Размер Bitcoin блокчейна около 450 гиг (лень искать точнее, 420 был год назад), плюс 50% на рост и запас, следовательно диск надо выделять 1 ТБ. Т.е. террабайт никому не нужных данных.
    У самого Bitcoin и почти всех его форков есть опция prune, которой можно ограничить размер хранилища блоков. Тут можно найти описание параметра. Опытным путем было найдено оптимальное значение этого параметра в 2,5 ГБ. Больше можно, меньше нет. Не помню подробностей, но не все блокчейны умеют меньшие значения и начинают вести себя странно, косячить те есть. Т.е. в конфиге добавляете строку prune=2500 и демон начнет автоматически удалять старые блоки, держа размер блокчейна на диске около 2,5 гиг. При этом сам блокчейн будет в засинканном состоянии.

    Ну и зачем, собственно, это все про диски. Воспользовавшись обрезкой вы можете не городить сетевое хранилище, а просто хранить блокчейн на SSD
    Ответ написан
    1 комментарий
  • Существует ли панель для управления серверами Linux?

    @mureevms
    Когда только начинал тоже задавался подобным вопросом, но дзен в том, подобные панели это не удобно. Если таки хотите кнопочки, посмотрите в сторону Rundeck, он более гибок и не имеет ограничений как панели, можно сделать что угодно
    Ответ написан
  • Как сравнить вывод скрипта с файлом?

    @mureevms
    $ echo 111 > 1
    $ echo 111 > 2
    $ diff 1 2 -q; echo $?   
    0
                                                                                                                       
    $ echo 111 > 1
    $ echo 222 > 2
    $ diff 1 2 -q; echo $?      
    Files 1 and 2 differ
    1
    
    $ man diff
    ...
    EXIT STATUS
         The diff utility exits with one of the following values:
    
               0       No differences were found.
               1       Differences were found.
               >1      An error occurred.
    ...
    Ответ написан
    Комментировать
  • Почему Не получается подключиться к серверу gitlab?

    @mureevms
    22 порт на Gitlab занят для обращения к гит серверу с пользователем git. Там свой ssh сервер.
    Если вы хотите попасть по SSH на сервер, то SSH демон должен слушать любой другой порт, отличный от 22, что и надо настроить отдельно. Коннектиться как ssh ${system_user}@${host} -p ${port}
    Если вы хотите обратиться у репе через гит, то git clone git@gitlab.example.net:group/repo.git

    Вот например на моем гитлаб сервере первый телнет до гит порта, второй до ssh. Как можно видеть, разные версии OpenSSH сервера:
    $ telnet gitlab.example.net 22
    ...
    SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5
    
    $ telnet gitlab.example.net 2222
    ...
    SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.5
    Ответ написан
  • Как настроить host_key_checking==false, когда прыгаем через хост при помощи ProxyJump?

    @mureevms
    У меня на проекте работало так, строки из инвентори файла:
    bastion_server=x.x.x.x
    ansible_user=user
    ansible_ssh_common_args='-o ProxyCommand="ssh -o StrictHostKeyChecking=accept-new -W %h:%p -q {{ ansible_user }}@{{ bastion_server }}"'
    Ответ написан
    4 комментария
  • Как подклчиться к mongo в docker?

    @mureevms
    Если коннектит происходит из другого контейнера, надо коннектиться по имени контейрена, т.е. так:
    wait mongoose.connect(`mongodb://mongo:27017/${DB_NAME}`)
    Ответ написан
    Комментировать
  • Почему не запускается docker образ через gitlab ci?

    @mureevms
    Если у вас тип executor это docker, то что находится в script выполняется в контейнере, поднятом из image. Соответственно, вы пытаетесь сделать Docker-in-Docker. Осуждаю, поскольку сильно специфично и если вы не знаете для чего именно оно вам надо, значит не надо. Выберите shell как тип экзекьютора и скриптуйте командами непосредственно из системы без дополнительной прослойки
    Ответ написан
    7 комментариев
  • Docker compose меняет группу на 999 и выдает ошибку Permission denied?

    @mureevms
    999 - это UID пользователя postgres внутри контейнера. При инициализации БД, владельцем каталога /var/lib/postgresql/ назначается пользователь postgres. Когда вы маппите этот каталог в текущий (это следет из volumes), то конечно все рекурсивно будет принадлежать 999 UID'у. Это логичное и ожидаемое поведение.
    Чтобы решить можно изменить базовый образ, что запарно. Другие варианты:
    - назначить пользователю, работающему с этим каталогом, 999 UID в материнской системе
    - создать группу с 999 GID'ом и добавить пользователя в эту группу.

    А еще лучше просто не лазить туда. Если все же требуется, повышать привелегии до рута. Или же созать подкаталог и маппить в него, чтобы текущий не аффектился
    Ответ написан
    1 комментарий
  • Gitlab отказывается запускаться. Как починить?

    @mureevms
    Товарищи в комментах все правильно сказали. Я же хочу более конструктивно:
    1. Скорее всего ставился Гитлаб в Omnibus версии, поэтому data каталог по дефолту находится в /var/opt/gitlab/, проверьте сколько он занимает места.
    2. Ни слова не было сказано каков размер диска. Посмотрите требования перед тем, как ставить монстров.
    3. В конфиге Гитлаба три тысячи строк, среди которых по дефолту раньше были включены Графана и Прометей, которые пишут кучу данных в БД. Изучите.
    4. Если настраивались бэкапы, требуется плюс 100% больше места для хранения каждого бэкапа, чем размер всех реп. На вскидку, у меня весь data каталоаг занимает 15,5 гиг, (из этого все репы 7, бэкап 7, плюс по-мелочи). 0,5 гига логов. При чем, для создания бэкапа надо дополнительно x2 больше места, чем весит сам бэкап, это обусловлено особенностью и порядком его создания.
    5. Сам Гитлаб весит не мало, у меня он Omnibus в Докере и его каталог весит 43 гига.
    6. Опять же про свой Гитлаб сервер, диск размером 90 гиг, 43 занимает сам Гитлаб, 16 дата каталог с одним бэкапом и логами. 20 свободно, остальные 10 занято системой.
    Ответ написан
    3 комментария
  • Почему создание образа Docker зависает на стадии docker build?

    @mureevms
    Красным по черному же пижет, что
    Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist


    Это проблема Centos, потому что он всё. Починить можно, но не в докере, смысла не имеет. Соберите на живом дистре тоже самое
    Ответ написан
    5 комментариев