122 lines
3.9 KiB
Docker
122 lines
3.9 KiB
Docker
# Phantom Hidden Service - Специализированный контейнер для .phantom сайтов
|
|
FROM ubuntu:22.04
|
|
|
|
LABEL maintainer="Phantom Protocol Team 2025"
|
|
LABEL description="Phantom Hidden Service - Анонимные веб-сервисы"
|
|
LABEL version="2.0.0"
|
|
|
|
# Установка зависимостей
|
|
RUN apt-get update && apt-get install -y \
|
|
build-essential \
|
|
libssl-dev \
|
|
libxml2-dev \
|
|
libprotobuf-c-dev \
|
|
protobuf-c-compiler \
|
|
nginx \
|
|
apache2-utils \
|
|
iproute2 \
|
|
iptables \
|
|
net-tools \
|
|
curl \
|
|
wget \
|
|
vim \
|
|
htop \
|
|
python3 \
|
|
python3-pip \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# Установка Python зависимостей для веб-приложений
|
|
RUN pip3 install flask gunicorn requests
|
|
|
|
# Создание пользователя phantom
|
|
RUN useradd -r -s /bin/false -d /var/lib/phantom phantom && \
|
|
mkdir -p /var/lib/phantom /var/log/phantom /etc/phantom && \
|
|
chown -R phantom:phantom /var/lib/phantom /var/log/phantom /etc/phantom
|
|
|
|
# Копирование исходного кода
|
|
COPY src/ /usr/src/phantom/
|
|
COPY protos/ /usr/src/phantom/protos/
|
|
|
|
# Компиляция Phantom Hidden Service
|
|
WORKDIR /usr/src/phantom
|
|
RUN make clean && \
|
|
make phantom-hidden-service && \
|
|
cp phantom-hidden-service /usr/local/bin/ && \
|
|
chmod +x /usr/local/bin/phantom-hidden-service
|
|
|
|
# Копирование конфигурационных файлов
|
|
COPY docker/configs/hidden-service/ /etc/phantom/
|
|
COPY docker/scripts/hidden-service/ /usr/local/bin/
|
|
COPY docker/web-templates/ /var/lib/phantom/web-templates/
|
|
|
|
# Настройка Nginx для Hidden Service
|
|
COPY docker/nginx/hidden-service.conf /etc/nginx/sites-available/default
|
|
RUN nginx -t
|
|
|
|
# Создание директорий для данных
|
|
RUN mkdir -p /var/lib/phantom/hidden-service/keys \
|
|
/var/lib/phantom/hidden-service/descriptors \
|
|
/var/lib/phantom/hidden-service/intro-points \
|
|
/var/lib/phantom/hidden-service/www \
|
|
/var/log/phantom/hidden-service
|
|
|
|
# Создание примера веб-сайта
|
|
COPY docker/sample-sites/phantom-welcome/ /var/lib/phantom/hidden-service/www/
|
|
|
|
# Настройка прав доступа
|
|
RUN chown -R phantom:phantom /var/lib/phantom /var/log/phantom /etc/phantom && \
|
|
chown -R www-data:www-data /var/lib/phantom/hidden-service/www && \
|
|
chmod +x /usr/local/bin/phantom-hs-start.sh && \
|
|
chmod +x /usr/local/bin/phantom-hs-healthcheck.sh && \
|
|
chmod +x /usr/local/bin/phantom-hs-keygen.sh
|
|
|
|
# Открытие портов
|
|
EXPOSE 80/tcp # HTTP сервер
|
|
EXPOSE 443/tcp # HTTPS сервер (если используется)
|
|
EXPOSE 8080/tcp # Управление Hidden Service
|
|
EXPOSE 9080/tcp # Мониторинг
|
|
|
|
# Переменные окружения
|
|
ENV PHANTOM_HS_NAME=phantom-site
|
|
ENV PHANTOM_HS_PORT=80
|
|
ENV PHANTOM_HS_LOCAL_ADDR=127.0.0.1
|
|
ENV PHANTOM_HS_LOCAL_PORT=80
|
|
ENV PHANTOM_HS_INTRO_POINTS=3
|
|
ENV PHANTOM_HS_LOG_LEVEL=INFO
|
|
ENV PHANTOM_KADEMLIA_PORT=6881
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=120s --retries=3 \
|
|
CMD /usr/local/bin/phantom-hs-healthcheck.sh
|
|
|
|
# Создание скрипта запуска
|
|
RUN cat > /usr/local/bin/start-hidden-service.sh << 'EOF'
|
|
#!/bin/bash
|
|
set -e
|
|
|
|
# Запуск Nginx
|
|
service nginx start
|
|
|
|
# Генерация ключей если их нет
|
|
if [ ! -f /var/lib/phantom/hidden-service/keys/private_key ]; then
|
|
echo "Генерация ключей Hidden Service..."
|
|
/usr/local/bin/phantom-hs-keygen.sh
|
|
fi
|
|
|
|
# Запуск Phantom Hidden Service
|
|
exec /usr/local/bin/phantom-hs-start.sh "$@"
|
|
EOF
|
|
|
|
RUN chmod +x /usr/local/bin/start-hidden-service.sh
|
|
|
|
# Переключение на пользователя phantom
|
|
USER phantom
|
|
|
|
# Рабочая директория
|
|
WORKDIR /var/lib/phantom
|
|
|
|
# Точка входа
|
|
ENTRYPOINT ["/usr/local/bin/start-hidden-service.sh"]
|
|
CMD ["--config", "/etc/phantom/hidden-service.conf"]
|
|
|