You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器内Tor隐藏服务无法通过Tor浏览器访问求助

问题解答

核心问题分析

你的Docker配置存在两个关键问题:

  1. Tor服务未在容器启动时运行:RUN service tor restart是在镜像构建阶段执行的,容器启动时该服务不会自动启动,导致隐藏服务未生效。
  2. HiddenServiceDir权限不足:Tor运行用户为debian-tor,默认情况下该用户没有/var/lib/tor/hidden_service/目录的读写权限,无法生成洋葱地址和处理请求。

修改后的Dockerfile

FROM node:latest

WORKDIR /frontend/

COPY . .

EXPOSE 3000

# 安装依赖和Tor,清理缓存减小镜像体积
RUN apt-get update -y && \
    apt-get upgrade -y && \
    apt-get install -y tor && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

RUN npm install

# 修改Tor配置
RUN echo "HiddenServiceDir /var/lib/tor/hidden_service/" >> /etc/tor/torrc && \
    echo "HiddenServicePort 80 127.0.0.1:3000" >> /etc/tor/torrc

# 确保Tor用户对隐藏服务目录有读写权限
RUN chown -R debian-tor:debian-tor /var/lib/tor/hidden_service/

# 创建启动脚本,串联Tor启动、服务初始化、地址输出和Node服务启动流程
RUN echo '#!/bin/bash' > /start.sh && \
    echo 'service tor start' >> /start.sh && \
    echo 'sleep 5' >> /start.sh && \
    echo 'cat /var/lib/tor/hidden_service/hostname' >> /start.sh && \
    echo 'npm start' >> /start.sh && \
    chmod +x /start.sh

CMD ["/start.sh"]

修改后的运行命令

docker build -t my-hidden-service .
docker run my-hidden-service:latest

不需要映射3000:3000端口,因为Tor隐藏服务的流量是通过Tor网络内部转发到容器的3000端口,主机无需直接访问该端口。

关键修改说明

  • 将Tor服务启动逻辑移到容器启动阶段的脚本中,确保容器运行时Tor处于活跃状态。
  • 添加chown命令修改隐藏服务目录权限,让Tor用户能正常生成和维护洋葱地址。
  • 使用启动脚本串联多步操作,避免CMD命令的执行顺序冲突问题。
  • 清理APT缓存减小镜像体积,优化镜像构建流程。

内容的提问来源于stack exchange,提问作者stevan06

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 11:42:37