Nextcloud
๋ Dropbox, Google Drive, Onedrive ์ฒ๋ผ ์น์ด๋ ์ฑ์ผ๋ก ์ ์ฅ์๋ฅผ ์ ๊ทผํด ๋คํธ์ํฌ๋ก ํ์ผ์ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ํ๋ก๊ทธ๋จ์
๋๋ค.
Nextcloud๋ฅผ ํ์๋ฒ์ ์ค์นํ์ฌ ์์ ์ ํ๋๋์คํฌ ์ฉ๋ ๋งํผ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
๋ฌด๋ฃ์์๋ ๋ถ๊ตฌํ๊ณ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๊ท์ ๊ณผ ๋ณด์์ด ๋งค์ฐ ์ ๋์ด ์์ผ๋ฉฐ, ์ ์ ์ ์ฑ
๋ ์๋ฒฝํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค.
์ด๋ ๊น์ง ๋ชจ๋ ์ฑํฐ๋ฅผ ๋ฐ๋ผ์๋ค๋ฉด ๋จ์ ์ค์น ํญ๋ชฉ์ php
ํ๋์
๋๋ค.
Nextcloud ๊ณต์ ํํ์ด์ง์์ ์๋ ค์ฃผ๋ ์ด์ฉ์ ํ์ํ php ๋ชจ๋๋ค์ ์ค์น ํด๋ด
์๋ค.
๊ผญ php-fpm
์ ๋จผ์ ์ค์นํ์
์ผ ํ๋๋ฐ ์ด๋ Nginx ๋ฅผ ์ํ ๊ฒ์
๋๋ค.
sudo apt install php-fpm
sudo apt install php-imagick php-common php-mysql php-fpm php-gd php-json php-curl php-zip php-xml php-mbstring php-bz2 php-intl
Nextcloud์ ๋์ฉ๋ ํ์ผ์ ์
๋ก๋ ํ๊ธฐ์ํด php ์ค์ ์ ํด์ผํฉ๋๋ค.
์๋ ๋ด์ฉ์ ์์ ํด์ฃผ์ธ์.
sudo vim /etc/php/7.4/fpm/php.ini
post_max_size = 4G upload_max_filesize = 4G
php ์๋น์ค๋ฅผ ์ฌ์์ ํด์ค์๋ค.
sudo service php7.4-fpm restart
nextcloud
๋ผ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋ค๊ณ nc
๋ผ๋ ๊ณ์ ์ ๋ง๋ค์ด์ nextcloud
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๊ถํ์ ์ฃผ๋๋ก ํ๊ฒ ์ต๋๋ค.
sudo mysql -u root -p
create database nextcloud default character set utf8mb4 collate utf8mb4_general_ci; create user nc@localhost identified by [๋น๋ฐ๋ฒํธ]; grant all privileges on nextcloud.* to nc@localhost; flush privileges; exit
[๋น๋ฐ๋ฒํธ]
๋ Nextcloud ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋nc
๊ณ์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
Nextcloud ๊ณต์ ํํ์ด์ง์ ์ ์ํด์ ์ต์ ๋ฒ์ ๋ค์ด๋ก๋ ์ฃผ์๋ฅผ ์์๋
์๋ค.
https://nextcloud.com/install
.tar.bz
๋ฅผ ์ฐํด๋ฆญ ํ์
์ ๋งํฌ ์ฃผ์ ๋ณต์ฌ
๋ฅผ ์ ํํ์ธ์.
๋ณต์ฌํ ๋งํฌ๋ฅผ ํ ๋๋ก ๋ค์ด๋ก๋ ๋ฐ ์์ถ ํ๊ธฐ๋ฅผ ํฉ์๋ค.
cd ~ wget [๋ณต์ฌํ ๋งํฌ ์ฃผ์] tar -xvf nextcloud-*.tar.bz2 sudo chown -R www-data:www-data nextcloud sudo mv nextcloud /var/www rm nextcloud-*.tar.bz2
- ํ ๋๋ ํ ๋ฆฌ๋ก ์ด๋
nextcloud
๋ฅผ ํํ์ด์ง์์ ๋ค์ด๋ก๋- ๋ค์ด๋ก๋ํ
nextcloud
์์ถ ํ๊ธฐ- ์น์๋ฒ์์ ๋์ํ๋
nextcloud
๋ชจ๋ ํ์ผ์ ์น ์ ์ ์ธwww-data
์ ๊ถํ์ผ๋ก ๋ณ๊ฒฝ- ์น์๋ฒ ํด๋๋ก
nextcloud
์ด๋- ๋ค์ด๋ก๋ํ
nextcloud
์์ถํ์ผ ์ญ์
ํธ์คํ
์ผ์ด์์์ DNS ๋ ์ฝ๋๋ก Nextcloud๋ก ์ฌ์ฉํ ์๋ธ ๋๋ฉ์ธ์ ์ถ๊ฐํฉ์๋ค.
[๊ตฌ๋ฆ]
๋ถ๋ถ์ ์ ๋นํ ์์ด๋ก ๋ฐ๊ฟ ์
๋ ฅํ์๊ณ ์ด๋ ๊ฒ ์์ฑํ ๋๋ฉ์ธ์ด ์ดํ์ ์๋ฒ๋ธ๋ก ์ค์ ํ์ผ์ [Nextcloud๋๋ฉ์ธ]
๋ถ๋ถ์ด ๋ ๊ฒ์
๋๋ค.
๊ธฐ์กด DNS ๋ ์ฝ๋์ ๋์ผํ๊ฒ A๋ ์ฝ๋๋ก์จ IP์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ํ๋ฉด ๋ฉ๋๋ค.
์๋ ๋ด์ฉ์ Nextcloud ๊ณต์ ํํ์ด์ง์ docs๋ฅผ ํ ๋๋ก ๋ง๋ค์ด ๋ณด์๊ณ ์ ์ ์๋ ํ๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.
์๋ฒ ๋ธ๋ก ๋ด์ฉ ์ค ๊ฐ์ฅ ๋ง์ผ๋ฏ๋ก ์์ธํ ํ์ธํ์ฌ ์์ ์ ๋๋ฉ์ธ ์ฃผ์๋ง ์ ํํ ์์ ํ์๊ธธ ๋ฐ๋๋๋ค.
sudo vim /etc/nginx/sites-available/[Nextcloud๋๋ฉ์ธ]
upstream php-handler {
server unix:/run/php/php7.4-fpm.sock;
}
server {
listen 80;
server_name [Nextcloud๋๋ฉ์ธ];
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name [Nextcloud๋๋ฉ์ธ];
root /var/www/nextcloud;
access_log /var/log/nginx/nextcloud.access.log;
error_log /var/log/nginx/nextcloud.error.log;
ssl_certificate /etc/letsencrypt/live/[๋๋ฉ์ธ]/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/[๋๋ฉ์ธ]/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/[๋๋ฉ์ธ]/chain.pem;
ssl_dhparam /etc/ssl/dhparam.pem;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256;
ssl_ecdh_curve secp384r1;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15552000;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
add_header Referrer-Policy no-referrer;
fastcgi_hide_header X-Powered-By;
location = /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}
location /.well-known/acme-challenge { }
client_max_body_size 0;
fastcgi_buffers 64 4K;
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
location / {
rewrite ^ /index.php;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
deny all;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location ~ ^/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+)\.php(?:$|\/) {
fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ ^/(?:updater|oc[ms]-provider)(?:$|\/) {
try_files $uri/ =404;
index index.php;
}
location ~ ^/.+[^\/]\.(?:css|js|woff2?|svg|gif|map)$ {
try_files $uri /index.php$request_uri;
add_header Cache-Control "public, max-age=15778463";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
add_header Referrer-Policy no-referrer;
access_log off;
}
location ~ ^/.+[^\/]\.(?:png|html|ttf|ico|jpg|jpeg|bcmap)$ {
try_files $uri /index.php$request_uri;
access_log off;
}
}
๋ฌธ๋ฒ์ ์ด์์ด ์๋์ง ๊ฒ์ฌ ํ Nginx๋ฅผ ์ฌ์์ ํด์ ์๋ก์ด ์๋ฒ ๋ธ๋ก์ ์ ์ฉํฉ์๋ค.
sudo ln -s /etc/nginx/sites-available/[Nextcloud๋๋ฉ์ธ] /etc/nginx/sites-enabled/
sudo nginx -t
sudo service nginx restart
์ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํ๋๋์คํฌ๊ฐ ๋ง์ดํธ๊น์ง ๋์ด์๋์ง ํ์ธํด๋ด ์๋ค.
sudo fdisk -l
... Disk /dev/sdb: 1.84 TiB, 2000398934016 bytes, 3907029168 sectors Disk model: ST2000LM003 HN-M Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes
ํ์๋ฒ๋ฅผ ์ค์น ํ ๋ ๋ง์ดํธ๊น์ง ํด์ฃผ์ด์ 1.84TiB์ ์ฉ๋์ ๊ฐ์ง ๋์คํฌ๊ฐ ํ์ธ๋ฉ๋๋ค.
df -h
... /dev/sdb 1.8T 77M 1.7T 1% /srv ...
๋ง์ดํธ๊ฐ ๋์ด์์ง ์๋ค๋ฉด ๊ตฌ๊ธ์ ์ฐ๋ถํฌ ํ๋๋์คํฌ ์ถ๊ฐ
๋ผ๊ณ ์น๋ฉด ์์ธํ๊ฒ ๋์ฌ ๊ฒ์ด๋ ๋ณด๊ณ ๋ฐ๋ผํด๋ณด์๊ธธ ๋ฐ๋๋๋ค.
๊ทธ๋ผ HDD์ ์ ์ฅ์ ํด๋๋ฅผ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค.
cd /srv
sudo mkdir nextcloud
sudo chown -R www-data:www-data nextcloud
์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ์์ ๋ง์ ํ์๋ฒ Nextcloud ์ฃผ์ https://[Nextcloud๋๋ฉ์ธ]
์ ์ ์ํ๊ณ ์๋๋ฅผ ์์๋๋ก ํด๋ณด์ธ์.
๊ด๋ฆฌ์ ๊ณ์ ๋ง๋ค๊ธฐ
์ฌ์ฉ์ ์ด๋ฆ๊ณผ ์ํธ๋ฅผ ์ ๋ ฅํด Nextcloud ์ ์ ํ ๋ ์ฌ์ฉํ ๊ณ์ ์ ๋ง๋ค๋ฉด ๋ฉ๋๋ค.
๋ฐ์ดํฐ ํด๋
HDD๋ฅผ ๋ง์ดํธ ํ๊ณ ์์ฑํ๋ nextcloud-data ํด๋๋ฅผ ๋ฐ์ดํฐ ํด๋๋ก ์ง์ ํด์ค๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์
๋ง๋ค์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ณด๋ฅผ ์ ๋ ฅํด์ค๋๋ค.
ํน๋ณํ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํฌํธ๋ฒํธ๋3306
๋ฒ ์ด๋ฏ๋ก ์ง์ ํด์ฃผ์ง ์์๋ ๋ฉ๋๋ค.
์ค์น ์๋ฃ
์๋์ชฝ ์ถ์ฒ ์ฑ ์ค์น ์ฒดํฌ ํด์ ๋ฅผ ํด์ค ๋ค ์ค์น ์๋ฃ ๋ฒํผ์ ํด๋ฆญํฉ์๋ค.
์ผ์ ์๊ฐ ๋ค ๋์ฌ๋ณด๋๋ก ์ ์๋์๋ค๋ฉด ์ฑ๊ณต์ ์ผ๋ก ์ค์น๊ฐ ๋๋๊ฒ์
๋๋ค.
ํ์
์ฐฝ์ ๋ซ๊ณ ์ข์ธก ์๋จ์ ํด๋ ๋ชจ์์ ํด๋ฆญํ์ธ์.
์ฌ๊ธฐ๊ฐ Nextcloud ํ์ผ ๊ด๋ฆฌ ํ๋ ๊ณณ์
๋๋ค.
๋ณด์ด๋ ํ์ผ๊ณผ ํด๋๋ค์ ๊ธฐ๋ณธ์ผ๋ก ๋ง๋ค์ด์ง ๊ฒ๋ค์ด๋ ์ ๋ถ ์ญ์ ํด์ฃผ์๊ณ ์ํ๋ ํ์ผ์ ์
๋ก๋ ํ์ฌ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
ํ์ง๋ง ์์ง ๊ทธ๋ฅ ์ฌ์ฉํ๊ธฐ์ ์ด๋ฆ
๋๋ค.
์ถ๊ฐ์ ์ธ ์์
์ผ๋ก Nextcloud๊ฐ ์๋ฒฝํ ๋์ํ ์ ์๋๋ก ๋ณด์์ ํด์ค์๋ค.
์ฐ์ธก ์๋จ ํ๋กํ ์ฌ์ง
ํด๋ฆญ > ์ข์ธก ๋ฉ๋ด ์ค ๊ฐ์
ํด๋ฆญ
Nextcloud๊ฐ ์ค์ ์ด ํ์ํ ๋ถ๋ถ์ ์น์ ํ๊ฒ ์๋ ค์ค๋๋ค.
ํ๋์ฉ ์ฐจ๊ทผ์ฐจ๊ทผ ํด๊ฒฐํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
sudo vim /etc/php/7.4/fpm/php.ini
memory_limit = 1G
์์ ์ด ๋๋ฌ์ผ๋ php ์๋น์ค๋ฅผ ์ฌ์์ ํด์ค์๋ค.
sudo service php7.4-fpm restart
Nextcloud ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจ ํ๋ฉด ํฌ๋ฆฌํฐ์ปฌ ์ค๋ฅ์ธ ๋นจ๊ฐ ๊ธ์จ๊ฐ ์ฌ๋ผ์ง ๊ฒ์ด ํ์ธ๋ฉ๋๋ค.
sudo vim /etc/php/7.4/fpm/pool.d/www.conf
env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/bin:/usr/bin:/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp
์ด ๋ด์ฉ๋ค ์ ์ผ ์์ ์ฃผ์
;
์ด ๋ถ์ด์์ ๊ฒ์ ๋๋ค.
;
์ ์ ๊ฑฐํด ์ค์๋ค.๋ด์ฉ์ 409๋ฒ ์งธ ์ค ๊ทผ์ฒ์ ๋ํ๋์ ธ ์์์ต๋๋ค.
์์ ์ด ๋๋ฌ๋ค๋ฉด php๋ฅผ ์ฌ์์ ํด์ฃผ์ธ์.
sudo service php7.4-fpm restart
sudo vim /etc/nginx/sites-available/[Nextcloud๋๋ฉ์ธ]
X-Frame-Options ํค๋ ์ถ๊ฐ
์ฐ์ ๋๋ต 34๋ฒ์งธ ์ค์
Strict-Transport-Security
ํค๋ ์ถ๊ฐ ๋ถ๋ถ์ด ์์ํ ๋ฐ ๊ทธ ์๋์X-Frame-Options
์๋ ๋ด์ฉ์ ๋ฃ์ด์ฃผ์ธ์.add_header X-Frame-Options "SAMEORIGIN" always;
well-knwon ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌ
50๋ฒ์งธ ์ค์
location /.well-known/acme-challenge {}
๋ด์ฉ์ด ์์ ํ ๋ฐ ๋ฐ๋ก ๋ฐ์ ์๋ ๋ด์ฉ์ ์ถ๊ฐํด์ฃผ์ธ์.location ^~ /.well-known { return 301 /index.php$uri; }
์์ ์ด ๋๋ฌ๋ค๋ฉด Nginx ์๋น์ค๋ฅผ ์ฌ์์ ํด์ฃผ์ธ์.
sudo service nginx restart
sudo vim /var/www/nextcloud/config/config.php
'default_phone_region' => 'KR'
๋ง์ง๋ง ๋ถ๋ถ์
default_phone_region
์ต์ ์ ์ถ๊ฐํด์ฃผ์ธ์.
์์ ์ด ๋๋ฌ๋ค๋ฉด Nginx ์๋น์ค๋ฅผ ์ฌ์์ ํด์ฃผ์ธ์.
sudo service nginx restart
๋จผ์ , OPcache
๋ฅผ ์ค์นํด์ผ ํ๋๋ฐ php 5.5 ๋ฒ์ ์ดํ์ ์๋์ผ๋ก ์ค์น๋๋ค๊ณ ํฉ๋๋ค.
๋ฐ๋ผ์ ์ค์นํ ํ์๊ฐ ์๊ณ OPcache
์ฌ์ฉํ ์ ์๊ฒ php ์ค์ ๊ฐ ๋ณ๊ฒฝํฉ์๋ค.
sudo vim /etc/php/7.4/fpm/php.ini
vim
๋ช ๋ น๋ชจ๋์์/opc
๋ผ๊ณ ์ ๋ ฅํ๋ฉด ํด๋น ๋ผ์ธ์ธ ๋๋ต 1766๋ฒ์งธ ์ค๋ก ๋ฐ๋ก ์ด๋ ํด์ค๋๋ค.
์ฃผ์ ๋์ด ์์ผ๋ฉด ํ๊ณ ์๋ ๋ด์ฉ์ผ๋ก ๋ณ๊ฒฝ ํด์ฃผ์ธ์.[opcache] opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000 opcache.max_wasted_percentage=5 opcache.validate_timestamps=1 opcache.revalidate_freq=2
Nextcloud์ ํ์ํ ์ถ๊ฐ์ ์ธ ํจํค์ง ์ค์น
๋ฉ๋ชจ๋ฆฌ ์บ์์ ํ์ํ APCu์ ์ฑ๋ฅ ํฅ์์ ๋์๋๋ php ๋ชจ๋๋ค์ ์ถ๊ฐ์ ์ผ๋ก ์ค์นํฉ์๋ค.
sudo apt install php-apcu php-bcmath php-gmp imagemagick -y
Nextcloud์ APCu ๋ชจ๋ ๋ฐ์
sudo vim /var/www/nextcloud/config/config.php
'filesystem_check_changes' => 1, 'memcache.local' => '\OC\Memcache\APCu',
filesystem_check_changes
sftp, transmission ์ ๊ฐ์ด ์น ๋๋ ์ฑ์ด ์๋ ๋ค๋ฅธ ์๋น์ค์์ Nextcloud ๋ฐ์ดํฐ ํด๋์ ํ์ผ ๋ฑ์ ์ถ๊ฐํ ๊ฒฝ์ฐ ์ถ๊ฐ๋ ํ์ผ์ ์๋์ผ๋ก ์ธ์ํด ์ ๋ฐ์ดํธ ํด์ฃผ๋ ๊ฒmemcache.local
๋ฐฉ๊ธ ์ค์นํ APCu ๋ชจ๋์ Nextcloud ์ ์ฉํ๋ ๊ฒ
์์ ๊ณผ ์ค์น๊ฐ ๋๋ฌ๋ค๋ฉด php๋ฅผ ์ฌ์์ ํด์ฃผ์ธ์.
sudo service php7.4-fpm restart
sudo service nginx restart
๋๋์ด ๋๋ฌ์ต๋๋ค.
์ด์ Nextcloud ํ์ด์ง์ ์ ์ํด ๋ด
์๋ค.
Nextcloud ๋ชจ๋ ๊ฒ์ฌ๋ฅผ ํต๊ณผํ์ต๋๋ค.
์ด์ ์์ ์ ์ผ๋ก Nextcloud ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค!
Nextcloud๋ ๋ก๊ทธ์ธ ์ฌ๋ฌ๋ฒ ์คํจํ์ ๊ฒฝ์ฐ ์์ฒด์ ์ผ๋ก ์์ญ์ด๋์ ๋ก๊ทธ์ธ์ ํ์ง ๋ชปํ๋๋ก ๋์ด์์ต๋๋ค.
์ด ์ ๋๋ก ๋ง์กฑํ๋ ์ฌ๋์ ๊ตณ์ด fail2ban์ ์ ์ฉํ ํ์๋ ์์ต๋๋ค.
์ ๋ ์์คํ ๋ฐ์ดํฐ๊ฐ ์๋ Nextcloud์ ์์ ์ ์ํด SSH์ ๊ฐ์ด ๋ณด์์ ๊ฐํํ ๊ฒ์
๋๋ค.
Nextcloud ๊ณต์ ํํ์ด์ง์์ ์ ๊ณตํ๋ ํํฐ๋ฅผ ์ฌ์ฉํด์ jail์ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค.
Nextcloud ํํ์ด์ง์์ ๋ฐ๋ก ๋ค๊ณ ์จ ํํฐ ์ฝ๋๋ผ ์์ ํ ํ์์์ด ์์ฑํ์๋ฉด ๋ฉ๋๋ค.
sudo vim /etc/fail2ban/filter.d/nextcloud.conf
[Definition] _groupsre = (?:(?:,?\s*"\w+":(?:"[^"]+"|\w+))*) failregex = ^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Login failed: ^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Trusted domain error. datepattern = ,?\s*"time"\s*:\s*"%%Y-%%m-%%d[T ]%%H:%%M:%%S(%%z)?"
Nextcloud์ ๋ํ fail2ban ๊ท์น์ ์ค์ ํฉ์๋ค.
fail2ban์ ์ค์นํ๊ณ ssh์ ์ ์ฉํ ๋ maxretry, bantime, findtime์ jail.local์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ํ์๊ธฐ ๋๋ฌธ์ ๋๊ฐ์ด ์ฌ์ฉํ๋ ค๋ฉด ์ฌ๊ธฐ์ ๊ตณ์ด ์ง์ ํด์ค ํ์๊ฐ ์์ต๋๋ค.
sudo vim /etc/fail2ban/jail.d/nextcloud.local
[nextcloud] backend = auto enabled = true port = 80,443 protocol = tcp filter = nextcloud logpath = /srv/nextcloud/nextcloud.log
logpath
๋ nextcloud ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ํด๋์ ์๋ ๋ก๊ทธํ์ผ์ ์ ์ด์ฃผ๋ฉด ๋ฉ๋๋ค.
์คํ ํ์ธ
sudo service fail2ban restart sudo fail2ban-client status nextcloud
Status for the jail: nextcloud |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /srv/nextcloud/nextcloud.log `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list:
์ถ๋ ฅ ๋ด์ฉ์ด ์์ ๊ฐ๋ค๋ฉด ์ ์๋ํ๋ ๊ฒ์ ๋๋ค.
์ด์ ํ
์คํธ๋ฅผ ์ํด ์ค๋งํธํฐ์ ๋ชจ๋ฐ์ผ ๋ฐ์ดํฐ ํ๊ฒฝ์์ Nextcloud ํ์ด์ง์ ์ ์ํด ๋ก๊ทธ์ธ 5๋ฒ์ ์คํจํด๋ด
์๋ค.
๊ทธ๋ฆฌ๊ณ ์ํ๋ฅผ ํ์ธํด๋ณด๋ฉด ๋ฒค ๋นํ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ฐจ๋จ ํ์ธ
sudo fail2ban-client status nextcloud
Status for the jail: nextcloud |- Filter | |- Currently failed: 0 | |- Total failed: 5 | `- File list: /srv/nextcloud/nextcloud.log `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 223.39.149.171
Banned IP List
์ ์ค๋งํธํฐ ์ธ๋ถ IP๊ฐ ์๊ฒผ๋ค๋ฉด ์ฐจ๋จ๋ ์ ์๋ํ๋ ๊ฒ์ ๋๋ค.
์ด์ ๋ง์ ํธํ๊ฒ ํด๋ผ์ฐ์ค ์คํ ๋ฆฌ์ง Nextcloud๋ฅผ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
์๋ ๋ค์ ์ฑํฐ์์ Nextcloud์์ ์น๊ธฐ๋ฐ์ผ๋ก ๋ฌธ์ ์์
(์๋, ํ์ํฌ์ธํธ, ์์
) ์์
์ ํ ์ ์๋ OnlyOffice๋ฅผ ์ค์นํด๋ณด๋ ค ํ๋๋ฐ ์ฌ์ฉ๋ฅ ์ด ๊ทธ๋ฅ ๋ง์ง ์๊ณ Onedrive ์ฌ์ฉ์ ๋ณํํ๊ธฐ์ Nextcloud์ ์คํผ์ค ์๋ฒ๋ ๊ตณ์ด ํ์๊ฐ ์๋ค๊ณ ๋๊ผ์ต๋๋ค.
๋ฐ๋ผ์ ํ์๋ฒ ๋ง๋ค๊ธฐ ์๋ฆฌ์ฆ์์๋ ๋ค๋ฃจ์ง ์์ ๊ฒ์ด๋ฏ๋ก ํน์๋ผ๋ ์ค์นํด๋ณด๊ณ ์ถ์ผ์๋ฉด ๊ตฌ๊ธ์ ์ฐ๋ถํฌ Onlyoffice ์๋ฒ ์ค์น ๋ผ๊ณ ๊ฒ์ํด๋ณด์๊ธธ ๋ฐ๋๋๋ค.
Nextcloud ์ฉ๋์ ๋๋ฆฌ๊ณ ์ถ์ผ์๋ฉด ํ๋๋์คํฌ๋ฅผ ์ถ๊ฐ ์ฅ์ฐฉํ์ฌ Raid ๊ตฌ์ฑ์ ํ์๋ฉด ๋ฉ๋๋ค.
Raid ๊ตฌ์ฑ์ด ์ด๋ ค์ฐ์ ๋ถ์ /srv
์ ๊ฐ์ด ์ ๋นํ ํด๋์ ๋ง์ดํธ ํ ๋ค Nextcloud ์์ฒด ๊ธฐ๋ฅ์ ๋์คํฌ ์ถ๊ฐ๋ฅผ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค.
์์ธํ ํฌ์คํ ๊ฐ์ฌํฉ๋๋ค!!
๋๋ถ์ ์ฑ๊ณตํ์ต๋๋ค. ์ ๊ทผ๋ฐ ์ปดํจํฐ๋ฅผ ์ข ๋ฃํ๊ณ ๋ค์ ํด๋ผ์ฐ๋๋ฅผ ๋์ฐ๊ณ ์ถ์๋๋ ์ด๋ป๊ฒ ํด์ผ ํ๋์??