Google Cloud Platform을 이용한 NAS 시스템 구축 의 여섯번째 글입니다.
진행속도가 아주.. 빠르네요 ㅎㅎ 미리 경험삼아 구축해본것들이 빛을 발하고있는것 같습니다.
이번 포스팅에서 진행할 부분은 Nextcloud라는걸 Docker에 올려볼 예정입니다.
단, Nextcloud 단독으로 동작하지않고 MariaDB가 있어야 구동가능하기 때문에 둘다 설치하겠습니다.
Nextcloud는 구축형 파일 공유 시스템입니다. 쉽게 예를들자면 Google 드라이브를 직접 구축한다고 보시면 될것같습니다.
링크를 통한 파일공유, Web으로 문서 수정 가능 기능등 여러가지 기능들도 추가할 수 있습니다.
같이 설치할 MariaDB는 OpenSource 무료 DB 이며 많이 알려진 MySQL과 거의 흡사합니다. DB역할을 담당할 예정입니다.
설명은 이정도로 마치고 진행순서는 아래와 같습니다.
Nextcloud docker image 확인 > MariaDB 이미지 확인 > mariadb docker container 생성 > nextcloud db 유저 및 db 생성 > nextcloud docker container 생성> 테스트
이미지확인을 꼭 하는 이유는 어떻게 사용하는지 알고있어야 추후에 오류가 발생했을때 찾을 수 있기때문입니다.
Nextcloud docker image 확인
사용할 이미지는 linuxserver/nextcloud 입니다.
https://hub.docker.com/r/linuxserver/nextcloud
아래는 사용법입니다. 이따 컨테이너 생성할때 아래 정보를 기반으로 생성할 예정입니다.
이미지 확인을 했으니 볼륨매칭에 사용될 config폴더와 data폴더를 생성하도록하겠습니다.
mkdir -p /data/nextcloud/config
mkdir -p /data/nextcloud/data
MariaDB 이미지 확인
사용할 이미지는 linuxserver/mariadb입니다.
https://hub.docker.com/r/linuxserver/mariadb
아래는 사용법 입니다. 이따 컨테이너 생성할때 아래 정보를 기반으로 생성할 예정입니다.
이미지 확인을 했으니 볼륨매칭에 사용될 config폴더를 생성하도록하겠습니다.
mkdir -p /data/mariadb/config
mariadb docker container 생성
어차피 nextcloud를 설치하려면 mariadb가 있어야되기 때문에 Mariadb 먼저 컨테이너 생성을 하도록 하겠습니다.
앞서 구축한 portainer로 접속 후 Add container를 클릭해줍니다.,
이름은 편한 이름으로
이미지 : linuxserver/mariadb
네트워크는 3306 : 3306
아래로 쭈욱 내려서 Advanced container setting 입니다
Volumes 부분
host의 /data/mariadb/config : /config
환경변수(Env) 부분
PUID : 1000
PGID : 1000
MYSQL_ROOT_PASSWORD : 원하는 root 패스워드
TZ : Asia/Seoul
Restart policy 부분
재부팅시 항상 겨지도록 Always
그리고 가운데에 있는 Deploy를 누르면 컨테이너 생성이 완료됩니다.
nextcloud db 유저 및 db 생성
이제 생성한 Mariadb 컨테이너 확인도 할겸 nextcloud의 db유저와 db를 만들어보겠습니다.
먼저 컨테이너의 콘솔로 접근해줍니다.
컨테이너 목록에서 mariadb 의 >_ 버튼을 클릭합니다.
그리고 User 에 root를 입력하고 Connect
아래처럼 터미널 창이나오면 mysql -u root -p
명령어로 접속합니다.
password는 아까 환경변수에서 설정한 passwd를 입력하면 됩니다.
nextcloud db 생성 및 유저생성
여기서 mysql 문법까지 설명하면.. 글이 너무 길어지기 때문에 명령어 입력으로 설명을 대체하겠습니다.
복붙하면 오류가 날수있으니 여긴 타이핑을 추천합니다.
create database nextcloud;
create user ‘dalso’@’%’ identified by ‘password’;
grant all privileges on nextcloud.* to dalso@’%’;
flush privileges;
여기까지 진행하면 mariadb 셋팅은 완료됩니다.
nextcloud docker container 생성
마찬가지로 Container > Add container
이름은 편한대로..
image : linuxserver/nextcloud
network같은경우 443:443을 하라고하는데 우리의 기본443은 추후에 사용예정이므로 임의로 8888로 해줍니다.
port 8888:443
그다음 아래로 쭈욱 내려와서 Advanced container settings
Volumes
앞서 만든 디렉터리들을 매칭시켜줍니다.
/data/nextcloud/config : /config
/data/nextcloud/data : /data
환경변수(Env) 입니다
PUID : 1000
PGID : 1000
TZ : Asia/Seoul
Restart policy
재부팅시 항상 Always 설정
중간의 Deploy를 클릭하면 컨테이너 생성이 완료됩니다.
그리고 아래 mariadb도 기억해둡시다
nextcloud 방화벽 설정
8888포트를 선택했으니 이전과 동일하게 정책을 생성해주면됩니다.
테스트
nextlcloud의 경우 https가 설정되어있어 https로 접근해야합니다.
https://dalso.duckdns.org:8888
관리자 계정은 원하는대로 입력
저장 소 및 데이터 베이스를 확장하면 아래처럼 나오는데 여기서 MySQL/MariaDB를 선택해줍니다.
그리고 아까 생성한 nextcloud의 DB계정과 user 정보 위에서 확인한 mariadb의 내부 ip:3306을 넣어줍니다.
그리고 아래쪽에있는 install 클릭
간단한 기본패키지도 설치됩니다. (하기싫으면 안해도 됨…)
설치 완료!
이것저것 만져보면 됩니다.
이걸로 6번째 글까지 완료되었습니다.
아직 개선사항이 많기때문에.. 설정작업을 더하게되면 좀더 편하게 이용하실수있을겁니다.
진행 순서
- [GCP]VM인스턴스 생성하기(Ubuntu OS)
- [GCP]VM 인스턴스 고정 IP할당 및 Nginx 설치.
- [GCP]VM(ubuntu OS) Docker 설치하기.(portainer 추가)
- [GCP]서비스 운영을 위한 무료 도메인 발급받기
- [GCP]Docker를 이용한 Torrent 서비스 구축하기.
[GCP]Docker를 이용한 Nextcloud 서비스 구축하기.(MariaDB 추가)[GCP]Nextcloud 설정 변경하기 및 도메인 SSL,reverse proxy 적용하기.- [GCP]Nextcloud 설치를 위한 PHP, MariaDB 설치하기 + SSL 적용.
- [GCP]LEMP 스택으로 Nextcloud 구축.
- [GCP]Nextcloud 최적화하기(nginx,php-fpm 설정)
- [GCP]Docker를 이용한 Jellyfin 서비스 구축하기.
- [GCP]Docker를 이용한 PLEX 서비스 구축하기.
- [GCP]Nextcloud를 이용해 Webdav 사용하기.
Error while trying to create admin user: Failed to connect to the database: An exception occurred in driver: SQLSTATE[HY000] [1045] Access denied for user
next cloud 에서 이런 오류가 떠 계정이 만들어지지 않네요 ㅠ
잘보고있습니다!
음 db와 연결이 되지않는다는 오류인데 db는 정상적으로 만드셨을까요??
다시 처음부터 시행해보니 되는것 같아요 감사합니다 ㅎㅎ
도커 입문자로서 포테이너 GUI로 설명해주셔서 쉽게 따라할 수 있었어요
감사합니다 ㅎㅎ
도움이 되셨다면 다행입니다 ㅎㅎ 방문감사합니다~
설치후 https://*********.duckdns.org:8888 로 접속하고 계정 생성 시,
Error while trying to create admin user: Failed to connect to the database: An exception occurred in the driver: SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Name does not resolve
라고 뜹니다.
도커에 설치된 패키지 버전이 낮아서 그럴까요?
데이터베이스 연결실패로 보이네요. svrforum.com에 에러로그와 스크린샷을 함ㅁ께찍어주시면 트러블슈팅에 도움이될듯합니다.
다행히 해당 오류는 해결 되었으나, 모종의 이유로 넥스트클라우드를 재설치 하였는데 이제는
Internal Server Error
The server encountered an internal error and was unable to complete your request.
Please contact the server administrator if this error reappears multiple times, please include the technical details below in your report.
More details can be found in the webserver log.
라고 뜨네요 http 500 에러라는데 서버쪽 문제라는데 재설치 할때마다 계속 모르던 오류가 나와서 당황스럽네요;;
php나 nginx의 에어로그를 한번보셔야할듯합니다.
svrforum.com 이쪽에 스크린샷과함께 로그를 남겨주시면 트러블슈팅에 도움을 드릴수있을거같습니다.
답변 감사합니다.