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