<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title></title>
    <description>A small talks on IT</description>
    <link>https://kenny.yeoyou.net/ko/</link>
    <atom:link href="https://kenny.yeoyou.net/ko/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sun, 07 Jun 2026 05:47:08 +0000</pubDate>
    <lastBuildDate>Sun, 07 Jun 2026 05:47:08 +0000</lastBuildDate>
    <generator>Jekyll v4.4.1</generator>
    
      <item>
        <title>개인정보 처리방침 — yeoyou sync</title>
        <description>&lt;p&gt;&lt;strong&gt;최종 업데이트: 2026년 6월&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;요약&quot;&gt;요약&lt;/h2&gt;

&lt;p&gt;yeoyou sync는 어떠한 개인정보도 수집, 저장, 전송하지 않습니다.&lt;/p&gt;

&lt;hr /&gt;

&lt;h2 id=&quot;수집하는-정보&quot;&gt;수집하는 정보&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;없음.&lt;/strong&gt; yeoyou sync는 계정, 분석, 오류 보고, 서버를 운영하지 않습니다.&lt;/p&gt;

&lt;p&gt;모든 데이터는 기기와 본인의 홈 서버에만 저장됩니다.&lt;/p&gt;

&lt;h2 id=&quot;앱이-접근하는-항목&quot;&gt;앱이 접근하는 항목&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;권한&lt;/th&gt;
      &lt;th&gt;목적&lt;/th&gt;
      &lt;th&gt;전송 대상&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;사진 및 동영상&lt;/td&gt;
      &lt;td&gt;백업할 파일 읽기&lt;/td&gt;
      &lt;td&gt;본인의 홈 서버만&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Wi-Fi 상태&lt;/td&gt;
      &lt;td&gt;동기화 전 연결 확인&lt;/td&gt;
      &lt;td&gt;전송 안 함&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;인터넷&lt;/td&gt;
      &lt;td&gt;서버로 파일 전송&lt;/td&gt;
      &lt;td&gt;본인의 홈 서버만&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;파일은 기기에서 설정한 서버로 직접 전송됩니다. 저희는 파일을 볼 수 없습니다.&lt;/p&gt;

&lt;h2 id=&quot;기기에-저장되는-데이터&quot;&gt;기기에 저장되는 데이터&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;서버 연결 정보 (IP 주소, 별칭) — 앱 데이터베이스에 로컬 저장&lt;/li&gt;
  &lt;li&gt;이미 동기화된 파일 목록 — 중복 업로드 방지를 위해 로컬 저장&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;이 데이터는 본인의 서버 외에는 기기 밖으로 나가지 않습니다.&lt;/p&gt;

&lt;h2 id=&quot;서드파티-서비스&quot;&gt;서드파티 서비스&lt;/h2&gt;

&lt;p&gt;없음. yeoyou sync는 서드파티 SDK, 분석 도구, 광고 라이브러리를 일절 사용하지 않습니다.&lt;/p&gt;

&lt;h2 id=&quot;아동-개인정보-보호&quot;&gt;아동 개인정보 보호&lt;/h2&gt;

&lt;p&gt;yeoyou sync는 만 13세 미만 아동의 정보를 의도적으로 수집하지 않습니다.&lt;/p&gt;

&lt;h2 id=&quot;방침-변경&quot;&gt;방침 변경&lt;/h2&gt;

&lt;p&gt;중요한 변경이 있을 경우 위의 “최종 업데이트” 날짜를 갱신합니다.&lt;/p&gt;

&lt;h2 id=&quot;문의&quot;&gt;문의&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;mailto:developer@yeoyou.net&quot;&gt;developer@yeoyou.net&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Sun, 07 Jun 2026 02:00:00 +0000</pubDate>
        <link>https://kenny.yeoyou.net/ko/app/2026/06/07/sync-privacy-policy.html</link>
        <guid isPermaLink="true">https://kenny.yeoyou.net/ko/app/2026/06/07/sync-privacy-policy.html</guid>
        
        <category>privacy</category>
        
        <category>yeoyou-sync</category>
        
        <category>android</category>
        
        
        <category>App</category>
        
      </item>
    
      <item>
        <title>WSL 2로 꾸미는 윈도 개발 환경</title>
        <description>&lt;p&gt;요즘 개발자 분들 맥 많이들 사용하시죠. 개발 툴들 지원도 잘 되고 설치와 사용이 편해서 많이들 사용하시는 것 같습니다. 저도 한때 즐겨 사용하기도 했습니다만 버전업 되면서 마음에 안 드는 점들이 거슬리기도 하네요. 최근 저는 윈도 랩탑을 사용하고 있습니다만, 여러 개발 툴 사용이 좀 불편한 관계로 개발에는 오라클 버추얼박스를 이용해 리눅스를 사용하고 있습니다.&lt;/p&gt;

&lt;p&gt;맥과 윈도는 단순히 OS만의 차이가 아니라 자판 배열이나 단축키 설정이 많이 달라집니다. 같은 크롬, VSCode 일지라도 단축키는 꽤 달라집니다. 이미 윈도를 사용하고 계신다면 맥에 적응하기 위해 단축키를 다시 익혀야 하고 또다시 되돌아오기도 그만큼 힘들어지게 됩니다. 저는 그런 경험을 거친 뒤 차라리 VIM을 메인으로 사용하기로 마음먹고 현재는 어떤 환경이든 동일하게 사용하고 있습니다.&lt;/p&gt;

&lt;p&gt;최근 2020 5월 윈도 10 업데이트를 기준으로 WSL2가 정식 배포가 되었죠. 이제 윈도 홈 에디션에서도 도커를 사용할 수 있게 되었습니다.
저는 윈도 프로 버전에서 도커 데스크톱도 써 보았고, 인사이더 프리뷰를 통해 WSL2도 미리 접해보고 시행착오를 겪었는데요, Hyper-v는 버추얼박스와 동시에 동작하지 않습니다. Hyper-v를 버철머신으로 사용하는 것도 가능은 하지만 메모리 관리나 네트웍 사용이 아무래도 불편해서 버추얼 박스를 놓지 못하고 있네요. WSL2도 역시 Hyper-v 기반이기 때문에 버추얼 박스와 공존하지 못하고 불편함이 여전했습니다. 그래서 WSL2를 멀리하고 있었는데 최근 도커가 WSL2를 지원하는 것을 알고 다시 사용해 보게 되었습니다.&lt;/p&gt;

&lt;p&gt;결과는 꽤 만족스럽습니다. 윈도 터미널, WSL2, 도커를 사용하면 설정하기에 따라 쾌적한 개발환경을 손에 넣을 수 있습니다. 다음을 따라 설정을 완료하면 어떠한 개발에도 손색이 없는 윈도/리눅스 개발환경을 구축 할 수 있습니다. 개발에 친숙한 유닉스 환경을 윈도에서도 손쉽게 도입하고 그 자유를 즐겨 보세요.&lt;/p&gt;

