본문 바로가기
Dev Tools/Docker

[Docker] NextCloud - 홈서버 나만의 무료 클라우드 만들기

by lucas_owner 2024. 8. 3.

 

 

NextCloud - 나만의 무료 클라우드 만들기

클라우드 기술이 널리퍼져있고 유용하게 쓰이는 시대에, 다들 Cloud 하나씩은 사용하고 있을것이다. 

(iCloud, Google Cloud, One Drive, ...)

 

사실 월 구독료가 부담되는 금액은 아니지만, 더 많은 용량을 사용하게 될수록 금액적인 부담이 발생한다. 

 

NextCloud 는 오픈소스이기 때문에, 누구든 무료로 사용할 수 있다. 특히나 홈서버가 존재한다면 활용가치는 더욱더 높다.

(개인적으로 파일 공유가 주 목적인 NAS 보다 효율성이 높다고 생각한다)

 

홈서버가 없더라도 평생 무료로 쓸 수 있는 Oracle Cloud 서버를 구축뒀다면, 100Gb 가량의 나만의 무료 클라우드 서비스를 만들 수 있다.

 

위에서 서술했던대로, 오픈소스이고 나만의 클라우드 저장소를 웹, 어플을 통해 사용할 수 있게 해준다. 

 

https://github.com/nextcloud/docker

 

GitHub - nextcloud/docker: ⛴ Docker image of Nextcloud

⛴ Docker image of Nextcloud. Contribute to nextcloud/docker development by creating an account on GitHub.

github.com

여기서 다양한 설정방법이나, 사용방법들이 존재하니 필요할 경우 읽어보는걸 추천한다

 

NextCloud 는 크게 2가지의 Version 이 존재하는데

Base - apache
Base - FPM(FastCGI process Manager)

 

각각 Apache 서버가 내장된 Version 과, Web Server에 의존하지 않는 FPM 버전을 뜻한다. 

해당 글에서는 Base - Apache 버전을 설치할 예정이다. 

 

  1. Ubuntu
  2. Docker

환경에서 설치를 진행했다

 

 

Docker-compose 및 설치

공식 GitHub 의 docker-compose.yml 을 조금 수정해서 적용했고 아래에서 설명하겠다.

 

필요한 파일은 총 2개이다

- docker-compose.yml

- .env

 

여기서 .env 파일은 필수가 아니고 docker-compose.yml 파일내에 enviroment 항목에 추가해주면 된다.

 

docker-compose.yml

version: '3'

services:
  db:
    image: mariadb:latest
    container_name: next_db
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
    volumes:
      - next_db:/var/lib/mysql
    env_file: .env
    environment:
      - MYSQL_DATABASE=nextcloud
    networks:
      - next-network
    ports:
      - "3380:3306"



  app:
    image: nextcloud:latest
    container_name: nextcloud
    ports:
      - 18090:80
    volumes:
      - nextcloud:/var/www/html
    restart: always
    env_file: .env
    environment:
      - MYSQL_HOST=db:3306
      - MYSQL_USER=$MYSQL_USER
      - MYSQL_PASSWORD=$MYSQL_PASSWORD
      - MYSQL_DATABASE=nextcloud

    networks:
      - next-network
volumes:
  next_db:
  nextcloud:
networks:
  next-network:

 

.env

MYSQL_ROOT_PASSWORD={ROOT_PASSWORD}
MYSQL_USER={DB USER}
MYSQL_PASSWORD={DB USER PASSWORD}

 

여기서 db의 ports 부분을 추가해줬는데, 그 이유는 현재 홈서버에서는 여러대의 mysql, maria db 를 운용중이기에 포트 충돌 방지를 위해 임의의 포트로 작성해 주었다. 

 

또한 app의 ports: 부분에는 8080:80 이 기본설정이다. 필요시 변경하고 실행하는게 좋다.

(사유는 마찬가지로 포트 충돌방지)

 

만약 기본 설정대로 사용하려면 db의 ports 부분을 삭제, 주석처리 하면 된다.

 

docker-compose up -d

 

.yml 이 있는 path 에서 해당 명령어 실행으로, 간단하게 실행 시켜줄 수 있다. 


설치 완료 이후, 해당 port 를 외부로 열어줘야 한다. (해당글에서는 다루지 않겠다.)

 

필자의 경우 UFW 를 사용중이기때문에, UFW 로 port 를 오픈해주고,

Nginx를 통해서 포트포워딩을 진행했다. 

{외부에 오픈할 port}:18080

 

포트오픈까지 완료했다면, 접속해보자

# 도메인 연결시 
test.com 

# 도메인 미연결시 기본포트는 8080, 필자의설정은 18080
{IP}:{port}

IP:18080

 

이후 관리자 계정 설정 진행 후 아래와 같은 추가 앱 설치 여부가 나오는데 나중에 활용할 수 있을까 싶어서 전부 체크해줬다.

 

모든 설정이 정상적으로 이루어졌다면 아래와 같은 화면으로 접속된다.

반응형

댓글