외근이 많다보니 IDE 세팅을 일일이 맞추기도 힘들어서 알아보던 도중에 code-server가 존재하는것을 알게 되었습니다. PC에 설치 하지 않고 Server에 설치해서 Webbrowser를 이용해서 IDE를 사용하도록 해주는 Tools 이여서 상당히 끌리게 되어서 제 서버에 설치를 하게 되었습니다.
전 웹서버를 이용할대 Apache를 잘 이용하지만 이번에는 code-server 때문에 nginx 를 이용해서 설치를 하게 되었습니다. code-server만을 이용할때는 상당히 잘 작동을 하고 빠르게 작동을 하여서 만족을 하게 되었습니다. 애초에 nginx가 apache보다 가볍기 때문에 속도가 잘 보장이 되어서 좋은 기능을 사용할 수 있게 되었지만 서버를 code-server 만으로 사용하기에는 자원을 너무 낭비를 하기에 여러가지 올리는 도중에 webdav까지 사용할 수 있도록 설정을 하려고 하다보니 여러가지 설정을 찾아서 헤매게 되었습니다.
nginx 설정을 인터넷에 많기 때문에 자료를 정리하려다가 포기하고, apache로 갈아 타게 되었습니다. apache도 code-server 기능을 이용하기 위해서는 인터넷에 찾아보니 여러가지로 돌아 다니지만 참 난관의 연속이였습니다.
꼬박 하루를 설정을 가지고 WEB 서버 가동을 몇번이나 한 끝에 결국은 설정을 마줘고 하루정도 이용을 하고 나서 블로그에 기록을 하게 되었습니다.
<VirtualHost *:80>
ServerAdmin your-email
ServerName your-domain
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
LogLevel warn
ErrorLog ${APACHE_LOG_DIR}/your-domain.error.log
CustomLog ${APACHE_LOG_DIR}/your-domain.access.log combined
</VirtualHost>
위에 설정을 Apache에서 HTTP를 이용하게 될 경우에 설정입니다. code-server는 자제 서버기능이 있어서 기존의 apahce설정하고도 상당히 다른 형태가 되었습니다. 위에 설정중 Rewrite 기능은 HTTPS 기능을 이용하기 위해서이니 필요하지 않으신분은 주석 처리해서 사용하지 않으셔도 됩니다.
<VirtualHost *:443>
AllowEncodedSlashes on
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
ProxyPreserveHost on
SSLProxyEngine on
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:8080/$1 [P,L]
RewriteCond %{HTTP:Upgrade} !=websocket [NC]
RewriteRule /(.*) http://127.0.0.1:8080/$1 [P,L]
<Location />
AuthType Basic
AuthName "Auth Login Title"
AuthUserFile /etc/apache2/.htpasswd
ProxyPreserveHost On
ProxyPass http://127.0.0.1:8080/
ProxyPassReverse http://172.0.0.1:8080/
AllowOverride all
Require valid-user
</Location>
ErrorLog ${APACHE_LOG_DIR}/your-domain.error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/your-domain.access.log combined
SSLEngine on
SSLHonorCipherOrder on
SSLCertificateFile "/etc/letsencrypt/live/your-domain/cert.pem"
SSLCertificateKeyFile "/etc/letsencrypt/live/your-domain/privkey.pem"
SSLCertificateChainFile "/etc/letsencrypt/live/your-domain/chain.pem"
</VirtualHost>
HTTP 설정을 끝내고 Let’s Encrypt 로 인증서를 발급 받거나 다른곳에서 인증서를 받고 나서 HTTPS 기능을 설정을 하시면 됩니다. code-server는 Proxy 기능을 통해서 넘겨줘야 하기 때문에 여러가지 설정 중 현재 가장 제게 맞는 설정이라고 생각을 하여서 만든 설정입니다.
인터넷 곳곳에 설정들이 많지만 그곳에서 필요한 설정을 취득하는것도 시간과 노력이 드는것 같습니다. 그래도 시간을 투자해서 설정을 하고 나니 회사, 집 어디서든 접속이 가능하고 제 서버에 있다보니 설정 파일을 노출될 위험도 없어서 좋습니다.
물론 귀찮은것은 저는 htpasswd 기능과 code-server의 비밀번호 사용으로 2중으로 걸려 있어서 로그인 하는것이 조금 번거로운 일이 되었지만 해당 부분 제외 하고는 모두 만족을 하고 사용하고 있습니다.
code-server가 운영이 힘들다면은 https://vscode.dev/ 라는 Microsoft에서 운영하는 서비스도 있다는 점을 기록에 남겨 놓습니다.