&lt;p&gt;개요&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Git, Git bash&lt;/li&gt;
  &lt;li&gt;Windows Terminal&lt;/li&gt;
  &lt;li&gt;WSL2
    &lt;ul&gt;
      &lt;li&gt;Using Linux GUI apps&lt;/li&gt;
      &lt;li&gt;Ssh to WSL&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Docker&lt;/li&gt;
  &lt;li&gt;VSCode&lt;/li&gt;
  &lt;li&gt;Defender Antivirus Exclusion&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;windows-버전과-빌드-넘버&quot;&gt;Windows 버전과 빌드 넘버&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/winver.jpg&quot; alt=&quot;winver&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Wnd&lt;/code&gt;+&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;R&lt;/code&gt; 후 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;winver&lt;/code&gt; 를 입력하고 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;enter&lt;/code&gt; 하면 위와같이 버전정보를 볼 수 있습니다. 이미 2004 버전 (OS build 19041)를 가지고 있다면 바로 WSL2를 사용할 수 있습니다.&lt;/p&gt;

&lt;p&gt;May 2020 업데이트 (version 2004 or build 19041) 는 WSL2를 지원하므로 Docker는 WSL2 백엔드를 기본 도커엔진으로 사용합니다. 때문에 이제는 윈도 홈 에디션도 개발에 무리가 없습니다.&lt;/p&gt;

&lt;p&gt;만일 윈도 업데이트 화면에 2004버전이 나타나지 않는다면 다음의 &lt;a href=&quot;https://www.microsoft.com/en-au/software-download/windows10&quot; target=&quot;_blank&quot;&gt;윈도 업데이트 툴&lt;/a&gt;을 이용해 업데이트 할 수 도 있습니다.&lt;/p&gt;

&lt;h2 id=&quot;개발자-모드&quot;&gt;개발자 모드&lt;/h2&gt;

&lt;p&gt;윈도에서도 심링크를 사용할 수 는 있지만 Administrator 권한이나 개발자 모드가 필요합니다.
심링크가 있는 Git 리포지토리는 이것이 필요하게 됩니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/developer-mode.jpg&quot; alt=&quot;Developer mode&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;p&gt;자세한 정보는 다음 위키 문서를 참고하세요 &lt;a href=&quot;https://github.com/git-for-windows/git/wiki/Symbolic-Links#allowing-non-administrators-to-create-symbolic-links&quot; target=&quot;_blank&quot;&gt;using Symlinks in Windows&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;git과-git-bash&quot;&gt;Git과 Git-bash&lt;/h2&gt;

&lt;p&gt;깃은 말할 필요도 없이 이제 개발에는 필수죠&lt;/p&gt;

&lt;h3 id=&quot;설치&quot;&gt;설치&lt;/h3&gt;

&lt;p&gt;다음 &lt;a href=&quot;https://git-scm.com/downloads&quot; target=&quot;_blank&quot;&gt;다운로드 링크&lt;/a&gt; 에서 다운받고 설치합니다.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;C:\&amp;gt;git update-git-for-windows
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;윈도 커맨드 라인에서 도스명령어를 자주 사용하지 않으신다면 유닉스 명령을 사용하시는 것도 좋습니다. 동일한 이름의 명령어는 유닉스 명령이 우선이 됩니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/git-1.jpg&quot; alt=&quot;Unix tools from Command Prompt&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;p&gt;autocrlf 옵션은 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;input&lt;/code&gt;을 선택합니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/git-2.jpg&quot; alt=&quot;Autocrlf&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;p&gt;그리고 심링크를 활성화 합니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/git-3.jpg&quot; alt=&quot;Enable symlinks&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;p&gt;** 심링크는 개발자 모드나 administrator 권한을 필요로 합니다.&lt;/p&gt;

&lt;p&gt;만약 설치시에 지나쳤다 해도 나중에 설정이 가능합니다.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;C:\&amp;gt;git config --global core.autocrlf input
C:\&amp;gt;git config --global core.symlinks true
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;그리고 다음과 같이 유저 정보를 입력 합니다.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;C:\&amp;gt;git config --global user.name &quot;Your Name&quot;
C:\&amp;gt;git config --global user.email &quot;your-email-addr@your.domain&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;autoclrf-에-대해&quot;&gt;autoclrf 에 대해&lt;/h3&gt;

&lt;p&gt;반드시 &lt;strong&gt;input&lt;/strong&gt; 으로 설정하세요.&lt;/p&gt;

&lt;p&gt;체크아웃시 자동으로 LF 을 CRLF 로 변환하는 게 멋져 보일지도 모르지만, 사실 모든 파일은 도커에 바인드되어 유닉스에서 사용될 수 있기 떄문에 도커에서 알기 어려운 에러를 만나고 싶지 않다면 LF만으로 통일하는 것이 좋습니다.&lt;/p&gt;

&lt;p&gt;윈도 Notepad를 사용할 때가 아니라면 LF only 파일에 대해서 걱정할 필요는 없습니다.&lt;/p&gt;

&lt;h3 id=&quot;rsa-key-설정하기&quot;&gt;RSA key 설정하기&lt;/h3&gt;

&lt;p&gt;Github, Gitlab 또는 Bitbucket 등등 RSA key는 인증으로 널리 사용되고 있습니다.&lt;/p&gt;

&lt;p&gt;생성된 퍼블릭 키를 깃 서비스에 등록하게 되면 사용자 이름과 패스워드를 입력하지 않아도 됩니다.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-cmd&quot;&gt;C:\&amp;gt;ssh-keygen -t RSA -b 2048
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;그리고 엔터를 수차례 입력해서 디폴트 설정으로 넘어갑니다.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-cmd&quot;&gt;C:\&amp;gt;type %USERPROFILE%\.ssh\id_rsa.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;그럼 퍼블릭 키 내용을 깃 서비스에 복사, 붙여넣기를 합니다.&lt;/p&gt;

&lt;p&gt;윈도 쪽 뿐 아니라 WSL 쪽 에서도 동일하게 생성하고 등록해야 합니다. 뒤에 WSL 설치 후에 위 작업을 반복하세요.&lt;/p&gt;

&lt;h2 id=&quot;windows-terminal&quot;&gt;Windows Terminal&lt;/h2&gt;

&lt;p&gt;MS 스토어 에서 설치 할 수 있습니다. &lt;a href=&quot;https://aka.ms/terminal&quot; target=&quot;_blank&quot;&gt;Windows Terminal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/terminal.jpg&quot; alt=&quot;Windows Terminal&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;camingocode-폰트&quot;&gt;CamingoCode 폰트&lt;/h3&gt;

&lt;p&gt;코딩할 때 좋은 무료 폰트를 하나 추천합니다 &lt;a href=&quot;https://www.fontsquirrel.com/fonts/camingocode&quot; target=&quot;_blank&quot;&gt;CamingoCode&lt;/a&gt;. 상당히 컴팩트 하고 미려한 고정폭 글꼴로, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;I&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;l&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;1&lt;/code&gt; 등의 비슷한 글꼴이 확연히 구분되서 즐겨 사용합니다.
위의 TTF 파일을 다운 받고 오른클릭으로 각각의 TTF를 설치하세요.&lt;/p&gt;

