<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>docker Archives - JIN&#039;s BOT</title>
	<atom:link href="https://jinsbot.com/tag/docker/feed/" rel="self" type="application/rss+xml" />
	<link>https://jinsbot.com/tag/docker/</link>
	<description>Coding + Engineering</description>
	<lastBuildDate>Sun, 22 Sep 2024 11:20:00 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>
<site xmlns="com-wordpress:feed-additions:1">158124120</site>	<item>
		<title>VPN , Docker 에서의 사용팁</title>
		<link>https://jinsbot.com/docker-vpn/</link>
					<comments>https://jinsbot.com/docker-vpn/#respond</comments>
		
		<dc:creator><![CDATA[geniuskpj]]></dc:creator>
		<pubDate>Thu, 19 Jan 2023 08:21:43 +0000</pubDate>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[transmission]]></category>
		<category><![CDATA[vpn]]></category>
		<category><![CDATA[게임]]></category>
		<category><![CDATA[도커]]></category>
		<category><![CDATA[무료]]></category>
		<category><![CDATA[토렌트]]></category>
		<category><![CDATA[프로톤]]></category>
		<guid isPermaLink="false">https://jinsbot.com/?p=844</guid>

					<description><![CDATA[<p>VPN 사용 목적 VPN 이 보편화 되면서 사용자가 점점 늘고 있다. Nord VPN , Express VPN 은 할인이벤트도 자주 하기때문에 유료 사용자도 꽤 많아졌다. VPN의 사용목적은 크게 다음과 같다. 네트워크에서의 노출 최소화 게임에서의 ping 최적화 인트라넷 구축 의외로 많은 사설 서버, NAS 운영자들이 도메인에 서버 아이피를 노출하고 있다. 이 경우 해커들의 공격 대상이 될 수 [&#8230;]</p>
<p>The post <a href="https://jinsbot.com/docker-vpn/">VPN , Docker 에서의 사용팁</a> appeared first on <a href="https://jinsbot.com">JIN&#039;s BOT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">VPN 사용 목적</h2>
<p>VPN 이 보편화 되면서 사용자가 점점 늘고 있다.</p>
<p>Nord VPN , Express VPN 은 <strong>할인</strong>이벤트도 자주 하기때문에</p>
<p>유료 사용자도 꽤 많아졌다.</p>
<p>VPN의 사용목적은 크게 다음과 같다.</p>
<ul>
<li>네트워크에서의 노출 최소화</li>
<li>게임에서의 ping 최적화</li>
<li>인트라넷 구축</li>
</ul>
<p>의외로 많은 사설 서버, NAS 운영자들이 도메인에</p>
<p>서버 아이피를 <strong>노출</strong>하고 있다.</p>
<p>이 경우 해커들의 공격 대상이 될 수 있으며</p>
<p>해킹당하지 않더라도 트래픽때문에 문제가 발생한다.</p>
<p>따라서 서버 운영자에게 VPN은 가장 기본적인 보안 장치이다.</p>
<p>유료 VPN의 경우 해외망까지 이어지는 경로가 단순화되면서</p>
<p>게임에서의 <strong>핑도 줄어드는 효과</strong>를 가진다.</p>
<p>마지막으로 <strong>인트라넷 구축</strong>은 잘 알려지지 않았지만</p>
<p>강력한 기능 중 하나이다.</p>
<p>별도망으로 구성된 PC들을 같은 망에 있는것처럼 사용할 수 있다.</p>
<p>외부망의 접근을 차단해 보안을 챙길 수 도 있고</p>
<p><strong>고정 아이피</strong>를 부여할 수 있어 파일공유, 원격 접속 등이 훨씬 간단해진다.</p>
<h2 class="wp-block-heading">어떤 VPN 을 택해야 할까?</h2>
<p>안타깝게도 대부분의 리뷰들은 별도의 <strong>페이백</strong>을 받고</p>
<p>작성되었기때문에 참고할 바가 못된다.</p>
<p>많은 VPN 서비스들이 <strong>체험 서비스</strong>를 제공하기떄문에</p>
<p>직접 써보고 결정하길 바란다.</p>
<p>무료 VPN 들은 사용자의 개인정보를 팔거나</p>
<p>광고 페이지를 끼워넣기도 하기때문에 주의가 필요하다.</p>
<p>현재 무료 서비스 중에는<strong>P모 VPN</strong>이 괜찮은데</p>
<p>언제든 상황이 변할 수 있기때문에 따로 적진 않겠다.</p>
<h3 class="wp-block-heading">OpenVPN</h3>
<p><a href="https://openvpn.net/download-open-vpn/" target="_blank" rel="noreferrer noopener">OpenVPN</a><br />
은 별도 서버를 제공하진 않는다.</p>
<p>하지만 대신<strong>터널링(커넥터) </strong><br />
등 유용한 기능을 무료로 제공한다.</p>
<p>뿐만 아니라 광고 페이지 필터링이나 특정 ip, 도메인만 VPN을 경유하는</p>
<p>private tunneling 등 유용한 기능을 제공한다.</p>
<p>무료 OpenVPN Cloud의 경우 3명이 동시 사용할 수 있고</p>
<p>Access Server는 2명이 동시 사용할 수 있다.</p>
<p>이 서비스들은 구글 , 아마존 , 오라클 <strong>클라우드</strong>등과 연계되기때문에</p>
<p>나만의 VPN 서버를 간단하게 만들 수 있다.</p>
<p>특히 <strong>오라클</strong>은 꽤나 강력한 서버를 프리티어로 제공하기때문에</p>
<p>개발자라면 꼭 한번 시도해보길 바란다.</p>
<h3 class="wp-block-heading">역사가 오래된 VPNgate</h3>
<p><a href="https://namu.wiki/w/SoftEther%20VPN" target="_blank" rel="noreferrer noopener">VPNGATE</a>는 무료VPN 중 가장 유명한 서비스다.</p>
<p>softether 라는 프로그램으로 직영 서버와</p>
<p>유저로부터 공유받은 회선을 사용할 수 있다.</p>
<p>서버 상태를 보고 고를 수 있기때문에 속도도</p>
<p>빠르지만 <strong>로그</strong>가 12개월동안 남는다.</p>
<h2 class="wp-block-heading">Transmission , VPN 함께 사용하기</h2>
<p>도커에서 사용할 경우 해당 도커의 네트워크만 VPN을</p>
<p>경유하기 때문에 private tunneling과 같은 효과를 지닌다.</p>
<p><a href="https://hub.docker.com/r/haugene/transmission-openvpn" target="_blank" rel="noreferrer noopener">haugene</a>이라는 유저의 이미지가 가장 유명하다.</p>
<p>docker-compose.yml 은 다음과같다.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="dracula" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">version: '3.3'
services:
    transmission-openvpn:
        cap_add:
            - ALL  
        volumes:
            - 다운경로/complete_vpn:/data/completed:rw
            - 다운경로/incomplete_vpn:/data/incomplete:rw
            - Watch경로:/data/watch:rw
            - ./config/:/config:rw
            - ./openvpn:/etc/openvpn/custom:rw
        environment:
            - OPENVPN_PROVIDER=CUSTOM
            - OPENVPN_CONFIG=VPN명.udp
            - OPENVPN_USERNAME=아이디
            - OPENVPN_PASSWORD=비번
            - LOCAL_NETWORK=192.168.xxx.0/24,37.xxx.xxx.0/24           
            - TZ=Asia/Seoul

        logging:
            driver: json-file
            options:
                max-size: 10m
        ports:
            - 포트:9091
        image: haugene/transmission-openvpn</pre>
<p>기본 지원하는 provider는 IPVanish , NordVPN , PIA , VyprVPN 뿐이지만</p>
<p>상당히 많은 업체를 커스텀으로 지원하니 <a href="https://haugene.github.io/docker-transmission-openvpn/supported-providers/" target="_blank" rel="noreferrer noopener">리스트</a>를 참고하라.</p>
<p>custom으로 설정시 특정 폴더에 ovpn 파일을 다운받아</p>
<p>/etc/openvpn/custom 폴더에 연결해주어야한다.</p>
<p>로컬 네트워크를 지정하면 지정한 내부망에서만 접속가능하다.</p>
<p>이 경우 외부에서는 접속 불가능한데 VPN 사용시의 IP대역도</p>
<p>같이 적어주면 외부에서도 접속 가능하다.</p>
<p>기본 이미지는 TCP/UDP 프로토콜만 지원하지만</p>
<p><strong>Wireguard</strong>를 사용할 수 도 있으니 <a href="https://github.com/haugene/docker-transmission-openvpn/discussions/1919#discussioncomment-1484779" target="_blank" rel="noreferrer noopener">링크</a>를 참고하라.</p>
<p>정식지원하는건 아니니 문제가 있을 수도 있다.</p>
<p>추가적으로 ip time 상위 제품은 VPN 접속 기능을 자체 지원하지만</p>
<p>클라이언트로 접속한 것과 비교해 속도가 절반으로 떨어진다.</p>
<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />
<p>관련글</p>
<ul>
<li><a href="https://jinsbot.com/nas-setup-comparison/">NAS 구축 관련 자료 정리</a></li>
<li><a href="https://jinsbot.com/freenas-review/">FreeNAS 사용후기</a></li>
<li><a href="https://jinsbot.com/pi-docker-wordpress/">wordpress , PI 를 위한 Docker 환경 구축</a></li>
<li><a href="https://jinsbot.com/%ed%86%a0%eb%a0%8c%ed%8a%b8-%eb%a8%b8%ec%8b%a0-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/">토렌트 머신 만들기 for NAS</a></li>
<li><a href="https://jinsbot.com/ftp-%ec%84%9c%eb%b2%84-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/" target="_blank" rel="noreferrer noopener">FTP 서버 만들기 for NAS</a></li>
<li><a href="https://jinsbot.com/jellyfin-for-nas/" target="_blank" rel="noreferrer noopener">Jellyfin for NAS</a></li>
</ul>
<p>The post <a href="https://jinsbot.com/docker-vpn/">VPN , Docker 에서의 사용팁</a> appeared first on <a href="https://jinsbot.com">JIN&#039;s BOT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jinsbot.com/docker-vpn/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">844</post-id>	</item>
		<item>
		<title>Jellyfin for NAS</title>
		<link>https://jinsbot.com/jellyfin-for-nas/</link>
					<comments>https://jinsbot.com/jellyfin-for-nas/#respond</comments>
		
		<dc:creator><![CDATA[geniuskpj]]></dc:creator>
		<pubDate>Sun, 08 Jan 2023 08:16:55 +0000</pubDate>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[jellyfin]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[plex]]></category>
		<category><![CDATA[공유]]></category>
		<category><![CDATA[트랜스코딩]]></category>
		<guid isPermaLink="false">https://jinsbot.com/?p=840</guid>

					<description><![CDATA[<p>Jellyfin 을 이용해 나만의 Plex 서버 만드는 방법을 알아보자 이전 글에 나온 것처럼 FTP 서버를 Docker로 구축했다. 어차피 Kodi 를 사용하는 사람에게는 이걸로 충분하지만 아닌 사람에게는 영상을 공유하기 까다롭다. 게다가 Docker 특성상 같은 폴더를 별도 계정으로 공유하기는 더 어려웠다. Seafile Docker도 구축해놓았지만 애플을 사용중인 친구는 사파리에서 영상을 볼 수 없었다. 이런 경우에 필요한게 미디어 서버로 [&#8230;]</p>
<p>The post <a href="https://jinsbot.com/jellyfin-for-nas/">Jellyfin for NAS</a> appeared first on <a href="https://jinsbot.com">JIN&#039;s BOT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Jellyfin 을 이용해 나만의 Plex 서버 만드는 방법을 알아보자</p>
<p><a href="https://jinsbot.com/ftp-%ec%84%9c%eb%b2%84-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/" target="_blank" rel="noreferrer noopener">이전 글</a>에 나온 것처럼 FTP 서버를 Docker로 구축했다.</p>
<p>어차피 Kodi 를 사용하는 사람에게는 이걸로 충분하지만</p>
<p>아닌 사람에게는 영상을 공유하기 까다롭다.</p>
<p>게다가 Docker 특성상 같은 폴더를 별도 계정으로</p>
<p>공유하기는 더 어려웠다.</p>
<p>Seafile Docker도 구축해놓았지만 애플을 사용중인 친구는</p>
<p>사파리에서 영상을 볼 수 없었다.</p>
<p>이런 경우에 필요한게 미디어 서버로 영상을 공유하는</p>
<p>동시에 트랜스코딩, 라이브러리화를 해준다.</p>
<p>이 분야에서 가장 유명한것은 PLEX 로 가장 쉽고 간편하게</p>
<p>사용할 수 있지만 일부 기능과 앱이 유료이다.</p>
<p>그래서 최근 각광 받고 있는것이 <a href="https://jellyfin.org/" target="_blank" rel="noreferrer noopener">Jellyfin</a>이다.</p>
<p>Jellyfin 은 또다른 라이브러리인 <a href="https://emby.media/" target="_blank" rel="noreferrer noopener">Emby</a>에서</p>
<p>포크 된 것으로 대부분의 기능이 무료이다.</p>
<p>무료인만큼 유료 코덱 지원 등 일부 기능이</p>
<p>미흡하지만 일반 사용자가 사용하기에는 충분하다.</p>
<p>자세한 비교는 <a href="https://github.com/Protektor-Desura/Archon/wiki/Compare-Media-Servers" target="_blank" rel="noreferrer noopener">링크</a>를 참조하길 바란다.</p>
<h2>Jellyfin 도커 설정</h2>
<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="dracula" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">version: "2.1"
services:
  jellyfin:
    image: lscr.io/linuxserver/jellyfin:latest
    container_name: jellyfin
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
      - JELLYFIN_PublishedServerUrl=192.168.123.14 #optional
    volumes:
      - ./config:/config
      - /path/to/tvseries:/data/tvshows
      - /path/to/movies:/data/movies
    ports:
      - 공유포트:8096
      - 7359:7359/udp #optional
      - 1900:1900/udp #optional
    devices:
       - /dev/dri:/dev/dri # For H/W transcoding
    restart: unless-stopped
</pre>
<p>자세한 설명은 해당 Docker 의 <a href="https://github.com/linuxserver/docker-jellyfin" target="_blank" rel="noreferrer noopener">github</a>을 참조하길 바란다.</p>
<p>TV, MOVIE에 대한 경로는 개인적으로 보관중인 폴더를</p>
<p>지정하면 된다.</p>
<p>‘공유포트 ’가 외부에 노출될 포트로 외부에 공유하기 위해</p>
<p>포워딩 해주어야한다.</p>
<p>7359는 jellyfin 클라이언트가 서버 검색을 위해 사용하고</p>
<p>1900는 DLNA 클라이언트가 검색을 위해 사용한다.</p>
<p>해당 기능을 사용하지 않는 사람은 빼도 상관 없다.</p>
<p>Devices 항목은 HW 트랜스코딩을 위해 그래픽카드를</p>
<p>지정하는 것으로 Nvida, Intel, RaspberryPI 에 따라 설정값이 다르다.</p>
<p>Intel의 경우에는 위 코드를 그대로 사용하면 된다.</p>
<p>하드웨어 가속에 대한 자세한 설명은 이 <a href="https://jellyfin.org/docs/general/administration/hardware-acceleration/" target="_blank" rel="noreferrer noopener">링크</a>에 적혀 있다.</p>
<p>자신의 하드웨어에 따라 지원하는 코덱들과 설정 방법이 다르다.</p>
<figure class="wp-block-image size-large is-resized"><a href="https://jinsbot.com/wp-content/uploads/2024/09/jellyfin-codec.webp" target="_blank" rel="noopener"><img fetchpriority="high" decoding="async" class="aligncenter wp-image-842" src="https://jinsbot.com/wp-content/uploads/2024/09/jellyfin-codec.webp" alt="" width="768" height="590" srcset="https://jinsbot.com/wp-content/uploads/2024/09/jellyfin-codec.webp 1151w, https://jinsbot.com/wp-content/uploads/2024/09/jellyfin-codec-300x230.webp 300w, https://jinsbot.com/wp-content/uploads/2024/09/jellyfin-codec-1024x786.webp 1024w, https://jinsbot.com/wp-content/uploads/2024/09/jellyfin-codec-150x115.webp 150w, https://jinsbot.com/wp-content/uploads/2024/09/jellyfin-codec-768x590.webp 768w" sizes="(max-width: 768px) 100vw, 768px" /></a><br />
<noscript><br />
<img decoding="async" data-lazy-fallback="1" loading="lazy" src="https://web.archive.org/web/20231201070412im_/https://jinsbot.com/wp-content/uploads/2023/01/jellyfin-codec-1024x786.jpg" alt="jellyfin codec" class="wp-image-974" width="768" height="590" srcset="https://web.archive.org/web/20231201070412im_/https://jinsbot.com/wp-content/uploads/2023/01/jellyfin-codec-1024x786.jpg 1024w, https://web.archive.org/web/20231201070412im_/https://jinsbot.com/wp-content/uploads/2023/01/jellyfin-codec-300x230.jpg 300w, https://web.archive.org/web/20231201070412im_/https://jinsbot.com/wp-content/uploads/2023/01/jellyfin-codec-150x115.jpg 150w, https://web.archive.org/web/20231201070412im_/https://jinsbot.com/wp-content/uploads/2023/01/jellyfin-codec-768x590.jpg 768w, https://web.archive.org/web/20231201070412im_/https://jinsbot.com/wp-content/uploads/2023/01/jellyfin-codec.jpg 1151w" sizes="(max-width: 768px) 100vw, 768px"/><br />
</noscript></figure>
<p>대시보드의 재생탭에서 하드웨어 디코딩/ 인코딩에 대한</p>
<p>설정까지 마쳐야지 제대로 동작한다.</p>
<p>사용자 탭에서 손쉽게 계정을 추가할 수 있고</p>
<p>해당 사용자가 볼 수 있는 라이브러리도 임의로 설정할 수 있다.</p>
<p>로그 탭에서는 jellyfin에서 발생하는 로그들을 다운 받을 수 있으므</p>
<p>문제가 생겼을 때 손쉽게 확인할 수 있다.</p>
<p>이 정도만 알면 구동에 문제는 없을것이다.</p>
<p>혹시 라이브러리에서 스캔이 제대로 되지 않는다면</p>
<p>디렉토리의 소유자와 권한을 확인하길 바란다.</p>
<p>ls -l을 통해 소유자와 권한이 적당한지 확인 하고</p>
<p>chown, chmod로 권한을 부여하면 된다.</p>
<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />
<p>관련글</p>
<ul>
<li><a href="https://jinsbot.com/nas-setup-comparison/">NAS 구축 관련 자료 정리</a></li>
<li><a href="https://jinsbot.com/freenas-review/">FreeNAS 사용후기</a></li>
<li><a href="https://jinsbot.com/pi-docker-wordpress/">wordpress , PI 를 위한 Docker 환경 구축</a></li>
<li><a href="https://jinsbot.com/%ed%86%a0%eb%a0%8c%ed%8a%b8-%eb%a8%b8%ec%8b%a0-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/">토렌트 머신 만들기 for NAS</a></li>
<li><a href="https://jinsbot.com/ftp-%ec%84%9c%eb%b2%84-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/" target="_blank" rel="noreferrer noopener">FTP 서버 만들기 for NAS</a></li>
</ul>
<p>The post <a href="https://jinsbot.com/jellyfin-for-nas/">Jellyfin for NAS</a> appeared first on <a href="https://jinsbot.com">JIN&#039;s BOT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jinsbot.com/jellyfin-for-nas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">840</post-id>	</item>
		<item>
		<title>FTP 서버 만들기 for NAS</title>
		<link>https://jinsbot.com/ftp-%ec%84%9c%eb%b2%84-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/</link>
					<comments>https://jinsbot.com/ftp-%ec%84%9c%eb%b2%84-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/#respond</comments>
		
		<dc:creator><![CDATA[geniuskpj]]></dc:creator>
		<pubDate>Fri, 23 Dec 2022 08:08:21 +0000</pubDate>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[vsftp]]></category>
		<category><![CDATA[vsftpd]]></category>
		<category><![CDATA[공유]]></category>
		<guid isPermaLink="false">https://jinsbot.com/?p=836</guid>

					<description><![CDATA[<p>FTP 는 파일공유를 위한 가장 기본적인 프로토콜 중 하나이다. 윈도우 든 리눅스 든 기본적으로 제공하기때문에 쉽게 사용할 수 있다. 기본으로 제공되는 FTP 서비스 외에도 파일질라, vsftp 등 은 더 다양한 기능을 제공한다. 다만 생각보다 환경 구축 과정이 초보에게는 어렵거나 귀찮을 수 있다. 그런 사람들을 위해 docker로 FTP 서버 만드는 방법을 소개하겠다. 우선 사용할 이미지를 골라야한다. [&#8230;]</p>
<p>The post <a href="https://jinsbot.com/ftp-%ec%84%9c%eb%b2%84-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/">FTP 서버 만들기 for NAS</a> appeared first on <a href="https://jinsbot.com">JIN&#039;s BOT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>FTP 는 파일공유를 위한 가장 기본적인</p>
<p>프로토콜 중 하나이다.</p>
<p>윈도우 든 리눅스 든 기본적으로 제공하기때문에</p>
<p>쉽게 사용할 수 있다.</p>
<p>기본으로 제공되는 FTP 서비스 외에도</p>
<p>파일질라, vsftp 등 은 더 다양한 기능을 제공한다.</p>
<p>다만 생각보다 환경 구축 과정이 초보에게는</p>
<p>어렵거나 귀찮을 수 있다.</p>
<p>그런 사람들을 위해 docker로 FTP 서버</p>
<p>만드는 방법을 소개하겠다.</p>
<p>우선 사용할 이미지를 골라야한다.</p>
<p><a href="https://hub.docker.com/r/fauria/vsftpd" target="_blank" rel="noreferrer noopener">fauria/vsftpd</a>라는 이미지를</p>
<p>많은 사람들이 사용하고 있다.</p>
<p>vsftpd는 Very Secure FTP Daemon의</p>
<p>약자에 나와있듯이 보안이 강화되었다.</p>
<p><a href="https://hub.docker.com/r/stilliard/pure-ftpd" target="_blank" rel="noreferrer noopener">pure-ftpd</a>도 많은 유저들이 사용중이니</p>
<p>살펴보고 골라서 사용하면 된다.</p>
<p>사실 둘다 워낙 유명한 데몬이다보니</p>
<p>어떤 이미지를 골라도 크게 차이 나지 않는다.</p>
<p>이를 기반으로 docker-compose.yml을</p>
<p>작성해보면 다음과 같다.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="yaml" data-enlighter-theme="dracula" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">version: '3'
services:
    vsftpd:
        image: fauria/vsftpd
        container_name: vsftpd
        environment:
            - FTP_USER=아이디
            - FTP_PASS=비밀번호
            - PASV_MIN_PORT=21100
            - PASV_MAX_PORT=21110
            - PASV_ADDRESS=접속주소
            - PASV_ADDR_RESOLVE=YES
        ports:
            - 0.0.0.0:ftp포트:20
            - 0.0.0.0:ftp포트2:21
            - 0.0.0.0:21100-21110:21100-21110
        volumes:
            - 공유경로:/home/vsftpd/아이디:rw
            - ./log/vsftpd:/var/log/vsftpd</pre>
<p>한글로 적은 것은 직접 입력해야한다.</p>
<p>Active모드에서 21포트로 연결되면 서버측에서</p>
<p>클라이언트로 20포트로 데이터를 전송한다.</p>
<p>보안측면에서는 더 안전할 수 있지만</p>
<p>클라이언트 방화벽에 의해 차단될 가능성이 있다.</p>
<p>Passive모드에서는 데이터를 받을 때도</p>
<p>클라이언트가 서버에 접속하기때문에</p>
<p>방화벽 문제가 생기지 않는다.</p>
<p>PASV_ADDRESS는 서버의 IP를 적어도 되고</p>
<p>본인이 사용중인 도메인을 적어도 된다.</p>
<p>ftp포트는 많은 해커들이 노리고 있기때문에</p>
<p>꼭 20,21 이외의 포트번호를 지정하길 바란다.</p>
<p>내부 20포트에 해당하는 포트는 서버에서 클라이언트로</p>
<p>접속하는 것이기때문에 포트포워딩 하지 않아도 된다.</p>
<p>volume에 절대경로를 사용해도 되고</p>
<p>상대경로를 사용해도 상관없다.</p>
<p>예를들어 외장하드에 Transmission으로 받은 파일을</p>
<p>공유하기 위해 /mnt/xxx 로 지정했다.</p>
<h2>FTP 주의사항</h2>
<p>이전글에도 적었듯이 Transmission Docker와</p>
<p>FTP docker는 동시에 사용할 수 없다.</p>
<p>오늘 소개한 이미지의 단점은</p>
<p><strong>멀티유저</strong>사용이 까다롭다.</p>
<p>다음과 같은 방법으로 멀티유저 사용이 가능하다.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="dracula" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">docker exec -i -t vsftpd bash
mkdir /home/vsftpd/아이디
echo -e "아이디\n비밀번호" &gt;&gt;/etc/vsftpd/virtual_users.txt
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
exit
docker restart vsftpd</pre>
<p>vsftpd의 bash에 들어가서 수동으로 virtual user를</p>
<p>추가하는 방법이다.</p>
<p>다만 위의코드대로 수행하면 원본 아이디와</p>
<p>별도의 폴더를 공유하게 된다.</p>
<p>같은 폴더를 공유하게 하려면 다음과 같은 경로를</p>
<p>docker-compose.yml의 volume에 추가하면 된다.</p>
<p>공유경로:/home/vsftpd/추가아이디:rw</p>
<p>잘 추가되었는지 보려면 다시 bash에 들어가</p>
<p>db_dump -d a /etc/vsftpd/virtual_users.db | grep len</p>
<p>라는 명령어를 쳐보면 된다.</p>
<p>추가한 사용자를 삭제하기 위해서는 virtual_users.txt에서</p>
<p>추가아이디와 비밀번호를 삭제한후 db_load 해주면 된다.</p>
<p>이해가 잘 안간다면 멀티유저를 지원하는</p>
<p>다른 이미지를 사용하길 바란다.</p>
<p>이런 종류의 방범은 db가 볼륨에 저장되지 않기때문에</p>
<p>docker-compose.yml을 이용해 다시 켤 경우</p>
<p>virtual_users.db가 원복된다는 점이 문제다.</p>
<p>이런 경우 유저를 추가하기보단 yml 파일에서</p>
<p>아이디와 비번을 공용으로 바꾸는것이 더 간편하다.</p>
<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />
<p>관련글</p>
<ul id="block-fce4c033-25d6-4b80-8610-b0b5f27b1836">
<li><a href="https://jinsbot.com/nas-setup-comparison/">NAS 구축 관련 자료 정리</a></li>
<li><a href="https://jinsbot.com/nas-%ec%84%9c%eb%b2%84-os-comparison/">NAS 서버 OS별 장단점</a></li>
<li><a href="https://jinsbot.com/nas-%ea%b5%ac%ec%b6%95-architecture/">NAS 구축 : 아키텍쳐 선택</a></li>
<li><a href="https://jinsbot.com/freenas-review/">FreeNAS 사용후기</a></li>
<li><a href="https://jinsbot.com/pi-docker-wordpress/">wordpress , PI 를 위한 Docker 환경 구축</a></li>
<li><a href="https://jinsbot.com/%ed%86%a0%eb%a0%8c%ed%8a%b8-%eb%a8%b8%ec%8b%a0-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/">토렌트 머신 만들기 for NAS</a></li>
<li><a href="https://jinsbot.com/jellyfin-for-nas/" target="_blank" rel="noreferrer noopener">Jellyfin for NAS</a></li>
</ul>
<p>The post <a href="https://jinsbot.com/ftp-%ec%84%9c%eb%b2%84-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/">FTP 서버 만들기 for NAS</a> appeared first on <a href="https://jinsbot.com">JIN&#039;s BOT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jinsbot.com/ftp-%ec%84%9c%eb%b2%84-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">836</post-id>	</item>
		<item>
		<title>토렌트 머신 만들기 for NAS</title>
		<link>https://jinsbot.com/%ed%86%a0%eb%a0%8c%ed%8a%b8-%eb%a8%b8%ec%8b%a0-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/</link>
					<comments>https://jinsbot.com/%ed%86%a0%eb%a0%8c%ed%8a%b8-%eb%a8%b8%ec%8b%a0-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/#respond</comments>
		
		<dc:creator><![CDATA[geniuskpj]]></dc:creator>
		<pubDate>Thu, 22 Dec 2022 08:03:16 +0000</pubDate>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[NAS]]></category>
		<category><![CDATA[torrent]]></category>
		<category><![CDATA[공유]]></category>
		<category><![CDATA[토렌트]]></category>
		<category><![CDATA[트랜스미션]]></category>
		<guid isPermaLink="false">https://jinsbot.com/?p=830</guid>

					<description><![CDATA[<p>토렌트 는 여전히 많은 네티즌의 사랑을 받는 파일 공유 방식이다. 사용하긴 편하지만 다음과 같은 문제들이 있다. 쪼개져서 받아지는 구조상 저장 장치의 수명에 악영향을 줌 게임과 같은 고부하 작업을 동시에 하기 힘듬 파일 다운만을 위해 컴퓨터를 켜두기엔 전력소모가 큼 이외에도 보안 등의 문제가 있기때문에 많은 이들이 NAS 를 토렌트 머신으로 활용한다. NAS 는 그 자체가 저전력 [&#8230;]</p>
<p>The post <a href="https://jinsbot.com/%ed%86%a0%eb%a0%8c%ed%8a%b8-%eb%a8%b8%ec%8b%a0-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/">토렌트 머신 만들기 for NAS</a> appeared first on <a href="https://jinsbot.com">JIN&#039;s BOT</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>토렌트 는 여전히 많은 네티즌의 사랑을 받는 파일 공유 방식이다.</p>
<p>사용하긴 편하지만 다음과 같은 문제들이 있다.</p>
<ol>
<li>쪼개져서 받아지는 구조상 저장 장치의 수명에 악영향을 줌</li>
<li>게임과 같은 고부하 작업을 동시에 하기 힘듬</li>
<li>파일 다운만을 위해 컴퓨터를 켜두기엔 전력소모가 큼</li>
</ol>
<p>이외에도 보안 등의 문제가 있기때문에</p>
<p>많은 이들이 NAS 를 토렌트 머신으로 활용한다.</p>
<p>NAS 는 그 자체가 저전력 인 경우가 많고</p>
<p>개인 정보,자료와도 공간을 분리할 수 있다.</p>
<p>관심 있으신 분들을 위해 <strong>Docker</strong>로</p>
<p>토렌트 머신 만드는 방법을 공유한다.</p>
<h2 class="wp-block-heading">토렌트 프로그램 종류</h2>
<p>크게 세가지 프로그램이 많이 쓰인다.</p>
<h3 class="wp-block-heading">트랜스미션</h3>
<figure class="wp-block-image size-full is-resized"><a href="https://jinsbot.com/wp-content/uploads/2024/09/transmission.webp"><img decoding="async" class="aligncenter size-full wp-image-833" src="https://jinsbot.com/wp-content/uploads/2024/09/transmission.webp" alt="" width="768" height="607" srcset="https://jinsbot.com/wp-content/uploads/2024/09/transmission.webp 768w, https://jinsbot.com/wp-content/uploads/2024/09/transmission-300x237.webp 300w, https://jinsbot.com/wp-content/uploads/2024/09/transmission-150x119.webp 150w" sizes="(max-width: 768px) 100vw, 768px" /></a><br />
<noscript><br />
<img data-lazy-fallback="1" decoding="async" src="https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/transmission.jpg" alt="토렌트 transmission" class="wp-image-942" width="734" height="580" srcset="https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/transmission.jpg 978w, https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/transmission-300x237.jpg 300w, https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/transmission-150x119.jpg 150w, https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/transmission-768x607.jpg 768w" sizes="(max-width: 734px) 100vw, 734px"/><br />
</noscript></figure>
<p>가장 오래되기도 했고 문서화도 잘되어 있다.</p>
<p>지원하는 안드로이드 앱도 다양하다.</p>
<p>하지만 기본 UI 가 너무 단순하다.</p>
<h3 class="wp-block-heading">QBittorrent</h3>
<figure class="wp-block-image size-full is-resized"><a href="https://jinsbot.com/wp-content/uploads/2024/09/qBittorrent.webp"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-832" src="https://jinsbot.com/wp-content/uploads/2024/09/qBittorrent.webp" alt="" width="1024" height="610" srcset="https://jinsbot.com/wp-content/uploads/2024/09/qBittorrent.webp 1024w, https://jinsbot.com/wp-content/uploads/2024/09/qBittorrent-300x179.webp 300w, https://jinsbot.com/wp-content/uploads/2024/09/qBittorrent-150x89.webp 150w, https://jinsbot.com/wp-content/uploads/2024/09/qBittorrent-768x458.webp 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><br />
<noscript><br />
<img loading="lazy" data-lazy-fallback="1" decoding="async" src="https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/qBittorrent.jpg" alt="토렌트 qbittorrent" class="wp-image-943" width="768" height="458" srcset="https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/qBittorrent.jpg 1024w, https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/qBittorrent-300x179.jpg 300w, https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/qBittorrent-150x89.jpg 150w, https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/qBittorrent-768x458.jpg 768w" sizes="(max-width: 768px) 100vw, 768px"/><br />
</noscript></figure>
<p>트랜스미션보다 상세한 기능을 제공하며</p>
<p>웹UI 자체도 일반 클라이언트와 크게 다르지 않다.</p>
<p>다만 그만큼 RAM을 더 많이 소모한다.</p>
<h3 class="wp-block-heading">Deluge</h3>
<figure class="wp-block-image size-large is-resized"><a href="https://jinsbot.com/wp-content/uploads/2024/09/deluge.webp"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-831" src="https://jinsbot.com/wp-content/uploads/2024/09/deluge.webp" alt="" width="768" height="440" srcset="https://jinsbot.com/wp-content/uploads/2024/09/deluge.webp 768w, https://jinsbot.com/wp-content/uploads/2024/09/deluge-300x172.webp 300w, https://jinsbot.com/wp-content/uploads/2024/09/deluge-150x86.webp 150w" sizes="(max-width: 768px) 100vw, 768px" /></a><br />
<noscript><br />
<img data-lazy-fallback="1" loading="lazy" decoding="async" src="https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/deluge-1024x587.jpg" alt="토렌트 deluge" class="wp-image-944" width="768" height="440" srcset="https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/deluge-1024x587.jpg 1024w, https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/deluge-300x172.jpg 300w, https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/deluge-150x86.jpg 150w, https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/deluge-768x440.jpg 768w, https://web.archive.org/web/20240422220259im_/https://jinsbot.com/wp-content/uploads/2022/12/deluge.jpg 1072w" sizes="(max-width: 768px) 100vw, 768px"/><br />
</noscript></figure>
<p>가장 최근에 나온 토렌트 프로그램으로</p>
<p>python으로 짜여진게 특징이다.</p>
<p>소스코드도 공개되어있기때문에 입맛대로</p>
<p>custom하거나 플러그인을 추가하기 좋다.</p>
<p>UI 상에서 proxy를 적용하기에 용이하다.</p>
<h2 class="wp-block-heading">그래서 토렌트 프로그램 뭐가 제일 좋아?</h2>
<p>시딩하는 토렌트가 많거나 다양한 기능을 쓰고 싶다면</p>
<p>qBittorrent나 Deluge를 추천한다.</p>
<p>일반적인 용도로 간단히 쓰기에는 Transmission이 좋다.</p>
<p>우선 Docker Hub 사이트 기준으로 사용자가 가장 많다.</p>
<figure class="wp-block-table">
<table class="has-fixed-layout">
<tbody>
<tr>
<td></td>
<td>Transmission</td>
<td>qBittorent</td>
<td>Deluge</td>
</tr>
<tr>
<td>Pull</td>
<td>500M+</td>
<td>100M+</td>
<td>100M+</td>
</tr>
<tr>
<td>Star</td>
<td>1100</td>
<td>973</td>
<td>537</td>
</tr>
</tbody>
</table><figcaption>Docker Hub 통계 ( 22/12/22 기준 )</figcaption></figure>
<p>물론 셋 다 훌륭한 프로그램이기때문에 자기 취향에 따라 고르면 된다.</p>
<h2 class="wp-block-heading">트랜스미션 특징</h2>
<p>지원하는 어플이 여러개 있기때문에</p>
<p>아무거나 하나 골라잡길 바란다.</p>
<p>기본어플인 Transmission Remote도 깔끔하다.</p>
<p>혹시라도 어둠의 토렌트를 이용할 사람들은</p>
<p><a href="https://hub.docker.com/r/haugene/transmission-openvpn" target="_blank" rel="noreferrer noopener">트랜스미션 + OpenVPN</a>이미지를 이용하면 된다.</p>
<p>기본 UI보다 좀 더 상세한 정보를 원한다면</p>
<p><a href="https://github.com/ronggang/transmission-web-control" target="_blank" rel="noreferrer noopener">별도 Theme</a>를 택해도 된다. Linuxserver.io</p>
<p>이미지에서는 총 5개의 옵션을 제공한다.</p>
<p>메모리, CPU 사용률은 토렌트파일, CPU종류에 따라 다르다.</p>
<p>5개 미만의 토렌트를 받는데 RAM이 보통 100~200MB을 사용하고</p>
<p>i7-5775R 기준 10%미만의 CPU 사용률을 보인다.</p>
<h2 class="wp-block-heading">토렌트 Docker-compose 파일 구성</h2>
<pre class="EnlighterJSRAW" data-enlighter-language="yaml" data-enlighter-theme="dracula" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">version: "2.1"
services:
  transmission:
    image: lscr.io/linuxserver/transmission:latest
    container_name: transmission
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Seoul
      - TRANSMISSION_WEB_HOME=/combustion-release/ #optional
      - USER=아이디
      - PASS=비밀번호
      #- WHITELIST=iplist #optional
      #- PEERPORT=peerport #optional
      #- HOST_WHITELIST=dnsname list #optional
    volumes:
      - 설정파일 경로:/config
      - 다운로드 경로:/downloads:rw
      - Watch경로:/watch
    ports:
      - 웹UI포트:9091
      - TCP포트:51413
      - UDP포트:51413/udp
    restart: unless-stopped</pre>
<p>TRANSMISSION_WEB_HOME은 UI 옵션을 나타낸다.</p>
<p>한글로 적은것들은 직접 설정해야하는 값들이다.</p>
<p>volume의 경로는 단순히 이름을 적어도 상관없고</p>
<p>절대 경로를 적으면 해당 경로를 컨테이너에서 사용한다.</p>
<p>토렌트 프로그램이 중요한 하드, SSD를 건드리는게 싫을 수 있다.</p>
<p>구형 하드를 USB3로 연결해서 토렌트를 위한 볼륨으로 사용중이다.</p>
<p>Watch폴더에 ftp 등 의 방법으로 토렌트 파일을 올리면</p>
<p>자동으로 다운이 시작된다. 다수의 토렌트를 동시에</p>
<p>받기 위해서 활용하면 편하다.</p>
<p>다만, FTP는 트랜스미션과 같은 경로에서</p>
<p>동시사용이 안될 수 있다.</p>
<p>한 절대경로를 두개의 컨테이너에서</p>
<p>동시에 사용하면 하나는 Write가 불가능하다.</p>
<p>동시 사용을 위해서는 NFS, CIFS 등을 이용하거나</p>
<p>별도의 Docker이미지를 만들어야한다.</p>
<p>TrueNAS의 경우 FTP와 Transmission이 동시에</p>
<p>사용가능한데 아쉬운 부분이다.</p>
<p>그럼에도 개인적인 사용경험 자체는 나쁘지 않다.</p>
<p>여러분도 Docker 로 편하게</p>
<p>개인용 토렌트 머신을 만들어보길 바란다.</p>
<hr class="wp-block-separator has-alpha-channel-opacity is-style-wide" />
<p>관련글</p>
<ul class="has-small-font-size">
<li><a href="https://jinsbot.com/nas-setup-comparison/">NAS 구축 관련 자료 정리</a></li>
<li><a href="https://jinsbot.com/nas-%ec%84%9c%eb%b2%84-os-comparison/">NAS 서버 OS별 장단점</a></li>
<li><a href="https://jinsbot.com/nas-%ea%b5%ac%ec%b6%95-architecture/">NAS 구축 : 아키텍쳐 선택</a></li>
<li><a href="https://jinsbot.com/freenas-review/">FreeNAS 사용후기</a></li>
<li><a href="https://jinsbot.com/pi-docker-wordpress/">wordpress , PI 를 위한 Docker 환경 구축</a></li>
<li><a href="https://jinsbot.com/jellyfin-for-nas/">Jellyfin for NAS</a></li>
</ul>
<p>The post <a href="https://jinsbot.com/%ed%86%a0%eb%a0%8c%ed%8a%b8-%eb%a8%b8%ec%8b%a0-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/">토렌트 머신 만들기 for NAS</a> appeared first on <a href="https://jinsbot.com">JIN&#039;s BOT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jinsbot.com/%ed%86%a0%eb%a0%8c%ed%8a%b8-%eb%a8%b8%ec%8b%a0-%eb%a7%8c%eb%93%a4%ea%b8%b0-for-nas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">830</post-id>	</item>
		<item>
		<title>wordpress , PI 를 위한 Docker 환경 구축</title>
		<link>https://jinsbot.com/pi-docker-wordpress/</link>
					<comments>https://jinsbot.com/pi-docker-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[geniuskpj]]></dc:creator>
		<pubDate>Fri, 03 Jun 2022 14:25:07 +0000</pubDate>
				<category><![CDATA[Embedded]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[Raspberry]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[라즈베리]]></category>
		<category><![CDATA[워드프레스]]></category>
		<guid isPermaLink="false">http://222.117.132.157/?p=385</guid>

					<description><![CDATA[<p>개요 Raspberry PI 3에서 만들었던 wordpress 를 Raspberry PI 4로 이전하는 중이다. 당시 주류였던 APM (Apache + PHP + Mysql)으로 구축했었으나 그대로 이전하기는 골치아팠다. 그래서 개인 클라우드 구축에 잘 활용중인 Docker로 환경을 구축하게 되었다. Docker환경에서 wordpress 사이트 구축 Docker는 약간의 성능(10~20%)을 희생하고 셋업,디버깅의 편의성을 극대화 해준다. 환경 구축을 위한 여러가지 방법이 있지만 docker-compose를 가장 추천한다. [&#8230;]</p>
<p>The post <a href="https://jinsbot.com/pi-docker-wordpress/">wordpress , PI 를 위한 Docker 환경 구축</a> appeared first on <a href="https://jinsbot.com">JIN&#039;s BOT</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">개요</h2>



<p>Raspberry PI 3에서 만들었던 wordpress 를 Raspberry PI 4로 이전하는 중이다.</p>



<p>당시 주류였던 APM (Apache + PHP + Mysql)으로 구축했었으나 그대로 이전하기는 골치아팠다.</p>



<p>그래서 개인 클라우드 구축에 잘 활용중인 <a href="https://namu.wiki/w/Docker" target="_blank" rel="noreferrer noopener">Docker</a>로 환경을 구축하게 되었다.</p>



<p></p>



<h2 class="wp-block-heading">Docker환경에서 wordpress 사이트 구축</h2>



<p>Docker는 약간의 성능(10~20%)을 희생하고 셋업,디버깅의 편의성을 극대화 해준다.</p>



<p>환경 구축을 위한 여러가지 방법이 있지만 docker-compose를 가장 추천한다.</p>



<p>docker-compose는 apt를 통해 간단하게 설치할 수 있고 스크립트를 통해 docker를 제어하게 해준다.</p>



<p>이번에 사용된 docker-compose.yml을 다음과 같다.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="yaml" data-enlighter-theme="dracula" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">version: "3.6"
    
services:
  wordpress:
    container_name: wordpress
    depends_on:
      - db
    image: wordpress
    volumes:
      - wordpress_data:/var/www/html
      - ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
    ports:
     - "80:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: **
      WORDPRESS_DB_NAME: wordpress
      
  db:
    container_name: mysql
    image: jsurf/rpi-mariadb
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ****
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: **      

volumes:
  db_data: {}
  wordpress_data: {}</pre>



<p><strong>셋업 환경: Raspberry PI 4 (Raspbian Buster)</strong></p>



<p>Docker 이미지들은  Linux에서 호환성이 좋지만 Raspbian은 version에 따라 호환되지 않는 경우도 많다.</p>



<p>또한 yml에서는 python과 마찬가지로 공백으로 구조체를 구분하기때문에 오류가 발생할 시 이를 잘 수정해보길 바란다.</p>



<p>위 파일에서 사용된 간단한 키워드에 대해 설명하겠다.</p>



<pre class="wp-block-code"><code lang="yaml" class="language-yaml">container_name: docker ps에서 보이는 container의 이름을 지정
image: '/'를 기준으로 앞부분은 architecture나 구분자(저자)를 의미하고 ':'뒤에 태그(종류)를 지정
volumes: 컨테이너의 내용을 특정 로컬 폴더에 저장, volume에 저장되지 않은 내용은 재시작시 삭제됨
environment: 환경변수, image별로 사전에 정의되어야 하는 변수는 다름</code></pre>



<p>images 예시) arm64v8/wordpress:6-php7.4-apache</p>



<p>일반적인 경우 docker에서 적절한 architecture를 선정해주지만 호환성을 위해 별도(arm32v7 ) 지정해야할 수 있다.</p>



<p>사용자에 따라 원하는 환경이 다를 수 있는데 docker에서는 이를 tag로 구분한다.</p>



<p>위에서 6은 wordpress 6을 의미하며 이외에도 fpm, alpine 등의 키워드를 추가할 수 있다.</p>



<p>volumes는 하단에서 어떤 volume을 만들 것인지 정의해 줘야 하며 그 이름은 service 이름으로 해주어도 상관없다.</p>



<p>&#8216;/&#8217;를 사용하는 절대 경로를 사용할 수도 있고  위처럼 키워드를 사용할 수도 있는데</p>



<p>키워드를 사용한 경우 &#8216;/var/lib/docker/volumes/컨테이너이름_키워드/_data/&#8217;에 저장된다.</p>



<p>docker-compose에서 핵심적인 요소는 어떤 image를 사용하느냐이고 되도록이면 공식 image를 추천한다.</p>



<p>wordpress 공식 이미지는 Raspbian Buster를 지원하지만 mariadb는 그렇지 않다.</p>



<p>&#8216;linuxserver/mariadb&#8217;,&#8217;yobasystems/alpine-mariadb&#8217; 등 다양한 mariadb image가 존재하지만 buster에서 제대로 동작하지 않는다.</p>



<p>&#8216;<strong>jsurf/rpi-mariadb</strong>&#8216;는 PI에서 가장 많이 쓰이는 mariadb 이미지 중 하나이며 buster에서도 정상 동작한다.</p>



<p>한가지 더 주의할 점은 잘못된 이미지를 사용하더라도 실제 구동시에는 정상동작하는것처럼 보인다.</p>



<p>그러므로 docker ps를 통해서 정상동작 여부를 확인해야한다.</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="http://222.117.132.157/wp-content/uploads/2022/06/image.png" alt="wordpress 를 구동하고 docker ps로 확인한 결과" class="wp-image-440" width="474" height="67" title="" srcset="https://jinsbot.com/wp-content/uploads/2022/06/image.png 474w, https://jinsbot.com/wp-content/uploads/2022/06/image-300x42.png 300w" sizes="(max-width: 474px) 100vw, 474px" /></figure>



<p>보통 command에 docker-entrypoint 이외의 값이 뜨면 구동과정에서 문제가 발생한 것이다.</p>



<p></p>



<p>uploads.ini는 docker-compose.yml과 같은 폴더에 존재하며 다음 값이 담겨져 있다.</p>



<pre class="wp-block-code"><code lang="php" class="language-php">file_uploads = On
memory_limit = 500M
upload_max_filesize = 500M
post_max_size = 500M
max_execution_time = 600</code></pre>



<p>기본적으로 wordpress는 업로드 파일 사이즈를 제한하기때문에  그 설정을 변경하기 위한 것이다.</p>



<p>이 설정은 워드프레스와는 다른 위치에 저장되기때문에 volumes에 별도로 정의되어야한다.</p>



<p></p>



<h2 class="wp-block-heading">요약</h2>



<ul class="wp-block-list"><li>Docker는 셋업 및 유지보수를 용이하게 만들어줌</li><li>Raspberry PI에서는 mariadb image를 적절하게 골라야함</li><li>docker ps를 통해 정상동작 여부를 확인해야함</li></ul>
<p>The post <a href="https://jinsbot.com/pi-docker-wordpress/">wordpress , PI 를 위한 Docker 환경 구축</a> appeared first on <a href="https://jinsbot.com">JIN&#039;s BOT</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://jinsbot.com/pi-docker-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">385</post-id>	</item>
	</channel>
</rss>
