Docker로 NAS 환경을 구축한 과정을 공유하고자 한다.
Docker가 뭔지 잘 모르시는 분이라도 따라 하면 설정이 가능할 것이다.
DDNS 설정
집 안에서만 사용할 계획이라면 필요없겠지만, 밖에서도 접속할 수 있게 해 주면 NAS의 활용도가 훨씬 더 올라간다.
밖에서 접속하기 위해 네트워크에 이름을 붙여주어야 한다.
IpTime과 Asus 공유기 등에서 이 기능을 제공한다.
IpTime 공유기에서 DDNS 설정하는 방법은 아래 블로그를 참조하자
ipTime 공유기 집 밖에서 접속하고 설정하는 방법
집에 공유기 하나씩은 갖고 계실 것입니다. 집에서 설정하는 것은 192.168.0.1로 접속해 공유기에 접속하는 것은 대부분 알고 계실 것이라 생각하는데요. 갑자기 집 밖에서 공유기 설정을 해야 할...
my-rom.tistory.com
설정한 DDNS 주소는 이 후 여기저기에서 쓰이니 잘 기억해 두자.
OS 설치
웹크롤링 기능 대응을 위해 Ubuntu Desktop으로 선택하고,
오랫동안 지원이 가능한 LTS 중 최신 버전을 선택했다.
현재는 22.04.02 LTS다.
이미지 다운로드
Ubuntu 22.04.2 LTS (Jammy Jellyfish)
Select an image Ubuntu is distributed on three types of images described below. Desktop image The desktop image allows you to try Ubuntu without changing your computer at all, and at your option to install it permanently later. This type of image is what m...
releases.ubuntu.com
원 링크가 느릴 경우를 대비해 kakao 미러도 추가한다.
Ubuntu 22.04.2 LTS (Jammy Jellyfish)
Select an image Ubuntu is distributed on three types of images described below. Desktop image The desktop image allows you to try Ubuntu without changing your computer at all, and at your option to install it permanently later. This type of image is what m...
mirror.kakao.com
위 링크 중 마음에 드는 곳에서 ISO 파일을 다운로드한다.
설치 USB 만들기
Rufus - 간편하게 부팅 가능한 USB 드라이브 만들기
Rufus는 USB 메모리 및 플래시 드라이브를 포맷하고 부팅할 수 있도록 만드는 도구입니다. 이 페이지 아래에 나열된 ISO 이미지 이외에도 Rufus는 여러 종류의 ISO 이미지를 지원합니다. (1) Windows 8 이...
rufus.ie
위 링크에서 Rufus를 다운로드하자.
USB를 연결하고 Device에서 선택을 해준다.
Boot selection에서 위에서 다운로드한 ISO 파일을 선택해 주자.

