Правки локального размещения дева, перенос тунеля в контейнер
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
# Приватный ключ монтируется в рантайме, в образ его НЕ кладём.
|
||||
id_tunnel*
|
||||
@@ -0,0 +1,8 @@
|
||||
# Крошечный контейнер SSH reverse-туннеля к VPS.
|
||||
# Держит -R <VPS_TUNNEL_PORT>:app:8000 на VPS, отдавая приложение по сети compose.
|
||||
# Переподключение обеспечивает Docker (restart: unless-stopped) при выходе ssh.
|
||||
FROM alpine:3.20
|
||||
RUN apk add --no-cache openssh-client
|
||||
COPY tunnel.sh /usr/local/bin/tunnel.sh
|
||||
RUN sed -i 's/\r$//' /usr/local/bin/tunnel.sh && chmod +x /usr/local/bin/tunnel.sh
|
||||
ENTRYPOINT ["/usr/local/bin/tunnel.sh"]
|
||||
@@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
# SSH reverse-туннель из контейнера на VPS:
|
||||
# VPS:127.0.0.1:$VPS_TUNNEL_PORT -> $UPSTREAM (сервис app по сети compose)
|
||||
# Ключ монтируется снаружи в /key/id_tunnel (см. docker-compose*.yml).
|
||||
set -eu
|
||||
|
||||
: "${VPS_TUNNEL_HOST:?VPS_TUNNEL_HOST is required}"
|
||||
VPS_TUNNEL_USER="${VPS_TUNNEL_USER:-tunnel}"
|
||||
: "${VPS_TUNNEL_PORT:?VPS_TUNNEL_PORT is required}"
|
||||
UPSTREAM="${UPSTREAM:-app:8000}"
|
||||
|
||||
# Копируем ключ и выставляем строгие права (с хоста права могут не годиться, особенно с Windows).
|
||||
mkdir -p /root/.ssh
|
||||
cp /key/id_tunnel /root/.ssh/id_tunnel
|
||||
chmod 600 /root/.ssh/id_tunnel
|
||||
|
||||
echo "[tunnel] -R ${VPS_TUNNEL_PORT}:${UPSTREAM} -> ${VPS_TUNNEL_USER}@${VPS_TUNNEL_HOST}"
|
||||
exec ssh -N \
|
||||
-o BatchMode=yes \
|
||||
-o ServerAliveInterval=30 -o ServerAliveCountMax=3 \
|
||||
-o ExitOnForwardFailure=yes \
|
||||
-o StrictHostKeyChecking=accept-new \
|
||||
-o UserKnownHostsFile=/root/.ssh/known_hosts \
|
||||
-i /root/.ssh/id_tunnel \
|
||||
-R "${VPS_TUNNEL_PORT}:${UPSTREAM}" \
|
||||
"${VPS_TUNNEL_USER}@${VPS_TUNNEL_HOST}"
|
||||
Reference in New Issue
Block a user