홈서버의 제 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 파일을 수정한다... 아 복잡하다 이거 진짜. 여긴 약간 의식의 흐름대로..
- trusted_proxies에 접근 도메인 추가 참고 1: https://github.com/nextcloud/docker/issues/1672
- overwrite.cli.url을 https 링크로 바꾸고 overwriteprotocol => https 추가
- HSTS 보안 관련해선 Strict-Transport-Security 설정 해줘야함. 참고: https://ssl-config.mozilla.org/
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 수정
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
'서버만들기 > 홈서버' 카테고리의 다른 글
ubuntu samba + SSH tunneling (0) | 2023.02.01 |
---|---|
Windows RDP 보안챙기기 + SSH tunneling (4) | 2023.01.30 |
Hyper-V 외부 아이피 할당 + RDP 접속 (2) | 2023.01.23 |
Windows11 Hyper-V + 우분투 + RAID1 하드 설정 (BTRFS) (1) (1) | 2023.01.19 |
홈서버 구성 - 구상도 (0) | 2023.01.07 |
최근댓글