JB-SelfCompany / awg-docker-bot

AmneziaVPN Telegram Bot
GNU General Public License v3.0
7 stars 2 forks source link

Проблемы с крашом системы при установке #7

Open ron-tayler opened 13 hours ago

ron-tayler commented 13 hours ago

Сам столкнулся и у других видел. В момент установки кто-то сидит на VPN и отваливается SSH соединение что ломает процесс установки. Также проблемы с точной версией Python.

Предложение: Я заметил что управление AWG происходит через Docker Exec. Если всё приложение ставить не в систему а запаковать в Docker Image с точными версиями Python и т.д. то проблем с системой не будет. Я управлять другими Docker контейнерами можно если в контейнер с ботом примонтировать Docker:

privileged: true
volumes:
      - /var/run/docker.sock:/var/run/docker.sock
ILMoroz commented 12 hours ago

@JB-SelfCompany Привет. Накидал не большой DockerFile для данного проекта.

# Используем официальный образ Ubuntu
FROM ubuntu:24.04

# Устанавливаем рабочую директорию
WORKDIR /app

# Устанавливаем необходимые системные пакеты и Python 3.11
# В одном RUN шаге выполняем все действия, чтобы минимизировать слои и кеши
RUN apt-get update -qq && apt-get install -y \
    software-properties-common \
    python3.11 \
    python3.11-venv \
    python3.11-dev \
    qrencode \
    jq \
    net-tools \
    iptables \
    resolvconf \
    git \
    needrestart \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*  # Удаляем кеши apt

# Устанавливаем pip и обновляем его
RUN python3.11 -m pip install --upgrade pip

# Клонируем репозиторий
RUN git clone https://github.com/JB-SelfCompany/awg-docker-bot.git /app/awg-docker-bot

# Переходим в каталог репозитория и создаём виртуальное окружение
WORKDIR /app/awg-docker-bot
RUN python3.11 -m venv myenv && \
    source myenv/bin/activate && \
    pip install -r requirements.txt && \
    # Удаляем кеши pip, чтобы уменьшить размер образа
    rm -rf /root/.cache/pip

# Устанавливаем права на выполнение для всех скриптов
RUN find . -type f -name "*.sh" -exec chmod +x {} \;

# Запуск основного процесса (бота) как команду Docker
CMD ["/app/awg-docker-bot/myenv/bin/python3.11", "/app/awg-docker-bot/awg/bot_manager.py"]

Либо более облегчённый образ.

# Используем более легкий образ, основанный на Debian и уже содержащий Python
FROM python:3.11-slim

# Рабочая директория
WORKDIR /app

# Устанавливаем системные зависимости
RUN apt-get update -qq && apt-get install -y \
    qrencode \
    jq \
    net-tools \
    iptables \
    resolvconf \
    git \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*  # Удаляем кеши apt

# Клонируем репозиторий
RUN git clone https://github.com/JB-SelfCompany/awg-docker-bot.git /app/awg-docker-bot

# Переходим в каталог репозитория и создаём виртуальное окружение
WORKDIR /app/awg-docker-bot
RUN python3.11 -m venv myenv && \
    source myenv/bin/activate && \
    pip install -r requirements.txt && \
    rm -rf /root/.cache/pip

# Устанавливаем права на выполнение для всех скриптов
RUN find . -type f -name "*.sh" -exec chmod +x {} \;

# Запуск основного процесса (бота) как команду Docker
CMD ["/app/awg-docker-bot/myenv/bin/python3.11", "/app/awg-docker-bot/awg/bot_manager.py"]

Единственная трудность которая может возникнуть это момент подкладывания токена бота, можно рассмотреть вариант использования .env (@ron-tayler Может по лучше об этом рассказать)

ron-tayler commented 12 hours ago

Duplicate of #4

ron-tayler commented 12 hours ago

Единственная трудность которая может возникнуть это момент подкладывания токена бота, можно рассмотреть вариант использования .env (@ron-tayler Может по лучше об этом рассказать)

Тут скорее не .env файл, а просто environment переменные. Файл .env - это обычно только при локальной разработке