Nextcloud는 파일 동기화, 캘린더, 연락처, 문서 편집을 대형 클라우드 업체에 파일을 맡기는 대신 내가 통제하는 서버에서 제공합니다. VPS에서 Docker Compose로 실행하는 방법은 다음과 같습니다.
시작하기 전에
- 2 vCPU와 4 GB RAM의 VPS면 무난한 시작입니다. 저장 공간이 주된 제약이므로 파일에 맞는 디스크 크기를 고르세요.
- 서버를 가리키는 도메인. DNS 가이드에서 다룹니다.
- Docker 설치. Ubuntu에 Docker 설치하기를 참고하세요.
1. Compose 파일
mkdir -p ~/nextcloud && cd ~/nextcloud
cat > compose.yaml <<'EOF'
services:
db:
image: mariadb:11
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
environment:
MYSQL_ROOT_PASSWORD: change-me-root
MYSQL_PASSWORD: change-me-db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
volumes:
- db:/var/lib/mysql
redis:
image: redis:7-alpine
restart: unless-stopped
app:
image: nextcloud:stable
restart: unless-stopped
depends_on: [db, redis]
ports:
- "127.0.0.1:8080:80"
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: change-me-db
REDIS_HOST: redis
volumes:
- nc:/var/www/html
volumes:
db:
nc:
EOF
docker compose up -d
실행하기 전에 세 개의 비밀번호를 모두 변경하세요. 긴 무작위 문자열을 사용하세요.
2. 앞단에 HTTPS 두기
127.0.0.1:8080으로 프록시하는 Nginx server 블록을 추가한 다음 Nginx 가이드처럼 Certbot을 실행하세요. Nextcloud가 올바른 프로토콜을 인식하고 대용량 업로드가 작동하려면 프록시 블록에 다음 줄이 필요합니다:
client_max_body_size 2G;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
}
3. 설정 마무리
도메인을 열고 관리자 계정을 만드세요. 그런 다음 신뢰할 수 있는 도메인 목록에 내 도메인을 추가하고 프록시 정보를 설정합니다:
docker compose exec -u www-data app php occ config:system:set trusted_domains 1 --value=cloud.example.com
docker compose exec -u www-data app php occ config:system:set overwriteprotocol --value=https
4. 건강하게 유지하기
- 업데이트:
docker compose pull && docker compose up -d, 한 번에 메이저 버전 하나씩. - 백그라운드 작업: 관리자 설정에서 Cron으로 전환하고
cron.php를 5분마다 실행하는 호스트 cron 항목을 추가하세요. - 백업: 두 볼륨과 데이터베이스 덤프를 모두 저장하세요. VPS 백업 방법을 참고하세요.
- 2단계 인증 로그인: 모든 계정에 TOTP 앱을 활성화하세요.