Initial commit
This commit is contained in:
commit
df0362c124
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
id_rsa_proxy
|
||||||
|
id_rsa_proxy.pub
|
15
Makefile
Normal file
15
Makefile
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
.PHONY: default
|
||||||
|
default: remote client
|
||||||
|
|
||||||
|
.PHONY: remote
|
||||||
|
remote:
|
||||||
|
docker-compose -f ./docker-compose-remote.yml up -d
|
||||||
|
|
||||||
|
.PHONY: client
|
||||||
|
client:
|
||||||
|
docker-compose -f ./docker-compose-client.yml build
|
||||||
|
docker-compose -f ./docker-compose-client.yml up -d
|
||||||
|
|
||||||
|
.PHONY: logs
|
||||||
|
logs:
|
||||||
|
docker-compose -f ./docker-compose-client.yml logs -f
|
11
Readme.md
Normal file
11
Readme.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# Dockamole
|
||||||
|
|
||||||
|
Example bridging connections across two distinct Docker networks using `mole`.
|
||||||
|
|
||||||
|
My real use case is something like a remote LDAP server that I don't want to expose to the public internet and some metrics servers only available behind a VPN. This setup will allow me to create a proxy container on a host that will act as a local LDAP or HTTP server.
|
||||||
|
|
||||||
|
If I get time, I'll draw a diagram as well.
|
||||||
|
|
||||||
|
## Running
|
||||||
|
|
||||||
|
Requires you to provide your own ssh keys as well as provide the local machine IP address
|
16
docker-compose-client.yml
Normal file
16
docker-compose-client.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
version: '2.2'
|
||||||
|
|
||||||
|
services:
|
||||||
|
mole:
|
||||||
|
build: mole
|
||||||
|
ports:
|
||||||
|
# This is the port you will use to view the service: http://localhost:8880
|
||||||
|
- 8880:8080
|
||||||
|
volumes:
|
||||||
|
# This key must be provided
|
||||||
|
- ./id_rsa_proxy:/mole/.ssh/id_rsa
|
||||||
|
environment:
|
||||||
|
- MOLE_LOCAL=0.0.0.0:8080
|
||||||
|
- MOLE_REMOTE=web:8080
|
||||||
|
# IP address is the local address of the server. This is to show that it's connecting outside the bridge network
|
||||||
|
- MOLE_SERVER=mole@10.255.52.39:2222
|
20
docker-compose-remote.yml
Normal file
20
docker-compose-remote.yml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
version: '2.2'
|
||||||
|
|
||||||
|
services:
|
||||||
|
proxy:
|
||||||
|
image: panubo/sshd
|
||||||
|
ports:
|
||||||
|
- "2222:22"
|
||||||
|
volumes:
|
||||||
|
# This key must be provided
|
||||||
|
- ./id_rsa_proxy.pub:/etc/authorized_keys/mole
|
||||||
|
environment:
|
||||||
|
- SSH_USERS=mole:101:101
|
||||||
|
|
||||||
|
web:
|
||||||
|
image: stefanscherer/whoami
|
||||||
|
expose:
|
||||||
|
- 8080
|
||||||
|
ports:
|
||||||
|
# This port is published to debug that the web server is actually running
|
||||||
|
- "8080:8080"
|
20
mole/Dockerfile
Normal file
20
mole/Dockerfile
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# FROM golang
|
||||||
|
# RUN go get -u github.com/davrodpin/mole/cmd/mole
|
||||||
|
|
||||||
|
FROM alpine
|
||||||
|
RUN apk add bash curl tar
|
||||||
|
RUN bash -c "bash <(curl -fsSL https://raw.githubusercontent.com/davrodpin/mole/master/tools/install.sh | sed 's/\bsudo\b//g')"
|
||||||
|
|
||||||
|
RUN mkdir /mole
|
||||||
|
RUN adduser -S -h /mole mole
|
||||||
|
|
||||||
|
USER mole
|
||||||
|
|
||||||
|
RUN mkdir -p /mole/.ssh
|
||||||
|
RUN touch /mole/.ssh/config
|
||||||
|
|
||||||
|
# Should not be running as root
|
||||||
|
|
||||||
|
COPY ./start.sh ./
|
||||||
|
|
||||||
|
CMD ./start.sh
|
8
mole/start.sh
Executable file
8
mole/start.sh
Executable file
@ -0,0 +1,8 @@
|
|||||||
|
#! bin/bash
|
||||||
|
|
||||||
|
mole -v \
|
||||||
|
-local ${MOLE_LOCAL} \
|
||||||
|
-remote ${MOLE_REMOTE} \
|
||||||
|
-server ${MOLE_SERVER} \
|
||||||
|
-key ~/.ssh/id_rsa \
|
||||||
|
-insecure
|
Loading…
Reference in New Issue
Block a user