بلاگ/راه‌اندازی Nextcloud خودمیزبان روی سرور مجازی و اختصاصی: فضای ابری اختصاصی با کنترل کامل روی داده‌ها
به‌روز شده

راه‌اندازی Nextcloud خودمیزبان روی سرور مجازی و اختصاصی: فضای ابری اختصاصی با کنترل کامل روی داده‌ها

1405/06/150 بازدید
راه‌اندازی Nextcloud خودمیزبان روی سرور مجازی و اختصاصی: فضای ابری اختصاصی با کنترل کامل روی داده‌ها

راه‌اندازی Nextcloud خودمیزبان روی سرور مجازی و اختصاصی: فضای ابری اختصاصی با کنترل کامل روی داده‌ها

نمایی از فضای ابری اختصاصی Nextcloud روی زیرساخت شخصی Nextcloud یک نرم‌افزار متن‌باز برای ذخیره، همگام‌سازی و اشتراک‌گذاری فایل است. با نصب آن روی زیرساخت خودتان، امکاناتی شبیه گوگل درایو، دراپ‌باکس یا وان‌درایو در اختیار دارید؛ با این تفاوت که محل نگهداری داده‌ها، سیاست دسترسی، ظرفیت ذخیره‌سازی و نسخه‌های پشتیبان را خودتان تعیین می‌کنید. راه‌اندازی Nextcloud روی سرور مجازی برای استفاده شخصی، یک تیم کوچک یا شرکتی با تعداد متوسط کاربر مناسب است. اگر حجم فایل‌ها زیاد باشد، کاربران هم‌زمان زیادی داشته باشید یا به چند دیسک و توان پردازشی پایدار نیاز پیدا کنید، سرور اختصاصی انتخاب منطقی‌تری خواهد بود؛ برای مقایسه کامل‌تر این دو گزینه تفاوت سرور اختصاصی با سرور مجازی را هم بخوانید. در این راهنما Nextcloud را روی Ubuntu Server با وب‌سرور Apache، پایگاه داده MariaDB و گواهی رایگان Let’s Encrypt نصب می‌کنیم. سپس اجرای وظایف پس‌زمینه با Cron، تنظیمات امنیتی و روش‌های افزایش فضای ذخیره‌سازی را بررسی خواهیم کرد.

Nextcloud چه امکاناتی در اختیار شما قرار می‌دهد؟

کاربرد اصلی Nextcloud مدیریت فایل است، اما قابلیت‌های آن به یک فایل‌منیجر تحت وب محدود نمی‌شود. کاربران می‌توانند فایل‌ها را از طریق مرورگر، برنامه دسکتاپ یا اپلیکیشن موبایل بارگذاری و همگام کنند. اشتراک‌گذاری با کاربران داخلی، ساخت لینک عمومی، تعیین رمز عبور و تاریخ انقضا نیز پشتیبانی می‌شود. با نصب برنامه‌های تکمیلی می‌توان تقویم، مخاطبان، مدیریت وظایف، ویرایش مشارکتی اسناد، تماس تصویری و اتصال به فضای ذخیره‌سازی خارجی را هم به سامانه افزود. بهتر است فقط افزونه‌هایی را فعال کنید که واقعاً لازم دارید؛ هر افزونه مقداری از RAM و توان پردازنده را مصرف می‌کند و ممکن است نگهداری نسخه‌های بعدی را دشوارتر کند.

سرور مجازی یا سرور اختصاصی؟

انتخاب زیرساخت به تعداد کاربران، حجم فایل‌ها، الگوی مصرف و حساسیت داده‌ها بستگی دارد. برای شروع، یک سرور مجازی با ۲ هسته پردازنده، ۴ گیگابایت RAM و فضای SSD کافی است. نصب‌های کوچک با منابع کمتر هم اجرا می‌شوند، اما هنگام ساخت پیش‌نمایش، اسکن فایل یا همگام‌سازی هم‌زمان چند کاربر کند خواهند شد.

معیارسرور مجازیسرور اختصاصی
هزینه اولیهکمتربیشتر
افزایش CPU و RAMمعمولاً سریع و سادهوابسته به ارتقای سخت‌افزار
مناسب برایاستفاده شخصی و تیم‌های کوچک تا متوسطسازمان‌ها، آرشیوهای حجیم و کاربران زیاد
کنترل روی دیسکمحدود به امکانات سرویس‌دهندهامکان طراحی RAID و انتخاب چند دیسک
جداسازی منابعمنابع ممکن است مجازی باشندمنابع سخت‌افزاری در اختیار یک مشتری است
نگهداری سخت‌افزاربر عهده ارائه‌دهندهمعمولاً بر عهده دیتاسنتر یا ارائه‌دهنده

