Files
Phantom/release/Dockerfile.hidden-service

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"]