## Preparations
To setup a Nezha monitorning Dashboard, you need these things:
1. A VPS that can connect to the Internet, firewall and security policies need to open ports 8008 and 5555, otherwise it will be inaccessible and unable to receive data. A 1 core 512MB RAM server is sufficient for most usage scenarios
2. A domain name that has been set up with an A record that resolves to the Dashboard server IP
::: tip
If you want to use CDN, please prepare two domains, one connect to CDN for public access, CDN needs to support WebSocket protocol; the other domain should not connect to CDN, use it as Agent to send data to Dashboard.
This document uses "cdn.example.com" and "data.example.com" domains to demonstrate respectively
:::
3. A Github account
**This document will use the aaPanel as an example, with future versions of the changes, some of the features may change, this document is for reference only**
## Get the Client ID and Client Secret on Github
Nezha Monitor uses a Github account as the login account for the admin panel
+ First we need to create a new authentication application, after logging into Github, open https://github.com/settings/developers and select "OAuth Apps" - "New OAuth App "
`Application name` - Fill in as you like
`Homepage URL` - Fill in the panel's access domain name, such as: "http://cdn.example.com"
`Authorization callback URL` - Fill in the callback address, e.g., "http://cdn.example.com/oauth2/callback"
+ Click on "Registration Application"
+ Remember the Client ID in the page, then click "Generate a new client secret" to create a new Client Secret, the new secret will be displayed only once, please save it properly
## Installing Dashboard on the server
* In the panel server, run the installation script:
```bash
curl -L https://raw.githubusercontent.com/naiba/nezha/master/script/install_en.sh -o nezha.sh && chmod +x nezha.sh && sudo ./nezha.sh
```
* After waiting for the Docker installation to complete, input the following settings:
`OAuth2 provider` - Github
`Client ID` - Previously saved Client ID
`Client Secret` - Previously saved secret
`GitHub/Gitee login name` - Github username
`Site title` - Custom site title
`Site access port` - Public access port, customizable, default 8008
`RPC port` - The communication port between Agent and Dashboard, default 5555
* After the input is complete, wait to pull the mirror
After the installation, if everything is fine, you can visit the domain + port number, such as "http://cdn.example.com:8008" to view the Dashboard
* In the future, if you need to run the script again, you can run:
```bash
./nezha.sh
```
to open the management script
## Configure reverse proxy
* Create a new site in the aaPanel, fill in the public access domain name, such as "http://cdn.example.com", then click "Settings" to enter the site settings option, select " Reverse proxy" - "New reverse proxy"
* Customize a proxy name, fill in `http://127.0.0.1` in the "Target URL" and click "Save"
* Open the " configuration" to the right of the new reverse proxy you just created and replace the configuration file with the following:
````nginx
#PROXY-START/
location / {
proxy_pass http://127.0.0.1:8008;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
}
location ~ ^/(ws|terminal/.+)$ {
proxy_pass http://127.0.0.1:8008;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
}
#PROXY-END/
````
* Click "Save"
Now, you should be able to access the panel directly using a domain name such as: "http://cdn.example.com"
#### Other:
* CaddyServer v1(v2 no special configuration required)
```
proxy /ws http://ip:8008 {
websocket
}
proxy /terminal/* http://ip:8008 {
websocket
}
```
## Configuring SSL in the aaPanel
First, temporarily disable the reverse proxy
As with other websites, you can choose to automatically apply for a Let´s Encrypt certificate or manually configure an existing certificate by going to "SSL" in the site settings
After you finish setting up SSL, you need to go back to https://github.com/settings/developers and edit the authentication application you created before, change all the domain names in the "Homepage URL" and "Authorization callback URL" you filled in before from `http` to `https`, such as: "https://cdn.example.com" and "https://cdn.example.com/oauth2/callback", **If you don't change these links, you may not be able to log into the admin panel**