Bài viết này mình không tập trung vào Stable Diffusion mà là cách xử lý bài toán public port khi bản thân nó chỉ bind cho localhost.
By default Stable Diffusion chỉ listening trên 127.0.0.1:7860, nghĩa là bạn không thể public ra ngoài Internet hoặc access từ các máy khác trong LAN.
Tất nhiên ta vẫn có thể sử dụng paramter –listen để listening trên 0.0.0.0:7860. Tuy nhiên cái giá phải trả là sẽ bị hạn chế nhiều thứ ( góc nhìn của developer AUTOMATIC1111 có lẽ là hạn chế bị change settings, cài extensions ngoài ý muốn khi public ).
Nhưng nếu bạn vẫn muốn làm điều này thì sao ? Giải quyết bài toán này khá đơn giản với HAProxy
HAProxy có thể dùng Frontend để listening 1 port nhất định sau đó forwarding về 1 IP khác. Trong trường hợp này là 127.0.0.1
Vậy trên chính cái máy bạn install Stable Diffusion WebUI, ta setup thêm HAProxy và cấu hình
Mình thế hệ 8x – 83. Chắc được xét vào hàng outdate với các bạn trẻ nói chung và ngành IT này rùi nhỉ.
Những ngày bắt đầu vào nghề ( và có lẽ gần mãi đến sau này ), quan điểm và cách làm việc của mình luôn là : Computer is life. Work to death.
Không theo chính quy nhưng luôn tìm cách giải quyết các vấn đề bằng bất kì cách gì có thể nghĩ ra.
Không đặt yếu tố $ lên trên cùng mà dùng nó như 1 cách đánh giá bản thân
Giai đoạn đầu ~ 10 năm có lẽ khá thành công
Không cần “xin việc” mà việc luôn tự tìm đến mình.
Chắc 10 năm về trước Google khó mà không biết đến cái tên mình trong giới Joomla! hoặc Reverse Engineering ở Vietnam nhỉ 😀
Ngông cuồng với bản thân ( trẻ trâu mà :p ). Có thể sẵn sàng bật fighting mode với bất kì ai ( khi mình có bằng chứng rõ ràng ) kể cả CEO.
Ngông cuồng với … sức khỏe. Work từ 8h sáng đến 2 – 3h tối, kể cả trong … restroom :D. Sẵn sàng dùng thuốc hạ sốt hoặc bất kì thuốc an thần, giảm đau nào để bypass cơn bệnh và keep working.
Ngông cuồng với … hải quan nhập cảnh của Singapore :3 Bật mode cãi nhau với họ ở sân bay luôn =)) May mà vẫn được nhập cảnh :3
Nhưng khi mọi thứ tới thì … cũng sẽ đi thôi.
Bước ra khỏi vùng an toàn Bước ra khỏi cái ao làng, cái swimming pool để bơi ra biển rộng. – Chút chới với ( ah không … thiếu điều chết đuối chứ ) ( Cho ngoài lề vui vẻ tí. Ngày xưa đi biển Nha Trang, lên tàu ra đảo bơi. Cái tội “sĩ” bơi xa tàu, không áo pháo mà cũng k dám … kêu cứ vì đuối sức, mém tí là giờ đã trong bụng cá gòi :v ).
Nhưng cái tự tôn vẫn đó, vẫn cái tính kiến thức hơn đồng tiền. Công ty cho mình 2 lựa chọn : Quit hoặc giảm lương.
Quit thì vẫn có thể easily get better job và high salary
Giảm lương thì … mất chút thoải mái chi tiêu.
Mình chọn giảm lương vì : Bản thân mình đã sai, và thật sự sai. Mình cần học hỏi từ mọi người, từ team.
Và góc độ nhất định mình đã thành công: Học được rất nhiều kiến thức từ team :). Song song đó việc mở rộng kiến thức ra DevOps , Sysadmin ( dù rằng đây không phải career path của mình ). – Build cho bản thân 1 hệ thống network hoành tráng – Build 1 hệ thống DC cho clients khá vừa ý – Monitoring tất cả kể cả trong … giấc ngủ
40 năm trôi qua 1 chút mệt mỏi vì nhiều việc xảy ra giai đoạn này. 1 chút … thất vọng bản thân
Nhưng it’s fine. Còn thở là ta còn cố gắng. Thua các bạn trẻ thì cần update kiến thức thêm
Nodejs / Reactjs
K8s
Wait for me 🙂
PS:// Hình như xui chưa tha cho mình :v Mở hộp sáp thơm mà quá tay bay luôn cái nắp :3
Feature này mình nghĩ ra và develop cho JomSocial … và cũng là feature cuối cùng mình làm cho JomSocial.
Khi làm supporter hầu hết các tình huống gặp phải là end users sử dụng VÔ TỘI VẠ các 3rd parties mà không bao giờ quan tâm đến compatibility của chúng. Song song đó họ cũng TÙY TIỆN modify vào core của JomSocial gây ra conflict, và sau đó request support !!!
Vậy nên Troubleshooter được develop để xử lý việc này
Check các 3rd parties và cũng cảnh báo các issues liên quan đến compatibility
Đảm bảo server đúng như requirements
Đảm bảo core files không bị modified
Có thể automatically restore các files nếu thấy có modified
GRANT ALL PRIVILEGES ON *.* TO 'user1'@localhost IDENTIFIED BY 'password1';
Create user have permissions on specific table
GRANT ALL PRIVILEGES ON 'yourDB'.* TO 'user1'@localhost;
FLUSH PRIVILEGES;
SHOW GRANTS FOR 'user1'@localhost;
Drop user
DROP USER 'user1'@localhost;
Create user for exporter
CREATE USER 'exporter'@'192.168.1.%' IDENTIFIED BY 'password' WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';