Rocky Linux에 ownCloud 설치 및 구성 가이드
개요
ownCloud는 Google Drive나 Dropbox와 유사한 자체 호스팅 파일 공유 서비스를 구축할 수 있는 오픈소스 소프트웨어입니다. 서버(ownCloud 서버 애플리케이션)와 다양한 클라이언트(Linux, Windows, macOS, Android, iOS)를 제공합니다. 서버는 주로 PHP, JavaScript, Go로 작성되어 있으며 파일 동기화, 캘린더, 주소록, 작업 관리 등 확장 가능한 기능을 제공합니다.
이 문서는 Rocky Linux 8 계열에 ownCloud를 설치하고 프로덕션에서 바로 사용할 수 있도록 구성하는 방법을 단계별로 안내합니다. 포함 항목: LAMP(HTTPD + PHP 7.4 + MariaDB), Redis 캐시, SELinux 설정, Firewalld 설정, SSL(Let’s Encrypt) 권장 구성, 크론 작업 설정, 성능·보안 권장사항 및 운영 체크리스트.
중요: 이 가이드는 ownCloud 최신 안정(stable) 릴리스와 PHP 7.4 조합을 기준으로 작성되었습니다. ownCloud와 PHP 버전 호환성은 릴리스에 따라 변경될 수 있으니, 릴리스 노트를 확인하세요.
주요 대상
- 시스템 관리자 및 DevOps 엔지니어
- 자체 호스팅 파일 공유를 구축하려는 IT 담당자
- Rocky Linux에 웹 서비스 운영 경험이 있는 사용자
요구사항
- Rocky Linux 8.x 서버(예: 호스트명: owncloud-server, 예제 IP: 192.168.5.100)
- sudo 권한을 가진 비루트 계정 또는 루트 계정
- 도메인 또는 서브도메인(예: howtoforge.local)이 서버 IP를 가리키도록 DNS 구성
- 인터넷 액세스(패키지, Let’s Encrypt 등)
중요: 프로덕션에서는 고가용성, 정기 백업, 모니터링, 로그 집계 설계가 필요합니다. 여기서는 단일 서버 기준의 설치·구성 절차를 다룹니다.
설치 전 고려사항 (용어 정의)
- LAMP: Linux + Apache(httpd) + MariaDB(MySQL) + PHP
- SELinux: Security-Enhanced Linux, 접근 제어 보안 레이어
- Redis: 메모리 기반 키-값 저장소(캐시/세션 저장소로 사용)
- Let’s Encrypt: 무료 SSL/TLS 인증서 발급자
1. 기본 의존성 설치 및 리포지토리 구성
다음 단계에서는 EPEL 및 Redis(최신 버전), 기본 패키지를 설치합니다.
설치 전에 시스템을 최신 상태로 업데이트하는 것이 좋습니다.
sudo dnf update -yEPEL 저장소 설치:
sudo dnf install epel-release
Redis v6 모듈 활성화(예제는 Redis 6 활성화):
sudo dnf module reset redis
sudo dnf module enable redis:6
기본 패키지 설치(예: openssl, ImageMagick, zip 도구 등):
sudo dnf install libsmbclient redis unzip libzip bzip2 openssl rsync ImageMagick -y
Redis 서비스 활성화 및 시작:
sudo systemctl enable --now redis
sudo systemctl status redis
노트: Redis는 ownCloud에서 캐시 및 세션 저장으로 권장됩니다. 시스템 메모리에 여유가 있는지 확인하세요.
2. PHP 7.4 설치 (REMI 저장소 사용)
ownCloud의 많은 안정화 버전은 PHP 7.4를 요구합니다. REMI 저장소를 사용해 PHP 7.4를 설치합니다.
REMI 저장소 추가:
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
PHP 7.4 모듈 활성화:
sudo dnf module reset php
sudo dnf module enable php:remi-7.4 -y
PHP 및 확장 패키지 설치(ownCloud 권장 확장 포함):
sudo dnf install --enablerepo=remi php php-intl php-mysql php-mbstring \
php-imagick php-igbinary php-gmp php-bcmath \
php-curl php-gd php-zip php-imap php-ldap \
php-bz2 php-ssh2 php-common php-json \
php-xml php-devel php-apcu php-redis \
php-smbclient php-pear php-phpseclib -y설치 후 PHP 버전 확인:
php --version
참고: 특정 환경에서는 PHP 설정(php.ini)에서 메모리 제한, 업로드 최대 크기(post_max_size, upload_max_filesize), max_execution_time 등을 조정해야 합니다. 예: upload_max_filesize = 512M, post_max_size = 512M 등.
권장 PHP 설정 예시:
- memory_limit = 512M
- upload_max_filesize = 512M
- post_max_size = 512M
- max_execution_time = 360
파일: /etc/php.ini 또는 /etc/php.d/yourconf.ini 에 설정
3. Apache(httpd) 설치 및 방화벽 설정
ownCloud는 Apache, Nginx 등에서 운영할 수 있습니다. 이 가이드에서는 Apache(httpd)를 사용합니다.
httpd 설치:
sudo dnf install httpd httpd-devel httpd-tools mod_ssl -y
httpd 활성화 및 시작:
sudo systemctl enable --now httpd
sudo systemctl status httpd
Firewalld에 HTTP/HTTPS 허용:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-services
PHP 동작 확인을 위해 /var/www/html/info.php 생성:
cat <
EOF 브라우저에서 http://서버_IP/info.php 접속해 PHP 설정을 확인합니다.

