반응형

홈서버의 제 1 목적인, NAS 설정을 하여 사진저장 및 가족간에 공유를 위해 nextcloud를 세팅해본다. snap으로 설치했다가 기~~나긴 삽질이 있었는데, 결론은 snap으로 설치한건 못쓰는 상황이고, docker로 다시 설치하고 세팅한다. (사실 여기도 삽질이 좀 있긴 하다)

1. nextcloud 설치

1) docker 최소설치

docker를 이용한 nextcloud설치는 매우 쉽다. 도커허브에 공식이미지를 가져오면 끝.

sudo docker run -d -p 60080:80 nextcloud

한 1분정도 기다리면 도커 설치가 완료되고, 정상적으로 프로세스가 확인된다.

근데 내가 하는게 한번에 잘 될리가 없지... 웹페이지도 잘 뜨는데, 설명서를 끝까지 안 읽고 닥치는대로 했더니 이런 문구가 뜬다.

2) MariaDB를 사용하여 docker 설치

기성품은 설명서만 읽으면 된다. 설명서만... Base version - apache 섹션에 잘 만들어준 예시가 있다.

version: '2'

volumes:
  nextcloud:
  db:

services:
  db:
    image: mariadb:10.5
    restart: always
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    restart: always
    ports:
      - 8080:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
    environment:
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db

마리아디비부터 싹 다 설치해준다. 싹 다.

완료.

2. nextcloud 세팅

사실 세팅이랄것도 별로 없지만.. 나중에 혹시라도 다시 세팅이 필요할 때 동일하게 하려면 간단하게나마 기록하는게 좋을 듯 해서 쓴다.

1) 추천앱들 다 설치

쓸일은 없을것같지만 일단 다 설치하고

2) 외장 드라이브 사용 설정을켜준다.

이거 좀 헷갈리는데 '사용함' 버튼을 눌러서 '사용안함'이 보여야 사용하는 상태다.

3) 보안 추가앱 설치

우선 세개만 설치한다. 2factor (구글오티피)는 나중에 적용할 예정.

4) 보안 에러들 하나씩 제거

이곳저곳 보면서 nextcloud의 config.php 파일을 수정한다... 아 복잡하다 이거 진짜. 여긴 약간 의식의 흐름대로..

domain {
        reverse_proxy 127.0.0.1:60080
        header Strict-Transport-Security "max-age=15552000"
}

3. samba

1) 삼바 smb 세팅

삼바 설치하고, 딱 삼바용으로만 쓸 sambadobby 계정을 만들었다. 

sudo apt install samba
sudo systemctl enable --now smbd
sudo usermod -aG sambashare sambadobby

/etc/samba/smb.conf 파일에 공유폴더 추가 후 접속이 정상적으로 되는지 확인

smbclient //localhost/shared_data -U sambadobby

그리고 해당 에 대해 sambadobby가 쓰기 권한을 가져야 하는데, 777 주기는 싫으니 권한을 넘겨버리자.

sudo chown -R sambadobby /HDD1/nextcloud_data

2) Docker compose 수정

참고글 링크  참고글 링크2

sambadobby 계정의 id를 먼저 확인한다. 안해도 된다.

id sambadobby
>> uid=1001(sambadobby) gid=1002(sambadobby) groups=1002(sambadobby),135(sambashare)

docker-compose.yml에 smb 접속을 추가하여 수정

version: '2'

volumes:
  nextcloud:
  db:
  smbvolume:
    driver_opts:
      type: cifs 
      o: username={sambadobby},password={비밀번호},uid=33,gid=33,vers=3.0  #33: nextcloud의 www-root
      device: //{host(172.17.0.1)}/{경로}

services:
  db:
    image: mariadb:10.5
    container_name: nextcloud-mariadb
    restart: always
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD={MYSQL_ROOT_PASSWORD}
      - MYSQL_PASSWORD={MYSQL_PASSWORD}
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    container_name: nextcloud-main
    restart: always
    ports:
      - 60080:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
      - smbvolume:/var/www/sharedvolume
    environment:
      - MYSQL_PASSWORD={MYSQL_PASSWORD}
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
      - MYSQL_HOST=db

권한 및 disk mount 확인됨.

외부저장소에서 해당 경로 추가해주면 끝

3) docker 내 폴더권한 수정 (필요없음)

docker console 접속해서 /root/data 폴더의 권한을 www-data (docker daemon)로 넘겨야 한다.

  • docker console 접속 시 /var/www/html 폴더의 권한이 www-data로 지정되어 있다.

docker exec -it {dockerid} /bin/bash
728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기