본문 바로가기

라즈베리파이

OMV5(OpenMediaVault 5)에 NextCloud 설치하기 1 - mariadb 설치

여러가지 이유로 NAS를 사용하겠지만, 그중 집 또는 밖 어디서건 내 파일을 편리하게 접근하는 목적도 그 한가지 이다. 집안에서 편리하게 파일을 백업 또는 접근하기 위해 SMB 모듈을 설치한 바 있다.

https://blog.codesarang.com/22

 

OMV5 (OpenMediaVault 5)에서 NTFS HDD를 Ext4로 포맷하기 및 에러 처리

지난 포스팅에서는 OMV5에서 NTFS 파티션인 외장형 HDD를 공유하는 방법에 대해 살펴 보았다. OMV5에서 NTFS 파티션인 경우에도 충분히 사용할 수 있으나, 사용자 접근제어 등 일부 기능에 제한이 있��

blog.codesarang.com

그러나, SMB는 로컬 네트워크에서만 파일 접근이 가능하고, 외부 네트워크에서의 파일 접근은 제공되지 않는다. 이런 단점을 해결하기 위해 NextCloud는 훌륭한 대안으로 추천된다.

 

NextCloud는 원격에서 내 NAS 접근이 가능한 웹 기반 인터페이스이다.

 

이번 포스팅에서는 NextCloud 설치를 위한 사전 작업으로 mariadb라는 데이터베이스 시스템 설치 과정을 설명할 것이다. 라즈베리파이 호스트 운영체제에 mariadb를 직접 설치할 수 도 있으나, 관리의 편리성, 호스트 운영체제와의 독립성 등을 고려하여 docker 기반에서 설치할 것이다. 

* 또한, NextCloud를 호스트 운영체제에 설치해 보았으나 결국 실패했다. 실패 과정에 대해서도 다음 포스팅에서 한번 집고 넘어갈 예정이다.

 

1. 들어가기 전에

docker를 왜 사용하는가? 일반적으로 리눅스 어플리케이션 설치를 위해서는 각종 종속성(필요한 라이브러리 등)을 신경써 주어야 한다. 심지어는 종속성을 다 맞추어 주어도 운영체제 버전 또는 웹서버 버전에 따라 충돌이 나거나 동작하지 않는 경우가 다반사이다. docker로 배포되는 어플리케이션의 이런 종속성 등의 문제에 영향을 받지 않고, 간단한 설정만으로 어플리케이션 설치가 가능하다.

 

docker를 사용하기 위해서는 이미지(image), 컨테이너(container), 볼륨(volume)에 대해 이해하고 있어야 한다.

 

우선, 이미지는 어플리케이션 배포 기본 단위이다. ISO 이미지로 운영체제를 배포하듯이 docker는 dockerhub를 통해 어플리케이션 배포판을 제공한다. 이 도커 이미지가 있어야 이것을 이용해 컨테이너 생성이 가능하다.

 

컨테이너는 어플리케이션 실행 단위이다. 도커 이미지를 확보한 후 컨테이너를 생성해 어플리케이션을 실행한다.

 

볼륨은 어플리케이션 데이터가 저장되는 단위이다. 독립된 저장공간을 설정하거나 호스트 머신과 데이터 공유를 위해 사용한다.

 

그럼 docker에서 mariadb 설치 방법에 대해 설명하도록 하겠다.

 

2. mariadb 이미지 확보

우선 OMV에 설치되어 있는 Portainer라는 웹 기반 도커 UI 툴을 실행한다. 

 

이전에 설정했던 계정/비밀번호로 로그인 후 접속하면 아래와 같은 화면이 나온다. 

위쪽의 양쪽 화살표 버튼을 누르면 왼쪽의 메뉴가 펼쳐졌다 좁아졌다 한다. 아래 화면에서 고래 아이콘을 클릭한다.

 

