---
# System prepended metadata

title: Docker web terminal 安裝教程
tags: [nas]

---

###### tags: `nas`
# Docker web terminal 安裝教程
建立/tmp目錄，並進入
```
mkdir /tmp/docker && cd  /tmp/docker
```
建立Dockerfile
```
vim Dockerfile
```
貼上內容
```dockerfile=
FROM alpine:3.13.5

# Whenever possible, install tools using the distro package manager
RUN apk add --no-cache tini ttyd socat nginx unzip openssl openssh ca-certificates  && \
# Do some configuration for nginx
    echo "daemon off;" >> /etc/nginx/nginx.conf && \
    mkdir /run/nginx && \
    echo "server { listen 80 default_server; root /var/www/localhost/htdocs; location / { try_files \$uri /index.html; } }" > /etc/nginx/conf.d/default.conf && \
    echo "<html><head><title>Welcome to Nginx</title></head><body><h1>Nginx works!</h1></body></html>" > /var/www/localhost/htdocs/index.html && \
    chown -R 0:82 /var/www/localhost/htdocs && \
# Configure a nice terminal
    echo "export PS1='\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '" >> /etc/profile && \
# Fake poweroff (stops the container from the inside by sending SIGTERM to PID 1)
    echo "alias poweroff='kill 1'" >> /etc/profile

ENV TINI_KILL_PROCESS_GROUP=1

EXPOSE 7681 80
ENTRYPOINT ["/sbin/tini", "--"]
CMD [ "ttyd", "/usr/bin/ssh", "root@172.17.0.1"]
```
編譯成鏡像
```
docker build /tmp/docker -t ttyd2
```
建立並執行容器
```
docker run -d --name ttyd2 -p 8022:7681 ttyd2
```
## Nginx 反代設定
```
    location /ttyd {
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_read_timeout 1d; # dont kill connection after 60s of inactivity
        proxy_pass http://172.17.0.6:7681/;
    }
```