فضای دیسک را فقط بر اساس حجم فعلی فایل‌ها انتخاب نکنید. نسخه‌های قبلی فایل‌ها، فایل‌های حذف‌شده، پیش‌نمایش تصاویر، پایگاه داده و نسخه‌های پشتیبان نیز فضا مصرف می‌کنند. در یک نصب واقعی، بهتر است دست‌کم ۳۰ تا ۵۰ درصد ظرفیت اضافه برای رشد در نظر بگیرید.

پیش‌نیازهای نصب

در این آموزش فرض می‌کنیم موارد زیر آماده‌اند: - یک سرور با Ubuntu Server 24.04 LTS - حداقل ۲ هسته CPU، چهار گیگابایت RAM و فضای SSD کافی - دسترسی کاربر دارای مجوز sudo - یک دامنه یا زیردامنه مانند cloud.example.com - رکورد DNS از نوع A که به IP سرور اشاره می‌کند - دسترسی ورودی به پورت‌های 80 و 443 - یک روش مستقل برای تهیه نسخه پشتیبان پیش از شروع، بسته‌های سیستم را به‌روز کنید:

sudo apt update
sudo apt upgrade -y

نام میزبان و زمان سیستم را نیز بررسی کنید. اختلاف ساعت می‌تواند در ثبت رویدادها، انقضای نشست‌ها و اجرای Cron مشکل ایجاد کند:

hostnamectl
timedatectl

نصب Apache، PHP و MariaDB

ابتدا وب‌سرور، پایگاه داده و افزونه‌های موردنیاز PHP را نصب کنید:

sudo apt install -y apache2 mariadb-server libapache2-mod-php \
  php php-gd php-mysql php-curl php-mbstring php-intl php-gmp \
  php-bcmath php-xml php-zip php-imagick php-apcu unzip

سپس سرویس‌ها را فعال کنید تا پس از راه‌اندازی مجدد سیستم نیز اجرا شوند:

sudo systemctl enable --now apache2 mariadb

برای ایمن‌سازی تنظیمات اولیه MariaDB، دستور زیر را اجرا کنید و مراحل پیشنهادی آن را ادامه دهید:

sudo mariadb-secure-installation

ساخت پایگاه داده Nextcloud

وارد محیط MariaDB شوید:

sudo mariadb

یک پایگاه داده و کاربر مجزا بسازید. رمز نمونه را با یک رمز طولانی و تصادفی جایگزین کنید:

CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'CHANGE_THIS_STRONG_PASSWORD';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;

از کاربر root پایگاه داده برای اتصال Nextcloud استفاده نکنید. محدود کردن دسترسی برنامه به پایگاه داده خودش، دامنه آسیب ناشی از خطا یا نفوذ احتمالی را کاهش می‌دهد.

دریافت و نصب Nextcloud

نسخه پایدار Nextcloud را از وب‌سایت رسمی پروژه دریافت کنید. پیش از استفاده در محیط عملیاتی، شماره نسخه و مقدار checksum اعلام‌شده در صفحه دانلود رسمی را بررسی کنید.

cd /tmp
wget https://download.nextcloud.com/server/releases/latest.zip
wget https://download.nextcloud.com/server/releases/latest.zip.sha256
sha256sum -c latest.zip.sha256
unzip latest.zip
sudo mv nextcloud /var/www/nextcloud

مالکیت فایل‌ها را به کاربر وب‌سرور واگذار کنید:

sudo chown -R www-data:www-data /var/www/nextcloud
sudo find /var/www/nextcloud -type d -exec chmod 750 {} \;
sudo find /var/www/nextcloud -type f -exec chmod 640 {} \;

دایرکتوری داده‌ها بهتر است بیرون از ریشه وب قرار بگیرد:

sudo mkdir -p /srv/nextcloud-data
sudo chown -R www-data:www-data /srv/nextcloud-data
sudo chmod 750 /srv/nextcloud-data

این مسیر باید روی دیسکی با فضای کافی قرار داشته باشد و در برنامه پشتیبان‌گیری شما نیز گنجانده شود.

پیکربندی Apache

یک Virtual Host برای دامنه Nextcloud بسازید:

sudo nano /etc/apache2/sites-available/nextcloud.conf

محتوای زیر را وارد کنید و دامنه را تغییر دهید:

<VirtualHost *:80>
    ServerName cloud.example.com
    DocumentRoot /var/www/nextcloud
    <Directory /var/www/nextcloud>
        Require all granted
        AllowOverride All
        Options FollowSymLinks MultiViews
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/nextcloud-error.log
    CustomLog ${APACHE_LOG_DIR}/nextcloud-access.log combined
</VirtualHost>

سایت و ماژول‌های لازم را فعال کنید:

sudo a2ensite nextcloud.conf
sudo a2enmod rewrite headers env dir mime setenvif
sudo apache2ctl configtest
sudo systemctl reload apache2

