오늘은 AWS 인스턴스에 NextCloud를 구축하는 방법을 소개하려고 합니다.
Nextcloud는 ownCloud 개발자중 하나인 Frank Karlitschek가 ownCloud를 포크해 개발한 오픈소스 기반 클라우드 스토리지 소프트웨어입니다.
지난 2016년 4월에 출시해 지속적으로 개발되고 있으며, 로컬 컴퓨터 또는 외부 파일 스토리지 호스팅에 사용할 수 있습니다.
여타 클라우드 파일 서비스처럼 파일 저장 및 공유 서비스를 포함하여 문서 작업, 가상화, 클라우드, 컴퓨팅 기술 등 하나의 플랫폼에서 사용할 수 있고, MS 오피스, 구글 드라이브 등 추가 기능을 써드파티 앱을 통해 모듈식으로 구현할 수 있습니다.
운영체제
Ununtu 20.04
sudo su
apt-get update -y
apt-get upgrade -y
sudo apt update
sudo apt install apache2
systemctl stop apache2.service
systemctl start apache2.service
systemctl enable apache2.service
systemctl status apache2.service
[server IP]:80
아래와 같이 뜬다면 정상적으로 설치가 되었습니다.
sudo apt install php-imagick libapache2-mod-php7.4 php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp
sudo service apache2 restart
sudo apt install mariadb-server -y
systemctl start mariadb
systemctl enable mariadb
systemctl status mariadb
mysql_secure_installation
이때 몇가지 질문을 입력합니다.
Enter current password for root (enter for none): 엔터 눌러서 스킵
Set root password? [Y/n] `Y`
Remove anonymous users? [Y/n] `Y`
Disallow root login remotely? [Y/n] `Y`
Remove test database and access to it? [Y/n] `Y`
Reload privilege tables now? [Y/n] `Y`
mysql -u root -p
create database nextcloud;
create user nextclouduser@localhost identified by 'password입력';
grant all privileges on nextcloud_db.* to nextclouduser@localhost identified by 'password입력';
flush privileges;
EXIT;
password입력 부분에 원하는 비밀번호로 입력해주세요.
sudo apt install curl git
curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer
cd /var/www/html
sudo git clone --branch stable20 https://github.com/nextcloud/server.git nextcloud
cd /var/www/html/nextcloud
sudo composer install
sudo git submodule update --init
sudo chown -R www-data:www-data /var/www/html/nextcloud/
sudo chmod -R 755 /var/www/html/nextcloud/
vi /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80>
ServerAdmin 이메일주소
DocumentRoot /var/www/html/nextcloud/
ServerName [ServerIP]/nextcloud
ServerAlias [ServerIP]/nextcloud
Alias /nextcloud "/var/www/html/nextcloud/"
<Directory /var/www/html/nextcloud/>
Options +FollowSymlinks
AllowOverride All
Require all granted
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/html/nextcloud
SetEnv HTTP_HOME /var/www/html/nextcloud
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
[ServerIP]에 사용자의 서버 IP 주소를 입력하세요.
sudo a2ensite nextcloud.conf
sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
sudo systemctl restart apache2.service
사용함을 클릭하면 사용안함으로 버튼이 변경됩니다.
다시 우측 상단 메뉴에서 설정을 클릭합니다.
폴더 이름
원하는 폴더명
설정
버킷 : S3 버킷명
호스트명 : Endpoint 입력
지역 : (아시아 태평양 서울이라면 ->) ap-northeast-2
접근키 : Access Key ID 입력
비밀키 : Secret Key ID 입력
그룹 설정
생성된 그룹 중 권한 줄 그룹 선택(복수 가능)
성공적으로 연동 된 것을 확인 할 수 있습니다.
apt -y install php7.4-ldap
systemctl restart php7.4-fpm
LDAP 앱의 사용함 버튼이 활성화 되어 있고 사용함 버튼을 클릭해 사용안함으로 변경되면
LDAP/AD 메뉴가 보이게 됩니다.
서버 설정
IP주소 부분에는 LDAP/AD 서버 IP를 입력합니다.
이후 포트 감지 버튼을 클릭하면 자동으로 포트 번호가 입력 됩니다.
사용자 DN, 암호를 입력후 인증 정보 저장을 누르고
기본 DN을 입력후 기본 DN 시험을 클릭하여 정상적으로 연결이 된 경우
아래와 같이 설정 올바름 표시가 뜨게 됩니다.
사용자 설정
사용자로 등록할 그룹을 선택해서 '>' 버튼을 클릭합니다.
로그인 속성 설정
Nextcloud에 로그인을 할 때 LDAP/AD서버의 어떤 정보로 로그인을 진행할 지 선택하는 속성입니다.
그룹 설정
사용자 탭에서 그룹 추가할 그룹을 선택하여 '>' 버튼을 클릭해 오른쪽으로 이동 시킵니다.
이제 설정이 완료 됐고 사용자 탭에서 추가한 사용자들을 확인 할 수 있습니다.