&lt;p&gt;설치 후 윈도 터미널에도 등록하세요. 설정을 눌러 profile란에 다음을 추가하세요.&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;	      	      &lt;span class=&quot;s2&quot;&gt;&quot;fontFace&quot;&lt;/span&gt;: &lt;span class=&quot;s2&quot;&gt;&quot;CamingoCode&quot;&lt;/span&gt;,
	      	      &lt;span class=&quot;s2&quot;&gt;&quot;fontSize&quot;&lt;/span&gt;: &lt;span class=&quot;s2&quot;&gt;&quot;9&quot;&lt;/span&gt;,
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;git-bash-사용하기&quot;&gt;Git-bash 사용하기&lt;/h3&gt;

&lt;p&gt;다음을 윈도 터미널 설정에서 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;profiles.list&lt;/code&gt; 어레이에 추가합니다&lt;/p&gt;

&lt;div class=&quot;language-json highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;w&quot;&gt;            &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
                &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;guid&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;{abc00000-0000-0000-0000-000000000000}&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
                &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Git-Bash&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
                &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;commandline&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%PROGRAMFILES%&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Git&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;bin&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;bash.exe&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
                &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;icon&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;%PROGRAMFILES%&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;Git&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;mingw64&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;share&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;git&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\\&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;git-for-windows.ico&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
                &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;fontFace&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;CamingoCode&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
                &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;fontSize&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;9&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
                &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;startingDirectory&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;~&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
            &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;wsl2&quot;&gt;WSL2&lt;/h2&gt;

&lt;p&gt;Windows Subsystem for Linux 는 최근에 버전 2를 지원 하게 되었습니다.
실제 리눅스 커널을 지원하고 너 나은 디스크 접근 성능을 제공합니다. WSL1 처럼 호스트 디스크를 리눅스 로컬 파일로 사용할 수 는 없습니다.&lt;/p&gt;

&lt;p&gt;WSL2는 Hyper-v 환경이랑 크게 다르지 않습니다만, 호스트(윈도) 메모리를 게스트(리눅스)와 공유합니다. 그래서 마치 하나의 OS을 사용하고 있는것 처럼 메모리 사용을 최적화 할 수 있습니다. (오라클 버추얼 박스도 이와 같이 사용 할 수 있습니다만, 안타깝게도 Hyper-v와 공존할 수 없습니다 :/)&lt;/p&gt;

&lt;p&gt;더 중요한 것은 도커에서 라우팅을 지원하므로 WSL쪽의 포트를 호스트 로컬 네트웍 장치를 통해 접근 할 수 있습니다.&lt;/p&gt;

&lt;p&gt;** Windows 10 홈 에디션 에서도 WSL2을 사용할 수 있습니다.&lt;/p&gt;

&lt;p&gt;** WSL2를 사용하기 위해선 BIOS 나 UEFI 설정에서 virtualisation support를 활성화 해야 합니다.&lt;/p&gt;

&lt;h3 id=&quot;wsl-설치하기&quot;&gt;WSL 설치하기&lt;/h3&gt;

&lt;p&gt;다음 &lt;a href=&quot;https://docs.microsoft.com/en-us/windows/wsl/install-win10&quot; target=&quot;_blank&quot;&gt;공식 문서&lt;/a&gt; 에서도 확인할 수 있지만 아래 요약을 보고 진행하시는 것이 더 좋습니다.&lt;/p&gt;

&lt;p&gt;먼저 어드민 권한으로 파워셸을 엽니다. 시작버튼은 오른클릭하고 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Windows PowerShell (Admin)&lt;/code&gt;을 선택합니다.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;WSL 활성화
    &lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;C:&lt;span class=&quot;se&quot;&gt;\&amp;gt;&lt;/span&gt; dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;‘Virtual Machine Platform’ 추가 컴포넌트 활성화
    &lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;C:&lt;span class=&quot;se&quot;&gt;\&amp;gt;&lt;/span&gt; dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;커널 업데이트 설치&lt;br /&gt;
&lt;a href=&quot;https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi&quot; target=&quot;_blank&quot;&gt;WSL2 kernel&lt;/a&gt;을 다운로드하고 설치합니다. 자세한 내용은 &lt;a href=&quot;https://docs.microsoft.com/en-gb/windows/wsl/wsl2-kernel&quot; target=&quot;_blank&quot;&gt;공식문서&lt;/a&gt;를 참고하세요.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Ubuntu 설치&lt;br /&gt;
선호하는 아무 Linux 배포판이나 설치가 가능합니다만 저는 우분투를 선호합니다. &lt;a href=&quot;https://www.microsoft.com/store/apps/9n6svws3rx71&quot; target=&quot;_blank&quot;&gt;MS 스토어 링크&lt;/a&gt;를 사용해 설치하세요&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;기본 WSL 버전 설정
    &lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;C:&lt;span class=&quot;se&quot;&gt;\&amp;gt;&lt;/span&gt; wsl &lt;span class=&quot;nt&quot;&gt;--set-default-version&lt;/span&gt; 2
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;기본 username 설정&lt;br /&gt;
시작메뉴에서 Ubuntu 20.04를 선택하면 우분투가 시작되며 최초 실행시에는 username과 password를 입력하게 됩니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;wsl-폴더-접근&quot;&gt;WSL 폴더 접근&lt;/h3&gt;

&lt;p&gt;기본으로 WSL 디스크는 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;\\wsl$\&lt;/code&gt; 에 공유되어 있습니다. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;\\wsl$\Ubuntu-20.04&lt;/code&gt;에서 우분투 루트 디렉토리를 확인 할 수 있습니다.
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Cmd&lt;/code&gt;+&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;R&lt;/code&gt;, type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;\\wsl$&lt;/code&gt; and enter will show the Linux root directories.&lt;/p&gt;

&lt;p&gt;해당 폴더를 오른클릭하여 네트웍 드라이브로 등록하면 편리합니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/mapdrive.jpg&quot; alt=&quot;map drive&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;sudo-비번-생략하기&quot;&gt;Sudo 비번 생략하기&lt;/h3&gt;

&lt;p&gt;WSL에서 리눅스는 가상머신이고 윈도 파이어 월로 보호되며, 주로 도커를 사용할 것이므로 딱히 높은 보안을 유지할 필요는 없다고 생각합니다. 그보다는 편리하게 루트 권한을 사용하는 것이 좋습니다.&lt;/p&gt;

&lt;p&gt;WSL쪽에서 다음과 같이 visudo 명령을 입력합니다.&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;visudo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;그러면 나노 에디터가 실행되며 다음을 마지막에 추가합니다.&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;&amp;lt;username&amp;gt;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;py&quot;&gt;ALL&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;(ALL) NOPASSWD:ALL&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;&amp;lt;username&amp;gt;&lt;/code&gt;은 위에 입력한 username으로 대체해 줍니다. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;^x&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;y&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;enter&lt;/code&gt;를 차례로 눌러 저장하고 종료합니다.&lt;/p&gt;