اگر خروجی configtest خطا نشان داد، پیش از بارگذاری مجدد Apache آن را برطرف کنید. معمولاً اشتباه در نام دامنه، مسیر DocumentRoot یا نشانه‌های فایل تنظیمات علت مشکل است.

فعال‌سازی HTTPS با Let’s Encrypt

ارسال رمز عبور و فایل‌ها روی HTTP امن نیست. پس از اطمینان از اتصال دامنه به IP سرور، Certbot را نصب و گواهی TLS را صادر کنید:

sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d cloud.example.com

Certbot می‌تواند انتقال خودکار HTTP به HTTPS را هم فعال کند. وضعیت تمدید خودکار گواهی را آزمایش کنید:

sudo certbot renew --dry-run

اگر فایروال UFW فعال است، دسترسی وب و SSH را مجاز کنید:

sudo ufw allow OpenSSH
sudo ufw allow "Apache Full"
sudo ufw enable
sudo ufw status

پیش از فعال‌کردن فایروال، حتماً قانون SSH را اضافه کنید تا دسترسی مدیریتی به سرور قطع نشود. برای پیکربندی دقیق‌تر با ابزارهای دیگر، راه‌اندازی فایروال nftables روی سرور لینوکس را ببینید.

تکمیل نصب از طریق مرورگر

نشانی https://cloud.example.com را باز کنید. در صفحه نصب، اطلاعات زیر را وارد کنید: - نام کاربری و رمز عبور مدیر Nextcloud - مسیر داده‌ها: /srv/nextcloud-data - نوع پایگاه داده: MySQL/MariaDB - نام پایگاه داده و کاربری که ساختید - میزبان پایگاه داده: localhost برای حساب مدیر رمزی جدا از رمز دیتابیس انتخاب کنید. پس از پایان نصب، از بخش Administration settings > Overview هشدارهای پیکربندی را بررسی کنید. در فایل /var/www/nextcloud/config/config.php باید دامنه شما در trusted_domains ثبت شده باشد. دسترسی مستقیم از دامنه‌های ثبت‌نشده به‌صورت پیش‌فرض رد می‌شود.

تنظیم وظایف پس‌زمینه با Cron

Nextcloud برای پاک‌سازی، پردازش فعالیت‌ها و اجرای کارهای زمان‌بندی‌شده به وظایف پس‌زمینه نیاز دارد. حالت AJAX به بازدید کاربران وابسته است و برای سرور عملیاتی انتخاب مناسبی نیست. Cron را برای کاربر وب‌سرور تنظیم کنید:

sudo -u www-data crontab -e

این خط را اضافه کنید:

*/5 * * * * php -f /var/www/nextcloud/cron.php

سپس در پنل مدیریت Nextcloud، بخش Administration settings > Basic settings، گزینه Cron را انتخاب کنید. چند دقیقه بعد باید زمان آخرین اجرای موفق نمایش داده شود.

بهبود عملکرد و محدودیت بارگذاری

مقادیر PHP باید با اندازه فایل‌هایی که کاربران بارگذاری می‌کنند هماهنگ باشد. فایل تنظیمات Apache PHP را پیدا کنید و مقادیر لازم را تغییر دهید؛ شماره نسخه PHP ممکن است متفاوت باشد:

sudo nano /etc/php/8.3/apache2/php.ini

نمونه‌ای از تنظیمات قابل بررسی:

memory_limit = 512M
upload_max_filesize = 2G
post_max_size = 2G
max_execution_time = 360
output_buffering = Off

بعد از تغییر، Apache را بازنشانی کنید:

sudo systemctl restart apache2

برای کاهش فشار پایگاه داده و سریع‌تر شدن پاسخ‌ها می‌توانید APCu را به‌عنوان حافظه نهان محلی تنظیم کنید. در نصب‌های بزرگ‌تر، Redis برای قفل‌گذاری فایل و cache توزیع‌شده مناسب‌تر است. این تغییرات را مطابق مستندات نسخه نصب‌شده Nextcloud انجام دهید، زیرا گزینه‌های پیشنهادی میان نسخه‌ها تغییر می‌کنند.

افزایش فضای ذخیره‌سازی

اگر فضای فعلی کافی نیست، ابتدا دیسک یا Volume جدید را در سطح زیرساخت اضافه کنید. پس از ساخت پارتیشن و فایل‌سیستم، آن را در مسیری پایدار مانند /mnt/nextcloud-data مانت کنید و ورودی مناسب /etc/fstab را بسازید. برای جابه‌جایی دایرکتوری داده، Nextcloud را وارد حالت نگهداری کنید، فایل‌ها را با حفظ مجوزها انتقال دهید و سپس مقدار datadirectory را در config.php تغییر دهید:

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
sudo rsync -aHAX /srv/nextcloud-data/ /mnt/nextcloud-data/
sudo chown -R www-data:www-data /mnt/nextcloud-data