다른 설정은 건드릴 필요 없이 START 하면 부팅 가능한 Ubuntu 설치 USB가 만들어진다.
Ubuntu 설치
PC에 위에서 만든 USB를 연결하고 부팅 순서를 USB로 바꿔주자.
요새 Ubuntu는 그냥 Next만 눌러주면 간단하게 설치가 가능하다.
SSL 인증서 설치
HTTPS로 접근하기 위해서는 SSL 인증서가 필요하다.
Portainer와 Rocketchat 사용 시 HTTPS를 필요로 한다.
외부 여러 사람이 접근하는 경우는 안정성을 위해 유료를 사용하는 게 좋겠지만,
개인 용도라면 무료로 사용해 보자.
Let's Encrypt라고 하는 비영리 단체에서 제공하는 서비스가 있다.
무료 SSL 인증서 적용(Let's Encrypt)
오늘은 무료 SSL 인증서 "Let's Encrypt" 적용 방법에 대해서 알아보겠습니다. https는 http의 보안프로토콜입니다. 이를 이용하기 위해서는 SSL 인증서라는 게 있어야 되는데 보통 유료로 구입들을 하게...
nhj12311.tistory.com
설명이 상세하게 잘 되어 있는 블로그를 링크한다.
위에서 설정한 DDNS 주소로 SSL 인증서를 설치하고
cron을 이용해서 자동 업데이트까지 설정해 주자.
Docker 환경 구축
Docker로 설정할 수 있는 기능들은 Docker로 설치하고 관리하면 편하다.
Docker 설치
지원 Ubuntu 버전
- Ubuntu Lunar 23.04
- Ubuntu Kinetic 22.10
- Ubuntu Jammy 22.04 (LTS)
- Ubuntu Focal 20.04 (LTS)
- Ubuntu Bionic 18.04 (LTS)
x86_64 (or amd64), armhf, arm64, s390x 아키텍처를 지원한다.
구 버전 삭제
기존에 설치된 Docker가 있다면 삭제해 준다.
sudo apt-get remove docker docker-engine docker.io containerd runc
기존 Docker를 사용하면서 image나 container, volume, network를 만들었다면 /var/lib/docker/ 에 저장되어 있을 것이다.클린 설치를 원한다면 해당 파일들을 삭제해 준다.
설치 방법
Docker Desktop, 수동 설치, script 설치 등을 지원하지만, apt repository를 이용해 설치하는 방법을 추천한다.
Repository 설정
1. apt 인덱스를 업데이트하고 HTTPS로 repository에 접근할 수 있도록 설정해 준다.
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
2. Docker의 공식 GPG key를 추가해 준다.
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
3. 다음 명령어로 Repository를 설정해 준다.
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Docker 엔진 설치
1. apt 패키지 인덱스를 업데이트해준다.
sudo apt-get update
2. Docker Engine, containerd, Docker Compose를 설치해 준다.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3. Hello-world 이미지 구동으로 Docker Engine 설치 확인 (필수 아님)
sudo docker run hello-world
이미지가 정상 구동되는 것을 확인하는 과정으로 무시해도 된다.
Docker 엔진 삭제
혹시 삭제를 원한 경우를 대비해 방법을 적어놓는다.
1. Docker Engine, CLI, containerd, Docker compose 패키지 삭제
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
2. Image, container, volume, 설정 파일들은 자동 삭제가 되지 않는다.
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
Portainer 설치
Docker에 Container를 올리고 관리하는 것은 command line으로도 가능하지만, 사용이 편치만은 않다.
Web UI를 통해서 쉽게 관리할 수 있도록 해주는 Portainter라고 하는 관리 툴이 있다.
먼저 설치해 주자
docker run -d -p 9443:9443 -p 8000:8000 \
--name portainer --restart always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
-v /etc/letsencrypt/live/yourdomain:/certs/live/yourdomain:ro \
-v /etc/letsencrypt/archive/yourdomain:/certs/archive/yourdomain:ro \
portainer/portainer-ce:latest \
--sslcert /certs/live/yourdomain/fullchain.pem \
--sslkey /certs/live/yourdomain/privkey.pem
위 명령어에서 yourdomain이라고 되어 있는 부분을 DDNS에서 설정한 주소로 바꿔서 입력해 주면 된다.
접속 확인
{NAS IP}:9443으로 접속하면 다음과 같은 화면을 확인할 수 있을 것이다.

공유기 설정에서 포트포워딩으로 원하는 포트와 NAS IP의 9443을 연결해 주자
{DDNS 서버}:Port 명으로 접속하면 외부에서도 동일한 화면을 볼 수 있을 것이다.
Pure-FTP 설치
Portainer에서 설치하는 방법이다.
Container 탭으로 들어가서 + Add container를 눌러준다.
Name
pure-ftpd
구분을 위한 항목으로 꼭 pure-ftpd일 필요는 없다
Image
gists/pure-ftpd:latest
Network ports
- host : 2021 container :21 TCP
- host : 30000-30009 container : 30000-30009 TCP
Volumes
- container : /etc/pureftpd Bind
- host : /home/사용자/docker/pureftpd Writable
pure-ftp의 설정이 저장되는 곳이다.
- container : /home/ftpuser Bind
- host : /mnt Writable
실제 데이터가 저장되는 곳으로 HDD가 마운트 된 곳으로 설정해 주자.
Env
name | value |
PUBLIC_HOST | DDNS로 설정한 주소 |
MIN_PASV_PORT | 30000 |
MAX_PASV_PORT | 30009 |
UID | 1000 |
GID | 1000 |
Restart policy
Always
위와 같이 설정해 주고 Deploy the container를 눌러주면 이미지를 다운로드하고 실행이 된다.
폴더 권한과 사용자를 추가하자. Linux shell에서 입력하면 된다.
Linux shell에서 설정
폴더 권한 설정
docker exec -it pure-ftpd chown ftpuser:ftpuser -R /home/ftpuser
사용자 추가
docker exec -it pure-ftpd pure-pw useradd test -m -u ftpuser -d /home/ftpuser
test라는 유저가 /mnt 폴더를 사용하도록 추가하는 명령어이다.
사용자 반영
docker exec -it pure-ftpd pure-pw mkdb
네트워크 설정
공유기 설정에서 포트포워딩으로 원하는 포트와 NAS IP의 2021을 연결해 주자
PC에서는 파일질라, 안드로이드 폰에서는 탐색기 어플을 사용해서 접속이 가능하다.
내부에서는 {NAS IP}:2021
외부에서는 {DDNS}:포트포워딩한 포트로 파일 서버에 접속이 가능하다.
OS, Docker, Portainer, FTP까지 설치를 완료했다.
다음 글에서는 Samba, Torrent, jDownloader, rocketchat, 복합기 서버를 설치하는 방법을 정리하도록 하겠다.
'잡담' 카테고리의 다른 글
홍콩관광청 주관 선착순 홍콩 항공권 이벤트 (0) | 2023.05.12 |
---|---|
자작 NAS - 활용기 (1) | 2023.05.11 |
[서울 동작/사케바] 상도동 상도역 오니슈 (2) | 2023.05.02 |
현관키 스티커형 카드로 복사하기 (1) | 2023.04.27 |
[서울 강남/돼지고기] 삼성동 청담역 길목 (0) | 2023.04.16 |
무릎, 뒤꿈치 통증 병원 후기 (0) | 2023.03.31 |
3월 T데이 피자헛 50% 할인 (0) | 2023.03.29 |
댓글