51 lines
1.7 KiB
Docker
51 lines
1.7 KiB
Docker
FROM alpine:latest
|
|
WORKDIR /app
|
|
|
|
# 设置环境变量默认值(可在 docker run 时覆盖)
|
|
ENV SERVER_DOMAIN=example.clawcloudrun.com
|
|
ENV UDP_PORT=5678
|
|
ENV PASSWORD=your-uuid-password
|
|
ARG DASHBOARD_VERSION=latest
|
|
ENV DASHBOARD_VERSION=$DASHBOARD_VERSION
|
|
|
|
# 安装依赖 & 创建必要目录
|
|
RUN apk update && \
|
|
apk add --no-cache curl wget openssl bash jq unzip ca-certificates && \
|
|
mkdir -p /etc/hysteria
|
|
|
|
# 下载 hysteria2 主程序
|
|
RUN wget -q -O /usr/local/bin/hysteria https://download.hysteria.network/app/latest/hysteria-linux-amd64 && \
|
|
chmod +x /usr/local/bin/hysteria
|
|
|
|
# 自签 TLS 证书
|
|
RUN openssl req -x509 -nodes -newkey ec:<(openssl ecparam -name prime256v1) \
|
|
-keyout /etc/hysteria/server.key \
|
|
-out /etc/hysteria/server.crt \
|
|
-subj "/CN=bing.com" -days 36500
|
|
|
|
# 下载并解压 nezha-agent
|
|
RUN set -eux; \
|
|
if [ "$DASHBOARD_VERSION" = "latest" ]; then \
|
|
API_URL="https://gitee.com/api/v5/repos/naibahq/agent/releases/latest"; \
|
|
else \
|
|
API_URL="https://gitee.com/api/v5/repos/naibahq/agent/releases/tags/$DASHBOARD_VERSION"; \
|
|
fi; \
|
|
AGENT_URL=$(curl -s $API_URL | jq -r '.assets[] | select(.name | endswith("linux_amd64.zip")) | .browser_download_url'); \
|
|
if [ -z "$AGENT_URL" ] || [ "$AGENT_URL" = "null" ]; then \
|
|
echo "获取 Agent 下载地址失败,退出"; exit 1; \
|
|
fi; \
|
|
wget -O nezha-agent.zip "$AGENT_URL"; \
|
|
unzip nezha-agent.zip; \
|
|
rm nezha-agent.zip; \
|
|
chmod +x nezha-agent
|
|
|
|
# 拷贝 entrypoint 启动脚本
|
|
COPY entrypoint.sh /entrypoint.sh
|
|
RUN chmod +x /entrypoint.sh
|
|
|
|
# 显示 UDP 端口
|
|
EXPOSE ${UDP_PORT}/udp
|
|
|
|
# 启动脚本作为容器入口
|
|
ENTRYPOINT ["/entrypoint.sh"]
|