&lt;h3 id=&quot;wsl-memory-관리&quot;&gt;WSL memory 관리&lt;/h3&gt;

&lt;p&gt;WSL2 는 호스트 메모리를 제약 없이 공유하기 때문에 기본 설정으로는 호스트 메모리를 남겨놓지 않고 필요 이상으로 사용 할 수 도 있습니다.&lt;/p&gt;

&lt;p&gt;최대 메모리는 전체 메모리의 절반 정도가 적당 합니다. WSL쪽에서 사용하지 않으면 호스트는 물로 남은 메모리를 모두 사용 할 수 있습니다.&lt;/p&gt;

&lt;h4 id=&quot;최대-memory-제한하기&quot;&gt;최대 memory 제한하기&lt;/h4&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%USERPROFILE%\.wslconfig&lt;/code&gt; 파일을 다음의 내용으로 생성합니다.&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nn&quot;&gt;[wsl2]&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;py&quot;&gt;memory&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;4GB&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;wsl2-메모리-반환하기&quot;&gt;WSL2 메모리 반환하기&lt;/h4&gt;

&lt;p&gt;어느 &lt;a href=&quot;https://devblogs.microsoft.com/commandline/memory-reclaim-in-the-windows-subsystem-for-linux-2/&quot; target=&quot;_blank&quot;&gt;MS 블로그 기사&lt;/a&gt;, 에서 다음과 같이 언급하고 있습니다.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;호스트에 가능한 한 많은 메모리를 반환하기 위해, 우리는 주기적으로 메모리 단편화를 제거 합니다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;WSL 커널은 메모리 사용을 최적화해 최대한 메모리를 반환하려고 노력하지만, 여전히 캐시된 메모리를 유지합니다. 이것을 무조건 반환하게 되면 성능에 영향을 주므로 필요하지 않다면 캐시를 유지하는 것이 좋습니다.&lt;/p&gt;

&lt;p&gt;하지만 때때로 더 많은 호스트 메모리를 사용하고 싶다고 생각할 때에는 수동으로 캐시메모리를 반환 시키는 것이 필요 할 때 도 있을 것입니다. 그럴때엔 WSL쪽에서 다음 명령어를 사용해 보세요.&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo &lt;/span&gt;1 | &lt;span class=&quot;nb&quot;&gt;sudo tee&lt;/span&gt; /proc/sys/vm/drop_caches
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;아니면 윈도쪽 에서도 다음과 같이 할 수 있습니다.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-dos&quot;&gt;C:\&amp;gt;bash -c &quot;echo 1 | sudo tee /proc/sys/vm/drop_caches&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;h3 id=&quot;wsl로-ssh-접속하기&quot;&gt;WSL로 SSH 접속하기&lt;/h3&gt;

&lt;p&gt;WSL2 는 linux VM이므로 ssh 데몬을 설치할 수도 있습니다. 하지만 접속하기가 쉽지만은 않습니다. IP어드레스가 매번 변경되기 때문이죠.&lt;/p&gt;

&lt;p&gt;Hyper-v/WSL2의 이슈중 하나로, IP 어드레스를 고정할 수 없는 점이 있습니다. 와이파이 네트웍이 재접속 되거나 변경되면 호스트 네트웍 서브넷이 변경되고 따라서 VM의 어드레스가 변경됩니다. 이것이 그렇게 자주 일어나지는 않지만 사용하다 보면 매번 새 주소를 찾아내 변경하는 게 꽤 불편하게 느껴 집니다.&lt;/p&gt;

&lt;p&gt;최근 제가 찾게 된 &lt;a href=&quot;https://www.hanselman.com/blog/THEEASYWAYHowToSSHIntoBashAndWSL2OnWindows10FromAnExternalMachine.aspx&quot; target=&quot;_blank&quot;&gt;블로그 기사&lt;/a&gt;에 이에 대한 멋진 해결책이 있었습니다.&lt;/p&gt;

&lt;p&gt;바로 리눅스쪽이 아닌 윈도쪽에 Openssh 서버를 설치하는 것입니다. 그리고 기본 shell 을 bash (WSL2) 로 설정 하는 것이죠.&lt;/p&gt;

&lt;p&gt;어드민 파워셸을 열고 다음과 같이 Openssh server를 설치합니다.&lt;/p&gt;

&lt;div class=&quot;language-powershell highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;Add-WindowsCapability&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-Online&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-Name&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;OpenSSH.Server~~~~0.0.1.0&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Set-Service&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-Name&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;sshd&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-StartupType&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;Automatic&apos;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Start-Service&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;sshd&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;New-ItemProperty&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-Path&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;HKLM:\SOFTWARE\OpenSSH&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-Name&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;DefaultShell&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-Value&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;C:\WINDOWS\System32\bash.exe&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-PropertyType&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;-Force&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;그리고 나면&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-cmd&quot;&gt;C:\&amp;gt;ssh localhost
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;윈도 로긴 패스워드로 접속이 가능해집니다.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://putty.org/&quot; target=&quot;_blank&quot;&gt;Putty&lt;/a&gt; 나 &lt;a href=&quot;http://www.9bis.net/kitty/#!index.md&quot; target=&quot;_blank&quot;&gt;Kitty&lt;/a&gt; 가 익숙해서 계속 터미널로 사용하고 싶으시면 위와 같은 방법으로 가능합니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/tmux.jpg&quot; alt=&quot;TMUX&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;p&gt;위 스크린샷의 tmux 는 커맨드라인 세션 매니저입니다. 자세한 정보는 &lt;a href=&quot;https://github.com/tmux/tmux/wiki&quot; target=&quot;_blank&quot;&gt;공식 Wiki&lt;/a&gt;에서 확인하세요.&lt;/p&gt;

&lt;h4 id=&quot;ssh-비번-생략하기&quot;&gt;ssh 비번 생략하기&lt;/h4&gt;

&lt;p&gt;일반적으로 퍼블릭 키 (보통 id_rsa.pub)를 ssh 서버단의 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.ssh/authorized_keys&lt;/code&gt;파일에 등록하면, 비번없이 로긴 할 수 있습니다.&lt;/p&gt;

&lt;p&gt;하지만 보통 윈도 유저는 Administrators 그룹에 속해 있는데요, 그럴 때엔 꼭 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;%programdata%/ssh/administrators_authorized_keys&lt;/code&gt; 파일에 등록을 해줘야 합니다.&lt;/p&gt;

&lt;h3 id=&quot;linux-gui-앱-사용하기&quot;&gt;Linux GUI 앱 사용하기&lt;/h3&gt;

