前提条件
webとsshを同じ334ポートで共存させたい。なお、webはdocker内部、sshは外部、ドメインがあるもしくは固定ipアドレスである
※自分自身をさす方法として今回はドメインを用いたが、ifconfigコマンドや/etc/hostsファイルがなんやかんやとか、dockerにも方法はあるので、あきらめないこと
※内部と外部の違いは少ないです。強いて言うなら、オーバーヘッドの量だと思われます。たぶん固定ipが一番いいです
ただのメモなので、短いです。
これを用いることによって、私は学校WiFiの中でサーバにssh接続できるようになりました。個人的には、ポート封鎖しかしてないんだなぁと思いました。
※大半の時間はdockerを使わずに入れようと努力した結果無理でした。
コードをどう変更したか
※私は、webページをtraefikというものでURLごとに各dockerに振り分けています
docker-compose.yml
version: "3"
services:
traefik:
image: traefik:latest
container_name: traefik
ports:
- 80:80
- 8080:8080
- 8081:8081
- 8082:8082
- - 443:443/tcp
- - 443:443/udp
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./config:/etc/traefik:ro
- ./letsencrypt:/letsencrypt
networks:
- traefik-net
+ sslh:
+ image: oorabona/sslh
+ environment:
+ LISTEN_IP: 0.0.0.0
+ LISTEN_PORT: 443
+ SSH_HOST: oligami.ml
+ SSH_PORT: 22
+ HTTPS_HOST: traefik
+ HTTPS_PORT: 443
+ ports:
+ - 443:443/tcp
+ - 443:443/udp
+ command:
+ - -f
+ restart: unless-stopped
+ links:
+ - traefik
+ networks:
+ - traefik-net
networks:
traefik-net:
# docker network create traefik-net
external: true
oligami.mlは私のサーバアドレスなので自前のアドレスか固定ipに変えてください。たぶん固定ipの方がいいので私は変えてきます。
参考