Marzban Node Manager and Users Dashboard for multiple nodes.
- Connect to multiple Marzban nodes
- Dashboard for users to see their usages and copy their configs
- Correct gRPC configs (until Marzban fix it!)
- Censorship Status checking button for users (so they can check if their domain is censored or not)
- Admin panel to show all users in each marzban server
- Subscription relay for all nodes
- Random SNI feature
- You need a domain/subdomain to run this project; because it uses TLS.
- A server from any provider
- Clone the repository on your server
git clone https://github.com/marzboard/marzboard.git && cd marzboard
- create
nodes.json
file
cp nodes.sample.json nodes.json
- Edit the
nodes.json
file and add all your Marzban servers like the example.
The addresses should be exactly like the example.
- The keys are the marzban node's domain. It is highly recommended using another domain than your VPN service; so if your VPN service's domain is censored in the future, the censorship does not affect on your api domain.
- The
node_domain
value is the service's domain which is currently being used by users VPN clients - If your
node_domain
and the keys are the same, it's ok! - No trailing slashes in the key paths
- Keys should contain the URI schema (
https
/http
) - Including each node's
username
andpassword
in the values
- You should use TLS to run this project; so assure that your domain is prepared and run the
tls.sh
script:
bash tls.sh
- OPTIONAL: If you want to log in as an admin in marzboard, you can create a file named
admins.json
like the following:
cp admins.sample.json admins.json
Edit the contents of the admins.json
file. The username & passwords in this file is not depended on anything; put anything you desire as your credentials for the admin panel. Be careful about them and choose a strong password.
- Pull docker images and run the project:
docker compose up -d
When you run the project properly, you will have a login page in your domain for all your users in all marzban nodes which are included in the nodes.json
file.
User's username is their marzban username and their password is the first 8 characters of their configs.
For example, if a user has a VLESS config:
vless://11111111-0000-0000-0000-000000000000@...
The Ones are the password part.
It is the same for trojan configs:
trojan://1111111100000000000000@...
For VMESS it's a little different; the user's password is the first 8 characters of their config's UUID
. So you have to either import the config into a vpn client like v2rayng and see the UUID field, or base64-decode the config and see the content.
So, a user in any of the marzban servers included in nodes.json
can log into their board.
From now on, you can tell the username and password to users, and they can copy configs themselves from the board.
If you log in with any of the credentials in admins.json
file, you will see the admin panel which is under development and will have more features in future.