보안 팁: 설치 확인 후 info.php 파일은 제거하세요.
4. MariaDB 설치 및 ownCloud 전용 데이터베이스 구성
ownCloud 프로덕션 설치는 MariaDB/MySQL 또는 PostgreSQL을 권장합니다. 여기서는 MariaDB를 사용합니다.
MariaDB 설치 및 시작:
sudo dnf install mariadb-server -y
sudo systemctl enable --now mariadb
sudo systemctl status mariadb
MariaDB 보안 설정 실행:
sudo mysql_secure_installation대화형 설정 권장 답변(예제):
- unix_socket 인증 전환? n
- root 비밀번호 변경? y (강력한 비밀번호 입력)
- 원격 root 로그인 금지? y
- 익명 사용자 삭제? y
- test 데이터베이스 삭제? y
- 권한 테이블 리로드? y
데이터베이스 및 전용 계정 생성:
sudo mysql -u root -p
CREATE DATABASE owncloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'owncloud'@'localhost' IDENTIFIED BY 'owncloudpass';
GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit(비밀번호는 예시입니다. 실사용 환경에서는 강력한 비밀번호를 사용하세요.)

권한 확인:
SHOW GRANTS FOR 'owncloud'@'localhost';
DB 튜닝 권장사항(간단):
- innodb_buffer_pool_size: 가능한 메모리의 50%-70% 권장(전용 DB서버가 아닌 경우 보수적으로 설정)
- max_connections: 동시 사용자 수에 따라 조정
설정 파일: /etc/my.cnf.d/server.cnf 에 반영
5. ownCloud 소스 다운로드 및 설치 디렉터리 준비
작업 디렉터리 이동 및 최신 stable 패키지 다운로드(예: owncloud-complete-latest.tar.bz2):
cd /var/www
wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2
wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2.sha256SHA256 검증:
sudo sha256sum -c owncloud-complete-latest.tar.bz2.sha256 < owncloud-complete-latest.tar.bz2압축 해제 및 권한 설정:
sudo tar -xvjf owncloud-complete-latest.tar.bz2
sudo chown -R apache:apache /var/www/owncloud
sudo chmod -R 750 /var/www/owncloud권한 설명: 웹 서버 사용자(apache)가 소유하고 읽기·쓰기 권한(필요한 폴더에 한해)만 부여합니다.
6. Apache 가상호스트 구성 및 HTTPS 준비
ownCloud를 서브디렉터리(/owncloud)로 운영하거나 독립 가상호스트로 운영할 수 있습니다. 예제는 https://howtoforge.local/owncloud/ 형태를 가정합니다.
가상호스트 파일 생성: /etc/httpd/conf.d/owncloud.conf
(원본 예제 설정을 그대로 사용)
ServerName howtoforge.local
Redirect permanent / https://howtoforge.local/
ServerName howtoforge.local
DocumentRoot /var/www
Protocols h2 http:/1.1
Redirect permanent / https://howtoforge.local/
ErrorLog /var/log/httpd/howtoforge.local-error.log
CustomLog /var/log/httpd/howtoforge.local-access.log combined
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/howtoforge.local/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/howtoforge.local/privkey.pem
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCompression off
Header always set Strict-Transport-Security "max-age=63072000"
Alias /owncloud "/var/www/owncloud/"
Options +FollowSymlinks
AllowOverride All
Dav off
SetEnv HOME /var/www/owncloud
SetEnv HTTP_HOME /var/www/owncloud
설정 문법 검사 및 httpd 재시작:
sudo apachectl configtest
sudo systemctl restart httpd
Let’s Encrypt 인증서 발급(권장): Certbot을 사용한 예시
sudo dnf install certbot python3-certbot-apache -y
sudo certbot --apache -d howtoforge.local도메인이 로컬 네트워크에만 있다면 DNS 및 포트(80/443) 접근성이 필요합니다. 테스트 목적이라면 self-signed 인증서를 사용하거나 로컬 CA를 구성할 수 있습니다.
보안 팁: HSTS 헤더와 강력한 Cipher Suite를 설정해 TLS 보안을 강화합니다.
7. SELinux 구성
SELinux가 활성(enforcing)인 경우, ownCloud 디렉터리의 SELinux 컨텍스트를 올바르게 설정하고 Apache가 네트워크 서비스(데이터베이스, memcache 등)에 접속할 수 있도록 허용해야 합니다.
필요 패키지 설치:
sudo dnf install policycoreutils-python-utils -yownCloud 디렉터리 라벨링 및 restorecon 적용:
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/data(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/config(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/apps(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/apps-external(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/.htaccess'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/.user.ini'
sudo restorecon -Rv '/var/www/owncloud/'Apache 관련 SELinux boolean 설정:
sudo setsebool -P httpd_can_network_connect_db on
sudo setsebool -P httpd_unified on
sudo setsebool -P httpd_can_connect_ldap on
sudo setsebool -P httpd_can_network_connect on
sudo setsebool -P httpd_can_network_memcache on
sudo setsebool -P httpd_can_sendmail on
sudo setsebool -P httpd_use_cifs on
sudo setsebool -P httpd_use_fusefs on
sudo setsebool -P httpd_use_gpg on
문제 해결: SELinux 관련 오류가 발생하면 /var/log/audit/audit.log를 확인하고 audit2why / audit2allow를 사용해 필요한 정책을 생성(검토 후 적용)하세요.
sudo ausearch -m AVC,USER_AVC -ts recent | audit2why
sudo ausearch -m AVC,USER_AVC -ts recent | audit2allow -M mypol
sudo semodule -i mypol.pp주의: audit2allow로 생성된 규칙을 무심코 적용하지 마세요. 보안 영향도를 검토해야 합니다.
8. ownCloud 웹 설치 마법사 실행
브라우저에서 https://howtoforge.local/owncloud/ 에 접속하면 설치 페이지가 나타납니다.
- 관리자 계정 생성
- 데이터 폴더 위치 확인(/var/www/owncloud/data 권장)
- 데이터베이스 유형: MySQL/MariaDB 선택
- DB 명, 사용자, 패스워드 입력
- Finish setup 클릭

설치 완료 후 로그인 페이지로 이동:

로그인하면 사용자 대시보드가 표시됩니다. 새 폴더 생성, 파일 업로드 등을 테스트하세요.

파일 업로드 및 폴더 생성 예:

9. 크론 작업 구성 (백그라운드 작업)
ownCloud는 백그라운드 작업을 실행해야 합니다. 시스템 cron을 사용하도록 설정하는 것이 권장됩니다.
occ 명령으로 백그라운드 유형 전환:
sudo -u apache /var/www/owncloud/occ background:cronapache 사용자로 크론 편집:
sudo crontab -u apache -e다음 라인 추가(15분마다 실행):
*/15 * * * * /usr/bin/php -f /var/www/owncloud/occ system:cron
대시보드 > 사용자 메뉴 > 설정 > 일반에서 “All checks passed” 메시지를 확인해 모든 기본 요구사항이 충족되었는지 확인합니다.

10. 성능 및 캐시 설정 (Redis + APCu 권장)
ownCloud 성능을 위해 APCu(로컬 캐시)와 Redis(세션/파일 캐시용 외부 캐시)를 조합해 사용합니다.
Redis 예비 설정(서버에 설치되어 있어야 함):
# redis.conf 에 bind, protected-mode 등 네트워크 접근 확인
sudo systemctl restart redisownCloud config.php에 Redis 설정 예시(파일: /var/www/owncloud/config/config.php, 배열 형태로 병합):
'\\OC\\Memcache\\APCu',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => array(
'host' => '127.0.0.1',
'port' => 6379,
'timeout' => 0.0,
'dbindex' => 0,
),
);설명: memcache.local은 APCu, locking은 Redis로 사용하는 예시입니다. 설정 변경 후 웹서비스 재시작 필요.
PHP OPcache, APCu 활성화 여부도 확인하세요.
11. 백업 및 업그레이드 전략
정기 백업은 필수입니다. 데이터 폴더와 데이터베이스를 별도로 백업하세요.
데이터베이스 백업 예 (mysqldump):
sudo mysqldump -u root -p owncloud > /root/backup/owncloud-db-$(date +%F).sql데이터 폴더 백업 예 (rsync):
sudo rsync -Aax /var/www/owncloud/data /root/backup/owncloud-data-$(date +%F)/온사이트와 오프사이트(원격 저장소) 모두에 백업 보관을 권장합니다.
업그레이드 팁:
- 업그레이드 전 반드시 DB와 데이터 폴더 백업
- 업그레이드 전에 ownCloud의 호환 PHP 버전과 앱 호환성을 확인
- 테스트 환경에서 업그레이드를 먼저 검증
12. 보안 하드닝 체크리스트
- HTTPS 강제(포트 443만 허용) 및 HSTS 설정
- Apache AllowOverride 필요 최소화(ownCloud에서 .htaccess 허용이 필요할 수 있음)
- 파일 권한 최소화: 소유자 apache, 그룹 root 또는 apache; 불필요한 쓰기 권한 제거
- 방화벽: 필요한 포트(80,443)만 오픈
- SELinux Enforcing 유지(정책으로 필요한 항목만 허용)
- fail2ban으로 로그인 시도 보호(웹 로그 기반)
- 정기 취약점 스캔 및 패치
파일 권한 예시(권한 복구):
sudo chown -R root:root /var/www/owncloud
sudo chown -R apache:apache /var/www/owncloud/apps /var/www/owncloud/config /var/www/owncloud/data
find /var/www/owncloud -type d -exec chmod 750 {} \;
find /var/www/owncloud -type f -exec chmod 640 {} \;주의: 권한은 배포 방식에 따라 조정이 필요합니다. 앱 업데이트·설치 시 apache 사용자가 쓰기 권한이 필요합니다.
13. 문제 해결 체크리스트
- 웹 페이지가 로드되지 않을 때
- httpd 서비스 상태 확인: sudo systemctl status httpd
- /var/log/httpd/error_log 확인
- SELinux denials: /var/log/audit/audit.log
- DB 연결 오류
- MariaDB 서비스 상태 확인 및 owncloud DB 접근 권한 확인
- config.php의 DB 설정 확인
- 파일 업로드 실패
- PHP 업로드 제한치 확인(upload_max_filesize / post_max_size)
- data 디렉터리 권한 및 SELinux 컨텍스트 확인
- 캐시/세션 문제
- Redis 서비스 상태, 설정 확인
- config.php의 Redis 설정 확인
유용한 명령 요약:
sudo tail -n 200 /var/log/httpd/howtoforge.local-error.log
sudo tail -n 200 /var/log/audit/audit.log
sudo journalctl -u redis -r
sudo -u apache php /var/www/owncloud/occ status
sudo -u apache php /var/www/owncloud/occ maintenance:mode --on14. 운영 가이드(역할 기반 체크리스트)
관리자(Admin):
- SSL 인증서 갱신(예: certbot renew 테스트)
- 정기 백업 및 복원 연습
- 보안 업데이트 적용(패키지, PHP 확장, ownCloud 코어)
- 사용자/권한 관리
운영 엔지니어(DevOps):
- 모니터링(서비스 상태, 디스크 사용량, DB 성능)
- 로그 집계 및 알람 설정
- 성능 튜닝(캐시, DB 버퍼 설정)
일반 사용자:
- 파일 업로드/동기화 테스트
- 2단계 인증(가능하면 활성화)
- 클라이언트 앱 동기화 설정
15. 일상 운영 SOP(간략)
- 장애 발생 시
- 서비스 상태 확인(httpd, mariadb, redis)
- 디스크 용량 확인(df -h)
- 최근 로그 확인(웹/DB/Redis)
- 필요한 경우 유지보수 모드(occ maintenance:mode –on)
- 원인 파악 후 롤백 또는 패치 적용
- 유지보수 모드 해제(occ maintenance:mode –off)
16. 테스트 사례(간단)
- 설치 후 모든 검사 통과: 웹 UI의 “All checks passed” 확인
- 파일 업로드(소형/대형 파일) 정상 동작
- 동시 업로드/다운로드 성능 테스트
- 인증과 권한(공유 링크, 그룹 권한) 동작 확인
17. 대안 및 확장 방안
- 웹서버 대안: Nginx + PHP-FPM 조합(성능 및 리소스 효율성 우수)
- DB 대안: PostgreSQL(운영 경험에 따라 선택)
- 고가용성: 파일 저장소는 NFS/SMB 또는 분산 스토리지, DB는 복제/클러스터 구성
- 외부 로그인: LDAP/Active Directory 통합
18. 업그레이드 및 마이그레이션 팁
- major 업그레이드 전 반드시 test 환경에서 전체 업그레이드 절차 검증
- 앱 호환성 체크(서드파티 앱은 종종 버전 의존성이 있음)
- 필요 시 데이터베이스 스키마 마이그레이션은 occ 명령을 통해 자동 적용
19. 1줄 용어집
- occ: ownCloud 콘솔 명령 도구
- APCu: PHP의 로컬 메모리 캐시
- Redis: 메모리 기반 캐시/세션 저장소
20. 간단한 의사결정 흐름 (설치 유형 선택)
다음 흐름은 “간단한 설치(단일 서버)”와 “프로덕션(분리된 DB/파일스토어)” 중 선택하는 데 도움을 줍니다.
flowchart TD
A[요구: 사용자 수가 50명 이하인가?] -->|예| B[단일 서버 설치 권장]
A -->|아니오| C[DB와 파일스토어 분리 권장]
C --> D{고가용성 필요?}
D -->|예| E[서버 클러스터, 로드밸런서, 복제된 DB]
D -->|아니오| F[분리된 DB와 외부 스토리지'예: NFS']21. 자주 묻는 질문(요약)
Q: PHP 8 지원은 언제 가능한가요? A: ownCloud의 각 릴리스별로 호환성 정보가 다르므로 정식 릴리스 노트를 확인하세요.
Q: 데이터 폴더를 NFS에 둘 수 있나요? A: 네, 가능하나 권한·락 관련 추가 설정이 필요합니다.
결론
이 가이드를 통해 Rocky Linux 서버에 ownCloud를 설치하고, LAMP 스택, Redis, SELinux, Firewalld, SSL, 크론 등을 구성하여 프로덕션에 적합하게 준비하는 방법을 배웠습니다. 설치 후에는 정기 백업, 모니터링, 보안 패치 적용 및 성능 튜닝을 꾸준히 수행하시기 바랍니다.
핵심 요약:
- PHP 7.4 + Apache + MariaDB + Redis 조합 권장
- SELinux 및 방화벽 설정으로 보안 유지
- Redis와 APCu를 통한 캐시 구성으로 성능 개선
- 정기 백업과 업그레이드 검증을 반드시 수행
Important: 배포환경에 따라 설정(권한, SELinux, PHP 메모리 제한 등)을 조정해야 하며, 변경 전에는 항상 백업을 수행하세요.
발표용(요약) 메시지: “Rocky Linux 서버에 ownCloud를 안전하게 설치하고 운영 준비하는 완전 가이드 — LAMP, Redis, SELinux, SSL, 크론, 보안 및 운영 체크리스트 포함.”