&lt;p&gt;WSL은 커맨드 라인만 제공하기 때문에 기본적으로 GUI 앱을 사용할 수 없습니다만 방법이 없지는 않죠. 윈도 쪽에 X11 서버를 설치하고, 원격 디스플레이를 쓰면 Windows 쪽에서 GUI 앱이 사용 가능합니다. 오픈소스 X11 서버인 VCXSrv를 사용해 보세요. &lt;a href=&quot;https://sourceforge.net/projects/vcxsrv/&quot; target=&quot;_blank&quot;&gt;다운로드는 여기&lt;/a&gt;에서 하고 설치합니다.&lt;/p&gt;

&lt;h4 id=&quot;x-server-시작하기&quot;&gt;X server 시작하기&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/vcxsrv-access-control.jpg&quot; alt=&quot;VCXSrv Xlaunch&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;p&gt;시작메뉴에서 XLaunch를 선택하면 몇 가지 설정을 물어봅니다. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Disable access control&lt;/code&gt; 이것은 디폴트로 꺼져있지만 켜줘야 합니다. 그리고 저장 버튼을 눌러 설정을 저장합니다. 바탕화면에 저장하면 더블클릭해서 매번 같은 설정으로 시작 할 수 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/vcxsrv-save.jpg&quot; alt=&quot;VCXSrv Save&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;p&gt;vcxsrv 서버를 최초 실행하게 되면 Windows Security Alert가 파이어월 설정을 물어봅니다. 디폴트로는 프라이빗만 활성화되어 있기 때문에 꼭 둘 다 켜 주세요.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/vcxsrv-security-alert.jpg&quot; alt=&quot;VCXSrv Save&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;p&gt;만약 이미 프라이빗만 허용해 버렸다면 Windows firewall 설정을 확인하시고 아래와 같은 항목을 찾아 네 개 모두 허용시킵니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/firewall.jpg&quot; alt=&quot;firewall&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/vcsxrv-icon.jpg&quot; alt=&quot;firewall&quot; width=&quot;30%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;p&gt;시작되면 시스템 트레이에 아이콘을 볼 수 있습니다.&lt;/p&gt;

&lt;h4 id=&quot;display-변수-설정&quot;&gt;DISPLAY 변수 설정&lt;/h4&gt;

&lt;p&gt;WSL 쪽에서 GUI 앱을 쓰기 위해 DISPLAY 변수를 설정합니다. 호스트 주소가 매번 바뀌기 때문에 아래 명령은 사용할 때 마다 실행하는 것이 좋습니다. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;~/setDisplay&lt;/code&gt; 등과 같이 저장하고 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;source ~/setDisplay&lt;/code&gt; 또는 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;. ~/setDisplay&lt;/code&gt; 와 같이 실행시킬 수 있습니다.&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;DISPLAY&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;awk&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;/nameserver / {print $2; exit}&apos;&lt;/span&gt; /etc/resolv.conf 2&amp;gt;/dev/null&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;:0
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;export &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;LIBGL_ALWAYS_INDIRECT&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;리눅스-앱-실행하기-예제&quot;&gt;리눅스 앱 실행하기 예제&lt;/h4&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ sudo apt install stacer
$ export DISPLAY=$(awk &apos;/nameserver / {print $2; exit}&apos; /etc/resolv.conf 2&amp;gt;/dev/null):0
$ export LIBGL_ALWAYS_INDIRECT=1
$ stacer
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;상기 커맨드는 Stacer를 설치하고 실행합니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/stacer.jpg&quot; alt=&quot;firewall&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;docker-desktop&quot;&gt;Docker Desktop&lt;/h2&gt;

&lt;p&gt;Docker 설치는 Windows에서도 간단합니다. &lt;a href=&quot;https://hub.docker.com/editions/community/docker-ce-desktop-windows/&quot; target=&quot;_blank&quot;&gt;이곳에서 다운로드&lt;/a&gt; 하시고 설치하세요.&lt;/p&gt;

&lt;p&gt;도커는 간단하게 미리 설정된 서비스를 설치 할 수 있기 때문에 많은 프로젝트들이 도커를 활용합니다. 하지만 윈도 쪽에서 도커를 사용할 때 판이한 파일시스템 때문에 약간의 문제가 있을 수 있습니다.&lt;/p&gt;

&lt;p&gt;이쪽에 &lt;a href=&quot;https://www.docker.com/blog/docker-desktop-wsl-2-best-practices/&quot; target=&quot;_blank&quot;&gt;도커사의 블로그 기사&lt;/a&gt;를 보시면 WSL을 사용할 때의 일반적인 주의점을 확인 할 수 있습니다.&lt;/p&gt;

&lt;p&gt;만약 업무에 활용하는 것이 아니더라도 도커를 사용하는 것은 매력적입니다.&lt;/p&gt;

&lt;p&gt;예를 들면 루비 개발자가 아니지만, 지킬 블로그를 사용하고 싶을 때에, 시스템에 복잡하게 루비 런타임을 설치하지 않고도 도커를 이용해 블로깅을 할 수 있게 됩니다.&lt;/p&gt;

&lt;p&gt;또한 restart 옵션을 통해 특정 서비스를 재부팅 후 일지라도 항상 동작시킬 수 있습니다. 로컬 음악 파일을 위한 플레이어를 사용할 수도 있답니다. &lt;a href=&quot;https://github.com/airsonic/airsonic&quot; target=&quot;_blank&quot;&gt;Airsonic&lt;/a&gt; (&lt;a href=&quot;https://hub.docker.com/r/airsonic/airsonic&quot; target=&quot;_blank&quot;&gt;Docker hub&lt;/a&gt;) 은 웹 플레이어와 모바일 앱을 제공합니다.&lt;/p&gt;

&lt;h3 id=&quot;컨테이너-메모리-제한하기&quot;&gt;컨테이너 메모리 제한하기&lt;/h3&gt;

&lt;p&gt;도커 컴포즈를 사용하고 계신가요? 로컬 시스템의 컨테이너들을 일회성이 아닌 파일을 통해 일정하게 관리 할 수 있습니다.&lt;/p&gt;

&lt;p&gt;여러 개의 컨테이너를 조합해서 사용할 수도 있고요. 긴 옵션들을 모두 파일에 넣어서 짧은 명령으로 시작/정지/삭제 등이 가능합니다.
컨테이너 이름이 좀 길어지긴 하지만 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;container_name&lt;/code&gt; 옵션을 쓰면 간결하게 유지할 수도 있죠. 만약 아직 사용하고 있지 않다면 사용해 보시길 추천 드립니다. 자세한 정보는 &lt;a href=&quot;https://docs.docker.com/compose/&quot; target=&quot;_blank&quot;&gt;이쪽에서&lt;/a&gt; 확인해 보세요.&lt;/p&gt;

&lt;p&gt;도커 컴포즈에서의 메모리 제한은 스웜을 사용하지 않는다면 버전 2 (현재 최신은 2.4) 에서만 가능합니다.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mem_limit: 512m&lt;/code&gt; 옵션으로 메모리 사용을 512M 이하로 제한 할 수 있습니다.&lt;/p&gt;

