Anonim

ที่เก็บข้อมูลบนคลาวด์เป็นวิธีที่ยอดเยี่ยมในการรักษาไฟล์ของคุณให้ปลอดภัยในกรณีที่มีสิ่งใดเกิดขึ้นและคอมพิวเตอร์ของคุณสูญหายหรือเสียหาย มันสามารถช่วยให้คุณเข้าถึงไฟล์ของคุณขณะเดินทางหรือจากที่ทำงานและช่วยให้คุณซิงค์ทุกอย่างบนอุปกรณ์ของคุณ

ที่เก็บข้อมูลบนคลาวด์มาพร้อมกับข้อเสียเปรียบหลักอย่างหนึ่ง คุณต้องไว้วางใจ บริษัท บางแห่งด้วยไฟล์ส่วนตัวทั้งหมดของคุณ จะเกิดอะไรขึ้นถ้า พวกเขา ถูกแฮ็ก พวกเขาเป็นสิ่งที่เชื่อถือได้จริง ๆ หรือพวกเขากำลังทำสิ่งต่าง ๆ ของคุณเมื่อคุณไม่ได้มอง? เป็นไปไม่ได้ที่จะรู้อย่างแน่นอน

มีตัวเลือกอื่น คุณสามารถโฮสต์ที่เก็บข้อมูลบนคลาวด์ของคุณเองด้วย Nextcloud Nextcloud เป็นโซลูชั่นการจัดเก็บข้อมูลบนระบบคลาวด์แบบโอเพ่นซอร์สที่ช่วยให้คุณเป็น บริษัท ที่จัดเก็บข้อมูลบนคลาวด์ของคุณเอง มีอินเทอร์เฟซที่ใช้งานง่ายและสะอาดและมีแอพสำหรับอุปกรณ์ทั้งหมดของคุณดังนั้นคุณจึงไม่ต้องจัดการกับขยะที่ถูกแฮ็กด้วยกัน

คู่มือนี้จะมุ่งเน้นไปที่การโฮสต์ Nextcloud บน VPS (เซิร์ฟเวอร์ส่วนตัวเสมือน) แต่คุณยังสามารถเรียกใช้งานได้ในเครือข่ายภายในบ้านของคุณ อย่าคาดหวังว่าจะสามารถเข้าถึงได้จากภายนอกเว้นแต่คุณจะตั้งค่าการส่งต่อพอร์ตหรือใช้งาน VPN บางขั้นตอนอาจแตกต่างกันเล็กน้อยและคุณไม่จำเป็นต้องซื้อชื่อโดเมนหรือตั้งค่าใบรับรอง SSL

เลือกโฮสต์

ลิงค์ด่วน

  • เลือกโฮสต์
  • ติดตั้งสิ่งที่คุณต้องการ
  • ตั้งค่าไฟร์วอลล์ของคุณ
  • กำหนดค่า SSH
    • คีย์ SSH
      • ของ windows
      • Mac และ Linux
    • ไม่อนุญาตให้รูทและรหัสผ่าน
  • กำหนดค่าฐานข้อมูลของคุณ
  • กำหนดค่า PHP
  • รับ Nextcloud
  • สร้างใบรับรอง SSL
  • กำหนดค่า Nginx
  • เริ่ม Nextcloud

สมมติว่าคุณกำลังใช้โซลูชันคลาวด์ที่แท้จริงและต้องการให้ไฟล์ของคุณสามารถเข้าถึงได้ทางเว็บคุณจะต้องตั้งค่า VPS เพื่อโฮสต์ Nextcloud มีตัวเลือกที่ดีออกไปดังนั้นเลือกสิ่งที่ดีที่สุดสำหรับคุณ ลองดู Linode, DigitalOcean และ Gandi หากคุณยังไม่มีโฮสต์ในใจ

คู่มือนี้จะใช้ Debian 9“ Stretch” เป็นระบบปฏิบัติการเซิร์ฟเวอร์ Debian มีความเสถียรสูงและปลอดภัยเป็นค่าเริ่มต้น นอกจากนี้ยังได้รับการสนับสนุนอย่างดีจากแพลตฟอร์มโฮสต์ส่วนใหญ่ หากคุณคุ้นเคยกับอูบุนตูมากกว่านี้ส่วนใหญ่จะนำไปใช้โดยตรงที่นั่นเช่นกันเนื่องจากอูบุนตูใช้เดเบียน

