Установка Nginx Proxy Manager в Docker-контейнере

Nginx Proxy Manager (NPM) — это удобный веб-интерфейс для управления обратным проксированием на базе Nginx. Он позволяет легко настраивать прокси для приложений, управлять SSL-сертификатами и доступом без ручного редактирования конфигураций. 📋 Минимальные требования Сервер с root или sudo доступом Установленные Docker и Docker Compose Открытые порты: 80, 443, 81 (панель управления) 🔧 Шаг 1: Подготовка

Как подключиться к закрытым репозиториям GitHub с Ubuntu

Закрытые (private) репозитории на GitHub требуют аутентификации. На Ubuntu это удобно делать через SSH-ключи, что избавляет от постоянного ввода логина и пароля и повышает безопасность. 🔑 Шаг 1: Генерация SSH-ключа Откройте терминал и выполните: ssh-keygen -t ed25519 -C «your_email@example.com» Если ваша версия OpenSSH не поддерживает ed25519, используйте: ssh-keygen -t rsa -b 4096 -C «your_email@example.com» При

Как настроить доступ по SSH-ключам на Ubuntu

Настройка SSH-доступа по ключам — это безопасный и удобный способ подключения к серверу без пароля. Ниже пошаговая инструкция, как всё настроить. 🔧 Шаг 1: Генерация SSH-ключей с именем Откройте терминал и выполните команду: ssh-keygen -t rsa -b 4096 -C «your_email@example.com» -f ~/.ssh/my_custom_key   -t rsa — тип ключа -b 4096 — длина ключа -C —

Установка Docker и Docker Compose на Ubuntu 24.04 и WSL

Docker — это платформа для запуска и управления контейнерами. На Ubuntu 24.04 и в WSL установка делается через официальный репозиторий Docker. Docker Compose теперь встроен в пакет Docker и запускается как docker compose, без отдельной установки.

Установка Node.js > 22 на Ubuntu 24.04 и WSL

Кратко: самый простой и безопасный способ получить актуальный Node.js (ветка 22+ и выше) на Ubuntu 24.04 и в WSL — добавить официальный репозиторий NodeSource или поставить через менеджер версий nvm. В статье — оба варианта, а также частые ошибки и полезные настройки.

Полное руководство по настройке 301 редиректов в Nginx Proxy Manager

🔁 Зачем нужны 301 редиректы 301 редирект — это постоянное перенаправление, которое сообщает поисковым системам и браузерам, что страница окончательно переехала на новый адрес. Это важно для SEO, чтобы: Избежать дублирования контента Сохранить позиции в поисковой выдаче Обеспечить корректную индексацию 🔧 Основные типы редиректов 🌐 С www на без www (или наоборот) Поисковые системы воспринимают

🔧 Инструкция по настройке доступа к Google Sheets API

1. Создать проект в Google Cloud Перейди в Google Cloud Console. В верхнем меню выбери Создать проект. Укажи название проекта (например, MySheetsProject). Нажми Создать. 2. Включить Google Sheets API В проекте перейди в меню APIs & Services → Library (Библиотека). Найди Google Sheets API. Нажми Enable (Включить). 3. Создать учетные данные (credentials) В зависимости от

Автоматический запуск Python-приложения через Bash-скрипт

Этот Bash-скрипт автоматически активирует виртуальное окружение Python, запускает основной скрипт main.py, а затем отключает окружение. Он удобен для быстрого запуска проекта без необходимости вручную вводить команды. Разработчики могут использовать его для упрощения работы и минимизации ошибок при настройке среды выполнения. Скрипт сначала определяет путь к директории, где он находится, а затем переходит в этот каталог.

Скрипт востановления конфига сети в случае сбоя

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

Определение мобильных операторов на python без использования регулярных выражений

def get_operator(phone): phone = str(phone) operator_code = phone[2:5] if operator_code in [‘039’, ‘067’, ‘068’, ‘096’, ‘097’, ‘098’]: operator = ‘kyivstar’ elif operator_code in [‘063’, ‘073’, ‘093’]: operator = ‘lifecell’ elif operator_code in [‘050’, ‘066’, ‘095’, ‘099’]: operator = ‘vodafone’ elif operator_code in [‘091’, ‘092’, ‘094’]: operator = ‘ukrtelecom’ else: operator = None return operator