&lt;p&gt;** docker 명령을 사용할 때는 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--memory=512m&lt;/code&gt; 로 사용 가능합니다.&lt;/p&gt;

&lt;h2 id=&quot;vscode&quot;&gt;VSCode&lt;/h2&gt;

&lt;p&gt;아마도 가장 많은 개발자가 사용하는 에디터가 VSCode 일 듯합니다.
딱히 다른 에디터를 사용해야 할 이유가 없다면 나쁘지 않은 선택입니다.&lt;/p&gt;

&lt;p&gt;역시 WSL에서 사용할 때의 주의점은 &lt;a href=&quot;https://code.visualstudio.com/docs/remote/wsl&quot; target=&quot;_blank&quot;&gt;MS사의 블로그 기사&lt;/a&gt;
를 확인해 보세요&lt;/p&gt;

&lt;h3 id=&quot;project-소스파일은-어디에&quot;&gt;project 소스파일은 어디에?&lt;/h3&gt;

&lt;p&gt;윈도에 설치된 빌드 툴을 사용하는 게 아니라면, 프로젝트 파일은 WSL 쪽에 두세요. 도커 환경을 사용하여 소스가 변경될 때 마다 자동빌드를 하게 된다면 윈도쪽의 소스코드에서는 &lt;a href=&quot;https://github.com/microsoft/WSL/issues/216&quot; target=&quot;_blank&quot;&gt;자동 빌드가 동작하지 않기가 쉽습니다&lt;/a&gt;. 이런 종류의 에러는 보통 이유를 알기가 쉽지 않죠.&lt;/p&gt;

&lt;p&gt;원치 않은 오동작을 피하고 싶다면 WSL 쪽에 소스를 두시길 추천드립니다.&lt;/p&gt;

&lt;h2 id=&quot;defender-antivirus-예외-등록&quot;&gt;Defender Antivirus 예외 등록&lt;/h2&gt;

&lt;p&gt;윈도 빌드 툴을 사용하시고 윈도 쪽에 소스를 두실 경우는 이 설정을 확인하세요. 그렇지 않으면 빌드 성능이 크게 저하될 수 있습니다.
소스 코드는 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Projects&lt;/code&gt;와 같은 이름으로 한곳에 모아 두시고, 안티바이러스 예외등록을 해 두세요.
보통 많은 빌드 툴이 프로젝트 폴더에 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;node_modules&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.bundle&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vendor&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;build&lt;/code&gt; 와 같은 폴더 안에 많은 임시 파일을 생성합니다.&lt;/p&gt;

&lt;p&gt;소스 디렉토리를 예외등록하게 되면 빌드 성능의 저하를 막을 수 있습니다.&lt;/p&gt;

&lt;p&gt;만약 빌드 성능이 너무 느리다 싶을 때엔 타스크 매니저를 띄우고 혹시 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Antimalware Service Executable&lt;/code&gt; 프로세스가 CPU 자원을 높게 사용하고 있지 않은지 확인해 보세요 CPU 자원을 10%~20% 또는 그 이상 사용하고 있다면, 예외등록 추가를 고려해 보세요. 빌드 툴에 따라 %APPDATA% 등에 파일을 추가할 수도 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/exclusion.jpg&quot; alt=&quot;Antivirus Exclusion&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;선택사항&quot;&gt;선택사항&lt;/h2&gt;

&lt;h3 id=&quot;chocolatey-패키지-매니저&quot;&gt;Chocolatey, 패키지 매니저&lt;/h3&gt;

&lt;p&gt;여러 툴을 설치하는 것은 때로 번거럽고 아리송할 때가 있습니다. choco를 사용하면 쉽고 간단하게 프로그램 설치가 가능합니다. 맥에서 많이들 사용하시는 Homebrew (brew)와 비슷합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://chocolatey.org/&quot; target=&quot;_blank&quot;&gt;Chocolatey Official Site&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;윈도-쪽-nodejs-사용하기&quot;&gt;윈도 쪽 Node.js 사용하기&lt;/h3&gt;

&lt;p&gt;프론트엔드 개발자나 노드 개발자는 Node.js가 필수죠. 윈도 쪽에 node를 설치하셨다면 빌드툴은 가지고 있지 않을 가능성이 높습니다.
최근 Node.js 인스톨러는 빌드 툴 설치 옵션이 있습니다. 디폴트로는 꺼져 있지만 단지 재인스톨 만으로 고칠 수 있습니다. 이미 설치되었다면 변경을 선택해서 다시 설치 가능 합니다. 아래 옵션을 켜고 설치하시면 설치 종료 후 자동으로 Chocolatey와 함께 빌드툴을 설치해 줍니다. 만약 바이너리 패키지 설치 시 자주 실패 로그를 볼 수 있다면 빌드툴을 설치 해 보시길 권합니다.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/wsl2/install-choco.jpg&quot; alt=&quot;Node.js Choco&quot; width=&quot;70%&quot; style=&quot;margin: 0&quot; /&gt;&lt;/p&gt;

&lt;p&gt;또 윈도 쪽에서 node 프로젝트를 사용하시더라도 Git Bash를 사용해 보세요. 사용중인 프로젝트에 bash 스크립트가 사용되더라도 실패없이 사용 할 수 있습니다.&lt;/p&gt;

&lt;p&gt;Defender Antivirus 예외설정에 Yarn/Npm 캐시를 꼭 등록하세요. Yarn/npm 패키지 설치과정이 눈에 띄게 빨라질 것입니다.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-cmd&quot;&gt;%APPDATA%\npm-cache
%LOCALAPPDATA%\Yarn
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;다시-windows의-세계로&quot;&gt;다시 Windows의 세계로&lt;/h2&gt;

&lt;p&gt;WSL2 덕분에 윈도에서도 마침내 개발자 친화적이 환경이 완성 되었습니다. 도커 성능도 맥에 비해 떨어지지도 않고 홈 에디션에서도 완벽하게 동작합니다. 사실 멀티 디스플레이 지원은 윈도가 한 수 위인 듯합니다. 호불호가 갈리긴 하지만 클리어 타입으로 FullHD급의 디스플레이 에서도 좀 더 나은 글꼴 렌더링을 해 줍니다. 최근 에지 브라우저는 개발자들에게 친숙한 크롬 기반으로 변경되었죠.&lt;/p&gt;

