HAProxy Health check fails

backend be_staging
        option httpchk

        server staging 192.168.1.60:80 check

Web server sử dụng Nginx

Đối với config trên thì HAProxy báo be_staging not available dù rằng mọi access đều working fine. !

Check Nginx log ta có

192.168.1.4 - - [27/Aug/2023:21:36:00 +0700] "OPTIONS / HTTP/1.0" 405 166 "-" "-"

Vậy là do Nginx nó trả về 405 cho OPTIONS requests.

Update HAProxy

backend be_staging
        option httpchk GET /
        http-check expect status 200

        server staging 192.168.1.60:80 check

Và mọi thứ trở về lại bình thường !

Laravel – Stable Diffusion

Sau một thời gian nghịch Stable Diffusion thì giờ cũng chút hứng thú với … code Laravel cho em nó.

https://github.com/jooservices/Stable-Diffusion

Về cơ bản

  • Tạo ra queues để liên tục generate images
  • Tạo ra các “base prompt” để có thể tái` sử dụng ( ví dụ có thể tạo ``$prompt->portraits('Irene Aronson') thì sẽ tự add prompt là portraits của nghệ sĩ Irene Aronson

Alrite. Tuy nhiên trước đó thì cần chuẩn bị 1 số thứ

  • Stable Diffusion ( webUI ) chạy service
Description=systemd service start stable-diffusion

[Service]
Type=simple
Restart=always
RestartSec=1
ExecStart=/bin/bash /home/joos/stable-diffusion-webui/webui.sh
User=joos
WorkingDirectory=/home/joos/stable-diffusion-webui/
StandardOutput=append:/var/log/sdwebui.log
StandardError=append:/var/log/sdwebui.log

[Install]
WantedBy=multi-user.target
  • 1 em cron để chạy schedule:run của Laravel

Xong ! Giờ thì ta có 2 cách

  • Generate ra “queues” qua command
php artisan stable-diffusion:generate --prompt="a beautiful girl at 20 years old. she has colorful hair"

Command này sẽ sinh ra 1.001 queues ứng với prompt trên và … toàn bộ models mình đang có.

  • Code thêm theo ý
        $response = $service
            ->txt2img()
            ->generate($payload)
            ->save($queue->uuid)
            ->getResponse();

Stable Diffusion – Public port

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

frontend http
        bind :8080
        mode http

        default_backend be_develop

backend be_develop
    # default backend
        #option httpchk

        server hosting 127.0.0.1:7860

Nghĩa là ta listening port 8080 từ ngoài vào ( tất nhiên router đã NAT 8080 về IP máy rồi ).

Sau đó do HAProxy nằm trên chính máy Stable Diffusion nên hiển nhiên access 127.0.0.1 được. Vậy ta cứ forward về đó thôi.

Xong 😀

Tất nhiên lúc này ta có thể secure thêm 1 chút bằng basic authenticate.

Home network – Wifi

1 ngày rãnh rỗi nên update `1 chút cho working blog.

Về lý thuyết Asus AX86U em nó là Router KHÔNG PHẢI là Access Point. Do đó việc em nó đóng vai trò làm Access Point sẽ có 1 số bất cập

  • Phí phạm : Tính năng router không còn sử dụng
  • Việc management các devices cảm giác không thật sự tốt / friendly bằng 1 số Access Point khác

Hiện tại đang dùng thử Unifi U6 Pro

  • Controller với Network Version 7.4.156 trên Gatekeeper ( 192.168.1.4 ). Giúp quản lý tập trung dễ dàng hơn
  • Có thể tạo được nhiều Wifi
  • Tách VLAN
  • Quản lý devices cũng khá trực quan

Cũng đang khá cân nhắc thay Unifi U6 Pro cho toàn bộ thiết bị trong nhà

  • Thay dàn Mesh TPLink. Setup VLAN trên Access Point luôn
  • Thay luôn Asus AX86U

Thử làm 1 bảng so sánh hardware 2 em nó xem sao

SpecsAsus AX86UUnifi U6 Pro
Networking interfaceRJ45 for 10/100/1000 BaseT for WAN x 1
RJ45 for 10/100/1000 BaseT for LAN x 4
RJ45 2.5G/1Gbps multi-Gig port (configurable) x 1
1 x GbE RJ45 port
MIMO2.4 Ghz 3×3
5 Ghz 4 x 4 (DL/UL MU-MIMO)
2.4 Ghz 2 x 2 (UL MU-MIMO)
4 x 4 (DL/UL MU-MIMO)
Throughput rate2.4 Ghz 573.5 Mbps
5 Ghz 4.8 Gbps
Processor1.8GHz quad-core processor

Tôi – 40

Bản thân

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

Sử dụng domain riêng với iCloud – Mail

Not sure việc dùng iCloud và không có subscription sẽ support hay không.

Làm với icloud.com cho dễ nhỉ

Go to icloud.com/icloudplus, then sign in with your Apple ID.

https://support.apple.com/en-vn/guide/icloud/mm0e4339d289/icloud

Sau đó add custom domain và update 1 số records cho domain ( Nếu xài Cloudflare hoặc 1 số provider khác thì Apple sẽ authorize và làm tự động hết )

  • 2 MX records
  • 1 vài TXT records

Sau khi xong xuôi add thêm email mình cần xài <name>@domain. Và từ giờ Mail đã có thể sử dụng ( sent out ).