
이 글은 Synology NAS에서 Docker를 사용하여 Code-Server를 설치하고 JAVA 개발 환경을 구성하는 글입니다.
Code-Server는 무엇인가요?
Code-Server는 웹 버전 VS Code라고 생각하시면 됩니다.
인터넷만 된다면 데스크톱, 랩톱, 태블릿PC, 스마트폰 등 별도의 설치 과정 없이 내가 미리 설정해둔 IDE에서 작업을 이어나갈 수 있습니다.
글에서 사용된 환경은 다음과 같습니다.
- NAS: Synology DS920+
- DSM 버전: DSM 7.1.1-42962 Update 1
- Docker 20.10.3-1308 패키지
다운로드
시놀로지 Docker를 열고 ‘레지스트리’ 탭에서 “code-server”를 검색하여 ‘linuxserver/code-server’를 더블클릭합니다.

버전은 ‘latest’로 해주시면 됩니다.

사전 작업
(필수) config 파일이 저장될 폴더를 생성
저는 docker -> code-server -> config 로 생성했습니다.


(선택) 도메인 연결 준비
보유한 도메인의 하위 도메인을 만들어 줍니다.
예시) code.test.kr
시놀로지 제어판 -> 보안 -> 인증서 탭에서 새로운 인증서를 만들어줍니다.

역방향 프록시
인증서 생성과 설정이 끝났다면,
시놀로지 제어판 -> 로그인 포털 -> 역방향 프록시로 들어갑니다.

호스트 이름에 하위 도메인을 넣어줍니다.

사용자 지정 헤더
역방향 프록시 규칙의 상단탭에서 사용자 지정 머리글을 클릭하고 아래와 같이 설정해 줍니다.
머리글 이름 | 값 |
Upgrade | $http_upgrade |
Connection | $connection_upgrade |
Accept-Encoding | gzip |

설치하기
‘이미지‘탭에서 ‘linuxserver/code-server‘를 더블클릭합니다.

네트워크 선택
네트워크는 디폴트상태로 진행합니다. (선택한 네트워크 사용 – 컨테이너 이름 bridge)

좌측 하단의 ‘고급 설정‘을 클릭합니다.

파라미터 설정
더 많은 파라미터를 확인하고 싶으시면 https://hub.docker.com/r/linuxserver/code-server 를 참고해 주세요.
변수 | 값 |
TZ | Asia/Seoul |
PUID | 1000 |
PGID | 1000 |
PASSWORD | 1q2w3e4r@! (접근 시 사용될 패스워드) |
SUDO_PASSWORD | 1q2w3e4r@! (리눅스 root 패스워드) |
PROXY_DOMAIN | code.test.kr (도메인 입력, 옵션으로 없으면 이 행은 삭제하세요.) |

포트 설정
로컬 포트가 기존 포트와 겹친다면 다른 포트로 해도 괜찮지만, 위쪽에서 설정한 ‘역방향 프록시’의 포트도 변경하셔야 합니다.

볼륨 설정
‘폴더 추가’를 클릭하고 사전 작업에서 생성한 ‘config’ 폴더를 지정해 주세요.

마운트 경로는 “/config“로 해주세요.

마지막으로 전체 설정을 확인하는 화면이 나옵니다. 이상이 없는지 확인하시고 완료해 주세요.
사용하기
접속하기
브라우저 주소표시줄에 지정한 도메인을 입력하고 들어갑니다.
예) code.test.kr
도메인이 없어 넘어갔다면 NAS의 ip주소와 포트를 입력하고 접속합니다.
예) 192.168.1.101:58443
패스워드는 파라미터 설정에서 지정한 ‘PASSWORD’를 입력하시면 됩니다.
예) 1q2w3e4r@!

성공했다면 VS Code와 같은 UI의 IDE가 뜹니다.

에러가 떠요
아래와 같은 에러가 뜬다면 ‘사전 작업’의 ‘사용자 지정 헤더’를 다시 확인해 주세요.
An unexpected error occurred that requires a reload of this page.
The workbench failed to connect to the server (Error: WebSocket close with status code 1006)
JAVA 개발환경 구성
JDK 설치
code-server에서 ^ + ` 로 터미널을 열어줍니다.


터미널에 아래와 같이 입력하여 apt-get을 업데이트합니다.
> sudo apt-get -q update
...
...
Get:27 http://archive.ubuntu.com/ubuntu jammy-security/main amd64 Packages [546 kB]
Fetched 48.3 MB in 7s (7,226 kB/s)
Reading package lists...
설치 가능한 OpenJDK 찾습니다.
> apt-cache search openjdk
OpenJDK jre, jdk를 설치합니다.
이 글에서는 18버전을 설치합니다.
> sudo apt-get install openjdk-18-jre -y
> sudo apt-get install openjdk-18-jdk -y
정상적으로 JAVA가 설치되었는지 확인합니다.
아래와 같이 설치된 버전이 뜬다면 성공
> java -version
openjdk version "18.0.2-ea" 2022-07-19
OpenJDK Runtime Environment (build 18.0.2-ea+9-Ubuntu-222.04)
OpenJDK 64-Bit Server VM (build 18.0.2-ea+9-Ubuntu-222.04, mixed mode, sharing)
확장 설치
Code-Server가 아닌 로컬 버전의 VS Code와 방법은 같습니다.

테스트
간단하게 JAVA 프로젝트를 만들고, Hello World 출력을 테스트해봅시다.

마치며…
아이패드에서 어떻게 하면 편리하게 코딩을 할 수 있을지 고민하다가 Code-Server를 설치했습니다.
로컬 VS Code를 사용할 수 있다면 그게 베스트겠지만, 배터리를 아껴야 하는 랩톱, 환경에 제약이 있는 태블릿에서 요긴하게 사용할 수 있습니다.
사용자 지정 헤더를 그대로 작성한 후 실행했는데도 An unexpected error occurred that requires a reload of this page.
The workbench failed to connect to the server (Error: WebSocket close with status code 1006) 이렇게 뜨는데 해결 방법이 없을까요?
사용자 지정 헤더 작성 실수를 하신 게 아니라면 ‘https://’ 로 설정하고 ‘http://’ 로 접속하신 게 아닌지 확인해 보세요.
리눅스서버의 code-server이미지 내부에서 커맨드를 통해 자바를 설치하게 될 경우, 재부팅시 자바가 날아가는 번거로움이 있습니다.
대신 리눅스서버쪽에서 제공하는 환경변수를 사용하면 컨테이너가 올라올때 자동으로 자바를 설치하면서 올라올 수 있습니다.
DOCKER_MODS=linuxserver/mods:code-server-java11
단 지원하는 자바 버전이 11뿐인점은 감안해야합니다.
매우 깔끔하고 좋은 글 감사합니다!
덕분에 너무 쉽고 편하게 설치해서 사용하게 되었어요