&lt;p&gt;여전히 너무 잦은 재부팅은 별로 내키지 않지만 저는 다음 랩탑을 사게 되면 윈도를 선택할 것입니다 :)&lt;/p&gt;
</description>
        <pubDate>Thu, 10 Sep 2020 12:32:24 +0000</pubDate>
        <link>https://kenny.yeoyou.net/ko/it/2020/09/10/windows-development-environment.html</link>
        <guid isPermaLink="true">https://kenny.yeoyou.net/ko/it/2020/09/10/windows-development-environment.html</guid>
        
        <category>windows</category>
        
        <category>windows-10</category>
        
        <category>home-edition</category>
        
        <category>wsl</category>
        
        <category>wsl2</category>
        
        <category>git</category>
        
        <category>git-bash</category>
        
        <category>windows-terminal</category>
        
        <category>docker</category>
        
        <category>docker-desktop</category>
        
        <category>wsl-backend</category>
        
        <category>camingo-code</category>
        
        <category>tmux</category>
        
        <category>vscode</category>
        
        <category>vcxsrv</category>
        
        <category>windows-defender-exclusion</category>
        
        <category>antivirus-exclusion</category>
        
        <category>ssh-wsl</category>
        
        
        <category>IT</category>
        
      </item>
    
      <item>
        <title>무료 VPS,Oracle Cloud에 Algo VPN사용하기</title>
        <description>&lt;p&gt;가끔 해외 VPN서버를 사용하면 좋을 때가 있지만 꼭 그걸위해 매달 비용을 지불해가며 쓰고 싶진 않기도 하죠.&lt;/p&gt;

&lt;p&gt;하지만 가상서버가 해외에 이미 있다면 어떨까요? 요즘엔 공짜 서버도 좀 있는것 같군요.&lt;/p&gt;

&lt;p&gt;그래서 제가 한번 Oracle Cloud에 Algo VPN서버를 설치해 봤습니다.&lt;/p&gt;

&lt;p&gt;여러분에게 이 정보가 도움이 되길 바랍니다.&lt;/p&gt;

&lt;h3 id=&quot;면책&quot;&gt;면책&lt;/h3&gt;

&lt;p&gt;VPN사용에 관해선 각자의 책임하에 사용하시길 바랍니다.
저는 Oracle Cloud나 VPN사용에 대해 어떠한 책임도 지지 않습니다.&lt;/p&gt;

&lt;h3 id=&quot;인스턴스-생성&quot;&gt;인스턴스 생성&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;이곳 &lt;a href=&quot;https://www.oracle.com/au/cloud/free/&quot; target=&quot;_blank&quot;&gt;Oracle Cloud&lt;/a&gt; 에서 계정을 생성합니다.
    &lt;ul&gt;
      &lt;li&gt;홈 리전은 VPN 사용을 원하는 곳으로 설정 합니다.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;웹 콘솔에 접속하여 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Create a VM instance&lt;/code&gt; 버튼을 클릭합니다
  &lt;img src=&quot;/assets/images/2020/vpn/instance1.jpg&quot; alt=&quot;Insttance1&quot; /&gt;
    &lt;ul&gt;
      &lt;li&gt;ubuntu minimal을 고르고 public key를 업로드 합니다
        &lt;ul&gt;
          &lt;li&gt;ssh 키가 없다면 다음을 참고해 생성합니다 &lt;a href=&quot;https://docs.github.com/en/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent&quot; target=&quot;_blank&quot;&gt;how to create ssh key&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;create 를 클릭하면 다음과 같이 상세를 확인 할 수 있습니다.
  &lt;img src=&quot;/assets/images/2020/vpn/instance2.jpg&quot; alt=&quot;Insttance2&quot; width=&quot;80%&quot; /&gt;
    &lt;ul&gt;
      &lt;li&gt;public IP 를 메모해 둡니다&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;이제 생성이 완료되면 ssh를 통해 인스턴스로 접속 할 수 있습니다.&lt;/p&gt;

&lt;h3 id=&quot;algo-vpn-설치&quot;&gt;Algo VPN 설치&lt;/h3&gt;

&lt;p&gt;위에서 생성한 인스턴스에 접속하고 다음과 같이 VPN서버를 설치합니다&lt;/p&gt;

&lt;h4 id=&quot;apt-패키지-설치&quot;&gt;Apt 패키지 설치&lt;/h4&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt update &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt upgrade &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt;
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-y&lt;/span&gt; python3-virtualenv unzip vim
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;원하는 에디터도 잊지않고 추가합니다. vim이 익숙치 않으시면 대신 nano를 사용하세요&lt;/p&gt;

&lt;h4 id=&quot;algo-다운로드&quot;&gt;Algo 다운로드&lt;/h4&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;wget https://github.com/trailofbits/algo/archive/master.zip
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;unzip master.zip
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;virtualenv-설정&quot;&gt;virtualenv 설정&lt;/h4&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;algo-master
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; virtualenv &lt;span class=&quot;nt&quot;&gt;--python&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;$(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;command&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-v&lt;/span&gt; python3&lt;span class=&quot;si&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt; .env &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;source&lt;/span&gt; .env/bin/activate &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
  python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-U&lt;/span&gt; pip virtualenv &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
  python3 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; pip &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;사용자-추가&quot;&gt;사용자 추가&lt;/h4&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;config.cfg&lt;/code&gt; 를 편집하여 사용자를 추가합니다.&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;vi config.cfg
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;사용자를 공유하는 것에는 가끔 문제가 있다고 하므로 다음과 같이 넉넉히 추가하는것을 추천합니다.&lt;/p&gt;

&lt;div class=&quot;language-yml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;na&quot;&gt;users&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;phone&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;phone2&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;tablet&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;tablet2&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;laptop&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;laptop2&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;desktop&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;desktop2&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;server&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;server2&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;guest&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;guest2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;배포스크립트-실행&quot;&gt;배포스크립트 실행&lt;/h4&gt;

&lt;p&gt;다음은 대화형 스크립트 입니다.
몇가지 선택사항에 대해 응답하고 나면 스크립트가 설치를 완료합니다.&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;./algo
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;Cloud prompt]
What provider would you like to use?
&lt;span class=&quot;nt&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; 11. Install to existing Ubuntu 18.04 or 20.04 server &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;for &lt;/span&gt;more advanced &lt;span class=&quot;nb&quot;&gt;users&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;첫 질문이 가장 중요합니다.
현재 접속한 서버에 설치할 것 이므로 11번을 선택합니다.&lt;/p&gt;

&lt;p&gt;나머지 대부분은 기본 설정으로 엔터만 눌러 진행하면 되지만 다음 두 질문들에는 답변을 따로 해 줍니다.&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;Retain the PKI prompt]
Do you want to retain the keys &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;PKI&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;? &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;required to add &lt;span class=&quot;nb&quot;&gt;users &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;in &lt;/span&gt;the future, but less secure&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;y/N]
&lt;span class=&quot;nt&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; Y
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;local&lt;/span&gt; : pause]
Enter the public IP address or domain name of your server: &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;IMPORTANT! This is used to verify the certificate&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;localhost]
&lt;span class=&quot;nt&quot;&gt;---&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;Put the public IP adress of your instance]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;그러면 다음과 같이 출력이되고 설치가 완료 됩니다.&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;#                       Congratulations!                         #&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;
&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;#                  Your Algo server is running.                  #&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;
&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;# Config files and certificates are in the ./configs/ directory. #&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;
&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;#           Go to https://whoer.net/ after connecting            #&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;
&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;#     and ensure that all your traffic passes through the VPN.   #&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;
&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;#                  Local DNS resolver 172.29.**.**               #&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;
&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;#     The p12 and SSH keys password for new users is *********   #&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;
&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;#     The CA key password is ****************                    #&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;뭔가 잘못되면 처음부터 다시 설치하는 것이 권장됩니다. 현재 인스턴스를 폐기하고 새로운 인스턴스를 재생성 합니다.&lt;/p&gt;