คุณจะต้องได้รับชื่อโดเมนสำหรับเซิร์ฟเวอร์ของคุณด้วย เนื่องจากสิ่งนี้จะไม่เป็นเว็บไซต์สาธารณะคุณจึงสามารถทำทุกอย่างที่คุณต้องการ กระบวนการซื้อและเชื่อมโยงชื่อโดเมนนั้นแตกต่างกันสำหรับผู้ให้บริการโฮสต์และชื่อโดเมนทุกรายดังนั้นโปรดตรวจสอบเอกสารที่ให้บริการที่คุณเลือก

ทุกอย่างที่นี่จะได้รับการจัดการจากระยะไกลจากบรรทัดคำสั่ง Linux ดังนั้นหากคุณใช้ Mac หรือ Linux คุณสามารถเปิด Terminal และใช้ SSH เพื่อเข้าถึง VPS หากคุณใช้ Windows ให้คว้าไคลเอ็นต์ SSH เช่น PuTTY

ติดตั้งสิ่งที่คุณต้องการ

มีชิ้นส่วนมากมายสำหรับปริศนานี้ คุณอาจคว้าพวกเขาทั้งหมดได้ในตอนนี้ดังนั้นคุณจึงมีสิ่งที่คุณต้องทำต่อจากที่นี่ เดเบียนมักจะไม่ได้ติดตั้ง sudo โดยค่าเริ่มต้นดังนั้นคว้าแรกและตั้งค่า

$ su -c 'apt install sudo'

ป้อนรหัสผ่านรูทของคุณจากนั้น Sudo จะถูกติดตั้ง จากนั้นคุณจะต้องเพิ่มผู้ใช้ของคุณในกลุ่ม sudo

$ su -c 'gpasswd -a ชื่อผู้ใช้ sudo'

ตอนนี้คุณสามารถใช้ sudo คุณอาจต้องลงชื่อเข้าใช้อีกครั้งหากไม่สามารถใช้งานได้ทันที จากจุดนี้ไปข้างหน้าคุณจะใช้ sudo แทนโดยเฉพาะอย่างยิ่งเนื่องจากคุณจะปิดใช้งานการเข้าสู่ระบบรากเพื่อความปลอดภัย

ตอนนี้คว้าทุกอย่างจากที่เก็บของ Debian

$ sudo apt ติดตั้ง ufw mariadb-server nginx certbot PHP php-mysql php-fpm php-cli php-json php-jll php-imap php-gd php-xml php-zip php-zip php-mcrypt

ตั้งค่าไฟร์วอลล์ของคุณ

เซิร์ฟเวอร์ของคุณอยู่บนอินเทอร์เน็ต ไม่มีทางที่จะเป็นเช่นนั้นและหมายความว่าคุณจะต้องจัดการกับผู้โจมตี การตั้งค่าไฟร์วอลล์อย่างง่ายจะช่วยป้องกันภัยคุกคามที่อาจเกิดขึ้นได้มากมาย

แทนที่จะใช้ iptables โดยตรงคุณสามารถใช้ UFW (Uncomplicated Firewall) เพื่อรักษาความปลอดภัยระบบของคุณ มันมีไวยากรณ์ที่ง่ายกว่าและง่ายกว่ามากในการทำงานกับ

เริ่มต้นด้วยการปิดการใช้งานทุกอย่างในไฟร์วอลล์ การดำเนินการนี้จะตั้งค่านโยบายเริ่มต้นให้ปฏิเสธการเชื่อมต่อกับบริการและพอร์ตทั้งหมดเพื่อให้มั่นใจว่าผู้โจมตีไม่สามารถเชื่อมต่อกับพอร์ตที่ถูกลืมบางตัวได้

$ sudo ufw เริ่มต้นปฏิเสธการเข้ามา

$ sudo ufw default ปฏิเสธการส่งออก $ sudo ufw default ปฏิเสธไปข้างหน้า

