- การใช้ [Open OSCAR Server] ช่วยให้สร้าง เซิร์ฟเวอร์ AIM/ICQ บนเซิร์ฟเวอร์ Debian และเชื่อมต่อไคลเอนต์หลายตัวในสภาพแวดล้อมเก่า ๆ รวมถึง Windows 98 ได้อีกครั้ง
- สำหรับการใช้งานขนาดเล็ก VPS สเปกต่ำก็เพียงพอ แต่หากต้องการใช้กับเพื่อนภายนอก จำเป็นต้องมี พอร์ตเริ่มต้น 5190 พร้อม IP คงที่หรือ dynamic DNS และตั้งค่าไฟร์วอลล์ให้เหมาะกับการเปิดใช้งานบนอินเทอร์เน็ต
- ตั้งค่า
OSCAR_LISTENERS และ OSCAR_ADVERTISED_LISTENERS_PLAIN ใน settings.env ให้ตรงกับ โหมด LAN หรือ WAN และเปลี่ยนให้ไคลเอนต์ AIM เชื่อมต่อกับเซิร์ฟเวอร์ของตัวเองแทนเซิร์ฟเวอร์ AOL ที่ปิดไปแล้ว
- โดยค่าเริ่มต้นสามารถเข้าสู่ระบบด้วย screen name และรหัสผ่านใด ๆ ได้ จึงควรเปิดใช้ การยืนยันตัวตนด้วยรหัสผ่าน ด้วย
DISABLE_AUTH=false และจัดการบัญชีผ่าน API
- เนื่องจากสถานะของเซิร์ฟเวอร์ถูกเก็บไว้ในฐานข้อมูล SQLite และไฟล์ตั้งค่า จึงสามารถรักษา สภาพแวดล้อม AIM ที่กู้คืนได้ ด้วยการสำรองข้อมูลทั้งระบบทุกคืน หรือหยุดเซิร์ฟเวอร์แล้วคัดลอกด้วย
rsync
เหตุผลที่กลับมาเปิด AIM แทน Discord
- ก่อนที่โทรศัพท์มือถือและ SMS จะแพร่หลาย กิจกรรมจำนวนมากตั้งแต่โปรเจกต์โรงเรียนไปจนถึงความสัมพันธ์ส่วนตัวเกิดขึ้นใน หน้าต่าง AIM และประสบการณ์เหล่านี้กลายเป็นความรู้สึกคิดถึง AIM
- เนื่องจากช่วงหลังประสบการณ์ใช้งาน Discord ไม่ดีนัก จึงทดลองใช้ Open OSCAR Server และสามารถเชื่อมต่อไคลเอนต์รุ่นเก่าหลายตัวเข้ากับเซิร์ฟเวอร์ AIM/ICQ ของตัวเองได้
- ขั้นตอนการติดตั้งถูกพูดถึงใน วิดีโอ YouTube และ วิดีโอ PeerTube ด้วย ส่วน วิดีโออีกชุด ของ Macintosh Librarian แนะนำตัว AIM เองอย่างละเอียดกว่า
เตรียมเซิร์ฟเวอร์ Debian Trixie
- เป้าหมายการติดตั้งคือ Debian Trixie และจะไม่ครอบคลุมขั้นตอนติดตั้งระบบปฏิบัติการเอง
- หากไม่ได้วางแผนจะคุยกับคนหลายร้อยคน ก็สามารถใช้งานบน VPS สเปกต่ำได้
- ตอนแรกโฮสต์ไว้ที่บ้าน แต่เมื่อเริ่มแชร์ให้เพื่อน ๆ ใช้จึงย้ายไปยัง VPS แพ็กเกจต่ำสุด
- มีความเป็นไปได้ว่าจะทำงานบน Raspberry Pi ได้ แต่ยังไม่ได้ทดลองเอง
- หากใช้งานจากบ้านหรือหลังไฟร์วอลล์ ต้องเปิด พอร์ตเริ่มต้น 5190 เพื่อให้ไคลเอนต์ AIM เชื่อมต่อได้
- ไคลเอนต์บางตัวเปลี่ยนพอร์ตได้ไม่ง่ายนัก ดังนั้นการคงพอร์ตเริ่มต้นไว้จะดีกว่า
- ในสภาพแวดล้อมตามบ้านที่ไม่มี IP คงที่ จำเป็นต้องใช้ dynamic DNS
- บริการที่ใช้เองคือ No-IP และพอใจกับผลลัพธ์
- หากไม่คุ้นเคยกับ dynamic DNS สามารถใช้ IP คงที่และการตั้งค่าที่ง่ายกว่าบนคลาวด์เซิร์ฟเวอร์ราคาเดือนละ 5~10 ดอลลาร์ ได้
- ไม่ว่าจะเลือกวิธีใด เซิร์ฟเวอร์ต้องเข้าถึงได้ผ่าน IP คงที่หรือโดเมน และต้องเปิดพอร์ต 5190 ไว้
- ค่าเริ่มต้นของ Open OSCAR Server สะดวกสำหรับทดลองในเครือข่ายบ้าน แต่ไม่เหมาะกับการเปิดสู่สาธารณะบนอินเทอร์เน็ต
- ก่อนล็อกการตั้งค่า แนะนำให้ อนุญาตเฉพาะทราฟฟิกของตัวเอง และปฏิเสธการเชื่อมต่อจากต้นทางอื่นด้วยไฟร์วอลล์
ติดตั้ง Open OSCAR Server
wget [RELEASE URL]
- ต้องแทนที่
[RELEASE URL] ด้วยที่อยู่ไฟล์รีลีสจริง
- แตกไฟล์บีบอัดที่ดาวน์โหลดมาด้วย
tar
tar -zxvf open_oscar_server.X.XX.X.linux.x86_64.tar.gz
- แทนที่
X.XX.X ด้วย หมายเลขเวอร์ชันจริง ที่ดาวน์โหลดมา
ตั้งค่าโหมดรับการเชื่อมต่อและที่อยู่เซิร์ฟเวอร์
- หากรันบนเครื่องโลคัลเท่านั้น สามารถเข้าไปยังไดเรกทอรีย่อยที่แตกไฟล์แล้วรันได้ทันที
- หากต้องการเชื่อมต่อไคลเอนต์จากเครื่องอื่น ต้องแก้ไข
settings.env
- Open OSCAR Server รองรับ โหมดรับการเชื่อมต่อไคลเอนต์ 3 แบบ
LOCAL: ค่าเริ่มต้น ใช้เมื่อไคลเอนต์ AIM และเซิร์ฟเวอร์อยู่บนเครื่องเดียวกัน
LAN: ใช้เมื่อเซิร์ฟเวอร์และไคลเอนต์ AIM อยู่ในเครือข่ายภายในเดียวกันและไม่ผ่านอินเทอร์เน็ต
WAN: ใช้เมื่อเชื่อมต่อไคลเอนต์ AIM ของเพื่อนภายนอกผ่านอินเทอร์เน็ต
- ใน
settings.env ให้ตั้งค่าตัวแปรสองตัวร่วมกัน
OSCAR_LISTENERS: ระบุวิธีที่ Open OSCAR Server รับการเชื่อมต่อ
OSCAR_ADVERTISED_LISTENERS_PLAIN: ระบุที่อยู่เซิร์ฟเวอร์ที่จะแจ้งให้ไคลเอนต์อย่าง AIM ทราบ
- หากเป็น VPS สาธารณะที่มีโดเมน
example.domain สามารถตั้งค่าได้ดังนี้
OSCAR_LISTENERS=WAN://0.0.0.0:5190
OSCAR_ADVERTISED_LISTENERS_PLAIN=WAN://example.domain:5190
- ในเครือข่ายภายใน ให้เปลี่ยน
WAN เป็น LAN และใช้ IP address ที่กำหนดให้เซิร์ฟเวอร์แทนโดเมน
- โหมดของตัวแปรทั้งสองต้องตรงกันเสมอ เช่น
LAN กับ LAN หรือ WAN กับ WAN
- สามารถตั้งค่าที่ระบุทั้งสองโหมดไว้ในตัวแปรทั้งสองฝั่งได้เช่นกัน
- เมื่อตั้งค่าเสร็จแล้ว ให้ทดลองรันเซิร์ฟเวอร์ด้วยคำสั่งต่อไปนี้
./open_oscar_server
เชื่อมต่อไคลเอนต์ AIM
- ใน AIM หลายเวอร์ชัน สามารถเปลี่ยนเซิร์ฟเวอร์ล็อกอินเริ่มต้น
login.oscar.aol.com ที่ปิดไปแล้วให้เป็นที่อยู่อื่นได้
- ใน AIM 5.1 ให้เปลี่ยนที่อยู่เซิร์ฟเวอร์ผ่านปุ่ม
Configuration ขนาดใหญ่ ใน Setup
- เพียงแทนที่ที่อยู่เซิร์ฟเวอร์ล็อกอินเริ่มต้นด้วยที่อยู่ที่ระบุไว้ใน
OSCAR_ADVERTISED_LISTENERS_PLAIN
- ก่อนเพิ่มความเข้มงวดของการยืนยันตัวตน สามารถป้อน screen name และรหัสผ่านใด ๆ เพื่อเข้าสู่ระบบได้
- เงื่อนไขการเชื่อมต่อของผู้ใช้อื่นขึ้นอยู่กับโหมดของเซิร์ฟเวอร์
- ในโหมด
LAN ต้องอยู่ในเครือข่ายเดียวกับเซิร์ฟเวอร์
- ในโหมด
WAN ต้องให้สิทธิ์การเข้าถึงเพื่อให้ผู้ใช้ภายนอกผ่านไฟร์วอลล์ได้
รันเซิร์ฟเวอร์ถาวรด้วย systemd
- Open OSCAR Server มาพร้อม บริการ systemd ที่ทำให้เซิร์ฟเวอร์ทำงานต่อไปได้แม้การเชื่อมต่อ SSH จะหลุด
- การติดตั้งและตั้งค่าบริการให้ทำตาม เอกสาร SYSTEMD ของโปรเจกต์
เปิดใช้การยืนยันตัวตนด้วยรหัสผ่าน
- โดยค่าเริ่มต้นจะไม่ได้ตรวจสอบรหัสผ่านจริง จึงต้องเปลี่ยน
DISABLE_AUTH ในไฟล์บริการ systemd
- แก้ไขไฟล์บริการทั้งไฟล์ด้วยเอดิเตอร์เริ่มต้นโดยใช้คำสั่งต่อไปนี้
sudo systemctl edit --full ras.service
- ตั้งค่าตัวแปรสภาพแวดล้อมใต้
[Service] ดังนี้
Environment="DISABLE_AUTH=false"
- เนื่องจากชื่อตัวแปรเป็นการปฏิเสธซ้อน หากต้องการบังคับใช้การยืนยันตัวตน ค่าต้องเป็น
false
- หลังบันทึกไฟล์บริการแล้ว โหลดการตั้งค่า daemon ของ systemd ใหม่
sudo systemctl daemon-reload
- ทดลองเข้าสู่ระบบอีกครั้งด้วย screen name และรหัสผ่านเดิม และหากล้มเหลว สามารถสร้างผู้ใช้ใหม่ผ่าน API ได้
จัดการผู้ใช้และรหัสผ่านด้วย API
- หลังเปิดใช้การยืนยันตัวตนแล้ว ให้จัดการผู้ใช้และรหัสผ่านด้วย API ของ Open OSCAR Server และ
curl
-
เพิ่มผู้ใช้
curl -d'{"screen_name":"NEWUSERNAME", "password":"NEWPASSWORD"}' http://localhost:8080/user
- ส่ง ข้อมูล POST ด้วยตัวเลือก
-d ของ curl
- ใน JSON body ให้ใส่คีย์
screen_name และ password
- ปลายทางคำขอคือ endpoint
http://localhost:8080/user ของเซิร์ฟเวอร์โลคัล
-
เปลี่ยนรหัสผ่านผู้ใช้ที่มีอยู่
curl -X PUT -d'{"screen_name":"NEWUSERNAME", "password":"NEWPASSWORD"}' http://localhost:8080/user/password
- สำหรับการอัปเดตผู้ใช้ที่มีอยู่ ให้ใช้
-X PUT แทน POST
- ใน
screen_name ต้องระบุ screen name ที่มีอยู่แล้ว
- endpoint สำหรับเปลี่ยนรหัสผ่านคือ
http://localhost:8080/user/password
- API ยังรองรับการลบผู้ใช้และเพิ่มห้องแชตด้วย ฟังก์ชันอื่น ๆ ดูได้จาก เอกสารโปรเจกต์
การสำรองข้อมูลและกู้คืน
- สถานะหลักของ Open OSCAR Server ประกอบด้วย ฐานข้อมูล SQLite และไฟล์ตั้งค่า ทำให้สำรองข้อมูลง่าย
- มีการสำรองข้อมูลทั้งระบบของ VPS ทุกคืน และจากการทดสอบกู้คืนก็ทำงานได้ตามคาด
- ก่อนการเปลี่ยนแปลงใหญ่ จะหยุดเซิร์ฟเวอร์แล้วคัดลอกไดเรกทอรีทำงานทั้งหมดไปยังเครื่องสำรองข้อมูลด้วย
rsync
- การใช้ Borgmatic ช่วยทำให้กระบวนการสำรองข้อมูลง่ายขึ้น และมีแผนจะอธิบายรายละเอียดในบทความถัดไป
1 ความคิดเห็น
ความคิดเห็นจาก Lobste.rs
อ่านได้เพลินดี แต่ถ้าคิดว่าเมื่อก่อนมีเมสเซนเจอร์ให้ใช้น้อยกว่านี้ก็ถือว่าเข้าใจผิดเหมือนกัน หลายคนอาจใช้เวลาอยู่กับ AIM หรือ MSN นานมาก แต่ผมกับเพื่อนที่โรงเรียนไม่ได้ใช้ทั้งคู่ และย้ายจาก ICQ ไป IRC กัน อีกทั้งความกระจัดกระจายของบริการก็ไม่ได้ดีกว่าตอนนี้เป็นพิเศษ
https://nugget.livejournal.com/97081.html
แล้วก็มีโพสต์ติดตามผลที่เขียนหลังจากได้รับคำตอบจาก Google หนึ่งเดือนถัดมา
https://nugget.livejournal.com/103322.html
มีวิดีโอเกี่ยวกับประเด็นนี้ด้วย ตอนแรกผมเกือบจะโพสต์วิดีโอนั้น แต่ก็ลังเลว่าจะคงชื่อเดิมที่ค่อนข้างคลิกเบตไว้ หรือจะใช้ชื่อที่ DeArrow เสนอมา
สนุกดี แต่ระหว่างอ่านผมก็รอคำตอบที่คิดไว้ว่าคือ “แล้วหลังจากนั้นล่ะ?” ถ้า ไม่ federation กับเซิร์ฟเวอร์อื่น คนที่จะคุยกันทุกคนต้องอยู่เซิร์ฟเวอร์เดียวกันหมดไหม หรือมันมีไว้คุยคนเดียวเฉย ๆ
เปิดเรื่องมาแล้วก็ไม่พลาด สกรีนช็อตคลาสสิก ที่ควรมีอยู่ตรงนั้นพอดี ซอฟต์แวร์ในยุคนั้นทั้งใช้งานจริงและมีประโยชน์ได้อย่างขัดเกลามากจริง ๆ
ไม่ได้สนใจ AIM เองเท่าไร แต่ชอบที่ได้เห็นคน กลับไปลองเล่นเทคโนโลยีเก่า ๆ พอไล่อ่านบทความอื่นของผู้เขียนต่อก็รู้สึกเหมือนกำลังจะจมลงไปในหลุมกระต่ายแห่งการสำรวจอีกหลายอย่าง ซึ่งก็ดูไม่เลวเลย
ไม่ได้คิดถึงยุคของ ICQ กับ AIM เลยแม้แต่น้อย แต่ช่วงปลายยุคนั้นเคยมี ยุคทอง สั้น ๆ ของวงการอยู่ ด้วย XMPP ที่ทำ federation ระหว่างเซิร์ฟเวอร์ได้ และเกตเวย์ที่เชื่อมไปยังโปรโตคอลอื่น คุณจึงตั้งเซิร์ฟเวอร์เองหรือไปมีบัญชีบนเซิร์ฟเวอร์ของคนอื่น แล้วคุยกับใครก็ได้
ถึงจะต้องคงบัญชีบนเครือข่ายที่เชื่อมผ่านเกตเวย์ไว้ด้วย แต่ส่วนใหญ่แทบไม่ต้องดูแลอะไรมาก และด้วยบัญชีเดียวก็สามารถคุยกับผู้ใช้ Google Talk, Facebook Messenger, ICQ และ MSN ได้ทั้งหมด
มีแค่ Skype ที่ดื้อดึงปฏิเสธการทำงานร่วมกันอย่างหนักแน่น
ตอนนี้วัฒนธรรมเปลี่ยนไปอย่างน่าทึ่ง แม้แต่ Signal ที่เป็นโอเพนซอร์สก็ยังบล็อก ไคลเอนต์ภายนอก และไม่เพียงไม่ค่อยมีคนต่อต้าน แต่ยังถูกมองว่าเป็นข้อเรียกร้องที่สมเหตุสมผลได้ด้วยซ้ำ เหมือนเราได้สูญเสียยุคทองนั้นไปเพราะเราไม่คู่ควรจะมีมันอีกต่อไป