Тут скоро Новый Год. И многие люди начинают давать себе обеты - вот, с нового года начну новую жизнь. Брошу курить, брошу пить, или сброшу лишний вес.
🔤 🔤 🔤 🔤 🔤 🔤 🔤
Вот, к этой дате я и решил поделиться с народом собственным опытом. Для начала расскажу, как я бросил курить.
ㅤ
Если статья наберет хотя бы 70 лайков - продолжу и напишу, как я бросил пить и похудел со 130 до 85 кг.
Я бросил курить в конце августа 1998 года. К тому времени у меня был многолетний опыт курильщика. Да и бросал я уже не первый раз.
Я решил завязать с куревом, потому что у меня начало ухудшаться здоровье. Я начал кашлять по утрам. Во рту была такая вонь, как-будто кошки нагадили.
Да, совсем забыл напомнить, это были девяностые, с деньгами и куревом было плохо, поэтому курил я "Приму". И за день выкуривал 2 пачки. Прикиньте, какую дозу всякой дряни я получал.
Ошибки, которые я делал раньше, пытаясь бросить:
1. Снижал дозу. Довел до одной сигареты в НЕДЕЛЮ!!! Пофигу. Ты или куришь или нет. Нельзя немного курить, немного пить и быть немного беременной.
2. На период бросания, нужно завязать с употреблением алкоголя. Он снимает тормоза, и я возобновлял пагубную привычку именно по-пьяни.
3. Друзей, которые знают, что Вы пытаетесь бросить, и которые предлагают покурить, нужно посылать далеко и надолго. Друзья - те кто поддерживают, а не те, кто помогают кожух пропить.
Я бросил сразу. Одномоментно. Мне было очень плохо. Мне было так плохо, что через два месяца мне еще очень сильно хотелось курить, а через 6 месяцев хотелось периодически.
Девяностые, никаких никотинозаменителей, пластырей, таблеток. Все на морально-волевых. Вместо сигарет жевал жевательную резинку, и делал дыхательную гимнастику:
В первые дни я так делал примерно через каждые 20-30 минут, что соизмеримо с периодом перекуров. Постепенно необходимость в этом отпала и я, наконец-то понял, что у меня есть сила воли. И этот ресурс я использовал для дальнейших самоограничений.
Я до сих пор помню, как мне было тяжело бросать, и именно это в нескольких тяжелых жизненных случаях остановило меня от возобновления идиотской привычки.
Ну, еще и понимание, что когда я курил, то расплачивался деньгами и здоровьем, а какой-то директор табачной фабрики напокупал себе машины, дома, а возможно и яхты.
Жду 70 лайков и продолжим.
🛠 #рабочиебудни
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
«Бросить курить легко. Я делал это сотни раз» Марк Твен.
Вот, к этой дате я и решил поделиться с народом собственным опытом. Для начала расскажу, как я бросил курить.
ㅤ
Если статья наберет хотя бы 70 лайков - продолжу и напишу, как я бросил пить и похудел со 130 до 85 кг.
Лицензионное соглашение.
Я никого ни к чему не призываю, ничего не рекомендую, ни за что не отвечаю. Просто рассказываю о себе.
Я бросил курить в конце августа 1998 года. К тому времени у меня был многолетний опыт курильщика. Да и бросал я уже не первый раз.
Я решил завязать с куревом, потому что у меня начало ухудшаться здоровье. Я начал кашлять по утрам. Во рту была такая вонь, как-будто кошки нагадили.
Да, совсем забыл напомнить, это были девяностые, с деньгами и куревом было плохо, поэтому курил я "Приму". И за день выкуривал 2 пачки. Прикиньте, какую дозу всякой дряни я получал.
Ошибки, которые я делал раньше, пытаясь бросить:
1. Снижал дозу. Довел до одной сигареты в НЕДЕЛЮ!!! Пофигу. Ты или куришь или нет. Нельзя немного курить, немного пить и быть немного беременной.
2. На период бросания, нужно завязать с употреблением алкоголя. Он снимает тормоза, и я возобновлял пагубную привычку именно по-пьяни.
3. Друзей, которые знают, что Вы пытаетесь бросить, и которые предлагают покурить, нужно посылать далеко и надолго. Друзья - те кто поддерживают, а не те, кто помогают кожух пропить.
Я бросил сразу. Одномоментно. Мне было очень плохо. Мне было так плохо, что через два месяца мне еще очень сильно хотелось курить, а через 6 месяцев хотелось периодически.
Девяностые, никаких никотинозаменителей, пластырей, таблеток. Все на морально-волевых. Вместо сигарет жевал жевательную резинку, и делал дыхательную гимнастику:
Если очень сильно хочется курить - делаешь несколько глубоких и быстрых вдохов-выдохов и задерживаешь дыхание на полном вдохе.
Это называется гипервентиляция легких. После задержки дыхания "организм плывет". Ощущение очень похожее, на выкуривание сигареты. С той лишь разницей, что от такой дыхательной гимнастики очень просто избавиться.
В первые дни я так делал примерно через каждые 20-30 минут, что соизмеримо с периодом перекуров. Постепенно необходимость в этом отпала и я, наконец-то понял, что у меня есть сила воли. И этот ресурс я использовал для дальнейших самоограничений.
Я до сих пор помню, как мне было тяжело бросать, и именно это в нескольких тяжелых жизненных случаях остановило меня от возобновления идиотской привычки.
Ну, еще и понимание, что когда я курил, то расплачивался деньгами и здоровьем, а какой-то директор табачной фабрики напокупал себе машины, дома, а возможно и яхты.
Жду 70 лайков и продолжим.
—
Please open Telegram to view this post
VIEW IN TELEGRAM
24 359
Синхронизируем настройки Pi-Hole между инстансами.
ㅤ
У меня в сети живет несколько нод с pi-hole, которые раскиданы по разным устройствам (proxmox, raspberry pi и т.п.). И сразу встала необходимость, чтобы все ноды с pi-hole имели одинаковые настройки.
Стратегия такая, одна нода будет master, где производятся все основное настройки, затем все эти настройки раскатываются на другие ноды (slave).
Раньше такой кейс разруливали с помощью Orbital Sync, Nebula Sync и т.п. Но одно сдохло, другое работает через хуй-пизда-копыто. Короче нужно рабочее решение.
Пишем свой велосипед
В
Сохраняем, чмодим, кидаем в крон (а лучше в systemd с таймерами):
Не забываем прокинуть ssh ключи с master на slave, чтобы скрипт не уперся рогом в логин и пароль.
Вроде мелочь, а полезная, да еще и на bash. Хороших тебе предстоящих выходных и береги себя!
🛠 #bash #linux #devops #selfhosting
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
ㅤ
У меня в сети живет несколько нод с pi-hole, которые раскиданы по разным устройствам (proxmox, raspberry pi и т.п.). И сразу встала необходимость, чтобы все ноды с pi-hole имели одинаковые настройки.
Pi-hole — это сетевой DNS‑фильтр и блокировщик рекламы с открытым исходным кодом. Он работает как свой DNS‑сервер, перехватывает DNS‑запросы от устройств в локальной сети и блокирует домены из списков рекламы, трекеров и вредоносных сайтов, возвращая «пустой» ответ вместо IP‑адреса рекламного ресурса.
Стратегия такая, одна нода будет master, где производятся все основное настройки, затем все эти настройки раскатываются на другие ноды (slave).
Раньше такой кейс разруливали с помощью Orbital Sync, Nebula Sync и т.п. Но одно сдохло, другое работает через хуй-пизда-копыто. Короче нужно рабочее решение.
Пишем свой велосипед
#!/usr/bin/env bash
set -euo pipefail
PRIMARY_PIH_DIR="/etc/pihole"
SECONDARY_USER="root"
SECONDARY_PIH_DIR="/etc/pihole"
SECONDARY_HOSTS=(
"192.168.10.97"
"192.168.10.98"
"192.168.10.99"
)
RSYNC_EXCLUDES=(
"--exclude=pihole-FTL.db"
"--exclude=macvendor.db"
"--exclude=*.log"
)
echo "[pihole-sync] $(date): start"
for host in "${SECONDARY_HOSTS[@]}"; do
echo "[pihole-sync] ---- host ${host} ----"
rsync -az \
"${RSYNC_EXCLUDES[@]}" \
"${PRIMARY_PIH_DIR}/" \
"${SECONDARY_USER}@${host}:${SECONDARY_PIH_DIR}/"
echo "[pihole-sync] ${host}: restart dns"
ssh "${SECONDARY_USER}@${host}" "pihole restartdns >/dev/null 2>&1" || \
echo "[pihole-sync] ${host}: FAILED to restart dns"
done
echo "[pihole-sync] $(date): done"
В
SECONDARY_HOSTS забиваем айпишники slave инстансов, этакий массив. На этом настройка скрипта закончена. Весь лишний мусор вроде логов и статистики синхронизироваться не будет.Сохраняем, чмодим, кидаем в крон (а лучше в systemd с таймерами):
Про таймеры подробно писал тут и тут.
crontab -e
*/5 * * * * /usr/local/sbin/pihole-sync.sh >> /var/log/pihole-sync.log 2>&1
Не забываем прокинуть ssh ключи с master на slave, чтобы скрипт не уперся рогом в логин и пароль.
Вроде мелочь, а полезная, да еще и на bash. Хороших тебе предстоящих выходных и береги себя!
—
Please open Telegram to view this post
VIEW IN TELEGRAM
5 31
Stop Using Pi-Hole – Technitium DNS Is Better
В комментах к посту про «ПИ-ДЫРКУ» ребята посоветовали присмотреться к Technitium DNS. Ну вот я и присмотрелся, прислушался к авторитетному мнению.
ㅤ
Ключевым фактором стало — кластеризация и синхронизация из коробки, без велосипедов на Bash скриптах. Да и по интерфейсу нет ебанутых новогодних ёлок и гирлянд.
Поднял я это у себя на 2х нодах в докерах, одну на малине, другую в proxmox, ну и на роутере прописал чтобы по DHCP раздавались DNSки в локальную сеть.
Поднимается элементарно:
Если нужны енвы или порты, расскоментируй строчки по потребностям, мне хватило минимальных вмешательств.
Затем заходим в морду:
Зоны добавляются в разделе Zones, после добавления зоны, создаешь «A» запись например для домена
Создаём кластер
Чтобы создать кластер, идем во вкладку Administration → Cluster. Создаем кластер, а на второй ноде в этом же разделе жмем кнопку Join Cluster. Заполняем очевидные поля, явки, пароли и радуемся синхронизации.
Теперь при добавлении новой зоны на первой ноде, эта зона улетит на вторую ноду. Главное не забыть выбрать Catalog Zone при добавлении зоны.
Никаких танцев с бубном. Ааа.. Есть танцы, возможно ты столкнешься с ошибкой, что 53 порт уже занят. Это нормально, фиксим:
Если у тебя какие-то другие резолверы стоят, то:
Собственно на этом всё. Базу я тебе показал, дальше сам. А всем кто привел меня к этому решению - спасибо и премного благодарен! Скрасил воскресный вечер не за кружкой бухла, а за полезным занятием.
Изучай!
🛠 #selfhosting #proxmox #devops
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
В комментах к посту про «ПИ-ДЫРКУ» ребята посоветовали присмотреться к Technitium DNS. Ну вот я и присмотрелся, прислушался к авторитетному мнению.
ㅤ
Ключевым фактором стало — кластеризация и синхронизация из коробки, без велосипедов на Bash скриптах. Да и по интерфейсу нет ебанутых новогодних ёлок и гирлянд.
Поднял я это у себя на 2х нодах в докерах, одну на малине, другую в proxmox, ну и на роутере прописал чтобы по DHCP раздавались DNSки в локальную сеть.
Поднимается элементарно:
services:
dns-server:
container_name: technitium-dns1
hostname: technitium-dns1
image: technitium/dns-server:latest
ports:
- 5380:5380/tcp # Web console (HTTP)
- 53:53/udp # DNS service
- 53:53/tcp # DNS service
- "53443:53443/tcp" # Web console (HTTPS)
# Optional ports - uncomment as needed:
# - "853:853/udp" # DNS-over-QUIC
# - "853:853/tcp" # DNS-over-TLS
# - "443:443/udp" # DNS-over-HTTPS (HTTP/3)
# - "443:443/tcp" # DNS-over-HTTPS (HTTP/1.1, HTTP/2)
# - "67:67/udp" # DHCP service
# environment:
# - DNS_SERVER_DOMAIN=dns.local
# - DNS_SERVER_FORWARDERS=10.1.149.10
# Production options:
# - DNS_SERVER_ADMIN_PASSWORD=your_secure_password
# - DNS_SERVER_PREFER_IPV6=false
# - DNS_SERVER_RECURSION=AllowOnlyForPrivateNetworks
volumes:
- technitium-dns-data:/etc/dns
restart: unless-stopped
sysctls:
- net.ipv4.ip_local_port_range=1024 65000
volumes:
technitium-dns-data:
driver: local
networks: {}
Если нужны енвы или порты, расскоментируй строчки по потребностям, мне хватило минимальных вмешательств.
Затем заходим в морду:
http://<IP>:5380 и конфигурируем по необходимости. Зоны добавляются в разделе Zones, после добавления зоны, создаешь «A» запись например для домена
nextcloud.local и прописываешь IP своего nginx proxy manager (далее NPM), ну а дальше в NPM разруливаешь на нужные IP адреса и порты.Создаём кластер
Чтобы создать кластер, идем во вкладку Administration → Cluster. Создаем кластер, а на второй ноде в этом же разделе жмем кнопку Join Cluster. Заполняем очевидные поля, явки, пароли и радуемся синхронизации.
Теперь при добавлении новой зоны на первой ноде, эта зона улетит на вторую ноду. Главное не забыть выбрать Catalog Zone при добавлении зоны.
Никаких танцев с бубном. Ааа.. Есть танцы, возможно ты столкнешься с ошибкой, что 53 порт уже занят. Это нормально, фиксим:
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved
sudo rm /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
Если у тебя какие-то другие резолверы стоят, то:
sudo systemctl stop dnsmasq
sudo systemctl disable dnsmasq
sudo systemctl stop bind9
sudo systemctl disable bind9
Собственно на этом всё. Базу я тебе показал, дальше сам. А всем кто привел меня к этому решению - спасибо и премного благодарен! Скрасил воскресный вечер не за кружкой бухла, а за полезным занятием.
Изучай!
—
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
5 48
Предыдущий пост от Tagd Tagd про курево хорошо зашел, поэтому продолжаем здоровую тему, ведь айтишники тоже люди. И даже я взялся за ум, недавно прошел курс у аддиктолога и трезв уже 51 день, правда «пост абстинентный синдром» неплохо даёт знать о себе.
ㅤ
Приятного чтива. Поехали!
🔤 🔤 🔤 🔤 🔤 🔤 🔤
Я тут несколько лет назад совсем завязал пить. Даже пятидесятилетие отмечал трезвым.
Если статья наберет хотя бы 70 лайков - продолжу и напишу, как похудел со 130 до 85 кг.
По молодости, особенно в студенческие годы я, конечно, выпивал. Ну не то, чтобы каждый день, но мог насинячится очень сильно.
Однажды я выпил бутылку водки без закуски и так напился, что проснулся на улице от того, что две тетки щупали мне пульс, поверяя, жив ли я или нет.
После этого случая я решил резко сократить потребляемое количество крепкого спиртного до трех рюмок за вечер, и обязательно под хорошую закуску. При этом я сделал неправильный вывод — что лучше пить пиво, чем водку.
Пиво пили регулярно, после работы, а в пятницу — так обязательно. Оказывается напиться можно и пивом. Я однажды из-за этого попал в вытрезвитель...
Но, то ли метаболизм у меня изменился, то ли пиво было не очень. Однажды вечером я выпил пару бутылок пива (~1 литр в сумме) и сразу лег спать.
Проснулся ночью, от того, что чуть не задохнулся. Пиво + апноэ на фоне большого веса очень гремучая смесь. Я не мог продышаться несколько минут. Меня охватил такой ужас, что я навсегда решил завязать с пивом. Просто, чтобы не сдохнуть однажды.
Потом, с возрастом, я начал замечать, что даже после небольшого количества алкоголя на утро чувствую себя хуже, чем обычно. Особенно начали раздражать «мешки» под глазами. Короче, я сделал выводы, и сначала уменьшил количество до одной рюмки за вечер, а потом понял, что разницы между одной рюмкой и ни одной — практически нет. А если разницы нет, то и пить незачем.
У этого решения, кстати, прекрасный побочный эффект — мои дети, видя что я праздники отмечаю без спиртного, не пили даже в студенчестве. Да и не курили тоже.
Видать права английская поговорка: «Не воспитывайте детей — всё равно они будут похожи на вас. Воспитывайте себя…»
Жду 70 лайков и продолжим.
🛠 #рабочиебудни
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
ㅤ
Приятного чтива. Поехали!
Я тут несколько лет назад совсем завязал пить. Даже пятидесятилетие отмечал трезвым.
Если статья наберет хотя бы 70 лайков - продолжу и напишу, как похудел со 130 до 85 кг.
Лицензионное соглашение.
Я никого ни к чему не призываю, ничего не рекомендую, ни за что не отвечаю. Просто рассказываю о себе.
По молодости, особенно в студенческие годы я, конечно, выпивал. Ну не то, чтобы каждый день, но мог насинячится очень сильно.
Однажды я выпил бутылку водки без закуски и так напился, что проснулся на улице от того, что две тетки щупали мне пульс, поверяя, жив ли я или нет.
После этого случая я решил резко сократить потребляемое количество крепкого спиртного до трех рюмок за вечер, и обязательно под хорошую закуску. При этом я сделал неправильный вывод — что лучше пить пиво, чем водку.
Пиво пили регулярно, после работы, а в пятницу — так обязательно. Оказывается напиться можно и пивом. Я однажды из-за этого попал в вытрезвитель...
Но, то ли метаболизм у меня изменился, то ли пиво было не очень. Однажды вечером я выпил пару бутылок пива (~1 литр в сумме) и сразу лег спать.
Проснулся ночью, от того, что чуть не задохнулся. Пиво + апноэ на фоне большого веса очень гремучая смесь. Я не мог продышаться несколько минут. Меня охватил такой ужас, что я навсегда решил завязать с пивом. Просто, чтобы не сдохнуть однажды.
Потом, с возрастом, я начал замечать, что даже после небольшого количества алкоголя на утро чувствую себя хуже, чем обычно. Особенно начали раздражать «мешки» под глазами. Короче, я сделал выводы, и сначала уменьшил количество до одной рюмки за вечер, а потом понял, что разницы между одной рюмкой и ни одной — практически нет. А если разницы нет, то и пить незачем.
У этого решения, кстати, прекрасный побочный эффект — мои дети, видя что я праздники отмечаю без спиртного, не пили даже в студенчестве. Да и не курили тоже.
Видать права английская поговорка: «Не воспитывайте детей — всё равно они будут похожи на вас. Воспитывайте себя…»
Жду 70 лайков и продолжим.
—
Please open Telegram to view this post
VIEW IN TELEGRAM
10 200
Volume VS Bind в Docker
Сегодня рассмотрим, как и в каких случаях правильно использовать bind или volume при запуске docker контейнеров.
Пересмотрев кучу docker compose файлов, можно сделать вывод — большинство даж не понимают что они делают. Что печально, прожжённые девопс-инженеры продолжают харкодить и творить дичь. Видимо придерживаются методологии — у меня работает, остальное похуй.
Вообще есть правило:
- Если нужно редактировать файлы руками с хоста, используешь Bind Mount.
- Если данные нужны только приложению (БД, логи, кэш) используешь Volumes.
ㅤ
Шпаргалка, что есть что:
Ну и никто не запрещает это совмещать, но старайся разделять. Тем более при работе с volumes, в docker есть удобные команды, ну и через midnight commander можешь физически потыкать файлы, при условии если есть рутовый доступ к файловой системе.
Самое главное не делай так:
Про этот случай я и писал в начале поста, вроде человек 20 лет отрубил в айтишке, а пишет хуйню.
Тут идет жесткая привязка к путям и после запуска наступишь на грабли, либо получишь по ебалу от бедолаги который это запустит. Короче так не делай!
Bind mount удобен при разработке и отладки. Ты монтируешь папку с исходным кодом проекта. Правишь код в IDE на хосте и изменения мгновенно подхватываются приложением внутри контейнера.
А еще есть полезный флаг: «RO», используется в ситуациях, когда тебе нужно что-бы приложение в контейнере не перезаписывало данные в примонтированном каталоге. Удобно для отладки или для каких-то ограничений.
Пример:
При всём желании, конфиг
Ну и пожелания:
- Используйте именованные тома, вместо анонимных томов (которые выглядят как длинный хеш
- Придерживайся принципа - «Один контейнер — один вольюм». Старайтесь не монтировать один и тот же вольюм в 10 разных контейнеров на запись. Если нужно делиться данными, один контейнер должен быть «владельцем» (RW), а остальные — «потребителями» (RO).
- Бэкап: Правило «3-2-1». Volume — это не бэкап, это просто место хранения. Если ты случайно ёбнешь вольюм командой
Используйте временный контейнер для создания архива:
- Docker со временем накапливает «висячие» (dangling) вольюмы — это те, что остались от удаленных контейнеров. Периодически запускай
- Разницы в скорости между Bind и Volume почти нет, оба работают напрямую через ядро. Но это зависит от операционной системы, если у тебя винда и 100500 абстракций, то будут тормоза.
Вот такие пироги, если есть чё добавить, жду тебя в комментариях.
🛠 #docker #linux #devops
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Сегодня рассмотрим, как и в каких случаях правильно использовать bind или volume при запуске docker контейнеров.
Пересмотрев кучу docker compose файлов, можно сделать вывод — большинство даж не понимают что они делают. Что печально, прожжённые девопс-инженеры продолжают харкодить и творить дичь. Видимо придерживаются методологии — у меня работает, остальное похуй.
Вообще есть правило:
- Если нужно редактировать файлы руками с хоста, используешь Bind Mount.
- Если данные нужны только приложению (БД, логи, кэш) используешь Volumes.
ㅤ
Шпаргалка, что есть что:
# Это docker volume, данные хранятся в
# /var/lib/docker/volumes/
volumes:
- nginx_data:/etc/data
# Это bind mount, данные хранятся рядом
# с файлом docker-compose.yml
volumes:
- ./data:/etc/data
Ну и никто не запрещает это совмещать, но старайся разделять. Тем более при работе с volumes, в docker есть удобные команды, ну и через midnight commander можешь физически потыкать файлы, при условии если есть рутовый доступ к файловой системе.
Самое главное не делай так:
Про этот случай я и писал в начале поста, вроде человек 20 лет отрубил в айтишке, а пишет хуйню.
volumes:
- /home/anus/conf.d:/etc/nginx/cond.f
- /home/anus/data/logs:/var/log/nginx
Тут идет жесткая привязка к путям и после запуска наступишь на грабли, либо получишь по ебалу от бедолаги который это запустит. Короче так не делай!
Я лично предпочитаю volumes и порой даже конфиги в нем храню, потому что этот volume можно легко примаунтить к любому другому контейнеру и получить доступ к этим файлам.
Банально возьмем связку nginx + php-fpm, используем один общий volume и php скрипты корректно выполняются.
Bind mount удобен при разработке и отладки. Ты монтируешь папку с исходным кодом проекта. Правишь код в IDE на хосте и изменения мгновенно подхватываются приложением внутри контейнера.
А еще есть полезный флаг: «RO», используется в ситуациях, когда тебе нужно что-бы приложение в контейнере не перезаписывало данные в примонтированном каталоге. Удобно для отладки или для каких-то ограничений.
Пример:
services:
web:
image: nginx:alpine
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./logs:/var/log/nginx
При всём желании, конфиг
nginx.conf нельзя модифицировать из приложения в контейнере. Это можно сделать только на хостовой машине. Второй же bind mount по умолчанию - «RW».Ну и пожелания:
- Используйте именованные тома, вместо анонимных томов (которые выглядят как длинный хеш
4f32a...) всегда давайте томам осмысленные имена: db_data, app_uploads- Придерживайся принципа - «Один контейнер — один вольюм». Старайтесь не монтировать один и тот же вольюм в 10 разных контейнеров на запись. Если нужно делиться данными, один контейнер должен быть «владельцем» (RW), а остальные — «потребителями» (RO).
- Бэкап: Правило «3-2-1». Volume — это не бэкап, это просто место хранения. Если ты случайно ёбнешь вольюм командой
prune, данные исчезнут.Используйте временный контейнер для создания архива:
docker run --rm -v db_data:/data -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data
- Docker со временем накапливает «висячие» (dangling) вольюмы — это те, что остались от удаленных контейнеров. Периодически запускай
docker volume prune. Оно удалит только те тома, которые не подключены ни к одному контейнеру (включая остановленные).- Разницы в скорости между Bind и Volume почти нет, оба работают напрямую через ядро. Но это зависит от операционной системы, если у тебя винда и 100500 абстракций, то будут тормоза.
Вот такие пироги, если есть чё добавить, жду тебя в комментариях.
—
Please open Telegram to view this post
VIEW IN TELEGRAM
6 59
Please open Telegram to view this post
VIEW IN TELEGRAM
10 109
Почтовый сервер у себя дома
Вчера решал интересную задачку. У меня в интернетах крутится собственный почтовый сервер на домене, сервер ежемесячно поджирает стабильно около 2к рублей. Хотя за месяц от силы я получаю 10-20 писем.
ㅤ
Избыточно в плане инфраструктуры и затрат? Конечно! Разумно перетащить его к себе на домашний proxmox и избавиться от одной статьи расходов.
Во время проектирования миграции, было много вопросов и самый главный — у меня нет белого IP в домашнем сегменте, как быть? DynDNS я ебал, да и с микротиком возиться не хочется.
Всё оказалось достаточно просто. Создаем условно за 100 рублей сервер в интернетах с белым IP, втыкаем на него angie с модулем stream, объединяем этот сервер с домашней сетью с помощью netbird или другой технологией. И просто проксипасим все запросы в домашний сегмент.
Звучит логично. Но на практике пришлось поебстись и почитать спецификации всей этой кухни.
Конфиг для angie получился такой, он работает при условии наличия модуля stream.
Суть тут такая, все запросы на определенные порты, перенаправляются в netbird сеть, а
Получилась банальная прокся. Великолепно то, что angie автоматом получает SSL сертификаты и в почтовых программах с этим заморачиваться не нужно, просто указываем домен, порт и всё работает как часы.
Да, в роле почтового сервера у меня установлен docker-mailserver. Штука классная, установил, пару тычек выписал в конфиг и оно работает. Морды в ней нет, чисто логическая часть, что-то вроде бекенда.
Еще нюанс в конфиге docker-mailserver я прописал SSL сертификаты, эти сертификаты я взял в angie после того как он мне их выдал. В этом плане нужно еще придумать, как организовать передачу этих сертов к себе в proxmox.
Ну и важное уточнение, отправлять почту во вне, тебе в нынешних реалиях никто не даст (25 порт на отправку везде заблочен), поэтому используем какой-нибудь relay для этого. Благо есть полно таких, кто дает отправить 10-15к писем в месяц легально и бесплатно. Я пользуюсь этим сервисом несколько лет.
Что еще. Возможно будут проблемы с SPF, но если оно тебе в хуй не уперлось, то отключаем в конфиге docker-mailserver -
Ну и SIEVE включается там же через
Плюсом можешь воткнуть mail archiver и вообще горя не знать. Теперь все твоиписьки письма под контролем и ты сам себе хозяин этой суеты. Ну и дополнительная экономия на избыточной инфраструктуре.
На этом всё, изучай. Концепт я тебе показал, нюансы рассказал, так что дерзай, всё решаемо.
🛠 #selfhosting #proxmox #devops
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
Вчера решал интересную задачку. У меня в интернетах крутится собственный почтовый сервер на домене, сервер ежемесячно поджирает стабильно около 2к рублей. Хотя за месяц от силы я получаю 10-20 писем.
ㅤ
Избыточно в плане инфраструктуры и затрат? Конечно! Разумно перетащить его к себе на домашний proxmox и избавиться от одной статьи расходов.
Во время проектирования миграции, было много вопросов и самый главный — у меня нет белого IP в домашнем сегменте, как быть? DynDNS я ебал, да и с микротиком возиться не хочется.
Всё оказалось достаточно просто. Создаем условно за 100 рублей сервер в интернетах с белым IP, втыкаем на него angie с модулем stream, объединяем этот сервер с домашней сетью с помощью netbird или другой технологией. И просто проксипасим все запросы в домашний сегмент.
Про MX, SPF, DKIM писать не буду, все это настраивается отдельно, не сложно.
Звучит логично. Но на практике пришлось поебстись и почитать спецификации всей этой кухни.
Конфиг для angie получился такой, он работает при условии наличия модуля stream.
nginx
upstream imap_backend {
server 100.106.7.8:993;
}
upstream smtp_backend {
server 100.106.7.8:587;
}
upstream sieve_backend {
server 100.106.7.8:4190;
}
server {
listen 993;
proxy_pass imap_backend;
proxy_timeout 1h;
proxy_connect_timeout 30s;
}
server {
listen 587;
proxy_pass smtp_backend;
proxy_timeout 1h;
proxy_connect_timeout 30s;
}
server {
listen 4190;
proxy_pass sieve_backend;
proxy_timeout 1h;
proxy_connect_timeout 30s;
}
дополнительные порты сам добавь, сюда всё не влезло
Суть тут такая, все запросы на определенные порты, перенаправляются в netbird сеть, а
100.106.7.8 это IP адрес как раз моего LXC контейнера с почтовым сервером в домашнем proxmox.Получилась банальная прокся. Великолепно то, что angie автоматом получает SSL сертификаты и в почтовых программах с этим заморачиваться не нужно, просто указываем домен, порт и всё работает как часы.
sieve_backend нужен, чтобы управлять фильтрами в почте, например при получении письма с определенным заголовком, переносить это письмо в другую папку.Я использую nextcloud mail, и там есть поддержка sieve из коробки. Потыкал еще roundcube для морды, но чёт не зашла, топорная какая-то штука, хотя рабочая.
Да, в роле почтового сервера у меня установлен docker-mailserver. Штука классная, установил, пару тычек выписал в конфиг и оно работает. Морды в ней нет, чисто логическая часть, что-то вроде бекенда.
Еще нюанс в конфиге docker-mailserver я прописал SSL сертификаты, эти сертификаты я взял в angie после того как он мне их выдал. В этом плане нужно еще придумать, как организовать передачу этих сертов к себе в proxmox.
environment:
- SSL_TYPE=manual
- SSL_CERT_PATH=/tmp/dms/custom-certs/certificate.pem
- SSL_KEY_PATH=/tmp/dms/custom-certs/private.key
volumes:
- ./ssl:/tmp/dms/custom-certs/:ro
Банально можно через scp копировать, но в идеале поднять vault hashicorp и хранить серты там и по необходимости дергать от туда в любое место.
Ну и важное уточнение, отправлять почту во вне, тебе в нынешних реалиях никто не даст (25 порт на отправку везде заблочен), поэтому используем какой-нибудь relay для этого. Благо есть полно таких, кто дает отправить 10-15к писем в месяц легально и бесплатно. Я пользуюсь этим сервисом несколько лет.
Что еще. Возможно будут проблемы с SPF, но если оно тебе в хуй не уперлось, то отключаем в конфиге docker-mailserver -
ENABLE_POLICYD_SPF=0.Ну и SIEVE включается там же через
ENABLE_MANAGESIEVE=1.Плюсом можешь воткнуть mail archiver и вообще горя не знать. Теперь все твои
На этом всё, изучай. Концепт я тебе показал, нюансы рассказал, так что дерзай, всё решаемо.
—
Please open Telegram to view this post
VIEW IN TELEGRAM
3 46
С наступающим! Здоровья тебе и твоим близким!
Каждому из вас хочу сказать огромное спасибо за вклад в наше уютное сообщество. Вы все прекрасные специалисты, профессионалы и просто хорошие люди.
Пусть в 2026 году у тебя всё получится, главное не опускай руки и никого не слушай.
Прекрасных тебе праздников и береги себя!
Всех обнял🙃 🙃 🙃
Каждому из вас хочу сказать огромное спасибо за вклад в наше уютное сообщество. Вы все прекрасные специалисты, профессионалы и просто хорошие люди.
Пусть в 2026 году у тебя всё получится, главное не опускай руки и никого не слушай.
Прекрасных тебе праздников и береги себя!
Всех обнял
Please open Telegram to view this post
VIEW IN TELEGRAM
16 171
Ну началось…
ㅤ
Нашел я тебе тут новейший браузер для терминала. Причем не огрызок ебаный вроде
Называется это чудо Brow6el, из пакетов ты его не поставишь, потому что разрабатывает его гикнутый профессор, соответственно тебе придется собрать его самому из исходников.
Благо товарищ побеспокоился об ущербных и дал нам Bash скрипты для билда.
Поехали собирать:
Готово! Теперь запускаем:
Как это работает?
В основе лежит Chromium Embedded Framework (CEF), который рендерит страницы без графического интерфейса. Затем Brow6el преобразует полученное изображение в sixel-графику — формат, который поддерживают многие терминалы. В результате браузер выводит картинку в терминал и обновляет её в реальном времени.
Функции:
- поддержка мыши и клавиатуры
- обычный ввод и прокрутка
- вкладки
- менеджер загрузок
- система закладок
- приватный режим
- JavaScript-консоль
- внедрять скрипты по шаблону URL
Фича: ввод мыши возможен как с реальной мыши, так и через виртуальную мышь, управляемую клавиатурой, что позволяет работать даже если у тебя отсутствует мышь.
Возможно тебе сгодится для тайлинга или чего-то еще. Забирай в копилку.
🛠 #utilites #linux #terminal
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
ㅤ
Нашел я тебе тут новейший браузер для терминала. Причем не огрызок ебаный вроде
lynx, а прям полноценный, с поддержкой графики, скриптов и со всеми современными технологиями.Называется это чудо Brow6el, из пакетов ты его не поставишь, потому что разрабатывает его гикнутый профессор, соответственно тебе придется собрать его самому из исходников.
Благо товарищ побеспокоился об ущербных и дал нам Bash скрипты для билда.
Поехали собирать:
git clone https://codeberg.org/janantos/brow6el.git
sudo apt install build-essential cmake gitlibsixel-dev libgtk-3-dev libx11-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libglib2.0-dev
cd /tmp/brow6el
chmod +x download_cef.sh
./download_cef.sh
mkdir -p build
cd build
cmake ..
make -j$(nproc)
Готово! Теперь запускаем:
cd build
./run_brow6el.sh https://linuxfactory.ru
Как это работает?
В основе лежит Chromium Embedded Framework (CEF), который рендерит страницы без графического интерфейса. Затем Brow6el преобразует полученное изображение в sixel-графику — формат, который поддерживают многие терминалы. В результате браузер выводит картинку в терминал и обновляет её в реальном времени.
Функции:
- поддержка мыши и клавиатуры
- обычный ввод и прокрутка
- вкладки
- менеджер загрузок
- система закладок
- приватный режим
- JavaScript-консоль
- внедрять скрипты по шаблону URL
Фича: ввод мыши возможен как с реальной мыши, так и через виртуальную мышь, управляемую клавиатурой, что позволяет работать даже если у тебя отсутствует мышь.
Короче забавная штука, пользоваться я этим говнищем не буду, но как концепт потыкать вполне себе достойно.
Возможно тебе сгодится для тайлинга или чего-то еще. Забирай в копилку.
—
Please open Telegram to view this post
VIEW IN TELEGRAM
6 66