ถัดไปคุณสามารถบอก ufw บริการที่คุณต้องการอนุญาต ในกรณีนี้คุณต้องใช้ SSH และการเข้าถึงเว็บเท่านั้น คุณจะต้องการเปิดใช้งาน NTP และ DNS เพื่อให้เซิร์ฟเวอร์ของคุณสามารถดึงข้อมูลอัพเดตและตั้งนาฬิกาได้

$ sudo ufw อนุญาตให้ใช้ใน ssh $ sudo ufw อนุญาตให้ออก ssh $ sudo ufw อนุญาตใน http $ sudo ufw อนุญาตให้ใช้ http $ sudo ufw อนุญาตให้ใช้ใน https $ sudo ufw อนุญาตให้ใช้ใน https $ sudo ufw อนุญาตให้ใช้ใน ntp $ sudo ufw ufw อนุญาตใน 53 $ sudo ufw อนุญาตออก 53 $ sudo ufw อนุญาตใน 67 $ sudo ufw อนุญาตออก 67

คุณสามารถเริ่มไฟร์วอลล์ได้แล้ว มันจะให้คำเตือนเกี่ยวกับการรบกวน SSH แต่คุณได้อนุญาต SSH แล้วดังนั้นคุณจะไม่เป็นไร

$ sudo ufw เปิดใช้งาน

กำหนดค่า SSH

SSH เป็นหนึ่งในบริการที่ถูกโจมตีบ่อยที่สุดบนเซิร์ฟเวอร์ Linux มันเป็นประตูสู่ทุกสิ่งบนเซิร์ฟเวอร์และโดยปกติแล้วจะได้รับการป้องกันด้วยรหัสผ่านเท่านั้น นั่นเป็นเหตุผลที่สำคัญที่ต้องแน่ใจว่าเซิร์ฟเวอร์ของคุณไม่สามารถเข้าถึงผู้โจมตีผ่าน SSH ได้อย่างง่ายดาย

กุญแจ SSH

ก่อนอื่นคุณต้องตั้งค่าทางเลือกที่ปลอดภัยมากขึ้นสำหรับรหัสผ่าน, คีย์ SSH กระบวนการแตกต่างกันบน Windows มากกว่าบน Mac และ Linux ดังนั้นทำตามคำแนะนำที่เหมาะสมกับเดสก์ท็อปของคุณ

ของ windows

เช่นเดียวกับวิธีของ Windows คุณต้องมีโปรแกรมอื่นเพื่อทำงานนี้ให้สำเร็จ PuTTYgen เป็นเครื่องมือสร้างคีย์ RSA สำหรับ PuTTY สามารถดูได้จาก หน้าดาวน์โหลด PuTTY ดาวน์โหลดและเรียกใช้

ในหน้าต่างที่เปิดขึ้นให้ตั้งชื่อคีย์ของคุณและสร้างรหัสผ่าน เป็นรหัสผ่านที่คุณจะใช้เพื่อเข้าสู่เซิร์ฟเวอร์ของคุณ ที่ด้านล่างเลือก SSH-2 RSA และตั้งค่าขนาดคีย์อย่างน้อย 2, 048 บิต 4096 ดีกว่า แต่ 2048 จะเร็วขึ้นเล็กน้อย จากนั้นสร้างกุญแจของคุณและบันทึกทั้งกุญแจสาธารณะและกุญแจส่วนตัว สุดท้ายให้คัดลอกกุญแจสาธารณะที่แสดงอยู่ด้านบนของหน้าต่าง

ใช้ PuTTY เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ของคุณ เปิดไฟล์ที่ ~ / .ssh / authorized_keys และวางกุญแจของคุณ

ย้อนกลับไปใน PuTTY ค้นหา SSH ที่เมนูด้านข้าง จากนั้นเปิด "ตรวจสอบความถูกต้อง" ในฟิลด์สำหรับคีย์ pivate ให้เรียกดูตำแหน่งของคีย์ส่วนตัวที่คุณเพิ่งบันทึก เมื่อทุกอย่างใน PuTTY ถูกตั้งค่าสำหรับเซิร์ฟเวอร์ของคุณให้บันทึกเซสชัน ทดสอบเพื่อให้แน่ใจว่าคุณกำลังเชื่อมต่อกับกุญแจของคุณก่อนที่จะไป

Mac และ Linux

