VPS에 Nextcloud를 설치하는 방법
ApexVPS 팀 작성 • 최종 업데이트: 2026년 7월 • 읽는 데 9분
이 nextcloud vps 설정 가이드는 완전히 제어하는 서버에서 파일, 캘린더, 연락처, 사진 등 개인 클라우드를 직접 호스팅하는 과정을 안내합니다. VPS에서 Nextcloud를 실행하면 전용 리소스, 전체 루트 액세스, 사용자당 구독료 없음이 제공되므로 데이터는 사용자의 것입니다. 아래에서 사전 요구 사항, 두 가지 검증된 설치 경로(Docker Compose 또는 수동 LAMP 스택), Let's Encrypt로 HTTPS 추가 방법, 서버를 빠르고 안전하게 유지하는 튜닝 및 백업 단계를 확인할 수 있습니다. 모든 명령은 새 Ubuntu 또는 Debian 서버를 대상으로 합니다.
VPS에서 Nextcloud를 자체 호스팅하는 이유는?
Nextcloud는 Google Drive, Dropbox 및 생산성 스위트의 상당 부분을 직접 실행하는 소프트웨어로 대체하는 오픈소스 플랫폼입니다. VPS는 그 자연스러운 집입니다. 공유 호스팅과 달리 루트 액세스, 고정 월 비용, 예측 가능한 성능을 얻을 수 있습니다. 진정한 전용 VPS에서는 CPU를 놓고 다투는 시끄러운 이웃이 없으므로 여러 사람이 동시에 파일을 동기화할 때 중요합니다. 어떤 서비스를 직접 실행할 가치가 있는지 고려 중이라면 셀프 호스팅용 VPS 선택 개요에서 일반적인 워크로드와 각각 필요한 헤드룸을 비교합니다.
시작하기 전 사전 요구 사항
세 가지가 필요합니다: Ubuntu 22.04/24.04 또는 Debian 12가 설치된 VPS, DNS를 편집할 수 있는 도메인 이름, 그리고 sudo 권한이 있는 사용자로 서버에 SSH 액세스. 도메인은 테스트에 엄격히 필요하지는 않지만, 신뢰할 수 있는 TLS 인증서를 발급하려면 도메인이 없으면 안 되므로 실제 사용에는 필수로 간주하세요.
올바른 VPS 크기 선택
크기는 서버를 사용하는 사람 수와 미디어 저장 여부에 따라 달라집니다. 단일 사용자 또는 문서를 동기화하는 가족의 경우 2 vCPU와 4 GB RAM이 적합합니다. Photos, Memories 또는 미디어 앱을 추가하거나 활성 계정이 5개 이상이 되면 Business-class 플랜 이상으로 업그레이드하세요. 추가 RAM, 더 빠른 NVMe, 시간별 스냅샷 덕분에 썸네일 생성과 미리보기가 훨씬 원활해집니다. 계층을 비교하려면 VPS 가격 페이지를 참조하세요. 나중에 확장하는 것은 빠르므로 작게 시작하고 성장해도 괜찮습니다.
서버로 도메인 지정
cloud.example.com 같은 호스트 이름을 서버의 공개 IP로 가리키는 A 레코드(IPv6를 사용하는 경우 AAAA 레코드)를 만듭니다. DNS 전파에는 시간이 걸릴 수 있습니다. 인증서를 요청하기 전에 확인하세요:
dig +short cloud.example.com
경로 1 — Docker Compose로 Nextcloud
컨테이너는 깨끗하고 반복 가능한 설치를 위한 가장 빠른 방법이며 Nextcloud, 데이터베이스, 캐시를 시스템 나머지와 분리합니다. 컨테이너가 처음이라면 VPS에서 Docker 초보자 가이드가 기본을 먼저 다룹니다. 공식 편의 스크립트로 Docker를 설치한 다음 사용자를 docker 그룹에 추가하세요:
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# log out and back in so the group change takes effect
MariaDB 및 Redis로 Nextcloud를 실행하는 compose.yaml 프로젝트 폴더를 만듭니다. 앱은 127.0.0.1:8080에 바인딩되어 나중에 추가하는 리버스 프록시를 통해서만 인터넷에 접근할 수 있습니다:
mkdir ~/nextcloud && cd ~/nextcloud
nano compose.yaml
services:
db:
image: mariadb:10.11
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MARIADB_ROOT_PASSWORD=change-this-root-password
- MYSQL_PASSWORD=change-this-db-password
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
redis:
image: redis:alpine
restart: always
app:
image: nextcloud:apache
restart: always
ports:
- "127.0.0.1:8080:80"
depends_on:
- db
- redis
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_HOST=db
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_PASSWORD=change-this-db-password
- REDIS_HOST=redis
volumes:
db:
nextcloud:
스택을 시작하고 세 컨테이너가 모두 올라오는지 확인하세요:
docker compose up -d
docker compose ps
이제 Nextcloud가 localhost:8080에서 수신 대기 중입니다. HTTPS로 안전하게 노출하려면 TLS 섹션으로 건너뛰세요.
경로 2 — LAMP 스택에 수동 설치
구성 요소를 직접 관리하려면 클래식 Linux, Apache, MariaDB, PHP(LAMP) 설치가 완전한 제어를 제공합니다. 시스템을 업데이트하고 웹 서버, 데이터베이스 및 Nextcloud가 필요로 하는 PHP 확장을 설치하세요:
sudo apt update && sudo apt upgrade -y
sudo apt install -y apache2 mariadb-server libapache2-mod-php unzip \
php php-gd php-mysql php-curl php-mbstring php-intl php-xml \
php-zip php-bcmath php-gmp php-imagick
데이터베이스를 잠그고 전용 데이터베이스와 사용자를 만드세요:
sudo mysql_secure_installation
sudo mysql -u root -p
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'change-this-db-password';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;
웹 루트에 최신 릴리스를 다운로드하고 Apache가 쓸 수 있도록 소유권을 설정합니다:
cd /var/www
sudo wget https://download.nextcloud.com/server/releases/latest.zip
sudo unzip latest.zip
sudo chown -R www-data:www-data /var/www/nextcloud
도메인에 대한 Apache 가상 호스트를 만들고 Nextcloud에 필요한 모듈과 함께 활성화한 후 리로드합니다:
sudo a2enmod rewrite headers env dir mime
sudo a2ensite nextcloud.conf
sudo systemctl reload apache2
TLS로 보호하기 (Let's Encrypt)
Nextcloud를 일반 HTTP로 실행하지 마세요. 로그인과 파일이 암호화되지 않고 전송됩니다. Let's Encrypt 프로젝트의 Certbot은 무료로 신뢰할 수 있는 인증서를 발급하고 자동으로 갱신합니다. 수동 Apache 설치는 Apache 플러그인을 사용하세요:
sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d cloud.example.com
Docker 경로의 경우 Nginx를 127.0.0.1:8080로 전달하는 리버스 프록시로 앞에 두고 Certbot으로 보호하세요:
sudo apt install -y nginx certbot python3-certbot-nginx
sudo certbot --nginx -d cloud.example.com
Certbot은 인증서가 만료되기 전에 갱신하는 systemd 타이머를 설치합니다. 건식 실행으로 갱신이 작동하는지 확인할 수 있습니다:
sudo certbot renew --dry-run
첫 실행 설정
브라우저에서 https://cloud.example.com을 엽니다. 설정 화면에서 관리자 계정을 만들고, 수동 설치는 이전에 생성한 데이터베이스 이름, 사용자, 비밀번호를 입력합니다 (Docker 이미지는 이미 데이터베이스에 연결되어 있으므로 이 단계를 건너뜁니다). 마법사를 완료하면 Nextcloud가 파일 보기 화면에 표시됩니다. 경고가 표시되면 즉시 도메인을 trusted_domains 목록에 추가하세요 — Docker의 경우 컨테이너 내부의 구성을 편집해야 합니다:
docker compose exec -u www-data app \
php occ config:system:set trusted_domains 1 --value=cloud.example.com
수동 설치에서는 설치 디렉토리에서 sudo -u www-data php /var/www/nextcloud/occ ...와 함께 동일한 명령을 실행합니다. occ 명령줄 도구는 이후 주요 관리 진입점입니다.
튜닝 및 백그라운드 작업
기본 설치도 작동하지만 몇 가지 변경 사항이 실제 차이를 만듭니다. 백그라운드 작업을 AJAX에서 시스템 cron으로 전환하여 아무도 로그인하지 않아도 작업이 안정적으로 실행되도록 합니다. 수동 설치에서는 웹 사용자에 대한 cron 항목을 추가합니다:
sudo crontab -u www-data -e
# add this line, then save:
*/5 * * * * php -f /var/www/nextcloud/cron.php
그런 다음 관리 → 기본 설정에서 "Cron" 옵션을 설정합니다. 기타 유용한 조정: PHP memory_limit을 최소 512M으로 올리고, 파일 잠금 및 캐싱을 위해 Redis를 활성화하고 (위 Compose 파일에 이미 포함됨), 무거운 작업이 밤에 실행되도록 유지 관리 창을 설정합니다. 내장 검사를 실행하면 누락된 항목을 찾는 데 도움이 됩니다:
sudo -u www-data php /var/www/nextcloud/occ status
sudo -u www-data php /var/www/nextcloud/occ setupchecks
실제로 복원할 수 있는 백업
VPS 스냅샷은 첫 번째 방어선입니다 — Starter Pro의 일일 백업, Business 및 Enterprise의 시간별 스냅샷 — 그러나 파일별로 복원할 수 있는 별도의 애플리케이션 수준 백업을 유지하는 것이 좋은 습관입니다. Nextcloud를 유지 관리 모드로 전환하고, 데이터베이스를 덤프하고, 데이터 디렉토리를 아카이브한 다음 유지 관리 모드를 끕니다:
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
mysqldump --single-transaction -u nextcloud -p nextcloud > nextcloud-db.sql
sudo tar -czf nextcloud-data.tar.gz /var/www/nextcloud/data
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
Docker 설치의 경우 docker compose exec -u www-data app php occ ...를 통해 동일한 occ 호출을 실행하고 명명된 볼륨을 백업합니다. 서버 외부에 하나 이상의 복사본을 저장하고 가끔 복원을 테스트하세요 — 테스트되지 않은 백업은 희망에 불과합니다.
계속 실행하기
각 릴리스 후 내장 업데이터 또는 웹 인터페이스를 통해 Nextcloud를 업데이트하고, sudo apt upgrade로 운영 체제를 패치하고, 관리자 영역의 보안 및 설정 경고 패널을 검토하세요. 인프라 측면의 DDoS 보호, 개인 네트워킹 및 24/7 모니터링, 애플리케이션 측면의 Let's Encrypt 및 정기 업데이트를 통해 자체 호스팅 Nextcloud는 대형 클라우드 제품군에 대한 진정으로 신뢰할 수 있는 대안입니다.
자주 묻는 질문
Nextcloud VPS 설정에 얼마나 많은 RAM이 필요한가요?
문서를 동기화하는 단일 사용자 또는 가족에게는 4GB RAM과 2 vCPU로 충분합니다. 사진 또는 비디오 라이브러리, 미리보기 생성 또는 여러 활성 사용자를 추가하면 8GB RAM과 더 빠른 NVMe를 갖춘 Business 등급 플랜이 더 적합합니다. Enterprise는 더 큰 팀을 위해 16GB와 NVMe RAID를 추가합니다.
Docker와 수동 LAMP 설치 중 어떤 것을 선택해야 하나요?
깔끔하고 반복 가능한 스택을 원한다면 Docker Compose를 선택하고, Apache, PHP, MariaDB를 직접 관리하고 싶다면 수동 LAMP 방식을 선택하세요. 둘 다 root 액세스 권한이 있는 VPS에서 완벽하게 지원되며, 최종 결과는 동일한 Nextcloud입니다.
자가 호스팅 Nextcloud는 안전한가요?
네, 제대로 구성하면 안전합니다. Let's Encrypt 인증서로 모든 트래픽을 HTTPS로 제공하고, OS와 Nextcloud를 최신 상태로 유지하며, 강력한 비밀번호와 2단계 인증을 사용하고, VPS 백업에 의존하세요. 직접 호스팅하기 때문에 제3자가 파일에 상시 접근할 수 없습니다.
도메인 이름이 필요한가요?
사실상 필요합니다. 원시 IP 주소로 테스트할 수 있지만, 신뢰할 수 있는 TLS 인증서에는 도메인이 필요하며, 모바일 및 데스크톱 동기화 클라이언트는 적절한 HTTPS 호스트 이름을 기대합니다. 서버를 가리키는 A 레코드가 있는 저렴한 도메인 하나면 충분합니다.
신용카드 없이 결제할 수 있나요?
네. ApexVPS 결제는 OxaPay를 통한 암호화폐 전용으로, Bitcoin, Ethereum, USDT 및 30개 이상의 코인을 지원하며 신용카드나 은행 계좌가 필요 없습니다. 가입 시 액세스 정보를 받을 이메일과 SSH 키 또는 선호 OS 같은 선택적 메모만 필요합니다. 이름, 주소, KYC는 필요 없습니다.