gitscope
https://dev.kronoz.win/r/marzneshin.git
README.md · v0.2.0
Source
1 df3ebf4 Mrdn 2y ago <h1 align="center"/>Marzneshin</h1>
2 a47eb4c Dawsh 2y ago
3 a47eb4c Dawsh 2y ago <p align="center">
4 bf00248 Dawsh 2y ago A Fork of Marzban aiming for scalability
5 a47eb4c Dawsh 2y ago </p>
6 a47eb4c Dawsh 2y ago
7 a47eb4c Dawsh 2y ago <br/>
8 a47eb4c Dawsh 2y ago <p align="center">
9 91055d4 Mrdn 2y ago <a href="https://github.com/khodedawsh/Marzneshin/actions/workflows/dashboard-ci.yml">
10 91055d4 Mrdn 2y ago <img src="https://github.com/khodedawsh/Marzneshin/actions/workflows/dashboard-ci.yml/badge.svg" />
11 91055d4 Mrdn 2y ago </a>
12 91055d4 Mrdn 2y ago <a href="https://github.com/khodedawsh/Marzneshin/actions/workflows/package.yml" target="_blank">
13 91055d4 Mrdn 2y ago <img src="https://github.com/khodedawsh/Marzneshin/actions/workflows/package.yml/badge.svg" />
14 a47eb4c Dawsh 2y ago </a>
15 953c697 Dawsh 2y ago <a href="https://hub.docker.com/r/dawsh/marzneshin" target="_blank">
16 bf00248 Dawsh 2y ago <img src="https://img.shields.io/docker/pulls/dawsh/marzneshin?style=flat-square&logo=docker" />
17 a47eb4c Dawsh 2y ago </a>
18 91055d4 Mrdn 2y ago <br>
19 a47eb4c Dawsh 2y ago <a href="#">
20 bf00248 Dawsh 2y ago <img src="https://img.shields.io/github/license/khodedawsh/marzneshin?style=flat-square" />
21 a47eb4c Dawsh 2y ago </a>
22 bf00248 Dawsh 2y ago <a href="https://t.me/marzneshins" target="_blank">
23 a47eb4c Dawsh 2y ago <img src="https://img.shields.io/badge/telegram-group-blue?style=flat-square&logo=telegram" />
24 a47eb4c Dawsh 2y ago </a>
25 a47eb4c Dawsh 2y ago <a href="#">
26 a47eb4c Dawsh 2y ago <img src="https://img.shields.io/badge/twitter-commiunity-blue?style=flat-square&logo=twitter" />
27 a47eb4c Dawsh 2y ago </a>
28 a47eb4c Dawsh 2y ago <a href="#">
29 bf00248 Dawsh 2y ago <img src="https://img.shields.io/github/stars/khodedawsh/marzneshin?style=social" />
30 a47eb4c Dawsh 2y ago </a>
31 a47eb4c Dawsh 2y ago </p>
32 a47eb4c Dawsh 2y ago
33 a47eb4c Dawsh 2y ago <p align="center">
34 a47eb4c Dawsh 2y ago <a href="./README.md">
35 a47eb4c Dawsh 2y ago English
36 a47eb4c Dawsh 2y ago </a>
37 a47eb4c Dawsh 2y ago /
38 a47eb4c Dawsh 2y ago <a href="./README-fa.md">
39 a47eb4c Dawsh 2y ago فارسی
40 a47eb4c Dawsh 2y ago </a>
41 a47eb4c Dawsh 2y ago /
42 a47eb4c Dawsh 2y ago <a href="./README-zh-cn.md">
43 a47eb4c Dawsh 2y ago 简体中文
44 a47eb4c Dawsh 2y ago </a>
45 a47eb4c Dawsh 2y ago /
46 a47eb4c Dawsh 2y ago <a href="./README-ru.md">
47 a47eb4c Dawsh 2y ago Русский
48 a47eb4c Dawsh 2y ago </a>
49 a47eb4c Dawsh 2y ago </p>
50 a47eb4c Dawsh 2y ago
51 a47eb4c Dawsh 2y ago <p align="center">
52 953c697 Dawsh 2y ago <a href="https://github.com/khodedawsh/marzneshin" target="_blank" rel="noopener noreferrer" >
53 a47eb4c Dawsh 2y ago <img src="https://github.com/Gozargah/Marzban-docs/raw/master/screenshots/preview.png" alt="Marzban screenshots" width="600" height="auto">
54 a47eb4c Dawsh 2y ago </a>
55 a47eb4c Dawsh 2y ago </p>
56 a47eb4c Dawsh 2y ago
57 a47eb4c Dawsh 2y ago ## Table of Contents
58 a47eb4c Dawsh 2y ago
59 a47eb4c Dawsh 2y ago - [Overview](#overview)
60 bf00248 Dawsh 2y ago - [How it works](#how-it-works)
61 bf00248 Dawsh 2y ago - [Legacy features](#marzbans-legacy-features)
62 bf00248 Dawsh 2y ago - [New features](#new-features)
63 a47eb4c Dawsh 2y ago - [Installation guide](#installation-guide)
64 a47eb4c Dawsh 2y ago - [Configuration](#configuration)
65 a47eb4c Dawsh 2y ago - [API](#api)
66 a47eb4c Dawsh 2y ago - [Backup](#backup)
67 a47eb4c Dawsh 2y ago - [Telegram Bot](#telegram-bot)
68 bf00248 Dawsh 2y ago - [Marzneshin CLI](#marzneshin-cli)
69 bf00248 Dawsh 2y ago - [Marzneshin Node](#marzneshin-node)
70 a47eb4c Dawsh 2y ago - [Webhook notifications](#webhook-notifications)
71 a47eb4c Dawsh 2y ago - [Donation](#donation)
72 a47eb4c Dawsh 2y ago - [License](#license)
73 a47eb4c Dawsh 2y ago - [Contributors](#contributors)
74 a47eb4c Dawsh 2y ago
75 a47eb4c Dawsh 2y ago # Overview
76 a47eb4c Dawsh 2y ago
77 bf00248 Dawsh 2y ago Marzneshin is simply an interface for managing marznode users and services.
78 a47eb4c Dawsh 2y ago
79 bf00248 Dawsh 2y ago ## How it works
80 a47eb4c Dawsh 2y ago
81 bf00248 Dawsh 2y ago Marzneshin controls the nodes connected to it; monitoring/disabling/enabling users on marznode instances
82 bf00248 Dawsh 2y ago while marznode manages vpn backends (such as xray)
83 a47eb4c Dawsh 2y ago
84 bf00248 Dawsh 2y ago ### Marzban's legacy Features
85 a47eb4c Dawsh 2y ago
86 a47eb4c Dawsh 2y ago - Built-in **Web UI**
87 bf00248 Dawsh 2y ago - [**Multiple Nodes**](#marznode) support (for infrastructure distribution & scalability)
88 a47eb4c Dawsh 2y ago - Supports protocols **Vmess**, **VLESS**, **Trojan** and **Shadowsocks**
89 a47eb4c Dawsh 2y ago - **Multi-protocol** for a single user
90 a47eb4c Dawsh 2y ago - **Multi-user** on a single inbound
91 bf00248 Dawsh 2y ago - Restfull api
92 bf00248 Dawsh 2y ago - limit users' data and set exire dates
93 bf00248 Dawsh 2y ago - reset traffic periodically (daily, weekly,...)
94 a47eb4c Dawsh 2y ago - **Subscription link** compatible with **V2ray** _(such as V2RayNG, OneClick, Nekoray, etc.)_, **Clash** and **ClashMeta**
95 a47eb4c Dawsh 2y ago - Automated **Share link** and **QRcode** generator
96 a47eb4c Dawsh 2y ago - System monitoring and **traffic statistics**
97 a47eb4c Dawsh 2y ago - Integrated **Telegram Bot**
98 a47eb4c Dawsh 2y ago - Integrated **Command Line Interface (CLI)**
99 a47eb4c Dawsh 2y ago - **Multi-language**
100 a47eb4c Dawsh 2y ago - **Multi-admin** support (WIP)
101 a47eb4c Dawsh 2y ago
102 bf00248 Dawsh 2y ago ### New Features
103 bf00248 Dawsh 2y ago - Manage users' access to inbounds separately
104 bf00248 Dawsh 2y ago - Better UI with navigation bar
105 bf00248 Dawsh 2y ago - Marzneshin runs independent of any vpn backend(xray/...)
106 bf00248 Dawsh 2y ago - In case Marzneshin goes down nodes continue working normally as if nothing has happened.
107 bf00248 Dawsh 2y ago - shorter subscription links LOL
108 bf00248 Dawsh 2y ago
109 a47eb4c Dawsh 2y ago # Installation guide
110 a47eb4c Dawsh 2y ago
111 a47eb4c Dawsh 2y ago Run the following command
112 a47eb4c Dawsh 2y ago
113 a47eb4c Dawsh 2y ago ```bash
114 bf00248 Dawsh 2y ago sudo bash -c "$(curl -sL https://github.com/khodedawsh/Marzneshin/raw/master/script.sh)" @ install
115 a47eb4c Dawsh 2y ago ```
116 a47eb4c Dawsh 2y ago
117 a47eb4c Dawsh 2y ago Once the installation is complete:
118 a47eb4c Dawsh 2y ago
119 bf00248 Dawsh 2y ago - You'd notice the logs, which you could stop watching by pressing `Ctrl+C`; The process will continue running normally.
120 bf00248 Dawsh 2y ago - the configuration file can be found at `/etc/opt/marzneshin/.env` (refer to [configurations](#configuration) section to see variables)
121 bf00248 Dawsh 2y ago - Data files will be placed at `/var/lib/marzneshin`; e.g. the sqlite database.
122 bf00248 Dawsh 2y ago - You can access the Marzneshin dashboard by opening a web browser and navigating to `http://<SERVER_IP>:8000/dashboard/`
123 a47eb4c Dawsh 2y ago
124 bf00248 Dawsh 2y ago Next, you need to create a sudo admin for logging into the Marzneshin dashboard by the following command
125 a47eb4c Dawsh 2y ago
126 a47eb4c Dawsh 2y ago ```bash
127 bf00248 Dawsh 2y ago marzneshin cli admin create --sudo
128 a47eb4c Dawsh 2y ago ```
129 a47eb4c Dawsh 2y ago
130 a47eb4c Dawsh 2y ago That's it! You can login to your dashboard using these credentials
131 a47eb4c Dawsh 2y ago
132 bf00248 Dawsh 2y ago To see the help message of the Marzneshin script, run the following command
133 a47eb4c Dawsh 2y ago
134 a47eb4c Dawsh 2y ago ```bash
135 bf00248 Dawsh 2y ago marzneshin --help
136 a47eb4c Dawsh 2y ago ```
137 a47eb4c Dawsh 2y ago
138 a47eb4c Dawsh 2y ago If you are eager to run the project using the source code, check the section below
139 a47eb4c Dawsh 2y ago <details markdown="1">
140 a47eb4c Dawsh 2y ago <summary><h3>Manual install (advanced)</h3></summary>
141 a47eb4c Dawsh 2y ago
142 a47eb4c Dawsh 2y ago Install xray on your machine
143 a47eb4c Dawsh 2y ago
144 a47eb4c Dawsh 2y ago You can install it using [Xray-install](https://github.com/XTLS/Xray-install)
145 a47eb4c Dawsh 2y ago
146 a47eb4c Dawsh 2y ago ```bash
147 a47eb4c Dawsh 2y ago bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
148 a47eb4c Dawsh 2y ago ```
149 a47eb4c Dawsh 2y ago
150 bf00248 Dawsh 2y ago Clone this project and install the dependencies (you'd need Python >= 3.10)
151 a47eb4c Dawsh 2y ago
152 a47eb4c Dawsh 2y ago ```bash
153 bf00248 Dawsh 2y ago git clone https://github.com/khodedawsh/Marzneshin
154 bf00248 Dawsh 2y ago cd Marzneshin/
155 a47eb4c Dawsh 2y ago wget -qO- https://bootstrap.pypa.io/get-pip.py | python3 -
156 a47eb4c Dawsh 2y ago python3 -m pip install -r requirements.txt
157 a47eb4c Dawsh 2y ago ```
158 a47eb4c Dawsh 2y ago
159 a47eb4c Dawsh 2y ago Alternatively, to have an isolated environment you can use [Python Virtualenv](https://pypi.org/project/virtualenv/)
160 a47eb4c Dawsh 2y ago
161 a47eb4c Dawsh 2y ago Then run the following command to run the database migration scripts
162 a47eb4c Dawsh 2y ago
163 a47eb4c Dawsh 2y ago ```bash
164 a47eb4c Dawsh 2y ago alembic upgrade head
165 a47eb4c Dawsh 2y ago ```
166 a47eb4c Dawsh 2y ago
167 bf00248 Dawsh 2y ago If you want to use `marzneshin-cli`, you should link it to a file in your `$PATH`, make it executable, and install the auto-completion:
168 a47eb4c Dawsh 2y ago
169 a47eb4c Dawsh 2y ago ```bash
170 bf00248 Dawsh 2y ago sudo ln -s $(pwd)/marzneshin-cli.py /usr/bin/marzneshin-cli
171 bf00248 Dawsh 2y ago sudo chmod +x /usr/bin/marzneshin-cli
172 bf00248 Dawsh 2y ago marzneshin-cli completion install
173 a47eb4c Dawsh 2y ago ```
174 a47eb4c Dawsh 2y ago
175 a47eb4c Dawsh 2y ago Now it's time to configuration
176 a47eb4c Dawsh 2y ago
177 a47eb4c Dawsh 2y ago Make a copy of `.env.example` file, take a look and edit it using a text editor like `nano`.
178 a47eb4c Dawsh 2y ago
179 a47eb4c Dawsh 2y ago You probably like to modify the admin credentials.
180 a47eb4c Dawsh 2y ago
181 a47eb4c Dawsh 2y ago ```bash
182 a47eb4c Dawsh 2y ago cp .env.example .env
183 a47eb4c Dawsh 2y ago nano .env
184 a47eb4c Dawsh 2y ago ```
185 a47eb4c Dawsh 2y ago
186 a47eb4c Dawsh 2y ago > Check [configurations](#configuration) section for more information
187 a47eb4c Dawsh 2y ago
188 a47eb4c Dawsh 2y ago Eventually, launch the application using command below
189 a47eb4c Dawsh 2y ago
190 a47eb4c Dawsh 2y ago ```bash
191 a47eb4c Dawsh 2y ago python3 main.py
192 a47eb4c Dawsh 2y ago ```
193 a47eb4c Dawsh 2y ago
194 bf00248 Dawsh 2y ago To launch with linux systemctl (copy marzneshin.service file to `/var/lib/marzneshin/marzneshin.service`)
195 a47eb4c Dawsh 2y ago
196 a47eb4c Dawsh 2y ago ```
197 bf00248 Dawsh 2y ago systemctl enable /var/lib/marzneshin/marzneshin.service
198 bf00248 Dawsh 2y ago systemctl start marzneshin
199 a47eb4c Dawsh 2y ago ```
200 a47eb4c Dawsh 2y ago
201 a47eb4c Dawsh 2y ago To use with nginx
202 a47eb4c Dawsh 2y ago
203 a47eb4c Dawsh 2y ago ```
204 a47eb4c Dawsh 2y ago server {
205 a47eb4c Dawsh 2y ago listen 443 ssl http2;
206 a47eb4c Dawsh 2y ago listen [::]:443 ssl http2;
207 a47eb4c Dawsh 2y ago server_name example.com;
208 a47eb4c Dawsh 2y ago
209 a47eb4c Dawsh 2y ago ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
210 a47eb4c Dawsh 2y ago ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
211 a47eb4c Dawsh 2y ago
212 a47eb4c Dawsh 2y ago location ~* /(dashboard|api|docs|redoc|openapi.json) {
213 a47eb4c Dawsh 2y ago proxy_pass http://0.0.0.0:8000;
214 a47eb4c Dawsh 2y ago proxy_set_header Host $host;
215 a47eb4c Dawsh 2y ago proxy_set_header X-Real-IP $remote_addr;
216 a47eb4c Dawsh 2y ago proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
217 a47eb4c Dawsh 2y ago }
218 a47eb4c Dawsh 2y ago
219 a47eb4c Dawsh 2y ago # xray-core ws-path: /
220 bf00248 Dawsh 2y ago # client ws-path: /marzneshin/me/2087
221 a47eb4c Dawsh 2y ago #
222 a47eb4c Dawsh 2y ago # All traffic is proxed through port 443, and send to the xray port(2087, 2088 etc.).
223 bf00248 Dawsh 2y ago # The '/marzneshin' in location regex path can changed any characters by yourself.
224 a47eb4c Dawsh 2y ago #
225 a47eb4c Dawsh 2y ago # /${path}/${username}/${xray-port}
226 bf00248 Dawsh 2y ago location ~* /marzneshin/.+/(.+)$ {
227 a47eb4c Dawsh 2y ago proxy_redirect off;
228 a47eb4c Dawsh 2y ago proxy_pass http://127.0.0.1:$1/;
229 a47eb4c Dawsh 2y ago proxy_http_version 1.1;
230 a47eb4c Dawsh 2y ago proxy_set_header Upgrade $http_upgrade;
231 a47eb4c Dawsh 2y ago proxy_set_header Connection "upgrade";
232 a47eb4c Dawsh 2y ago proxy_set_header Host $http_host;
233 a47eb4c Dawsh 2y ago proxy_set_header X-Real-IP $remote_addr;
234 a47eb4c Dawsh 2y ago proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
235 a47eb4c Dawsh 2y ago }
236 a47eb4c Dawsh 2y ago }
237 a47eb4c Dawsh 2y ago ```
238 a47eb4c Dawsh 2y ago
239 a47eb4c Dawsh 2y ago or
240 a47eb4c Dawsh 2y ago
241 a47eb4c Dawsh 2y ago ```
242 a47eb4c Dawsh 2y ago server {
243 a47eb4c Dawsh 2y ago listen 443 ssl http2;
244 a47eb4c Dawsh 2y ago listen [::]:443 ssl http2;
245 bf00248 Dawsh 2y ago server_name marzneshin.example.com;
246 a47eb4c Dawsh 2y ago
247 a47eb4c Dawsh 2y ago ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
248 a47eb4c Dawsh 2y ago ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
249 a47eb4c Dawsh 2y ago
250 a47eb4c Dawsh 2y ago location / {
251 a47eb4c Dawsh 2y ago proxy_pass http://0.0.0.0:8000;
252 a47eb4c Dawsh 2y ago proxy_set_header Host $host;
253 a47eb4c Dawsh 2y ago proxy_set_header X-Real-IP $remote_addr;
254 a47eb4c Dawsh 2y ago proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
255 a47eb4c Dawsh 2y ago }
256 a47eb4c Dawsh 2y ago }
257 a47eb4c Dawsh 2y ago ```
258 a47eb4c Dawsh 2y ago
259 a47eb4c Dawsh 2y ago By default the app will be run on `http://localhost:8000/dashboard`. You can configure it using changing the `UVICORN_HOST` and `UVICORN_PORT` environment variables.
260 a47eb4c Dawsh 2y ago </details>
261 a47eb4c Dawsh 2y ago
262 a47eb4c Dawsh 2y ago # Configuration
263 a47eb4c Dawsh 2y ago
264 a47eb4c Dawsh 2y ago > You can set settings below using environment variables or placing them in `.env` file.
265 a47eb4c Dawsh 2y ago
266 a47eb4c Dawsh 2y ago | Variable | Description |
267 a47eb4c Dawsh 2y ago | --------------------------------- | ----------------------------------------------------------------------------------------------------- |
268 a47eb4c Dawsh 2y ago | SUDO_USERNAME | Superuser's username |
269 a47eb4c Dawsh 2y ago | SUDO_PASSWORD | Superuser's password |
270 a47eb4c Dawsh 2y ago | SQLALCHEMY_DATABASE_URL | Database URL ([SQLAlchemy's docs](https://docs.sqlalchemy.org/en/20/core/engines.html#database-urls)) |
271 a47eb4c Dawsh 2y ago | UVICORN_HOST | Bind application to this host (default: `0.0.0.0`) |
272 a47eb4c Dawsh 2y ago | UVICORN_PORT | Bind application to this port (default: `8000`) |
273 a47eb4c Dawsh 2y ago | UVICORN_UDS | Bind application to a UNIX domain socket |
274 a47eb4c Dawsh 2y ago | UVICORN_SSL_CERTFILE | SSL certificate file to have application on https |
275 a47eb4c Dawsh 2y ago | UVICORN_SSL_KEYFILE | SSL key file to have application on https |
276 a47eb4c Dawsh 2y ago | XRAY_SUBSCRIPTION_URL_PREFIX | Prefix of subscription URLs |
277 a47eb4c Dawsh 2y ago | CUSTOM_TEMPLATES_DIRECTORY | Customized templates directory (default: `app/templates`) |
278 a47eb4c Dawsh 2y ago | CLASH_SUBSCRIPTION_TEMPLATE | The template that will be used for generating clash configs (default: `clash/default.yml`) |
279 a47eb4c Dawsh 2y ago | SUBSCRIPTION_PAGE_TEMPLATE | The template used for generating subscription info page (default: `subscription/index.html`) |
280 a47eb4c Dawsh 2y ago | HOME_PAGE_TEMPLATE | Decoy page template (default: `home/index.html`) |
281 a47eb4c Dawsh 2y ago | TELEGRAM_API_TOKEN | Telegram bot API token (get token from [@botfather](https://t.me/botfather)) |
282 a47eb4c Dawsh 2y ago | TELEGRAM_ADMIN_ID | Numeric Telegram ID of admin (use [@userinfobot](https://t.me/userinfobot) to found your ID) |
283 a47eb4c Dawsh 2y ago | TELEGRAM_PROXY_URL | Run Telegram Bot over proxy |
284 a47eb4c Dawsh 2y ago | JWT_ACCESS_TOKEN_EXPIRE_MINUTES | Expire time for the Access Tokens in minutes, `0` considered as infinite (default: `1440`) |
285 a47eb4c Dawsh 2y ago | DOCS | Whether API documents should be available on `/docs` and `/redoc` or not (default: `False`) |
286 a47eb4c Dawsh 2y ago | DEBUG | Debug mode for development (default: `False`) |
287 a47eb4c Dawsh 2y ago | WEBHOOK_ADDRESS | Webhook address to send notifications to. Webhook notifications will be sent if this value was set. |
288 a47eb4c Dawsh 2y ago | WEBHOOK_SECRET | Webhook secret will be sent with each request as `x-webhook-secret` in the header (default: `None`) |
289 a47eb4c Dawsh 2y ago | NUMBER_OF_RECURRENT_NOTIFICATIONS | How many times to retry if an error detected in sending a notification (default: `3`) |
290 a47eb4c Dawsh 2y ago | RECURRENT_NOTIFICATIONS_TIMEOUT | Timeout between each retry if an error detected in sending a notification in seconds (default: `180`) |
291 a47eb4c Dawsh 2y ago | NOTIFY_REACHED_USAGE_PERCENT | At which percentage of usage to send the warning notification (default: `80`) |
292 a47eb4c Dawsh 2y ago | NOTIFY_DAYS_LEFT | When to send warning notifaction about expiration (default: `3`) |
293 a47eb4c Dawsh 2y ago
294 a47eb4c Dawsh 2y ago # API
295 a47eb4c Dawsh 2y ago
296 bf00248 Dawsh 2y ago Marzneshin provides a REST API that enables developers to interact with Marzneshin services programmatically. To view the API documentation in Swagger UI or ReDoc, set the configuration variable `DOCS=True` and navigate to the `/docs` and `/redoc`.
297 a47eb4c Dawsh 2y ago
298 a47eb4c Dawsh 2y ago # Backup
299 a47eb4c Dawsh 2y ago
300 bf00248 Dawsh 2y ago It's always a good idea to backup your Marzneshin files regularly to prevent data loss in case of system failures or accidental deletion. Here are the steps to backup Marzneshin:
301 a47eb4c Dawsh 2y ago
302 bf00248 Dawsh 2y ago 1. By default, all Marzneshin important files are saved in `/var/lib/marzneshin` (Docker versions). Copy the entire `/var/lib/marzneshin` directory to a backup location of your choice, such as an external hard drive or cloud storage.
303 bf00248 Dawsh 2y ago 2. Additionally, make sure to backup your env file, which contains your configuration variables. If you installed Marzneshin using the script (recommended installation approach), the env and other configurations should be inside `/etc/opt/marzneshin/` directory.
304 a47eb4c Dawsh 2y ago
305 bf00248 Dawsh 2y ago By following these steps, you can ensure that you have a backup of all your Marzneshin files and data, as well as your configuration variables and Xray configuration, in case you need to restore them in the future. Remember to update your backups regularly to keep them up-to-date.
306 a47eb4c Dawsh 2y ago
307 a47eb4c Dawsh 2y ago # Telegram Bot
308 a47eb4c Dawsh 2y ago
309 bf00248 Dawsh 2y ago Marzneshin comes with an integrated Telegram bot that can handle server management, user creation and removal, and send notifications. This bot can be easily enabled by following a few simple steps, and it provides a convenient way to interact with Marzneshin without having to log in to the server every time.
310 a47eb4c Dawsh 2y ago
311 a47eb4c Dawsh 2y ago To enable Telegram Bot:
312 a47eb4c Dawsh 2y ago
313 a47eb4c Dawsh 2y ago 1. set `TELEGRAM_API_TOKEN` to your bot's API Token
314 a47eb4c Dawsh 2y ago 2. set `TELEGRAM_ADMIN_ID` to your Telegram account's numeric ID, you can get your ID from [@userinfobot](https://t.me/userinfobot)
315 a47eb4c Dawsh 2y ago
316 bf00248 Dawsh 2y ago # Marzneshin CLI
317 a47eb4c Dawsh 2y ago
318 bf00248 Dawsh 2y ago Marzneshin comes with an integrated CLI named `marzneshin-cli` which allows administrators to have direct interaction with it.
319 a47eb4c Dawsh 2y ago
320 bf00248 Dawsh 2y ago If you've installed Marzneshin using the installation script, you can access the cli commands by running
321 a47eb4c Dawsh 2y ago
322 a47eb4c Dawsh 2y ago ```bash
323 bf00248 Dawsh 2y ago marzneshin cli [OPTIONS] COMMAND [ARGS]...
324 a47eb4c Dawsh 2y ago ```
325 a47eb4c Dawsh 2y ago
326 bf00248 Dawsh 2y ago For more information, You can read [Marzneshin CLI's documentation](./cli/README.md).
327 a47eb4c Dawsh 2y ago
328 bf00248 Dawsh 2y ago # marznode
329 a47eb4c Dawsh 2y ago
330 bf00248 Dawsh 2y ago [marznode](https://github.com/khodedawsh/marznode) is the backend needed to run proxy servers.
331 a47eb4c Dawsh 2y ago
332 a47eb4c Dawsh 2y ago # Webhook notifications
333 a47eb4c Dawsh 2y ago
334 bf00248 Dawsh 2y ago You can set a webhook address and Marzneshin will send the notifications to that address.
335 a47eb4c Dawsh 2y ago
336 a47eb4c Dawsh 2y ago the requests will be sent as a post request to the adress provided by `WEBHOOK_ADDRESS` with `WEBHOOK_SECRET` as `x-webhook-secret` in the headers.
337 a47eb4c Dawsh 2y ago
338 bf00248 Dawsh 2y ago Example request sent from Marzneshin:
339 a47eb4c Dawsh 2y ago
340 a47eb4c Dawsh 2y ago ```
341 a47eb4c Dawsh 2y ago Headers:
342 a47eb4c Dawsh 2y ago Host: 0.0.0.0:9000
343 a47eb4c Dawsh 2y ago User-Agent: python-requests/2.28.1
344 a47eb4c Dawsh 2y ago Accept-Encoding: gzip, deflate
345 a47eb4c Dawsh 2y ago Accept: */*
346 a47eb4c Dawsh 2y ago Connection: keep-alive
347 a47eb4c Dawsh 2y ago x-webhook-secret: something-very-very-secret
348 a47eb4c Dawsh 2y ago Content-Length: 107
349 a47eb4c Dawsh 2y ago Content-Type: application/json
350 a47eb4c Dawsh 2y ago
351 a47eb4c Dawsh 2y ago
352 a47eb4c Dawsh 2y ago
353 a47eb4c Dawsh 2y ago Body:
354 bf00248 Dawsh 2y ago {"username": "marzneshin_test_user", "action": "user_updated", "enqueued_at": 1680506457.636369, "tries": 0}
355 a47eb4c Dawsh 2y ago ```
356 a47eb4c Dawsh 2y ago
357 a47eb4c Dawsh 2y ago Different action typs are: `user_created`, `user_updated`, `user_deleted`, `user_limited`, `user_expired`, `user_disabled`, `user_enabled`
358 a47eb4c Dawsh 2y ago
359 a47eb4c Dawsh 2y ago # Donation
360 a47eb4c Dawsh 2y ago
361 bf00248 Dawsh 2y ago If you found Marzneshin useful and would like to support its development, you can't make a donation in one of the following crypto networks:
362 a47eb4c Dawsh 2y ago
363 bf00248 Dawsh 2y ago - TRON network (TRC20):
364 bf00248 Dawsh 2y ago - ETH, BNB, MATIC network (ERC20, BEP20):
365 bf00248 Dawsh 2y ago - Bitcoin network:
366 bf00248 Dawsh 2y ago - Dogecoin network:
367 bf00248 Dawsh 2y ago - TON network:
368 a47eb4c Dawsh 2y ago
369 a47eb4c Dawsh 2y ago Thank you for your support!
370 a47eb4c Dawsh 2y ago
371 a47eb4c Dawsh 2y ago # License
372 a47eb4c Dawsh 2y ago
373 a47eb4c Dawsh 2y ago Made in [Unknown!] and Published under [AGPL-3.0](./LICENSE).
374 a47eb4c Dawsh 2y ago
375 a47eb4c Dawsh 2y ago # Contributors
376 a47eb4c Dawsh 2y ago
377 bf00248 Dawsh 2y ago We ❤️‍🔥 contributors! If you'd like to contribute, please check out our [Contributing Guidelines](CONTRIBUTING.md) and feel free to submit a pull request or open an issue. We also welcome you to join our [Telegram](https://t.me/marzneshins) group for either support or contributing guidance.
378 a47eb4c Dawsh 2y ago
379 bf00248 Dawsh 2y ago Check [open issues](https://github.com/khodedawsh/marzneshin/issues) to help the progress of this project.
380 a47eb4c Dawsh 2y ago
381 a47eb4c Dawsh 2y ago <p align="center">
382 bf00248 Dawsh 2y ago Thanks to the all contributors who have helped improved Marzban & Marzneshin:
383 a47eb4c Dawsh 2y ago </p>
384 a47eb4c Dawsh 2y ago <p align="center">
385 a47eb4c Dawsh 2y ago <a href="https://github.com/Gozargah/Marzban/graphs/contributors">
386 a47eb4c Dawsh 2y ago <img src="https://contrib.rocks/image?repo=Gozargah/Marzban" />
387 a47eb4c Dawsh 2y ago </a>
388 a47eb4c Dawsh 2y ago </p>
389 bf00248 Dawsh 2y ago <p align="center">
390 bf00248 Dawsh 2y ago <a href="https://github.com/khodedawsh/marzneshin/graphs/contributors">
391 bf00248 Dawsh 2y ago <img src="https://contrib.rocks/image?repo=khodedawsh/marzneshin" />
392 bf00248 Dawsh 2y ago </a>
393 bf00248 Dawsh 2y ago </p>
394 a47eb4c Dawsh 2y ago <p align="center">
395 a47eb4c Dawsh 2y ago Made with <a rel="noopener noreferrer" target="_blank" href="https://contrib.rocks">contrib.rocks</a>
396 a47eb4c Dawsh 2y ago </p>