ผู้ใช้ Mac และ Linux มีถนนที่ง่ายกว่ามากที่นี่ เริ่มต้นด้วยการสร้างคีย์ SSH หากคุณยังไม่มีคีย์ คุณมีตัวเลือกในการสร้างรหัสผ่านสำหรับคีย์ มันเป็นตัวเลือกเพื่อให้เป็นสายของคุณ

$ ssh-keygen -b 4096 -t rsa

ตอนนี้เพียงส่งกุญแจของคุณไปยังเซิร์ฟเวอร์ของคุณ แทนชื่อผู้ใช้และ IP ของเซิร์ฟเวอร์

$ ssh-copy-id -i ~ / .ssh / id_rsa.pub

แค่นั้นแหละ!

ไม่อนุญาตให้รูทและรหัสผ่าน

หลังจากคุณตั้งค่าคีย์แล้วคุณสามารถปิดใช้งานรหัสผ่านสำหรับ SSH ได้ ไม่ต้องกังวลหากคุณตั้งรหัสผ่านด้วยรหัสผ่าน นั่นเป็นสิ่งที่แตกต่างกันและสิ่งนี้จะไม่ส่งผลกระทบใด ๆ เลย เปิดไฟล์คอนฟิกูเรชัน SSH ที่ / etc / ssh / sshd_config

$ sudo nano / etc / ssh / sshd_config

ค้นหาบรรทัดที่อ่าน:

#PermitRootLogin ห้ามใช้รหัสผ่าน

เปลี่ยนเป็น:

PermitRootLogin ไม่

ถัดไปค้นหาสองบรรทัด:

#PasswordAuthentication ใช่ #PermitEmptyPasswords หมายเลข

เปลี่ยนเป็น:

รหัสผ่านการตรวจสอบสิทธิ์ไม่มีใบอนุญาตเลขที่รหัสผ่าน

ในที่สุดค้นหา:

ใช้ PAM ใช่

ทำมัน:

ใช้หมายเลข PAM

บันทึกไฟล์ของคุณและปิด จากนั้นรีสตาร์ท SSH สิ่งนี้อาจช่วยให้คุณหลุดออกดังนั้นลองเชื่อมต่อใหม่

$ sudo systemctl รีสตาร์ท sshd

กำหนดค่าฐานข้อมูลของคุณ

สิ่งต่อไปที่คุณต้องทำคือกำหนดค่าฐานข้อมูลของคุณ ที่นี่ไม่มีอะไรเกี่ยวข้องมากนักดังนั้นอย่ากังวลมากเกินไป คุณเพียงแค่ต้องตั้งค่าผู้ใช้และฐานข้อมูลว่างเปล่าสำหรับ Nextcloud เพื่อเข้าถึง

มีสคริปต์ที่สะดวกในการติดตั้งและรักษาความปลอดภัยให้กับ MariaDB สำหรับคุณ เรียกใช้ก่อน

$ sudo mysql_secure_installation

รหัสผ่านรูทเริ่มต้นว่างเปล่าดังนั้นจึงเป็น“ Enter” เมื่อถูกถาม จากนั้นจะขอให้คุณตั้งค่ารหัสผ่านรูท ทำอย่างนั้น. ตอบ“ ใช่” ทุกคำถามที่ตามมา

คุณสามารถเข้าสู่ฐานข้อมูลของคุณด้วยรหัสผ่านรูทที่คุณเพิ่งตั้งค่า

$ sudo mysql -u root -p

พรอมต์จะเปลี่ยนเป็น MariaDB หนึ่ง นี่คือคอนโซลสำหรับจัดการเซิร์ฟเวอร์ฐานข้อมูลของคุณ เริ่มต้นด้วยการสร้างฐานข้อมูลใหม่ การใช้อักษรตัวพิมพ์ใหญ่นับที่นี่

สร้างฐานข้อมูล nextcloud

จากนั้นสร้างผู้ใช้สำหรับฐานข้อมูลนั้น

สร้างผู้ใช้ `nextcloud '@' localhost` ระบุโดย" PasswordForUser ";

จากนั้นให้สิทธิ์ผู้ใช้นั้นในการใช้ฐานข้อมูล

ได้รับทั้งหมดใน nextcloud * ถึง `nextcloud` @ `localhost`;

