Hubzilla เป็นแพลตฟอร์มโอเพนซอร์ซเพื่อสร้างเว็บไซต์ที่เชื่อมต่อภายใน ในระบบนิเวศของ Hubzilla เซิร์ฟเวอร์ที่ใช้งาน Hubzilla เรียกว่า "ฮับ" และกลุ่มของฮับจำนวนมากเรียกว่า "กริด" ���ับภายในกริดสื่อสารกันเพื่อแบ่งปันข้อมูลเช่นข้อมูลประจำตัว ทุกคนสามารถเผยแพร่เนื้อหาแบบสาธารณะหรือแบบส่วนตัวโดยใช้ "แชแนล" ซึ่งอาจเป็นบุคคลบล็อกหรือฟอรัม ใช้เฟรมเวิร์ก Zot ที่ใช้ JSON เพื่อดำเนินการสื่อสารและบริการที่มีการกระจายอำนาจอย่างปลอดภัย Hubzilla นั้นเต็มไปด้วยคุณสมบัติต่างๆเช่นหัวข้อการสนทนาในเครือข่ายโซเชียลการจัดเก็บไฟล์บนคลาวด์ปฏิทินและที่อยู่ติดต่อเว็บเพจที่โฮสต์ด้วยระบบจัดการเนื้อหา wiki และอีกมากมาย
ข้อกำหนดเบื้องต้น
- อินสแตนซ์ของเซิร์ฟเวอร์ Vultr Ubuntu 16.04
- sudo ผู้ใช้
- ชื่อโดเมนที่ชี้ไปยังอินสแตนซ์
สำหรับบทช่วยสอนนี้เราจะใช้ hubzilla.example.com
เป็นชื่อโดเมนที่ชี้ไปยังอินสแตนซ์ Vultr โปรดตรวจสอบให้แน่ใจว่าได้แทนที่ชื่อโดเมนตัวอย่างทั้งหมดด้วยชื่อจริง
ปรับปรุงระบบฐานของคุณใช้คู่มือ วิธีการปรับปรุง Ubuntu 16.04 เมื่อระบบของคุณอัปเดตแล้วให้ดำเนินการติดตั้งการอ้างอิงต่อ
ติดตั้ง Nginx
Nginx เป็นเว็บเซิร์ฟเวอร์ที่ใช้งานจริงเพื่อเรียกใช้เว็บแอปพลิเคชัน
ติดตั้ง Nginx
sudo apt -y install nginx
เริ่ม Nginx และเปิดใช้งานให้รันโดยอัตโนมัติในเวลาบูต
sudo systemctl start nginx
sudo systemctl enable nginx
ติดตั้ง PHP 7.1
Hubzilla รองรับ PHP เวอร์ชั่นด้านบน 5.6 เราจะติดตั้ง PHP 7.1 เพื่อให้มั่นใจถึงความเร็วความปลอดภัยและความเข้ากันได้สูงสุด เพิ่มที่เก็บ Ubuntu สำหรับ PHP 7.1
sudo add-apt-repository --yes ppa:ondrej/php
sudo apt update
ติดตั้ง PHP เวอร์ชัน 7.1 พร้อมกับโมดูลที่ต้องการโดย Hubzilla
sudo apt -y install php7.1 php7.1-mysql php7.1-curl php7.1-json php7.1-cli php7.1-gd php7.1-xml php7.1-mbstring php7.1-fpm imagemagick php7.1-zip
แก้ไขไฟล์กำหนดค่า PHP
sudo nano /etc/php/7.1/fpm/php.ini
ค้นหาบรรทัดต่อไปนี้ ยกเลิกการใส่ข้อคิดเห็นและตั้งค่าเขตเวลาที่เหมาะสม
date.timezone = Asia/Kolkata
;Replace "Asia/Kolkata" with your appropriate time zone
ตั้งค่าขีด จำกัด หน่วยความจำที่เหมาะสมในการกำหนดค่าถัดไป การตั้งค่าเป็น -1
จะให้หน่วยความจำไม่ จำกัด พร้อมสคริปต์ รวมถึงเพิ่มขีด จำกัด การอัพโหลดไฟล์สูงสุด
memory_limit = -1
upload_max_filesize = 100M
post_max_size = 100M
ถัดไปค้นหาบรรทัดต่อไปนี้และตั้งค่าเป็น 0
หลังจากไม่แสดงข้อคิดเห็น
cgi.fix_pathinfo=0
เริ่ม php7.1-fpm
และเปิดใช้งานให้เริ่มโดยอัตโนมัติในเวลาบูต
sudo systemctl restart php7.1-fpm
sudo systemctl enable php7.1-fpm
สร้างไดเรกทอรีเซสชันและให้สิทธิ์ในการเขียน
sudo mkdir /var/lib/php/session
sudo chmod -R 777 /var/lib/php/session
ตอนนี้ให้ทำการติดตั้ง MariaDB
ติดตั้ง MariaDB
MariaDB เป็นทางแยกของ MySQL เพิ่มที่เก็บ MariaDB ในระบบของคุณเนื่องจากที่เก็บเริ่มต้นของ Ubuntu มี MariaDB รุ่นเก่ากว่า
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.nodesdirect.com/mariadb/repo/10.2/ubuntu xenial main'
sudo apt update
ติดตั้ง MariaDB
sudo apt -y install mariadb-server
ระบุรหัสผ่านที่คาดเดายากสำหรับผู้ใช้รูต MariaDB เมื่อถูกถาม เริ่ม MariaDB และเปิดใช้งานโดยอัตโนมัติเมื่อเริ่มต้นระบบ
sudo systemctl start mariadb
sudo systemctl enable mariadb
ก่อนที่จะกำหนดค่าฐานข้อมูลคุณจะต้องรักษาความปลอดภัย MariaDB คุณสามารถรักษาความปลอดภัยโดยเรียกใช้ mysql_secure_installation
สคริปต์
sudo mysql_secure_installation
คุณจะถูกขอรหัสผ่านรูต MariaDB ปัจจุบัน ระบุรหัสผ่านที่คุณตั้งค่าระหว่างการติดตั้ง คุณจะถูกถามว่าคุณต้องการเปลี่ยนรหัสผ่านที่มีอยู่ของผู้ใช้รูทของเซิร์ฟเวอร์ MariaDB ของคุณหรือไม่ คุณสามารถข้ามการตั้งค่ารหัสผ่านใหม่ได้เนื่องจากคุณได้ระบุรหัสผ่านที่คาดเดายากไว้แล้วระหว่างการติดตั้ง ตอบ " Y
" กับคำถามอื่น ๆ ทั้งหมดที่ถาม
ล็อกอินเข้าสู่ MySQL shell ในฐานะรูท
mysql -u root -p
ระบุรหัสผ่านสำหรับผู้ใช้รูท MariaDB เพื่อเข้าสู่ระบบ
รันเคียวรีต่อไปนี้เพื่อสร้างฐานข้อมูลและผู้ใช้ฐานข้อมูลสำหรับการติดตั้ง Hubzilla
CREATE DATABASE hubzilla_data;
CREATE USER 'hubzilla_user'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON hubzilla_data.* TO 'hubzilla_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
คุณสามารถแทนที่ชื่อฐานข้อมูล hubzilla_data
และชื่อผู้ใช้ hubzilla_user
ตามที่คุณต้องการ โปรดตรวจสอบให้แน่ใจว่าได้เปลี่ยน StrongPassword
รหัสผ่านที่รัดกุมมาก
ติดตั้ง Hubzilla
ติดตั้ง Git ต้องใช้ Git ในการโคลนที่เก็บ Hubzilla จาก Github
sudo apt -y install git
สลับไปยังไดเร็กทอรีเว็บรูทและโคลนที่เก็บ Hubzilla
cd /var/www
sudo git clone https://github.com/redmatrix/hubzilla.git hubzilla
สร้างไดเรกทอรีใหม่เพื่อเก็บข้อมูล Hubzilla
cd hubzilla
sudo mkdir -p "store/[data]/smarty3"
sudo chmod -R 777 store
โคลนและติดตั้งโปรแกรมเสริม Hubzilla
sudo util/add_addon_repo https://github.com/redmatrix/hubzilla-addons.git hzaddons
sudo util/update_addon_repo hzaddons
จัดเตรียมความเป็นเจ้าของไดเร็กทอรีและไฟล์ให้กับผู้ใช้ Nginx
sudo chown -R www-data:www-data /var/www/hubzilla
สร้างโฮสต์เสมือน
สิ่งสำคัญคือต้องมีการติดตั้ง SSL บนเว็บไซต์ Hubzilla เนื่องจากการเข้าสู่ระบบและข้อมูลอื่น ๆ อาจไม่ปลอดภัยหากไม่ได้เข้ารหัส ในบทช่วยสอนนี้เราจะใช้ใบรับรอง SSL ที่ได้รับจาก Let's Encrypt certificate Authority
เพิ่มที่เก็บ Certbot
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
ติดตั้ง Certbot ซึ่งเป็นแอปพลิเคชันไคลเอนต์สำหรับ Let's Encrypt CA
sudo apt -y install certbot
หมายเหตุ: ในการรับใบรับรองจาก Let's Encrypt CA โดเมนที่จะสร้างใบรับรองนั้นจะต้องชี้ไปที่เซิร์ฟเวอร์ หากไม่มีให้ทำการเปลี่ยนแปลงที่จำเป็นกับระเบียน DNS ของโดเมนและรอให้ DNS เผยแพร่ก่อนทำการขอใบรับรองอีกครั้ง Certbot ตรวจสอบอำนาจโดเมนก่อนที่จะให้ใบรับรอง
สร้างใบรับรอง SSL
sudo certbot certonly --webroot -w /var/www/html -d hubzilla.example.com
/etc/letsencrypt/live/hubzilla.example.com/
ใบรับรองที่สร้างขึ้นมีแนวโน้มที่จะถูกเก็บไว้ใน ใบรับรอง SSL จะถูกเก็บไว้เป็น และคีย์ส่วนตัวจะถูกเก็บไว้เป็นfullchain.pem
privkey.pem
ลองเข้ารหัสใบรับรองหมดอายุใน 90 วันดังนั้นขอแนะนำให้ตั้งค่าการต่ออายุใบรับรองโดยอัตโนมัติโดยใช้งาน Cron
เปิดไฟล์งาน cron
sudo crontab -e
เพิ่มบรรทัดต่อไปนี้ที่ท้ายไฟล์
30 5 * * * /usr/bin/certbot renew --quiet
งาน cron ข้างต้นจะทำงานทุกวันเวลา 5.30 น. หากใบรับรองถึงกำหนดหมดอายุจะมีการต่ออายุโดยอัตโนมัติ
สร้างไฟล์การกำหนดค่าใหม่สำหรับเซิร์ฟเวอร์ Hubzilla
sudo nano /etc/nginx/sites-available/hubzilla
เติมไฟล์
server {
listen 80;
server_name hubzilla.example.com;
index index.php;
root /var/www/hubzilla;
rewrite ^ https://hubzilla.example.com$request_uri? permanent;
}
server {
listen 443 ssl;
server_name hubzilla.example.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/hubzilla.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hubzilla.example.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS;
ssl_prefer_server_ciphers on;
fastcgi_param HTTPS on;
index index.php;
charset utf-8;
root /var/www/hubzilla;
access_log /var/log/nginx/hubzilla.log;
client_max_body_size 20m;
client_body_buffer_size 128k;
location / {
if ($is_args != "") {
rewrite ^/(.*) /index.php?q=$uri&$args last;
}
rewrite ^/(.*) /index.php?q=$uri last;
}
location ^~ /.well-known/ {
allow all;
rewrite ^/(.*) /index.php?q=$uri&$args last;
}
location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|map|ttf|woff|woff2|svg)$ {
expires 30d;
try_files $uri /index.php?q=$uri&$args;
}
location ~* \.(tpl|md|tgz|log|out)$ {
deny all;
}
location ~* \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\. {
deny all;
}
location ~ /store {
deny all;
}
}
เปิดใช้งานการกำหนดค่า
sudo ln -s /etc/nginx/sites-available/hubzilla /etc/nginx/sites-enabled/hubzilla
ทดสอบการกำหนดค่าเว็บเซิร์ฟเวอร์ Nginx
sudo nginx -t
คุณจะเห็นผลลัพธ์ต่อไปนี้
user@vultr:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
หากคุณไม่พบข้อผิดพลาดในการกำหนดค่าให้รีสตาร์ท Nginx เพื่อให้การกำหนดค่าใหม่มีผล
sudo systemctl restart nginx
ห่อ
นำทางไปยังการhttps://hubzilla.example.com
ใช้เบราว์เซอร์ที่คุณชื่นชอบและคุณจะเห็นหน้าเว็บที่แสดงอินเตอร์เฟซ "การตรวจสอบระบบ" คุณจะเห็นว่าความต้องการทุกอย่างผ่านไปแล้วในการตรวจสอบระบบ บนอินเทอร์เฟซถัดไปให้รายละเอียดฐานข้อมูลที่คุณสร้างไว้ก่อนหน้านี้ ถัดไประบุอีเมลผู้ดูแลระบบ URL เว็บไซต์และเขตเวลา ตอนนี้ Hubzilla ได้รับการติดตั้งบนเซิร์ฟเวอร์ของคุณแล้วคุณสามารถสร้างผู้ใช้ผู้ดูแลระบบต่อด้วยอีเมลผู้ดูแลระบบที่คุณใช้ระหว่างการติดตั้ง
ในที่สุดคุณจะต้องตั้งค่า cron เพื่อเรียกใช้งานที่กำหนดไว้ทุก ๆ สิบนาที
สร้างไฟล์ใหม่สำหรับงาน cron
sudo nano /etc/cron.d/hubzilla
เติมไฟล์ด้วยข้อมูลต่อไปนี้
*/10 * * * * www-data cd /var/www/hubzilla; /usr/bin/php Zotlabs/Daemon/Master.php Cron
รีสตาร์ทเซอร์วิส cron
sudo systemctl restart cron
หากคุณต้องการสร้างชุดเอกสารภายในให้รันคำสั่งต่อไปนี้
cd /var/www/hubzilla
util/importdoc
sudo chown www-data:www-data -R /var/www/hubzilla
ตอนนี้ Hubzilla ได้รับการติดตั้งและกำหนดค่าแล้วคุณสามารถเชิญเพื่อนของคุณและใช้แพลตฟอร์มได้ตามต้องการ