&lt;h4 id=&quot;접속정보-복사&quot;&gt;접속정보 복사&lt;/h4&gt;

&lt;p&gt;이제 VPN 서버의 ssh접속은 종료해도 됩니다.&lt;/p&gt;

&lt;p&gt;지금 사용하는 로컬 환경에서 scp명령으로 접속정보를 복사합니다.
아래의 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;vpnserver&lt;/code&gt;은 VPN서버의 공인 IP로 대체합니다.&lt;/p&gt;

&lt;div class=&quot;language-sh highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;scp &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; ubuntu@vpnserver:algo-master/configs &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;이제 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;configs&lt;/code&gt; 디렉토리에 있는 접속정보를 사용 할 수 있습니다.&lt;/p&gt;

&lt;h3 id=&quot;vpn-서버-포트-열기&quot;&gt;VPN 서버 포트 열기&lt;/h3&gt;

&lt;p&gt;VPN 서버 자체는 준비가 되었지만 아직 한가지 스텝이 남아 있습니다.&lt;/p&gt;

&lt;p&gt;VPN접속에 필요한 &lt;a href=&quot;https://github.com/trailofbits/algo/blob/master/docs/firewalls.md&quot; target=&quot;_blank&quot;&gt;포트들&lt;/a&gt;은 보통 닫혀있으므로 수동으로 열어줘야 합니다.&lt;/p&gt;

&lt;h4 id=&quot;vpn-접속에-사용할-security-list-생성&quot;&gt;VPN 접속에 사용할 Security List 생성&lt;/h4&gt;

&lt;p&gt;Oracle Cloud 웹 콘솔에 접속합니다.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Networking &amp;gt; Virtual Cloud Networks 로 갑니다&lt;/li&gt;
  &lt;li&gt;오른쪽의 VCN name을 클릭합니다&lt;/li&gt;
  &lt;li&gt;왼쪽의 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Security Lists&lt;/code&gt;를 클릭합니다&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Create Security List&lt;/code&gt;를 클립합니다&lt;/li&gt;
  &lt;li&gt;팝업창에 다음과 같이 입력합니다
    &lt;ul&gt;
      &lt;li&gt;Name: VPN&lt;/li&gt;
      &lt;li&gt;Additional Ingress Rule: Ingress Rule 1
        &lt;ul&gt;
          &lt;li&gt;Source CIDR: 0.0.0.0/0&lt;/li&gt;
          &lt;li&gt;Destination Port Range: 4160&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;Additional Ingress Rule: Ingress Rule 2
        &lt;ul&gt;
          &lt;li&gt;Source CIDR: 0.0.0.0/0&lt;/li&gt;
          &lt;li&gt;IP Protocol: UDP&lt;/li&gt;
          &lt;li&gt;Destination Port Range: 51820,500,4500&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Create Security List&lt;/code&gt;을 클릭하여 확정합니다&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2020/vpn/vpn.ports.jpg&quot; alt=&quot;vpn ports&quot; /&gt;&lt;/p&gt;

&lt;h4 id=&quot;security-list를-public-subnet에-연결하기&quot;&gt;Security List를 Public Subnet에 연결하기&lt;/h4&gt;

&lt;ol&gt;
  &lt;li&gt;Instace Details (Compute &amp;gt; Instaces &amp;gt; Instance Details)로 갑니다&lt;/li&gt;
  &lt;li&gt;Primary VNIC의 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Subnet&lt;/code&gt;을 클릭합니다&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Add Security List&lt;/code&gt;을 클릭합니다&lt;/li&gt;
  &lt;li&gt;팝업창에서 security list 풀다운에 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;VPN&lt;/code&gt;을 선택합니다&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Add Security List&lt;/code&gt;를 클릭하여 확정합니다&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;client-설정하기&quot;&gt;Client 설정하기&lt;/h3&gt;

&lt;p&gt;일단 iPad를 기준으로 설정방법에 대해 설명하겠습니다&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Appstore에서 WireGuard 를 설치합니다 (iOS12 또는 상위버전이 필요합니다)&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;configs/localhost/wireguard/tablet.png&lt;/code&gt;와 같이 사용자에 맞는 PNG QR 코드를 엽니다
  &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;configs&lt;/code&gt; 디렉토리는 이전단계에서 복사해 둔 것입니다&lt;/li&gt;
  &lt;li&gt;WireGuard 를 실행해 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;+&lt;/code&gt; 버튼을 터치하고 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Create from QR code&lt;/code&gt;를 선택합니다&lt;/li&gt;
  &lt;li&gt;QR code를 찍어서 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tablet&lt;/code&gt;과 같이 이름을 붙입니다.&lt;/li&gt;
  &lt;li&gt;생성된 해당 연결을 켭니다&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;이것으로 VPN에 연결되었습니다&lt;/p&gt;

&lt;p&gt;브라우저를 열어 &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;my ip&lt;/code&gt;를 검색하면 VPN server의 주소가 표시될 것입니다&lt;/p&gt;

&lt;p&gt;WireGuard 앱은 Mac and Windows10 에서도 사용 가능하므로 비슷한 방법으로 설정 가능 합니다.&lt;/p&gt;

&lt;h3 id=&quot;문제해결&quot;&gt;문제해결&lt;/h3&gt;

&lt;p&gt;서버에 연결할 수 없어도 WireGuard 앱은 조용히 실패하고 인터넷이 불통이 됩니다
인터넷 연결에 문제가 있으면 VPN 커넥션을 종료하고 서버 문제를 해결한 다음에 다시 시도 하세요&lt;/p&gt;

&lt;h3 id=&quot;더-읽어보기&quot;&gt;더 읽어보기&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/trailofbits/algo#deploy-the-algo-server&quot; target=&quot;_blank&quot;&gt;Algo VPN&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Sat, 01 Aug 2020 10:41:01 +0000</pubDate>
        <link>https://kenny.yeoyou.net/ko/it/2020/08/01/set-up-algo-vpn-in-oracle-cloud.html</link>
        <guid isPermaLink="true">https://kenny.yeoyou.net/ko/it/2020/08/01/set-up-algo-vpn-in-oracle-cloud.html</guid>
        
        <category>algovpn</category>
        
        <category>algo</category>
        
        <category>wireguard</category>
        
        <category>android</category>
        
        <category>ipad</category>
        
        <category>iphone</category>
        
        <category>아이폰</category>
        
        <category>아이패드</category>
        
        <category>android</category>
        
        <category>vpn</category>
        
        <category>oracle</category>
        
        <category>오라클</category>
        
        <category>oracle-cloud</category>
        
        
        <category>IT</category>
        
      </item>
    
  </channel>
</rss>
