기술 가이드

Rocky Linux에 ownCloud 설치 및 구성 가이드

8 min read Tutorial 업데이트됨 22 Oct 2025
Rocky Linux에 ownCloud 설치 및 구성
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 -y

EPEL 저장소 설치:

sudo dnf install epel-release

EPEL 저장소 설치 확인 화면

Redis v6 모듈 활성화(예제는 Redis 6 활성화):

sudo dnf module reset redis
sudo dnf module enable redis:6

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 서비스 상태 화면

노트: 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

REMI 저장소 추가 화면

PHP 7.4 모듈 활성화:

sudo dnf module reset php
sudo dnf module enable php:remi-7.4 -y

PHP 7.4 저장소 활성화 화면

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 설정(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 설치 화면

httpd 활성화 및 시작:

sudo systemctl enable --now httpd
sudo systemctl status httpd

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

firewalld 설정 화면

PHP 동작 확인을 위해 /var/www/html/info.php 생성:

cat <
EOF

브라우저에서 http://서버_IP/info.php 접속해 PHP 설정을 확인합니다.

phpinfo 화면

보안 팁: 설치 확인 후 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 설치 화면

MariaDB 보안 설정 실행:

sudo mysql_secure_installation

대화형 설정 권장 답변(예제):

  1. unix_socket 인증 전환? n
  2. root 비밀번호 변경? y (강력한 비밀번호 입력)
  3. 원격 root 로그인 금지? y
  4. 익명 사용자 삭제? y
  5. test 데이터베이스 삭제? y
  6. 권한 테이블 리로드? 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

(비밀번호는 예시입니다. 실사용 환경에서는 강력한 비밀번호를 사용하세요.)

DB 사용자 및 권한 생성 화면

권한 확인:

SHOW GRANTS FOR 'owncloud'@'localhost';

DB 권한 확인 화면

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.sha256

SHA256 검증:

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

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 -y

ownCloud 디렉터리 라벨링 및 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 설정 화면

문제 해결: 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 클릭

ownCloud 설치 화면

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

ownCloud 로그인 화면

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

ownCloud 대시보드 화면

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

파일 업로드 및 폴더 생성 화면


9. 크론 작업 구성 (백그라운드 작업)

ownCloud는 백그라운드 작업을 실행해야 합니다. 시스템 cron을 사용하도록 설정하는 것이 권장됩니다.

occ 명령으로 백그라운드 유형 전환:

sudo -u apache /var/www/owncloud/occ background:cron

apache 사용자로 크론 편집:

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 redis

ownCloud 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 --on

14. 운영 가이드(역할 기반 체크리스트)

관리자(Admin):

  • SSL 인증서 갱신(예: certbot renew 테스트)
  • 정기 백업 및 복원 연습
  • 보안 업데이트 적용(패키지, PHP 확장, ownCloud 코어)
  • 사용자/권한 관리

운영 엔지니어(DevOps):

  • 모니터링(서비스 상태, 디스크 사용량, DB 성능)
  • 로그 집계 및 알람 설정
  • 성능 튜닝(캐시, DB 버퍼 설정)

일반 사용자:

  • 파일 업로드/동기화 테스트
  • 2단계 인증(가능하면 활성화)
  • 클라이언트 앱 동기화 설정

15. 일상 운영 SOP(간략)

  • 장애 발생 시
    1. 서비스 상태 확인(httpd, mariadb, redis)
    2. 디스크 용량 확인(df -h)
    3. 최근 로그 확인(웹/DB/Redis)
    4. 필요한 경우 유지보수 모드(occ maintenance:mode –on)
    5. 원인 파악 후 롤백 또는 패치 적용
    6. 유지보수 모드 해제(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, 크론, 보안 및 운영 체크리스트 포함.”

공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

Debian 11에 Podman 설치 및 사용하기
컨테이너

Debian 11에 Podman 설치 및 사용하기

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정
시스템 관리

Apt-Pinning 간단 소개 — Debian 패키지 우선순위 설정

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드
그래픽 가이드

OptiScaler로 FSR 4 주입: 설치·설정·문제해결 가이드

Debian Etch에 Dansguardian+Squid(NTLM) 구성
네트워크

Debian Etch에 Dansguardian+Squid(NTLM) 구성

안드로이드 SD카드 설치 오류(Error -18) 완전 해결
안드로이드 오류

안드로이드 SD카드 설치 오류(Error -18) 완전 해결

KNetAttach로 원격 네트워크 폴더 연결하기
네트워킹

KNetAttach로 원격 네트워크 폴더 연결하기