Comprehensive Guide to Setup and Auto-Deploy VLESS Proxy Config
Step-by-step tutorial for forking, configuring security secrets, and running GitHub Actions

The zizifn project is a secure proxy configuration based on the VLESS-WS-TLS/TCP protocol, developed with Rust and WebAssembly (Wasm) architecture, and deployed on Cloudflare Workers using the Wrangler tool. To implement this project on your personal account, follow the steps below carefully.
Error 1101 and 1102
In this new structure, there is no need to add meaningless codes or heavy obfuscation!
📚 Table of Contents
Step 1: Fork the Repository
In the first step, you need to clone a copy of this project to your GitHub account.
Go to the main repository page (Link)
Click the Fork icon (red arrow) at the top of the page.
View Screenshot

- On the next page, you can set a custom name for your fork; otherwise, click the Create fork button to transfer the project to your account.
View Screenshot

Step 2: Obtain API Token from Cloudflare
For automated deployment, GitHub Actions needs to connect to your Cloudflare account. We need two essential factors:
- CloudFlare Account ID
- CloudFlare API Token
Note
Previously, to get the Account ID, we had to go to the Workers & Pages section and copy it from the bottom of the page. But now, when creating the token, the Account ID is also displayed, so we copy it from there.
Create Token with Worker Edit Permissions
- Log in to your Cloudflare dashboard.
Click to view.
Note
Recently, Cloudflare doesn't allow creating accounts with fake emails. You can create one, but it won't be verified. Even if you try ten, thirty, or fifty times through the verification email they send, it will keep asking you to verify. So we recommend using G-Mail, Outlook, hotmail, protonmail, and similar reputable services to create a Cloudflare account.
- After logging into your Cloudflare account, open the left menu from the top of the page, type api in the Quick search box, and then select Account API Tokens from the search results.
View Screenshot


- Click the Create Token button.
View Screenshot

- Among the ready-made templates (red arrow), click on the Edit Cloudflare Workers option.
View Screenshot


- In the Token Expiration section, set a time frame for your token expiration according to your needs, then click on the view and create token option.
View Screenshot

Note
Please note that after the token expires, your worker will not stop functioning. However, you will no longer be able to redeploy the project through GitHub. In that case, you will need to create a new token and replace the old one in your GitHub repository settings.
- On this page, copy the generated token (this token is displayed only once, so save it somewhere if needed). Also, the Account ID is displayed at the top of this page. Copy it as well since you'll need it. After confirming you've copied both, click the confirm button to close the window.
View Screenshot

Step 3: Configure Secrets in GitHub
Now we need to introduce the obtained information to your forked repository on GitHub so that the action can authenticate with your Cloudflare account.
- In your forked repository, go to the Settings tab.
View Screenshot

- From the menu, click on Secrets and variables and then select Actions from the submenu.
View Screenshot

- Click the New repository secret button and define the variables according to the table below:
| Secret name | Status | Default value | Description |
|---|---|---|---|
CLOUDFLARE_API_TOKEN | ✔️ Required | - | Your Cloudflare token with permission to edit workers. |
CLOUDFLARE_ACCOUNT_ID | ✔️ Required | - | Your Cloudflare account ID. |
UUID | ⚙️ Optional | be0ff9df-1468-41a0-8865-796d1c6800db | Your custom UUID (version 4). |
PROXYIP | ⚙️ Optional | di.nscl.ir | Proxy IP for routing traffic to services behind Cloudflare. |
View Screenshot



Important Note
Both of the first variables (Cloudflare ID and token) are required, meaning without obtaining and setting them in GitHub secrets, deploying the worker won't be possible. However, the next two variables, UUID and PROXYIP, are optional because default values are set in the code for both. However, it is highly recommended to copy a custom ID from (this site) and use it instead of the default ID.
Step 4: Enable and Run GitHub Action
GitHub by default disables running actions on forked repositories. You need to enable it once and then run it.
Go to the Actions tab at the top of your repository.
Click the green button
"I understand my workflows, go ahead and enable them"
to allow actions to run.
View Screenshot

- According to the screenshot below, first click on All workflows from the left side, then select the Deploy Worker workflow.
View Screenshot

On the right side of the page, a narrow bar with the Run workflow button will appear. Click on it.
In the pop-up form that opens, you can optionally set new
Proxy IPorUUIDvalues exceptionally for this specific run. (If left empty, the secrets or system defaults will be used. It's recommended to put both in the secrets.)
View Screenshot

- Finally, click the green Run workflow button inside the form.
After thirty to sixty seconds, a green checkmark will appear next to Deploy, indicating the process was successful.
View Screenshot

Important Note for One-Time Variables
Values entered in the Run workflow pop-up form are completely one-time use and won't be saved in the repository settings. This feature is useful for quickly testing different Proxy IPs or changing the UUID temporarily.
How It Works
After clicking the Run workflow button, GitHub starts a cloud server, downloads and installs the Rust compiler (cargo) and wasm-pack tool, compiles the code, and then automatically creates a new Worker named zr-wasm in your Cloudflare account.
If you wish to change the Worker name, you can do so from the first line of the wrangler.toml file in the repository.
View Screenshot

How to Use
Access the Admin Panel
After deployment, simply add your UUID to the end of your Worker URL:
https://Your-Worker-URL/Your-UUID
For example:
https://0x00.workers.dev/be0ff9df-1468-41a0-8865-796d1c6800db
If you haven't set the UUID variable and the code default is used, the value is:
regbe0ff9df-1468-41a0-8865-796d1c6800db
Get Subscription Link
Your subscription link contains dozens of configs with clean Cloudflare IPs. Use the keys inside the panel to get it automatically.
Or if you need the subscription address manually to use in other clients, simply long-touch (press and hold) on one of the Import to ... buttons. The browser will then ask for permission to copy the link (only once, forever). After confirming the permission request by clicking Allow, the subscription link for that specific client will be copied for you.
View Screenshot

Sample subscription link:
https://0x00.workers.dev/xray/be0ff9df-1468-41a0-8865-796d1c68000b
https://0x00.workers.dev/sb/be0ff9df-1468-41a0-8865-796d1c68000b
Difference between xray and sb
· xray path:
Suitable for clients that use the Xray core, such as: v2rayNG, MahsaNG, Hiddify, Nekoray, v2rayN, Streisand, Napsternet, NPVT, Happ, and etc.
· sb path:
Suitable for clients that use the SingBox core, such as: Nekobox, Exclave, Singbox, Husi, Karing, and etc.
· Clean Cloudflare IP
The IPs in the configs are sourced from the clean IP repository NiREvil/vless. IP update cycle: every 4 hours.
Enhanced Configs
Recently, patterns have been suggested to address disruptions on Iran's internet and the upload speed weakness in configs built with Cloudflare Workers by adding two parameters to configs:
· Final Mask · Cypher suites
Additionally, to further optimize config performance, they have published a fork of v2rayNG called PattNG on GitHub. Therefore, alongside normal configs for v2rayNG, we will have another subscription called Enhanced, which will add configs with these new parameters pre-applied to your client. First, download and install the PattNG client from the patterniha GitHub repository, then from your panel, click on Import to v2rayNG and select Enhanced.

Security Warning
Click to view important security notes
Never define sensitive Cloudflare tokens in manual input text fields!
Values entered manually in the form are stored in GitHub's log history and will be visible to everyone if your repository is public. Sensitive Cloudflare secrets must be registered through the path mentioned in Step 3 (Repository Secrets section) so that GitHub encrypts them.
