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

การมีเว็บไซต์ หรือ blog เป็นของตนเอง มีสิ่งที่ต้องพิจารณาหลายอย่าง อาทิเช่น ความเป็นเจ้าข้องข้อมูล ความอ่อนตัวในการปรับแต่งหน้าตา ความง่ายในการใช้งาน ความง่ายต่อการดูแลรักษา และที่สำคัญค่าใช้จ่ายในรักษาเว็บไซต์ให้อยู่กับเราไปอย่างต่อเนื่อง
จุดเริ่มต้น
ผมเคยทำเว็บไซต์ตั้งแต่ตอนเป็นนักเรียนอยู่ที่อังกฤษ ข้อมูลจาก wayback machine (https://archive.org/web/) คือทำมาตั้งแต่ปี 2000 (ตอนนั้นตั้งชื่อโดเมน a4news.com)

โดยตอนแรกหัดเขียนเว็บด้วยตัวเอง ตั้งแต่เขียนเป็น static site และศึกษาการใช้งาน php ร่วมกับ database (ตอนนั้นยังใช้ MS Access เป็น database และ host บน MS Windows) เพื่อทำให้เว็บไซต์ เป็น dynamic มากขึ้น ซึ่งต่อมาก็ย้ายมาใช้ MySQL และได้รู้จักคำว่า LAMP stack (Linux Apache MySQL PHP)
โดยเว็บไซต์ดังกล่าว เน้นแปลข่าวสารและบทความที่เกี่ยวข้องด้านไอที จากภาษาอังกฤษมาเป็นภาษาไทย ซึ่งถือว่า geek มาก
โดยตอนนั้นอาจจะมีโปรแกรมช่วย เช่น Dreamweaver ซึ่งเมื่อก่อนไม่ได้เป็นของ Adobe แต่เป็นของ Macromedia (แก่มาก) - เรื่องลิขสิทธิ์ซอฟท์แวร์ ไม่ต้องพูดถึง เป็นนักเรียน ต้องใช้ของเสมือนฟรีแน่นอน

การทำเว็บไซต์เอง ก็ได้ประสบการณ์หลายอย่าง เช่น
- ทำให้รู้ว่า แค่แปลข่าวหรือบทความจากภาษาอังกฤษ เป็นภาษาไทย ไม่ง่ายเหมือนเราอ่านเอง แต่ต้องเขียนให้คนอื่นอ่านแล้วเข้าใจ ซึ่งใช้เวลานานกว่าที่คิดมาก การโดน hack server (คอมพิวเตอร์ที่ใช้นี่แหล่ะ) ต่อหน้าต่อตา ด้วย SQL injection ทำให้ต่อมาเริ่มสนใจเรื่อง computer/network/cyber security มากยิ่งขึ้น
- ทำให้รู้ว่าการทำให้ web server ดึงข้อมูลจาก database server เพื่อมาแสดงผลเป็นเว็บไซต์ มีขั้นตอนเป็นอย่างไร
- ทำให้รู้ว่าการมีเว็บไซต์ มีชื่อเป็นของตัวเอง ยากพอสมควร ตั้งแต่คิดว่าจะมีชื่ออะไร ตอนนั้นเหตุผลที่เลือก a4news.com คือ ต้องการมีหน้าข่าวไอทีภาษาไทยที่แต่ละข่าว สั้น กระทัดรัด ไม่เกิน 1 หน้า A4 หรือเล่นกับคำคือ เป็นที่หนึ่งหรือ เกรด A ด้านข่าวไอที อะไรประมาณนั้น
- หลังจากคิดชื่อได้ ทำให้รู้อีกว่า มันมีค่าใช้จ่าย ไม่มากก็น้อย ขึ้นอยู่กับว่าเราต้องการเล่นท่ายากแค่ไหน เช่น ถ้าพร้อมจ่าย ก็ไม่ยาก ไม่ต้องมาจัดการเรื่อง server เอง เช่าเอา แต่ถ้าไม่พร้อมก็ต้องหาทางประหยัดต่อไป ซึ่งทำได้ ซึ่งเดี๋ยวจะพูดถึงในหัวข้อต่อไป
- ทำให้รู้ว่าการมีเว็บไซต์ ต้องมีเวลา มีความใส่ใจดูแลอย่างต่อเนื่อง ไม่งั้นก็จะไม่มีคนมาดูมาใช้งาน
สิ่งสำคัญที่ต้องมี ในการจะมีเว็บไซต์สักเว็บไซต์นึง
สิ่งที่สำคัญในการมีตัวตนบน Internet ด้วยการมีเว็บไซต์หรือ blog เป็นของตนเองมีไม่กี่อย่าง บางอย่างเราเลือกที่จะมีเป็นของตัวเอง เพื่อความอ่อนตัว หรือจะไม่มีก็ได้ โดยสิ่งที่จำเป็นมีดังนี้

- ชื่อเว็บไซต์ เช่น blog.chaptrechakul.info หรือ domain name อันนี้ถ้าอยากมีชื่อเป็นของตัวเอง ต้องยอมจ่ายค่าจดทะเบียน และเสียค่าชื่อเป็นรายปี ซึ่งจดทะเบียนได้จาก domain name registar เช่น domains.google.com หรือ godaddy.com เป็นต้น หรือหากใครไม่ต้องการจ่ายตรงนี้ ก็สามารถใช้ชื่อที่ได้จาก blogging platfom ต่างๆ เช่น wordpress.com แต่ความอ่อนตัวเรื่องชื่อจะไม่มีเท่าจดชื่อเป็นของตัวเอง
- เมื่อมีชื่อแล้ว ขั้นตอนต่อไปก็คือต้องมี web server ไปผูกกับชื่อ โดย web server ต้องมี IP address ที่เป็นแบบ public คือเข้าถึงได้จากทุกที่ จะใช้ private IP เหมือนที่เราได้จาก Internet ตามบ้านหรือ wifi ไม่ได้ เนื่องจากส่วนใหญ่จะมีการแจก IP address ที่เป็นแบบ private มาให้ เนื่องจากปัจจุบันจำนวน IP adress ที่เป็นเวอร์ชั้น 4 ที่เราใช้กันมีจำนวนเหลือน้อยลงทุกที ซึ่งตรงนี้หากเราจะทำการ host website ด้วยตัวเอง ต้องหาทางมี public IP adress ให้ได้ หรือถ้าเราไม่ต้องการ host website เอง ก็ต้องมีการนำชื่อหรือ domain name ไปผูกกับผู้ให้บริการ web site หรือ blogging platform เช่น wordpress.com เป็นต้น
ความรับผิดชอบในการมีเว็บไซต์เป็นของตัวเอง

การจะมีเว็บไซต์เป็นของตัวเอง นอกจากจะต้องมีชื่อ (domain name) แล้วเรายังต้องมี server เพื่อเก็บไฟล์ต่างๆ ที่จะถูกนำมาแสดงเป็นหน้าเว็บไซต์ และมี IP address ที่เข้าถึงได้จากภายนอก โดยรูปแบบการมี server นั้นในปัจจุบันแบ่งได้เป็น 4 แบบ ตามภาพข้างต้น
- แบบ on-site คือ การมี server เองทั้งหมด ตั้งแต่เครื่องคอมพิวเตอร์ที่เป็น server ระบบปฏิบัติการ ซอฟท์แวร์ web server และตัวข้อมูลที่จะแสดงในเว็บไซต์ ทั้งหมดนี้เรารับผิดชอบดูแลเองทั้งหมด ตั้งแต่จัดหา Internet, ตัวเครื่อง server ที่เป็น hardware ระบบปฏิบัติการ ซอฟท์แวร์ต่างๆ เช่น web server ฐานข้อมูล รวมไปถึง software ที่รันบน server เช่น blogging software โดยแต่ละเครื่อง server ส่วนใหญ่จะให้บริการแค่ 1 บริการ ดังนั้นถ้ามีหลายบริการ จำเป็นต้องมีเครื่อง server หลายเครื่อง
- แบบ IaaS หรือ Infrastructure as a Service คือการใช้ Virtual Machine เป็น server โดย ตัวเครื่องที่เป็น hardware อาจจะอยู่กับเรา หรืออยู่ที่อื่นก็ได้ เช่น AWS หรือ Google Cloud ส่วนตัวใช้แบบนี้อยู่ โดยตัว hardware ยังอยู่กับเราเอง แต่ต้องการมี Virtual Machine หลายๆ เครื่อง ให้บริการแยกกัน เลยเลือกใช้แบบนี้ โดยตัวเลือกที่เลือก จะเขียนอธิบายใน post ถัดๆ ไป สำหรับการดูแล ถ้า server อยู่กับเรา ก็ไม่ต่างกับข้อ 1 คือดูแลทั้งหมด แต่เราสามารถใช้ server เครื่องเดียวจำลองเป็น server หลายๆ เครื่อง ให้บริการแยกกันได้ หรือถ้าเราใช้บริการ IaaS เราก็ดูแลระดับ ระบบปฏิบัติการในเครื่อง server จำลองที่เป็น virtaul machine ขึ้นไป ไม่ต้องดูแลตัว hardware
- แบบ PaaS หรือ Platform as a Service ในที่นี้คือการใช้โครงสร้างพื้นฐานเกือบทั้งหมด ยกเว้นตัวโปรแกรม กับตัวข้อมูล จากผู้ให้บริการ เช่นการเลือกใช้บริการที่มี linux, apache webserver, mysql database และ php มาให้แล้ว แค่เราเอา software blog เช่น wordpress หรือ ghost มาติดตั้งและใช้งาน หรืออาจจะคิดถึง container ก็ได้ ที่ระดับ PaaS เราดูแลแค่ตัวโปรแกรมที่รันบน web server เช่นเลือก blogging platform ว่าจะเป็น wordpress หรือ ghost และข้อมูลที่อยู่ในนั้นเท่านั้น
- แบบ SaaS หรือ Software as a Service ส่วนใหญ่คือการใช้บริการ service สำเร็จรูปจากผู้ให้บริการ cloud (cloud service provider) เช่น การใช้บริการ blog จาก wordpress.com หรือ ghost.org หรือ medium.com ซึ่งเราไม่ต้องกังวลกับการดูแลตัว server หรือ software ใดๆ แต่ความอ่อนตัวอาจจะน้อยกว่าหน่อย เพราะเราเป็นแค่ผู้ใช้งานระบบเท่านั้น ดูแลแค่ข้อมูลที่อยู่ในระบบ
ทำไมถึงเลือก IaaS

จากที่พูดมา เรามีตัวเลือกในการมีเว็บไซต์หรือ blog ที่หลากหลายกว่าเมื่อ 20 ปีที่แล้วมาก ไม่จำเป็นต้องทำเองทั้งหมดเหมือนเมื่อก่อน ซึ่งที่ผ่านมา ก็ได้ลองเกือบทุกแบบไม่ว่าจะเป็น On-site, IaaS, PaaS หรือ SaaS ก็ต้องบอกว่ามีเหตุผลที่เลือกกลับมา host website ด้วยตัวเองแบบ IaaS ดังนี้
ความเป็นเจ้าของ - แม้ว่าจะมี domain name เป็นของตัวเอง แต่ถ้าหากไม่อยากเสียเงินไปมากกว่านี้ มีตัวเลือกที่เป็น PaaS และ SaaS น้อยลงเยอะ เช่น จะใช้บริการ wordpress.com ก็ต้องใช้ domain name เป็น .wordpress.com (เช่น nattapon.wordpress.com) เป็นต้น ไม่สามารถเอา domain name เราเองไปผูกได้ (จะทำได้ต้องเสียค่าบริการรายเดือน)
สำหรับการไปแนว IaaS ก็สามารถทำได้ เช่นการไปใช้ free tier ของ Google Cloud Compute สามารถเอา domain ไปผูกกับ IP ของ Virtual Machine ที่สร้างได้ แต่ ตัว free tier สเปกเครื่องต่ำมากจนรันอะไรไม่ค่อยได้เลย ถ้าใช้เกินอาจเสียค่าใช้จ่ายเพิ่มเติมได้

ความอ่อนตัว - จากข้อจำกัดของ SaaS แบบฟรีข้างต้น ทำให้ต้องค้นหาเพิ่มเติมถึงวิธีอื่น ที่มีความอ่อนตัวมากกว่า ก็ได้พบว่า หากจด domain กับ Google สามารถใช้ Blogging platform ชื่อ Blogger.com ซึ่งเป็นบริการที่ Google ได้ซื้อมา ซึ่งจะคล้ายกับ wordpress.com เลย แต่บัญชีฟรี สามารถผูก custom domain ได้เลย แต่เราไม่ชอบหน้าตาของ Blogger เท่าไหร่ เลยไม่ค่อยได้ใช้งาน นอกจากนี้การจะปรับ theme หรือ inject code หรือการเอา log มาวิเคราะห์ ก็ทำได้ยาก แต่อย่างน้อยก็อ่อนตัวกว่าแบบแรก ซึ่งเคยทดสอบใช้งานรูปแบบนี้อยู่สักพักแต่ไม่ชอบเลยไม่ได้ใช้ต่อ

สุดท้ายเลยจบที่เลือกสร้าง VM บน server ของตัวเอง โดยใช้ Virtualisation Platform หรือ Hypervisor ชื่อ Proxmox ซึ่งต้องดูแลเองทั้งหมด แต่ก็อ่อนตัวที่สุด แต่ปัญหาคือ server ตัวเองเชื่อมต่อกับ Internet แบบใช้ตามบ้าน ไม่มี public IP ทำให้ไม่สามารถให้บริการเป็น web server ได้ จนได้มาพบกับบริการจาก cloudflare ที่สามารถใช้ตัว cloudflare เป็น reverse proxy server คอยรับ request จากผู้เข้าเยี่ยมชม หลังจากนั้นจะสร้าง tunnel ส่ง reqest มายัง web server ที่เป็น private IP ของผู้ให้บริการอินเทอร์เน็ต โดยที่ไม่ต้องทำ port forwarding หรือ ปรับกฎ firewall ใดๆ เลย (จะเขียนบทความการทำ web server แบบนี้ในโอกาสต่อไป)

ทำไมถึงเลือก Ghost แทน Wordpress หรือ Medium
เข้าหัวข้อหลักของบทความนี้สักที จากที่ได้พูดถึงความเป็นมา แนวความคิด การมีเว็บไซต์หรือ blog เป็นของตัวเอง สรุปได้ว่า ในปัจจุบัน มีตัวเลือกที่หลากหลายมาก ขึ้นอยู่กับเราต้องการเหนื่อยแค่ไหน ต้องการความอ่อนตัว ความเป็นเจ้าของ การควบคุม การดูแล แค่ไหน ซึ่งเราเลือกที่จะทำเองทั้งหมดแบบ IaaS โดยที่ S หรือ Service คือเราดูแลเองด้วยซ้ำ เหมือน on-site แต่เราใช้ Hypervisor แทนที่จะติดตั้งไปบน hardware ตรงๆ ทำให้ที่เหลือคือเลือกว่าจะใช้ software สำหรับทำ blog ตัวไหนเท่านั้น โดยจะขออธิบายตัวเลือกทีละตัว โดยเริ่มจากตัวที่ลองใช้แล้วดี แต่ไม่เลือก ไล่ไปจนสุดท้ายคือตัวที่เลือกใช้ในปัจจุบัน
- Medium เป็น service (SaaS) ที่เราเป็นผู้ใช้ระบบ เป็นผู้เขียนบทความ ซึ่งก็มีข้อดีคือไม่ต้องสนใจเรื่องการดูแลระบบ สนใจแค่เขียนบทความออกมาให้ดูดี และที่ชอบคือ editor ใช้งานง่าย ไม่ซับซ้อน อยากพิมพ์อะไร ก็พิมพ์ได้เลย อยากใส่รูป ก็ใส่ได้เลย แบบว่าชอบ แต่ติดปัญหาที่ บทความใน medium หากไม่ได้เป็นสมาชิก จะอ่านได้จำกัดจำนวนบทความ ซึ่งก็เข้าใจว่า โมเดลการทำธุรกิจของ medium คือพยายามผลักดันให้ผู้อ่านเสียเงินสมัครสมาชิก เพื่อแลกกับการเข้าถึงบทความที่มีคุณภาพ โดยหากบทความได้รับความนิยม เจ้าของบทความก็จะได้เงินจากบทความดังกล่าว ซึ่งตรงนี้เป็นข้อจำกัด หากเราเลือกทำบทความที่เป็นภาษาไทย เท่ากับว่าฐานผู้อ่านจะมีจำนวนน้อยลงมาก และผู้อ่านเข้าถึงได้อย่างจำกัด เลยตัดสินใจว่า medium น่าจะไม่เหมาะ
- Wordpress.org ที่เป็น software ที่เราเอามาติดตั้งเองบนเครื่อง server อันนี้เป็น blogging platform ที่เราค่อนข้างคุ้นเคย ติดตั้งไม่ยาก มี plugin จำนวนมหาศาล โดยตัว wordpress เองได้รับความนิยมเป็นอย่างมาก มีการอ้างว่าเว็บไซต์บนอินเทอร์เน็ตกว่า 42.8% ของ top 10 million ใช้ wordpress ซึ่งก็เป็นทั้งข้อดีและข้อเสีย ข้อดีคือ support มีเยอะมาก ปัญหาที่เจอ แทบทั้งหมด สามารถหาทางแก้ไขได้ แต่ข้อเสียก็คือ wordpress เป็นเป้าการโจมตีที่ใหญ่มาก แต่ตรงนี้หากดูแลดี อัพเดตและ patch อย่างสม่ำเสมอ แต่ปัญหาใหญ่ที่เจอคือมันกินทรัพยากรค่อนข้างมาก เมื่อเทียบกับ blogging platform ตัวต่อไป ซึ่งทำให้การให้บริการทำได้ช้ากว่าที่ควรจะเป็น โดยเฉพาะเมื่อมีการทำ reverse proxy มายัง server ของเรา อีกเหตุผลนึงคือตัว editor ใช้งานไม่ง่ายเหมือน medium เลยทำให้เราไม่ได้เลือกตัวนี้
- Ghost เป็น software blogging platform ที่เราเลือกใช้ในปัจจุบัน เป็น software ที่เขียนด้วย node.js ซึ่งเป็นครั้งแรกที่ได้ลอง เพราะที่ผ่านมาคุ้นเคยแต่การใช้ซอฟท์แวร์ที่เขียนด้วย php เนื่องจาก web server สนับสนุนด้วยตัวมันเองอยู่แล้ว แต่แม่จ้าว มันเร็วกว่า wordpress เยอะมาก แต่ที่ชอบคือ theme ที่เรียบง่าย และมี editor ที่เหมือนกับใช้ medium เลยก็ว่าได้ ง่ายสุดๆ คือ เสียเวลาติดตั้งระบบหน่อย หลังจากนั้นก็ไม่ต้องสนใจมัน เอาเวลาไปใส่ใจกับการเขียนบทความให้มีคุณภาพได้เลย (มั้ย) นี่ก็คือเหตุผลที่ปัจจุบันเลือกใช้ตัว Ghost เป็น ซอฟท์แวร์ blogging platform
สรุป
โดยสรุปแล้ว การมีเว็บไซต์หรือ blog เป็นพื้นที่ส่วนตัวในการเผยแพร่ข้อมูล หรือเป็นที่ระบาย ในปัจจุบัน มีตัวเลือกเยอะมาก หากไม่ต้องการยุ่งยาก และพร้อมจะจ่ายเงิน เราแทบจะไม่ต้องกังวลเรื่องดูแลระบบเองเลย ใช้ SaaS อย่าง Medium หรือ Wordpress.com หรือ Ghost ได้เลย
แต่หากต้องการประหยัด แต่เหนื่อยหน่อย และต้องการมีความอ่อนตัว ปัจจุบันมีเทคโนโลยี สามารถทำให้เราเป็นผู้ให้บริการเองได้ ซึ่งที่เราใช้ ต้องขอบคุณผู้สนับสนุนอย่าง:
- Hypervisor: Proxmox
- Internet: home use + cloudflare reverse proxy
- Blogging platform: nginx + Ghost