پس از بررسی کامل فایل‌ها و تنظیم مسیر جدید، حالت نگهداری را غیرفعال کنید:

sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off

دیسک قدیمی را بلافاصله پاک نکنید. ابتدا ورود کاربران، دانلود چند فایل و اجرای فرمان‌های بررسی Nextcloud را آزمایش کنید. افزودن ظرفیت نیز جای نسخه پشتیبان را نمی‌گیرد؛ خرابی فایل‌سیستم، حذف تصادفی یا باج‌افزار می‌تواند همه فایل‌های متصل را درگیر کند.

امنیت، پشتیبان‌گیری و به‌روزرسانی

فضای ابری خصوصی Nextcloud با اتصال رمزنگاری‌شده میان سرور و فضای ذخیره‌سازی برای پشتیبان‌گیری قابل‌بازیابی باید سه بخش را با هم نگه دارید: دایرکتوری داده‌ها، پوشه config و خروجی پایگاه داده. ناقص بودن هرکدام می‌تواند بازیابی را دشوار یا غیرممکن کند. یک سیاست عملی می‌تواند شامل نسخه روزانه روی فضای جدا، نگهداری چند نسخه تاریخی و آزمایش دوره‌ای بازیابی باشد. نسخه پشتیبان روی همان دیسک سرور، در برابر خرابی دیسک یا حذف سرور محافظتی ایجاد نمی‌کند. برای پیاده‌سازی خودکار این سیاست، پشتیبان‌گیری خودکار و رمزنگاری‌شده از سرور لینوکس با Restic راهنمای عملی‌تری ارائه می‌دهد. اقدام‌های مهم دیگر عبارت‌اند از: - فعال‌کردن احراز هویت دومرحله‌ای برای حساب‌های حساس - حذف یا غیرفعال‌کردن حساب‌های بلااستفاده - محدودکردن دسترسی SSH و ترجیح کلید به رمز عبور (جزئیات در امن‌سازی دسترسی SSH به سرور لینوکس) - نصب منظم اصلاحات امنیتی سیستم‌عامل - به‌روزرسانی Nextcloud و افزونه‌ها پس از بررسی سازگاری - پایش فضای آزاد دیسک، مصرف RAM و خطاهای لاگ - استفاده از رمز برنامه برای کلاینت‌ها به‌جای رمز اصلی حساب پیش از ارتقای نسخه اصلی Nextcloud، مستندات همان نسخه و مسیرهای ارتقای پشتیبانی‌شده را بخوانید. از چند نسخه اصلی به‌صورت یک‌مرحله‌ای عبور نکنید و قبل از هر ارتقا نسخه پشتیبان سالم بگیرید.

چه زمانی منابع سرور را ارتقا دهیم؟

کندی Nextcloud همیشه با افزایش CPU حل نمی‌شود. ابتدا بررسی کنید گلوگاه از دیسک، RAM، پایگاه داده، PHP یا شبکه است. پرشدن RAM و استفاده گسترده از Swap، زمان انتظار زیاد دیسک و طولانی‌شدن درخواست‌های PHP نشانه‌های مفیدی هستند. اگر سرور مجازی فعلی با افزایش کاربران یا حجم فایل‌ها محدود شده است، می‌توانید منابع آن را ارتقا دهید یا داده‌ها را به دیسک بزرگ‌تری منتقل کنید. برای انتخاب پلن مناسب، راهنمای انتخاب پلن سرور مجازی آریانت کمک می‌کند. برای شروع یک فضای ابری شخصی یا تیمی، صفحه سرور مجازی ابری آریاسرویس گزینه‌های زیرساختی قابل استفاده برای نصب Nextcloud را معرفی می‌کند. ظرفیت دیسک، امکان تهیه بکاپ و ترافیک سرویس را پیش از انتخاب پلن با مصرف مورد انتظار خود مقایسه کنید.

جمع‌بندی

راه‌اندازی Nextcloud روی سرور مجازی راهی عملی برای ساخت فضای ابری تحت مدیریت خودتان است. در این مدل، محل داده‌ها و سیاست دسترسی را شما تعیین می‌کنید، اما مسئولیت امنیت، به‌روزرسانی، پایش و پشتیبان‌گیری نیز بر عهده شماست. یک نصب پایدار فقط به نمایش صفحه ورود ختم نمی‌شود. HTTPS، Cron، پایگاه داده اختصاصی، فضای ذخیره‌سازی قابل توسعه و نسخه پشتیبان آزمایش‌شده اجزای ضروری آن هستند. با شروع از یک سرور متناسب و پایش مصرف واقعی، می‌توانید ظرفیت Nextcloud را هم‌زمان با رشد کاربران افزایش دهید.