# Cwp

estos son los 3 pasos para instalar y customizar control web panel o cwp  
  
Hacerlo en orden

# Antes de instalar en el registrador

#### Registrador de dominio

El servidor requiere

- 1 nombre de servidor o hostname *ejemplo messi.altomarketing.net*
- 2 servidores de nombres o dns 
    - ejemplo *gol1.altomarketing.net y gol2.altomarketing.net*

Vamos a donde registramos el dominio y creamos el hostname apuntando a la IP del servidor

[![dns.png](https://manual.altomarketing.com/uploads/images/gallery/2024-01/scaled-1680-/dns.png)](https://manual.altomarketing.com/uploads/images/gallery/2024-01/dns.png)

<p class="callout success">Luego hacemos lo mismo para *gol1.altomarketing.net y gol2.altomarketing.net*</p>

Finalmente podriamos crear un RDNS o un reverso para el hostname

# Instalando control panel en SSH

### Plantilla para rocky 8

http://download.proxmox.com/images/system/rockylinux-8-default\_20210929\_amd64.tar.xz

### Preparando SERVER  


Debemos actualizar el Centos a la ultima version y librerias necesarias para funcionar perfecto

```c++
yum upgrade -y ; yum upgrade -y ;  yum install -y openssh-server openssh-clients nano net-tools;  service sshd restart; reboot
```

#### Proceso de instalación

Este proceso trae la ultimar version e instala automaticamente el Control Web panel

<p class="callout warning">Puede demorar de pocos minutos a algunas horas, dependiendo de conexion y calidad del server</p>

##### Installer for **CentOS 8/stream**, **Alma Linux**, and **Rocky Linux (recommended)** 

```
cd /usr/local/src
wget http://centos-webpanel.com/cwp-el8-latest
sh cwp-el8-latest
```

#### Luego de instalación  


Una vez instalado Eliminamos procesos que no se usan en el servidor, ejecutando este comando

```bash
/bin/systemctl stop rpcbind ; /bin/systemctl disable rpcbind ; 
```

---

Debemos proteger el servidor de SPAM mediante RBL

```c++
nano /etc/postfix/main.cf 
```

Alli debemos bajar hasta rules restrition y DESCOMENTAR cambiando

```bash
 rules restrictions
...
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, reject_non_fqdn_s$
# uncomment for realtime black list checks
# ,reject_rbl_client zen.spamhaus.org
# ,reject_rbl_client bl.spamcop.net
# ,reject_rbl_client dnsbl.sorbs.net
smtpd_helo_required = yes 
```

sacando los # y debe quedar asi

```bash
....
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination, reject_non_fqdn_s$
# uncomment for realtime black list checks
 ,reject_rbl_client zen.spamhaus.org
 ,reject_rbl_client bl.spamcop.net
 ,reject_rbl_client dnsbl.sorbs.net 
```

---

##### Protegemos el SSH

Cambiando puerto

```c#
nano /etc/ssh/sshd_config
```

Al abrirlo cambio

```c#
...
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
...
```

por un numero que se les ocurra a ustedes

```c++
....
Port 123455
#AddressFamily any
#ListenAddress 0.0.0.0
...
```

<p class="callout warning">Por favor recordar el numero porque el servidor podría quedar inutilizado  
</p>

Mas abajo cambiamos Esta linea

```bash
#UseDNS Yes
```

por esta para no usar DNS

```c++
UseDNS No
```

Y finalmente reiniciamos el servicio SSH

```diff
service sshd restart
```

#### CONTROL WEB PANEL PRO

Si tiene licencia PRO

Ejecute este comando en consola

```dart
sudo sh /scripts/update_cwp
```

# Instalado cwp - preparando antes de usar

Apenas ingreso y esta recien instalado vere algo como esto:

## Home page

[![home centoswebpanel.png](https://manual.altomarketing.com/uploads/images/gallery/2024-01/scaled-1680-/home-centoswebpanel.png)](https://manual.altomarketing.com/uploads/images/gallery/2024-01/home-centoswebpanel.png)

<p class="callout success">El orden de como esta planteado este manual les garantizara que el servidor funcione bien.</p>

Debajo les damos los nombres del menu izquierdo, mas que deben hacer, mas una breve explicacion

### <span style="text-decoration: underline;">DNS Functions</span>

##### Edit Nameservers ips

Son los nombres que pusimos en el paso 1 para que puedan llegar los dominios al servidor, solo escribimos los Name server y borramos las ips, y al guardar deberia decir

```
Nameservers updated.
```

### <span style="text-decoration: underline;">Server Settings</span>

##### Change root password

```
Changing password for user root.
passwd: all authentication tokens updated successfully
```

<p class="callout danger">Es conveniente cambiar la clave root a una mas dificil, anotarla por favor !</p>

##### Change Hostname

una vez que en el paso anterior el servidor sabe cuales son los nombres de servidor, debemos verificar el hostname y crear un SSL para que cuando ingresemos siempre tengamos conexion SSL.

Presionamos Change Hostname -&gt;

```
Hostname changed successfully, for a more detailed info you can check the log: /var/log/cwp/autossl.log
```

##### Change Server Date &amp; Time

Aquí puede elegir la hora de su conveniencia para la mayoría de sus clientes

esta característica podría no funcionar si vemos la alerta

> <span style="color: red;">\*</span> This option do not work on VPS systems like openVZ, for openVZ Date/Time need to be set on the main node but you can change the timezone.

### <span style="text-decoration: underline;">Security</span>

#### CSF Firewall  


es el firewall mas usado del mundo en webhosting, totalmente gratuito y estable.

- Lo habilitamos en Enable
- Si usamos whmcs o alguno otro software que creara cuentas en el hosting, debemos agregar la ip en lista blanca 
    - Add an entry y Allow

![firewall.png](https://manual.altomarketing.com/uploads/images/gallery/2024-01/scaled-1680-/firewall.png)

#### Agregar puertos

Debemos agregar algunos puertos para que el firewall no los bloquee

![firewall puertos.png](https://manual.altomarketing.com/uploads/images/gallery/2024-01/scaled-1680-/firewall-puertos.png)

Alli debo bajar hasta donde estan los puertos y agregar **2304** y el numero de puerto que le puse al **SSH**

**Siempre entre comas**

**![peurtos nuevos.png](https://manual.altomarketing.com/uploads/images/gallery/2024-01/scaled-1680-/peurtos-nuevos.png)**


### <span style="text-decoration: underline;">PHP SETTINGS  
</span>

##### php Selector  


- Webserver Settings 
    - Select webservers - Cambiar a **Nginx &amp; Varnish &amp; Apache**
    - **Si el hostname anda bien, &gt; Apache redirect al hostname no la ip**
    -
- Cambiar los dns a los correspondientes.

### <span style="text-decoration: underline;">WebServer Settings  
</span>

##### Select Webservers  


El Webserver elegido no solo garantizara que funcione bien el servidor, sino que soporte decenas o miles de sitios web con millones de visitas.

Usted debe elegir el webserver de su conveniencia, pero le cuento las 3 opciones mas usadas

- Solo alojar Sitios Html, y Sitios Php chicos = **Nginx &amp; Varnish &amp; Apache**
- Principalmente sitios web en Wordpress = **Nginx &amp; Apache**
- **Sitios php a medida, desarrollos especiales o php viejos = Apache Only**

<p class="callout success">Yo siempre elijo **Nginx &amp; Varnish &amp; Apache**</p>

##### Apache redirects editor

Hay que modificar si ya puedes entrar bien al servidor por el hostname, en esta seccion asi se podra usar HOSTNAME en vez de la ip

Cambiando como lo indica la imagen

![update redirect.png](https://manual.altomarketing.com/uploads/images/gallery/2024-01/scaled-1680-/update-redirect.png)

### <span style="text-decoration: underline;">Packages  
</span>

##### Packages

Aqui crearemos los paquetes de hosting que usaran, cada uno puede hacer lo que guste por ejemplo asi

<p class="callout warning">*Si va a usar Whmcs o Wisecp debe coincidir con el nombre del paquete de hosting que hemos creado*</p>

![packages.png](https://manual.altomarketing.com/uploads/images/gallery/2024-01/scaled-1680-/packages.png)


### <span style="text-decoration: underline;">User Accounts  
</span>

##### Features, themes  


Aquí ya estamos cambiando la estética y detalles

<p class="callout info">Features MANAGER  
</p>

Permite poner a cada usuario o a cada paquete de hosting, diferentes caracteristicas de su panel de hosting.

Ejemplo:

- Paquete hosting = Wordpress (le saco en feature que no tenga mongodb o Node.js ni emails)
- Paquete Soloemail = Le saco ssl y lo que guste
- y asi...

Ejemplo visual

[![FEATURE CWP.png](https://manual.altomarketing.com/uploads/images/gallery/2024-01/scaled-1680-/feature-cwp.png)](https://manual.altomarketing.com/uploads/images/gallery/2024-01/feature-cwp.png)

<p class="callout info">LANGUAGES</p>

Aquí puedo poner que el castellano sea el tema pro defecto

<p class="callout info">TEMPLATES</p>

En la solapa Template editor pages, podremos poner nuestro html que se vera por defecto cuando una nueva cuenta de hosting sea creada, sino se mostrara el html por defecto de cwp

Por ejemplo este codigo redirije hacia otra web

> INDEX Por defecto

```html
<html>

<head>
<meta http-equiv="refresh" content="0; url=http://cdn.altomarketing.com/cpanel/nuevohosting" />
<title> Web Posting Information </title>
</head>

<body></body>
</html>
```

#### Skeleton para Control web panel

<span class="" data-index="0">\* Aquí debemos usar solo la extensión HTML. </span><span class="" data-index="1">PHP NO funcionará ya que estas plantillas también se utilizan para evitar problemas de carga alta, ya que el HTML no causará una carga alta como PHP.  
</span>

##### <span class="" data-index="2">Plantilla de cuenta suspendida</span>

<span class="" data-index="2">  
</span><span class="" data-index="3">Para activar plantillas HTML personalizadas para cuentas suspendidas, debe crear una carpeta personalizada y agregar en ella su archivo index.htm</span>

```
/usr/local/cwpsrv/htdocs/resources/admin/tpl/suspend_account_tpl_custom/
```

<span class="" data-index="5">Nginx y Apache leen plantillas personalizadas para páginas suspendidas desde esta ubicación por lo que también necesitarías modificarlas allí  
</span>

```
/usr/local/apache/htdocs/suspended-page/

```

<span class="" data-index="11">alli pongo..  
</span>

```html
<html>

<head>
<meta http-equiv="refresh" content="0; url=http://cdn.altomarketing.com/cpanel/suspension" />
<title> Web Posting Information </title>
</head>

<body></body>
</html>
```

##### <span data-index="12">Skeleton para Plantilla de cuenta nueva</span>

<span data-index="12">  
</span><span class="" data-index="13">Para activar plantillas HTML personalizadas para nuevas cuentas necesitas crear una carpeta personalizada y añadir en ella tu archivo index.html</span><span class="" data-index="14">  
</span><span class="" data-index="15"> </span><span data-index="17">  
</span><span class="" data-index="18">\* La plantilla de cuenta nueva se utiliza al crear una nueva cuenta y copia el contenido desde la ubicación de la plantilla a la carpeta public\_html del nuevo usuario de la cuenta.</span>

```
/usr/local/cwpsrv/htdocs/resources/admin/tpl/new_account_tpl_custom/

```

#### EJEMPLO SKELETON  


Debo abrir el Filemanager

![filemanager.png](https://manual.altomarketing.com/uploads/images/gallery/2024-01/scaled-1680-/filemanager.png)

y luego ir especificamente hasta la ruta

```
/usr/local/apache/htdocs/suspended-page
```

alli hay un html, al modificarlo ese sera loq eu se vea cuando una cuenta de hosting este suspendida.

Nosotros por ejemplo ponemos una redireccion hacia un html nuestro

```html
<html>

<head>
<meta http-equiv="refresh" content="0; url=http://cdn.altomarketing.com/cpanel/nuevohosting" />
<title> Web Posting Information </title>
</head>

<body></body>
</html>
```

TIP final

entrar por ssh y copiar el tema para cambiar y sacarle el cambio de contraseña

copiar /usr/local/cwpsrv/var/services/users/cwp\_theme/original

hacia /usr/local/cwpsrv/var/services/users/cwp\_theme/altomarketing

chown

despues en el archivo index.html, buscar **changepass y sacarlo**

` <li><a href="#" data-toggle="modal" data-target="#modal-changepass">{{langene.CHANGEPASS}}</a></li>`

`  chown cwpsvc:cwpsvc altomarketing/ -R`

</body></html>

# Si usas VPS con KVM - activar quotas

si tu servidor es un VPS que no tiene quotas instalado, debes en ssh

<p class="callout warning">solo si usas XFS</p>

```bash
yum -y install quota quota-devel
```

y luego debe editar

```c++
nano /etc/fstab
```

Y agregar **usrquota,grpquota** AL FINAL por ejemplo:

/dev/mapper/centos\_root-home /home xfs defaults,**usrquota,grpquota** 0 0

y quedara asi

![usr quotas.png](https://manual.altomarketing.com/uploads/images/gallery/2024-01/scaled-1680-/usr-quotas.png)

y hacemos

```c#
reboot
```

### dentro de cwp

### Server Settings - Disk quotas

y abajo elegimos / home y /xfs

guardamos

y reiniciamos

### User Accounts - User quota

Ahi deberia verse si hay cuentas creadas la quota de cada uno

Comprobar desde shh

```c++
mount |grep home
```

ahi deberia verse algo asi

![cwp quotas ok.png](https://manual.altomarketing.com/uploads/images/gallery/2024-01/scaled-1680-/cwp-quotas-ok.png)

# Bad Gateway

Que pasa si surge el bad gateway para entrar al panel de hosting

Sugiermos estos pasos.

#### FIX PERMISSIONS

[![image.png](https://manual.altomarketing.com/uploads/images/gallery/2024-12/scaled-1680-/4p8image.png)](https://manual.altomarketing.com/uploads/images/gallery/2024-12/4p8image.png)

Probar.. no te funciona ?

Cambiale la clave del hosting al cliente

# Como hacer backups con rclone hacia Wasabi

Paso a paso

1. crear obviamente el bucket, usaurios y privilegios en Wasabi

## Instalar en server

```
yum install -y epel-release
yum upgrade -y  
```

instalar `rclone`:

```
curl https://rclone.org/install.sh | bash

```

Verifica que `rclone` está instalado:

```
rclone version

```

## **2. Configurar `rclone` para Wasabi**

Ejecuta el siguiente comando interactivo:

```
rclone config

```

Luego sigue estos pasos:

1. **Elige "n" para crear una nueva configuración**
2. **Escribe un nombre** (ejemplo: `wasabi-backup`)
3. **Selecciona el tipo de almacenamiento:**
    - Escribe `s3` y presiona **Enter**
4. **Selecciona el proveedor de almacenamiento:**
    - Escribe `32` para elegir **Wasabi**
5. **Ingresa las credenciales de Wasabi:**
    - **Access Key ID:** *Tu clave de Wasabi*
    - **Secret Access Key:** *Tu clave secreta de Wasabi*
6. *1 will use v4*
    - **Elige la región de Wasabi:**
    - Si tu bucket está en **us-east-1**, escribe `us-east-1`
    -
7. **Escribe el nombre del endpoint:**
    1. **ingrese 1**
8. **location constraint**
    1. **`us-east-1`**
9. Owner gets FULL\_CONTROL. = 1 
    1.

## **3. Probar la conexión con Wasabi**

Para verificar que todo funciona, usa:

```
rclone lsd wasabi:

```

## **4. Subir archivos a Wasabi con `rclone`**

Para copiar un backup de **CWP** a **Wasabi**, usa:

```
rclone sync accounts/ wasabi:mibackupdehosting/cwpxxxx
```

## **5. Automatizar el backup con `cron`**

Puedes hacer que `rclone` copie automáticamente los backups con un **cron job**.

1. Abre el crontab:

```
crontab -e
```

Agrega una línea como esta para hacer un backup todos los días a las 2 AM:

```
# Reboot diario a las 3 AM
0 3 * * * /sbin/reboot

# Sincronización con rclone todos los lunes a las 2 AM
0 2 * * 1 rclone sync /newbackup wasabi:mibackupdehosting/backups/

```

1. Guarda y sal (`CTRL + X`, luego `Y` y `Enter`).

---

### **¡Listo! 🚀**

Con `rclone`, ya puedes hacer backups automáticos a Wasabi sin complicaciones.