แค่นั้นแหละ! คุณสามารถออกจากเซิร์ฟเวอร์ฐานข้อมูลได้ทันที

Q

กำหนดค่า PHP

Nextcloud เขียนด้วย PHP คุณได้ติดตั้ง PHP เวอร์ชันล่าสุดที่มีอยู่บน Debian Stretch พร้อมกับส่วนขยาย PHP ที่ Nextcloud ต้องการเพื่อให้ทำงานได้อย่างถูกต้อง คุณยังต้องปรับแต่งค่า PHP สองสามอย่างเพื่อให้ทำงานได้ง่ายขึ้นด้วย Nginx

ต้องการเพียงแค่ปรับแต่งความปลอดภัยขั้นพื้นฐาน สิ่งเหล่านี้ไม่ใช่สิ่งสำคัญ แต่จะช่วยปรับปรุงความปลอดภัยของเซิร์ฟเวอร์ของคุณ

เปิด /etc/php/7.0/fpm/php.ini ด้วย sudo และโปรแกรมแก้ไขข้อความที่คุณโปรดปราน

ไฟล์มีขนาดใหญ่มากดังนั้นให้ใช้ฟังก์ชั่นการค้นหาของเครื่องมือแก้ไขเพื่อนำทางไปรอบ ๆ หากคุณใช้ Nano ก็คือ Ctrl + W ตัวเลือกกำปั้นที่คุณต้องการค้นหาคือ disable_functions เพิ่มเพิ่ม phpinfo, ระบบ, mail, exec, ในตอนท้าย

จากนั้นค้นหา sql.safe_mode แล้วเปิดใช้ ถัดไปตั้งค่า allow_url_fopen ในตอนท้ายของไฟล์เพิ่มบรรทัดต่อไปนี้บันทึกและปิด

register_globals = ปิด

รับ Nextcloud

Nextcloud ยังไม่สามารถใช้เป็นแพ็คเกจสำหรับ Debian ได้และไม่เป็นไร คุณไม่จำเป็นต้องเป็น มันเหมือนกับแอปพลิเคชั่นเว็บ PHP อื่น ๆ ที่สร้างไว้ล่วงหน้าเช่น WordPress และมันมาในไฟล์บีบอัดที่คุณสามารถแตกไฟล์ที่คุณต้องการติดตั้ง Nextcloud

ณ ตอนนี้รุ่นเสถียรล่าสุดคือ Nextcloud ตรวจสอบอีกครั้งว่าเวอร์ชั่นล่าสุดสำหรับคุณคืออะไรเมื่อคุณอ่านข้อความนี้ คำแนะนำจะอ้างถึง 12 แต่ใช้สิ่งที่เสถียรล่าสุดคือ

เปลี่ยนเป็นไดเร็กทอรีที่คุณต้องการดาวน์โหลดไฟล์เก็บถาวร Nextcloud ของคุณ จากนั้นเปลี่ยนเป็น / var / www เพื่อแยกข้อมูล

$ cd ~ / Downloads $ wget https://download.nextcloud.com/server/releases/nextcloud-12.0.3.tar.bz2 $ cd / var / www $ sudo tar xjpf ~ / Downloads / nextcloud-12.0.3 tar.bz2

หากคุณกำลังอ่านสิ่งนี้ในอนาคตคุณสามารถค้นหาลิงค์ดาวน์โหลดได้ที่ หน้าติดตั้งเซิร์ฟเวอร์ ของ Nextcloud

สุดท้ายเปลี่ยนความเป็นเจ้าของการติดตั้ง Nextcloud ของคุณเป็น www-data

$ sudo chown -R www-data: www-data / var / www / nextcloud

สร้างใบรับรอง SSL

การสร้างใบรับรอง SSL ของคุณนั้นง่ายมากขอบคุณ Certbot Certbot จะสร้างใบรับรอง SSL ของคุณโดยอัตโนมัติและวางไว้ในรูทเว็บของเว็บไซต์ที่คุณสร้าง คุณจะต้องเรียกใช้คำสั่งเดียว

$ sudo certbot certonly --webroot -w / var / www / nextcloud -d your-domain.com -d www.your-domain.com

