Skip to content
2월 4, 2025chattiboypython, programming

code-server ssl배포

image 2

web ide로 사용 할수있는 code-server를 TLS/SSL적용하여 배포하는 방법을 소개 합니다.
약간의 설정방법을 변형하여 HAProxy를 맨 앞에 놓고 nginx와 code-server를 docker container를 이용하여 구성합니다.

본 문서는 개인 테스트 환경 설정을 위하여 작성되었습니다.

image 2

HAProxy

haproxy는 tcp모드를 이용하여 https로들어오는 트래픽을 통과 실킬 겁니다.
http모드로 동작시키면서 443으로 접속하려면 ssl 인증서를 HAProxy에 직접 설정해줘야 해독을 할수 있어서 tcp모드로 동작시킵니다.

frontend myfrontend
    # Set the proxy mode to http (layer 7) or tcp (layer 4)
    mode tcp

    # Receive HTTP traffic on all IP addresses assigned to the server at port 80
    bind :80
    bind :443

    # HTTP -> HTTPS 리디렉션 처리
    acl is_http req.ssl_ver  eq 0
    http-request redirect scheme https code 301 if is_http

    # Choose the default pool of backend servers
    default_backend web_servers

backend web_servers
    mode tcp
    balance roundrobin
    server s1 192.168.0.101:443 check

Code-Server 배포

nginx.conf

server {
    listen 443 ssl;
    server_name code.icurfer.test;

    ssl_certificate /etc/nginx/certs/fullchain.pem;
    ssl_certificate_key /etc/nginx/certs/icurfer.test.key;

    location / {
        proxy_pass http://code-server:8443;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }
}

docker-compose

version: "3"

services:
  code-server:
    image: lscr.io/linuxserver/code-server
    container_name: code-server
    environment:
      - PUID=1000 # Change to 0 to run with root privileges
      - PGID=1000 # Change to 0 to run with root privileges
      - TZ=Etc/UTC
      - PASSWORD={password} #optional
      - SUDO_PASSWORD={password}
      - PROXY_DOMAIN=code.icurfer.test #optional
      - DEFAULT_WORKSPACE=/config/workspace #optional
    restart: always
    volumes:
      - /root/code_server:/config
    expose:
      - "8443"
    networks:
      - proxy

# https://docs.linuxserver.io/images/docker-code-server/#usage

  nginx:
    image: nginx:latest
    container_name: nginx
    restart: always
    ports:
      - "443:443"
    volumes:
      - /root/code_server/nginx.conf:/etc/nginx/conf.d/default.conf  # Nginx 설정 파일 개별 마운트
      - /root/certs:/etc/nginx/certs
    networks:
      - proxy

networks:
  proxy:

Python 개발환경 구성

code-server만 단독 구성시 python이 없습니다.

python3 설치

편의를 위하여 code-server를 root권한으로 동작 후 진행합니다.

apt update && apt install python3 -y
ln -s /usr/bin/python3 /usr/bin/python

code-runner확장 툴을 설치하고 execution을 할때 터미널을 이용하도록 설정합니다.

image 1

Leave a comment