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.

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 ).

JomSocial – Troubleshooter

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

Cũng thú vị chứ nhỉ ? 🙂

HAProxy SSL Passthrough

frontend ssl
        bind :443
        mode tcp
        option tcplog

        # Wait for a client hello for at most 5 seconds
        tcp-request inspect-delay 5s
        tcp-request content accept if { req_ssl_hello_type 1 }

        use_backend be_ssl_hosting if { req_ssl_sni -i jooservices.com }

        default_backend be_ssl
backend be_ssl_hosting
        mode tcp
        balance roundrobin
        server aaa_ssl_server 192.168.1.39:443 check

MariaDB – Create user

Create user have permissions on all tables

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';

https://phoenixnap.com/kb/how-to-create-mariadb-user-grant-privileges

Laravel – Queue’ parameter

Redis

In your config/queue.php configuration file, each queue connection defines a retry_after option. This option specifies how many seconds the queue connection should wait before retrying a job that is being processed. For example, if the value of retry_after is set to 90, the job will be released back onto the queue if it has been processing for 90 seconds without being released or deleted. Typically, you should set the retry_after value to the maximum number of seconds your jobs should reasonably take to complete processing.

retry_after