เนื่องจากเป็นครั้งแรกที่คุณใช้ Certbot มันจะขอที่อยู่อีเมล มันจะใช้ที่อยู่นั้นเพื่อเตือนคุณเมื่อ certs ของคุณใกล้จะหมดอายุ คุณสามารถต่ออายุได้อย่างง่ายดายด้วยคำสั่งเดียว

$ sudo certbot ต่ออายุ

กำหนดค่า Nginx

Nginx เป็นเว็บเซิร์ฟเวอร์น้ำหนักเบา แต่ทรงพลัง มันจะให้บริการอินเทอร์เฟซที่คุณใช้ในการเข้าถึง Nextcloud มีไฟล์คอนฟิกูเรชันสองสามไฟล์ที่เชื่อมโยงกับ Nginx อันแรกคือการกำหนดค่าหลักอยู่ที่ /etc/nginx/nginx.conf นั่นเป็นไฟล์กำหนดค่าหลัก แต่มีค่าเริ่มต้นที่มั่นคง คุณสามารถเล่นกับมันได้หากคุณรู้ว่าคุณกำลังทำอะไรอยู่ แต่คุณสามารถทิ้งไว้คนเดียวและทำได้ดีเช่นกัน

การกำหนดค่าต่อไปมีความยาวและซับซ้อนมากขึ้น โชคดีที่คุณไม่จำเป็นต้องเขียนมันทั้งหมด Nextcloud devs ทำไปแล้ว คุณเพียงแค่ต้องปรับเปลี่ยน ไฟล์กำหนดค่าตั้งอยู่บน เว็บไซต์ของ Nextcloud คว้าหนึ่งสำหรับ webroot ของ Nginx สร้างไฟล์ใหม่ที่ / etc / nginx / sites-available / nextcloud แล้ววางลง

เมื่อคุณมีไฟล์แล้วคุณจะต้องทำการเปลี่ยนแปลงง่ายๆ ก่อนอื่นให้ค้นหาบล็อกอัปสตรีมและเปลี่ยนให้เป็นดังนี้:

upstream php-handler {unix เซิร์ฟเวอร์: /run/php/php7.0-fpm.sock; }

จากนั้นค้นหาที่ใดก็ได้ที่ระบุว่า cloud.example.com และเปลี่ยนเป็นชื่อโดเมนของคุณ

สิ่งสุดท้ายที่คุณต้องทำคือชี้ Nginx ไปยังใบรับรอง SSL ของคุณ เปลี่ยนสาย:

ssl_certificate /etc/ssl/nginx/cloud.example.com.crt; ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key;

ไปที่:

ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;

แค่นั้นแหละ! ถัดไปคุณต้องเชื่อมโยงเพื่อให้ Nginx สามารถค้นหาได้

$ cd / etc / nginx / sites-enabled $ sudo ln -s / etc / nginx / sites-available / nextcoud nextcloud

ลบค่าเริ่มต้นที่มีอยู่ที่นั่น

$ sudo rm เริ่มต้น

รีสตาร์ท PHP และ Nginx แล้วคุณจะสามารถเข้าถึง Nextcloud!

$ sudo systemctl รีสตาร์ท php7.0-fpm $ sudo systemctl รีสตาร์ท nginx

เริ่ม Nextcloud

เปิดเว็บเบราว์เซอร์และไปที่ชื่อโดเมนของคุณ คุณจะได้รับการต้อนรับด้วยหน้าจอการตั้งค่า Nextcloud สร้างบัญชี admin ด้วยตัวคุณเองและป้อนข้อมูลสำหรับบัญชีฐานข้อมูลที่คุณสร้าง

Nextcloud จะใช้เวลาหลายนาทีในการกำหนดค่าและติดตั้ง เมื่อเสร็จสิ้นคุณจะถูกนำไปไว้ที่แผงควบคุม Nextcloud ใหม่ของคุณ จากตรงนั้นคุณสามารถสร้างผู้ใช้ใหม่เพื่อให้คนที่คุณไว้วางใจบนที่เก็บข้อมูลบนคลาวด์ใหม่ของคุณ คุณยังสามารถเริ่มอัพโหลดไฟล์ได้ทันที

แค่นั้นแหละ! ตอนนี้คุณมีคลาวด์ส่วนตัวของคุณเองแล้ว!

สร้างคลาวด์ส่วนตัวของคุณเองด้วย nextcloud