이제 mariadb 이미지를 가져올 차례이다. 우선 왼쪽의 "Images" 메뉴를 선택한다. 

보통 여기에서 "mariadb"를 입력하고 "Pull the image" 버튼을 클릭한 후 오른쪽 상단의 성공 메시지가 나오면 이미지가 추가 된다. 그런데 이번 경우는 추가되지 않았다.

 

이럴 경우 https://hub.docker.com/사이트를 방문, mariadb를 검색하면 아래와 같은 검색 결과를 얻을 수 있다.

 

나의 경우 라즈베리파이4에 라즈비안 운영체제를 설치하고, 그 위에 OMV5를 설치했다. 라즈베리파이4는 ARM CPU이고, 라즈비안은 32bit 운영체제이다.

 

따라서, "mariadb"의 경우 ARM 32bit 배포판이 없으므로, ARM 32bit를 제공하는 "linuxserver/mariadb"를 입력했어야 한다.

 

다시 돌아가 "linuxserver/mariadb" 입력후 "Pull the image" 버튼을 클릭하면 잠시뒤에 이미지 리스트에 mariadb 이미지가 새로 생성된다.

 

3. 볼륨 생성

사실 이 과정은 생략해도 된다. 이 과정을 생략하면 컨테이너 생성시 알아서 랜덤한 이름으로 볼륨을 만들어 준다. 그러나 볼륨 이름일 지정하길 원한다면 "Volumes" 메뉴 선택후 "Add volume" 버튼을 클릭한다.

 

"mariadb_config" 혹은 다른 이름을 입력하고 "Create the volume" 버튼을 클릭한다.

 

생성이 완료되면 아래처럼 성공 메시지와 함께 새로운 볼륨이 추가된 것을 볼 수 있다.

 

4. 컨테이너 생성

이제 드디어 컨테이너를 생성할 차례이다. "Containers" 메뉴 선택후 "Add container" 버튼을 클릭한다.

 

컨테이너 이름과 이미지를 선택한다. 여기서 이미지는 이미 다운받고 있어야 선택이 가능하다.

 

참고로, 다른 블로그 또는 유튜브 등을 보면 네트워크 포트를 외부로 매핑해 주는 경우가 있는데 이것은 보안상으로 굳이 추천하지 않는다. 다른 어플리케이션 컨테이너 혹은 호스트에서도 컨테이너에 매핑된 내부 IP를 이용해 mariadb에 접근이 가능하다. 따라서, mariadb의 접근 포트를 외부로 매핑해 줄 이유가 없다. 

 

아래쪽으로 스크롤하여 "Advanced container settings" 부분의 "Volumes" 탭을 선택한다. "map addtional volume" 버튼을 클릭해 "/config" 폴더를 아까 생성한 "mariadb_config" 볼륨으로 매핑해준다. 

 

"Env" 탭을 선택해 "add environment variable" 버튼을 클릭한 후, MySQL root 비밀번호와 타임존에 대한 환경  변수를 설정해 준다.

물론, 여기서 root 비밀번호를 지정해 주지 않을 경우, 나중에 쉘로 접근해 지정도 가능하다.

 

"Restart policy" 탭을 클릭하여, 자동실행 정책을 "Always"로 선택한다.

 

이제 "Deploy the container" 버튼을 클릭한다.

 

아래 그림처럼 mariadb 컨테이너가 동작중인 화면을 볼 수 있다. 이것으로 docker를 이용하여 mariadb 설치가 완료된 것이다.

 

하나더, 빨간 동그라미를 보면 콘솔 버튼이 있다. 이 콘솔은 mariadb가 설치되어 있는 컨테이너 접근을 위한 쉘 인터페이스 환경을 제공한다.

 

콘솔 버튼을 누르고 "Connect" 버튼을 눌러준면

 

아래처럼 웹 환경에서 mariadb docker의 쉘로 접근이 가능하고, 내리는 것도 가능하다.