mod from tamaulipas

This commit is contained in:
David Itehua Xalamihua 2025-08-28 14:19:26 -06:00
parent c8426f005b
commit 3df720e02f
21 changed files with 1552 additions and 1570 deletions

View File

@ -4,21 +4,21 @@
"type": "split", "type": "split",
"children": [ "children": [
{ {
"id": "fe53232fa26b8f11", "id": "689e84465cf5c511",
"type": "tabs", "type": "tabs",
"children": [ "children": [
{ {
"id": "5ff6ca2da58ba6f5", "id": "f65aae4ade40d7e9",
"type": "leaf", "type": "leaf",
"state": { "state": {
"type": "markdown", "type": "markdown",
"state": { "state": {
"file": "DIX-Notes/script_bash_servers/crontab.md", "file": "DIX-Notes/Install_n8n_wsl.md",
"mode": "source", "mode": "source",
"source": false "source": false
}, },
"icon": "lucide-file", "icon": "lucide-file",
"title": "crontab" "title": "Install_n8n_wsl"
} }
} }
] ]
@ -53,7 +53,7 @@
"state": { "state": {
"type": "search", "type": "search",
"state": { "state": {
"query": "pagos", "query": "sudo apt update",
"matchingCase": false, "matchingCase": false,
"explainSearch": false, "explainSearch": false,
"collapseAll": false, "collapseAll": false,
@ -169,26 +169,38 @@
"command-palette:Abrir paleta de comandos": false "command-palette:Abrir paleta de comandos": false
} }
}, },
"active": "db862854e8b7e53a", "active": "f65aae4ade40d7e9",
"lastOpenFiles": [ "lastOpenFiles": [
"DIX-Notes/SERVERS - DIX/adjuntos/B7380100",
"DIX-Notes/script_bash_servers/crontab.md",
"DIX-Notes/n8n en ubuntu server.md",
"DIX-Notes/Install_n8n_wsl.md",
"ELIMINAR/notas_express.md",
"Sin título.md",
"DIX-Notes/SERVERS - DIX/adjuntos/~$servers.xlsm",
"DIX-Notes/bash profile.md",
"DIX-Notes/RCLONE Y DRIVE/Enviar archivos del servidor a google drive..md",
"DIX-Notes/Otras_varias/Visualización carga de trabajo servers.md",
"DIX-Notes/Otras_varias/SSL red local con HAProxy.md",
"DIX-Notes/Otras_varias/Servidor SAMBA.md",
"DIX-Notes/Otras_varias/Installr xrdp (Remote Desktop).md",
"DIX-Notes/Otras_varias/Add User Ubuntu with sudo properties.md",
"DIX-Notes/Otras_varias/23.03.2025.md",
"DIX-Notes/IP_Estatica_DHCP_Telmex/IP Estática.md",
"DIX-Notes/trabajar_script_mc_backup.md",
"DIX-Notes/DDNS RASTREO CON CLOUDFLARE.md",
"DIX-Notes/corregir error ip.xala.dev vs dix-ip.duckdns.org.md",
"DIX-Notes/Bash_functions/Script_sincronizar_obsidian.md",
"DIX-Notes/Distribución servicios en las RP.md",
"DIX-Notes/DIX_Cluster.canvas",
"DIX-Notes/dns arrancar con el sistema.md",
"DIX-Notes/INSTALAR TESSERACT-OCT.md",
"DIX-Notes/Raspberry Pi as Router Wireguard Client.md",
"ELIMINAR/FIVE_MUSEO.docx.md", "ELIMINAR/FIVE_MUSEO.docx.md",
"ELIMINAR/Sin título.md", "ELIMINAR/Sin título.md",
"ELIMINAR/DOF_LINEAMIENTOS para el ciclo de gestión de los programas y proyectos de inversión, a cargo de las dependencias y entidades de la Administración Pública Federal..md", "ELIMINAR/DOF_LINEAMIENTOS para el ciclo de gestión de los programas y proyectos de inversión, a cargo de las dependencias y entidades de la Administración Pública Federal..md",
"DIX-Notes/Otras_varias/Pagos Jesús.md",
"ELIMINAR", "ELIMINAR",
"eliminar.md",
"Agencia_Espacial_Mexicana/Excel-Macros_AEM/Tabla de Excel a Markdown.md",
"DIX-Notes/INSTALAR TESSERACT-OCT.md",
"DIX-Notes/dns arrancar con el sistema.md",
"DIX-Notes/notas_express.md",
"DIX-Notes/bash profile.md",
"Agencia_Espacial_Mexicana/Registro_Proyecto_Cartera_Inversion/1.- Análisis Financiero Sistema Satelital de Telecomunicaciones..md",
"DIX-Notes/DDNS RASTREO CON CLOUDFLARE.md",
"DIX-Notes/Wireguard con obfuscación.md",
"DIX-Notes/script_bash_servers/crontab.md",
"DIX-Notes/SERVERS - DIX/adjuntos/~$servers.xlsm",
"DIX-Notes/SERVERS - DIX/adjuntos/C87ED000", "DIX-Notes/SERVERS - DIX/adjuntos/C87ED000",
"DIX-Notes/SERVERS - DIX/SERVERS DIX.md",
"DIX-Notes/script_bash_servers/scripts_linux/shutdown_weekends.sh", "DIX-Notes/script_bash_servers/scripts_linux/shutdown_weekends.sh",
"DIX-Notes/script_bash_servers/scripts_linux/shutdown.sh", "DIX-Notes/script_bash_servers/scripts_linux/shutdown.sh",
"DIX-Notes/script_bash_servers/scripts_linux/cron.log", "DIX-Notes/script_bash_servers/scripts_linux/cron.log",
@ -196,19 +208,7 @@
"DIX-Notes/script_bash_servers/scripts_linux/history_log.txt", "DIX-Notes/script_bash_servers/scripts_linux/history_log.txt",
"DIX-Notes/script_bash_servers/scripts_linux", "DIX-Notes/script_bash_servers/scripts_linux",
"DIX-Notes/script_bash_servers", "DIX-Notes/script_bash_servers",
"Agencia_Espacial_Mexicana/notas_express.md",
"Agencia_Espacial_Mexicana/ELIMINAR_NOTAS/3. Museo de las Telecomunicaciones - PPI_.md",
"Agencia_Espacial_Mexicana/DEFINICIONES Y EXPLICACIONES PROYECTOS CARTERA DE INVERSIÓN.md",
"DIX-Notes/Transcribir Videos (WSL).md",
"DIX-Notes/DIX_Cluster.canvas",
"Sin título.canvas", "Sin título.canvas",
"DIX-Notes/corregir error ip.xala.dev vs dix-ip.duckdns.org.md",
"Agencia_Espacial_Mexicana/Excel-Macros_AEM/Prorrateo.md",
"Agencia_Espacial_Mexicana/Estatuto Orgánico AEM/Estatuto Orgánico AEM.md",
"trabajar_script_mc_backup.md",
"n8n en ubuntu server.md",
"Install_n8n.md",
"bash profile.md",
"DIX_Cluster.canvas", "DIX_Cluster.canvas",
"Agencia_Espacial_Mexicana/Cursos_Capacitación/Introducción a la Administración Pública Federal/adjuntos/Pasted image 20250801164816.png", "Agencia_Espacial_Mexicana/Cursos_Capacitación/Introducción a la Administración Pública Federal/adjuntos/Pasted image 20250801164816.png",
"Agencia_Espacial_Mexicana/Cursos_Capacitación/Introducción a la Administración Pública Federal/adjuntos/Pasted image 20250801164759.png", "Agencia_Espacial_Mexicana/Cursos_Capacitación/Introducción a la Administración Pública Federal/adjuntos/Pasted image 20250801164759.png",

View File

@ -1,20 +1,20 @@
```bash ```bash
obsidian_notes_sync() { obsidian_notes_sync() {
# Sincronizar notas de Obsidian en Google Drive con rclone # Sincronizar notas de Obsidian en Google Drive con rclone
fecha=$(date +"D%d-%m-%Y-T%H-%M") fecha=$(date +"D%d-%m-%Y-T%H-%M")
file_name="dix-notes-$fecha" file_name="dix-notes-$fecha"
origen="/mnt/c/Users/davic/desktop/dix_notes" origen="/mnt/c/Users/davic/desktop/dix_notes"
destino="obsidian_personal_dix:/obsidian/$file_name" destino="obsidian_personal_dix:/obsidian/$file_name"
rclone copy "$origen" "$destino" -P -v rclone copy "$origen" "$destino" -P -v
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "✅ Sincronización completada correctamente." echo "✅ Sincronización completada correctamente."
else else
echo "❌ Error durante la sincronización." echo "❌ Error durante la sincronización."
fi fi
} }
``` ```

View File

@ -1,42 +1,42 @@
{ {
"nodes":[ "nodes":[
{"id":"84eea27a1ba629c8","x":-134,"y":-349,"width":250,"height":60,"type":"text","text":""}, {"id":"84eea27a1ba629c8","x":-134,"y":-349,"width":250,"height":60,"type":"text","text":""},
{"id":"0196141ff4288b26","type":"text","text":"Web Server 1\n- NOT WORKING","x":-940,"y":-100,"width":300,"height":120,"color":"4"}, {"id":"0196141ff4288b26","type":"text","text":"Web Server 1\n- NOT WORKING","x":-940,"y":-100,"width":300,"height":120,"color":"4"},
{"id":"21f14a45f938153b","type":"text","text":"Web Server 2\n- tacrecruitment","x":-560,"y":-100,"width":275,"height":160,"color":"4"}, {"id":"21f14a45f938153b","type":"text","text":"Web Server 2\n- tacrecruitment","x":-560,"y":-100,"width":275,"height":160,"color":"4"},
{"id":"1cbfc86bc270e4b7","type":"text","text":"Web Server 3\n- tacrecruitment","x":-160,"y":-100,"width":300,"height":160,"color":"4"}, {"id":"1cbfc86bc270e4b7","type":"text","text":"Web Server 3\n- tacrecruitment","x":-160,"y":-100,"width":300,"height":160,"color":"4"},
{"id":"9031059888e87fd2","type":"text","text":"Web Server 4\n- tacrecruitment","x":220,"y":-100,"width":300,"height":160,"color":"4"}, {"id":"9031059888e87fd2","type":"text","text":"Web Server 4\n- tacrecruitment","x":220,"y":-100,"width":300,"height":160,"color":"4"},
{"id":"6b94f426bec0518d","type":"text","text":"Web Server 5\n- NOT WORKING","x":600,"y":-100,"width":290,"height":160,"color":"4"}, {"id":"6b94f426bec0518d","type":"text","text":"Web Server 5\n- NOT WORKING","x":600,"y":-100,"width":290,"height":160,"color":"4"},
{"id":"aa754eec2e32009a","type":"text","text":"DB Server","x":-410,"y":220,"width":250,"height":60,"color":"6"}, {"id":"aa754eec2e32009a","type":"text","text":"DB Server","x":-410,"y":220,"width":250,"height":60,"color":"6"},
{"id":"f848b43274fcb59b","type":"text","text":"Load Balancer\n- ntfy: 8080\n- uk: 3001\n- gitea: 3000","x":-410,"y":-500,"width":250,"height":180,"color":"1"}, {"id":"f848b43274fcb59b","type":"text","text":"Load Balancer\n- ntfy: 8080\n- uk: 3001\n- gitea: 3000","x":-410,"y":-500,"width":250,"height":180,"color":"1"},
{"id":"3e79a9f2644708b5","type":"text","text":"Git Server\n- dnsmasq\n- haproxy","x":60,"y":-500,"width":250,"height":180,"color":"2"}, {"id":"3e79a9f2644708b5","type":"text","text":"Git Server\n- dnsmasq\n- haproxy","x":60,"y":-500,"width":250,"height":180,"color":"2"},
{"id":"eb5c7fcba435d5b3","type":"text","text":"Metabase Server","x":60,"y":220,"width":250,"height":60,"color":"5"}, {"id":"eb5c7fcba435d5b3","type":"text","text":"Metabase Server","x":60,"y":220,"width":250,"height":60,"color":"5"},
{"id":"00e0a1844c5114ee","type":"text","text":"Web Server 6\n- Minecraft","x":980,"y":-100,"width":250,"height":120}, {"id":"00e0a1844c5114ee","type":"text","text":"Web Server 6\n- Minecraft","x":980,"y":-100,"width":250,"height":120},
{"id":"5f334013938f0378","type":"text","text":"Router / VPN","x":-160,"y":-820,"width":250,"height":60} {"id":"5f334013938f0378","type":"text","text":"Router / VPN","x":-160,"y":-820,"width":250,"height":60}
], ],
"edges":[ "edges":[
{"id":"65decefa61be0132","fromNode":"f848b43274fcb59b","fromSide":"bottom","toNode":"0196141ff4288b26","toSide":"top"}, {"id":"65decefa61be0132","fromNode":"f848b43274fcb59b","fromSide":"bottom","toNode":"0196141ff4288b26","toSide":"top"},
{"id":"c821c7786b13de56","fromNode":"f848b43274fcb59b","fromSide":"bottom","toNode":"21f14a45f938153b","toSide":"top"}, {"id":"c821c7786b13de56","fromNode":"f848b43274fcb59b","fromSide":"bottom","toNode":"21f14a45f938153b","toSide":"top"},
{"id":"bbdfbe93eca7f66e","fromNode":"f848b43274fcb59b","fromSide":"bottom","toNode":"1cbfc86bc270e4b7","toSide":"top"}, {"id":"bbdfbe93eca7f66e","fromNode":"f848b43274fcb59b","fromSide":"bottom","toNode":"1cbfc86bc270e4b7","toSide":"top"},
{"id":"c1c443e22eb76535","fromNode":"f848b43274fcb59b","fromSide":"bottom","toNode":"9031059888e87fd2","toSide":"top"}, {"id":"c1c443e22eb76535","fromNode":"f848b43274fcb59b","fromSide":"bottom","toNode":"9031059888e87fd2","toSide":"top"},
{"id":"da2fc4f2409d4434","fromNode":"f848b43274fcb59b","fromSide":"bottom","toNode":"6b94f426bec0518d","toSide":"top"}, {"id":"da2fc4f2409d4434","fromNode":"f848b43274fcb59b","fromSide":"bottom","toNode":"6b94f426bec0518d","toSide":"top"},
{"id":"3514ce6bf3a91d92","fromNode":"3e79a9f2644708b5","fromSide":"bottom","toNode":"0196141ff4288b26","toSide":"top"}, {"id":"3514ce6bf3a91d92","fromNode":"3e79a9f2644708b5","fromSide":"bottom","toNode":"0196141ff4288b26","toSide":"top"},
{"id":"6c8f88c449b3dfb0","fromNode":"3e79a9f2644708b5","fromSide":"bottom","toNode":"21f14a45f938153b","toSide":"top"}, {"id":"6c8f88c449b3dfb0","fromNode":"3e79a9f2644708b5","fromSide":"bottom","toNode":"21f14a45f938153b","toSide":"top"},
{"id":"8f098e34313079db","fromNode":"3e79a9f2644708b5","fromSide":"bottom","toNode":"1cbfc86bc270e4b7","toSide":"top"}, {"id":"8f098e34313079db","fromNode":"3e79a9f2644708b5","fromSide":"bottom","toNode":"1cbfc86bc270e4b7","toSide":"top"},
{"id":"3688e3ecf3d65c2e","fromNode":"3e79a9f2644708b5","fromSide":"bottom","toNode":"9031059888e87fd2","toSide":"top"}, {"id":"3688e3ecf3d65c2e","fromNode":"3e79a9f2644708b5","fromSide":"bottom","toNode":"9031059888e87fd2","toSide":"top"},
{"id":"e755c1693a630d84","fromNode":"3e79a9f2644708b5","fromSide":"bottom","toNode":"6b94f426bec0518d","toSide":"top"}, {"id":"e755c1693a630d84","fromNode":"3e79a9f2644708b5","fromSide":"bottom","toNode":"6b94f426bec0518d","toSide":"top"},
{"id":"6d605db470858423","fromNode":"0196141ff4288b26","fromSide":"bottom","toNode":"aa754eec2e32009a","toSide":"top"}, {"id":"6d605db470858423","fromNode":"0196141ff4288b26","fromSide":"bottom","toNode":"aa754eec2e32009a","toSide":"top"},
{"id":"19bc3af06c0ee01e","fromNode":"21f14a45f938153b","fromSide":"bottom","toNode":"aa754eec2e32009a","toSide":"top"}, {"id":"19bc3af06c0ee01e","fromNode":"21f14a45f938153b","fromSide":"bottom","toNode":"aa754eec2e32009a","toSide":"top"},
{"id":"212566b2a3648a29","fromNode":"1cbfc86bc270e4b7","fromSide":"bottom","toNode":"aa754eec2e32009a","toSide":"top"}, {"id":"212566b2a3648a29","fromNode":"1cbfc86bc270e4b7","fromSide":"bottom","toNode":"aa754eec2e32009a","toSide":"top"},
{"id":"84408076278e5fd7","fromNode":"9031059888e87fd2","fromSide":"bottom","toNode":"aa754eec2e32009a","toSide":"top"}, {"id":"84408076278e5fd7","fromNode":"9031059888e87fd2","fromSide":"bottom","toNode":"aa754eec2e32009a","toSide":"top"},
{"id":"f5bd632c66dd0a12","fromNode":"6b94f426bec0518d","fromSide":"bottom","toNode":"aa754eec2e32009a","toSide":"top"}, {"id":"f5bd632c66dd0a12","fromNode":"6b94f426bec0518d","fromSide":"bottom","toNode":"aa754eec2e32009a","toSide":"top"},
{"id":"3c991428822f7b13","fromNode":"aa754eec2e32009a","fromSide":"right","toNode":"eb5c7fcba435d5b3","toSide":"left"}, {"id":"3c991428822f7b13","fromNode":"aa754eec2e32009a","fromSide":"right","toNode":"eb5c7fcba435d5b3","toSide":"left"},
{"id":"ec8c3cac6f8bafe4","fromNode":"eb5c7fcba435d5b3","fromSide":"top","toNode":"0196141ff4288b26","toSide":"bottom"}, {"id":"ec8c3cac6f8bafe4","fromNode":"eb5c7fcba435d5b3","fromSide":"top","toNode":"0196141ff4288b26","toSide":"bottom"},
{"id":"22f6b8593f8efeb2","fromNode":"eb5c7fcba435d5b3","fromSide":"top","toNode":"21f14a45f938153b","toSide":"bottom"}, {"id":"22f6b8593f8efeb2","fromNode":"eb5c7fcba435d5b3","fromSide":"top","toNode":"21f14a45f938153b","toSide":"bottom"},
{"id":"23e09f848ef4230b","fromNode":"eb5c7fcba435d5b3","fromSide":"top","toNode":"1cbfc86bc270e4b7","toSide":"bottom"}, {"id":"23e09f848ef4230b","fromNode":"eb5c7fcba435d5b3","fromSide":"top","toNode":"1cbfc86bc270e4b7","toSide":"bottom"},
{"id":"a1067b326a889f90","fromNode":"eb5c7fcba435d5b3","fromSide":"top","toNode":"9031059888e87fd2","toSide":"bottom"}, {"id":"a1067b326a889f90","fromNode":"eb5c7fcba435d5b3","fromSide":"top","toNode":"9031059888e87fd2","toSide":"bottom"},
{"id":"2fa114fbbdbdd63a","fromNode":"eb5c7fcba435d5b3","fromSide":"top","toNode":"6b94f426bec0518d","toSide":"bottom"}, {"id":"2fa114fbbdbdd63a","fromNode":"eb5c7fcba435d5b3","fromSide":"top","toNode":"6b94f426bec0518d","toSide":"bottom"},
{"id":"29808fd2d4d62166","fromNode":"00e0a1844c5114ee","fromSide":"top","toNode":"3e79a9f2644708b5","toSide":"bottom"}, {"id":"29808fd2d4d62166","fromNode":"00e0a1844c5114ee","fromSide":"top","toNode":"3e79a9f2644708b5","toSide":"bottom"},
{"id":"3031b8c0b36366a7","fromNode":"f848b43274fcb59b","fromSide":"right","toNode":"3e79a9f2644708b5","toSide":"left"}, {"id":"3031b8c0b36366a7","fromNode":"f848b43274fcb59b","fromSide":"right","toNode":"3e79a9f2644708b5","toSide":"left"},
{"id":"d313ffd8360f70fc","fromNode":"5f334013938f0378","fromSide":"bottom","toNode":"f848b43274fcb59b","toSide":"top"} {"id":"d313ffd8360f70fc","fromNode":"5f334013938f0378","fromSide":"bottom","toNode":"f848b43274fcb59b","toSide":"top"}
] ]
} }

View File

@ -1,9 +1,9 @@
uk: uk:
- ntfy (no ervice):8080 - ntfy (no ervice):8080
- uptimekuma (no service):3001 - uptimekuma (no service):3001
- gitea:3000 - gitea:3000
lb: lb:
- dnsmasq - dnsmasq
- haproxy - haproxy

View File

@ -1,148 +1,148 @@
En el navegador web ir a http://192.168.1.254/ En el navegador web ir a http://192.168.1.254/
**Red** > **Red Doméstica** > **Estática DHCP Entrada** **Red** > **Red Doméstica** > **Estática DHCP Entrada**
Pegar la dirección MAC y la IP a asignar Pegar la dirección MAC y la IP a asignar
Ejemplo: Ejemplo:
Dirección MAC: 80:af:ca:76:e3:de Dirección MAC: 80:af:ca:76:e3:de
Dirección IP: 192.168.1.71 Dirección IP: 192.168.1.71
La IP y la Dirección MAC del dispositivo la puedes ver en: La IP y la Dirección MAC del dispositivo la puedes ver en:
**Estado** > **Dispositivos Conectados** **Estado** > **Dispositivos Conectados**
<table> <table>
<tr> <tr>
<td>Categoria</td> <td>Categoria</td>
<td>Valores </td> <td>Valores </td>
</tr> </tr>
<tr> <tr>
<td>Activar</td> <td>Activar</td>
<td>True </td> <td>True </td>
</tr> </tr>
<tr> <tr>
<td>Protocolo</td> <td>Protocolo</td>
<td>Servidor Wireguard </td> <td>Servidor Wireguard </td>
</tr> </tr>
<tr> <tr>
<td>Acceso de cliente</td> <td>Acceso de cliente</td>
<td>Internet y Red Local </td> <td>Internet y Red Local </td>
</tr> </tr>
<tr> <tr>
<td>Host de punto final</td> <td>Host de punto final</td>
<td>192.168.1.64 </td> <td>192.168.1.64 </td>
</tr> </tr>
<tr> <tr>
<td>Puerto de escucha</td> <td>Puerto de escucha</td>
<td>51820 </td> <td>51820 </td>
</tr> </tr>
<tr> <tr>
<td>Dirección IP</td> <td>Dirección IP</td>
<td>10.10.10.1 </td> <td>10.10.10.1 </td>
</tr> </tr>
<tr> <tr>
<td>MTU</td> <td>MTU</td>
<td>1420 </td> <td>1420 </td>
</tr> </tr>
</table> </table>
VPN: VPN:
van_laptop van_laptop
dix_laptop dix_laptop
dix_tablet dix_tablet
dix_work_pc dix_work_pc
yarelis_cub_cell yarelis_cub_cell
Puertos: Puertos:
<table> <table>
<tr> <tr>
<td>Nombre</td> <td>Nombre</td>
<td>Protocolo</td> <td>Protocolo</td>
<td>Interfaz</td> <td>Interfaz</td>
<td>Puerto externo</td> <td>Puerto externo</td>
<td>Dirección IP interna</td> <td>Dirección IP interna</td>
<td>Puerto interno </td> <td>Puerto interno </td>
</tr> </tr>
<tr> <tr>
<td>lb</td> <td>lb</td>
<td>TCP</td> <td>TCP</td>
<td>WAN</td> <td>WAN</td>
<td>80</td> <td>80</td>
<td>192.168.10.234</td> <td>192.168.10.234</td>
<td>80 </td> <td>80 </td>
</tr> </tr>
<tr> <tr>
<td>gitea</td> <td>gitea</td>
<td>TCP</td> <td>TCP</td>
<td>WAN</td> <td>WAN</td>
<td>3000</td> <td>3000</td>
<td>192.168.10.234</td> <td>192.168.10.234</td>
<td>3000 </td> <td>3000 </td>
</tr> </tr>
</table> </table>
TELMEX Port Forwarding TELMEX Port Forwarding
<table> <table>
<tr> <tr>
<td>Nombre de la Aplicación</td> <td>Nombre de la Aplicación</td>
<td>Puerto WAN</td> <td>Puerto WAN</td>
<td>Puerto LAN</td> <td>Puerto LAN</td>
<td>Nombre del Dispositivo</td> <td>Nombre del Dispositivo</td>
<td>Cliente Interno</td> <td>Cliente Interno</td>
<td>Protocolo</td> <td>Protocolo</td>
<td>Descripción </td> <td>Descripción </td>
</tr> </tr>
<tr> <tr>
<td>Configuración de Usuario</td> <td>Configuración de Usuario</td>
<td>51820~51820</td> <td>51820~51820</td>
<td>51820~51820</td> <td>51820~51820</td>
<td>WR3000</td> <td>WR3000</td>
<td>192.168.1.64</td> <td>192.168.1.64</td>
<td>UDP</td> <td>UDP</td>
<td>vpn </td> <td>vpn </td>
</tr> </tr>
<tr> <tr>
<td>Configuración de Usuario</td> <td>Configuración de Usuario</td>
<td>80~80</td> <td>80~80</td>
<td>80~80</td> <td>80~80</td>
<td>WR3000</td> <td>WR3000</td>
<td>192.168.1.64</td> <td>192.168.1.64</td>
<td>TCP</td> <td>TCP</td>
<td>web </td> <td>web </td>
</tr> </tr>
<tr> <tr>
<td>Configuración de Usuario</td> <td>Configuración de Usuario</td>
<td>3000~3000</td> <td>3000~3000</td>
<td>3000~3000</td> <td>3000~3000</td>
<td>WR3000</td> <td>WR3000</td>
<td>192.168.1.64</td> <td>192.168.1.64</td>
<td>TCP</td> <td>TCP</td>
<td>gitea server </td> <td>gitea server </td>
</tr> </tr>
</table> </table>
En cudy el activador de puerto vpn hago esto: En cudy el activador de puerto vpn hago esto:
Nombre: VPN Nombre: VPN
Protocolo de activación: TCP+UDP Protocolo de activación: TCP+UDP
Puerto de Activación: 51820 Puerto de Activación: 51820
Protocolo Externo: Protocolo Externo:
VPN Clientes: VPN Clientes:
| IP Cliente | Usuario | | IP Cliente | Usuario |
| ---------- | --------------- | | ---------- | --------------- |
| 10.10.10.2 | dix-lenovo | | 10.10.10.2 | dix-lenovo |
| 10.10.10.3 | router_zandunga | | 10.10.10.3 | router_zandunga |

View File

@ -1,227 +1,231 @@
¡Claro, David! Aquí tienes una guía clara para instalar **n8n** en **WSL (Windows Subsystem for Linux)**. Usaremos Node.js (v18 LTS o superior) y npm para instalarlo directamente. ¡Claro, David! Aquí tienes una guía clara para instalar **n8n** en **WSL (Windows Subsystem for Linux)**. Usaremos Node.js (v18 LTS o superior) y npm para instalarlo directamente.
--- ---
### ✅ **Requisitos previos** ### ✅ **Requisitos previos**
Asegúrate de tener lo siguiente: Asegúrate de tener lo siguiente:
1. **WSL** ya instalado (preferentemente Ubuntu). 1. **WSL** ya instalado (preferentemente Ubuntu).
2. **Node.js** (v18 o superior). 2. **Node.js** (v18 o superior).
3. **npm** (gestor de paquetes de Node.js). 3. **npm** (gestor de paquetes de Node.js).
--- ---
### 🔧 **Pasos para instalar n8n en WSL** ### 🔧 **Pasos para instalar n8n en WSL**
#### 1. Actualiza tu sistema #### 1. Actualiza tu sistema
```bash ```bash
sudo apt update && sudo apt upgrade -y sudo apt update && sudo apt upgrade -y
``` ```
#### 2. Instala Node.js (vía nvm recomendado) #### 2. Instala Node.js (vía nvm recomendado)
```bash ```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
source ~/.bashrc source ~/.bashrc
nvm install --lts nvm install --lts
nvm use --lts nvm use --lts
``` ```
==Para ubuntu server la instalación de Node.js== ==Para ubuntu server la instalación de Node.js==
```bash ```bash
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs sudo apt install -y nodejs
``` ```
Verifica que estén bien instalados: Verifica que estén bien instalados:
```bash ```bash
node -v node -v
npm -v npm -v
``` ```
#### 3. Instala n8n globalmente #### 3. Instala n8n globalmente
```bash ```bash
npm install -g n8n #sudo npm install -g n8n
``` mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
Esto instalará el CLI de n8n de forma global. export PATH=$PATH:~/.npm-global/bin
#### 4. Ejecuta n8n ```
```bash Esto instalará el CLI de n8n de forma global.
n8n
``` #### 4. Ejecuta n8n
Verás un mensaje como: ```bash
n8n
``` ```
n8n ready on 127.0.0.1, port 5678
``` Verás un mensaje como:
Desde Windows, abre tu navegador y ve a: ```
📍 `http://localhost:5678` n8n ready on 127.0.0.1, port 5678
```
---
Desde Windows, abre tu navegador y ve a:
### 🛡️ Opcional: Configurar credenciales y seguridad 📍 `http://localhost:5678`
Por defecto, n8n se instala sin autenticación. Para producción o pruebas seguras, puedes establecer una contraseña así: ---
```bash ### 🛡️ Opcional: Configurar credenciales y seguridad
export N8N_BASIC_AUTH_ACTIVE=true
export N8N_BASIC_AUTH_USER=admin Por defecto, n8n se instala sin autenticación. Para producción o pruebas seguras, puedes establecer una contraseña así:
export N8N_BASIC_AUTH_PASSWORD=mi_contraseña_segura
n8n ```bash
``` export N8N_BASIC_AUTH_ACTIVE=true
export N8N_BASIC_AUTH_USER=admin
--- export N8N_BASIC_AUTH_PASSWORD=mi_contraseña_segura
n8n
### 🛠️ ¿Quieres levantarlo en segundo plano? ```
Puedes usar `tmux`, `screen` o `pm2`: ---
Ejemplo con `pm2`: ### 🛠️ ¿Quieres levantarlo en segundo plano?
```bash Puedes usar `tmux`, `screen` o `pm2`:
npm install -g pm2
pm2 start n8n Ejemplo con `pm2`:
pm2 startup
pm2 save ```bash
``` npm install -g pm2
pm2 start n8n
--- pm2 startup
pm2 save
¿Quieres que n8n arranque automáticamente al iniciar WSL o levantarlo con Docker también? Puedo ayudarte con eso también si gustas. ```
---
# ejecutar en segundo plano n8n en wsl:
¿Quieres que n8n arranque automáticamente al iniciar WSL o levantarlo con Docker también? Puedo ayudarte con eso también si gustas.
Sí, el enfoque que muestras con `systemd` para levantar un servidor de Minecraft **es perfectamente replicable** para **n8n**, con unas pequeñas adaptaciones.
### 🚫 PERO HAY UN DETALLE IMPORTANTE: # ejecutar en segundo plano n8n en wsl:
WSL **no soporta `systemd` por defecto** en versiones antiguas. Sin embargo, **WSL2 en Windows 11** ya permite activarlo. Sí, el enfoque que muestras con `systemd` para levantar un servidor de Minecraft **es perfectamente replicable** para **n8n**, con unas pequeñas adaptaciones.
--- ### 🚫 PERO HAY UN DETALLE IMPORTANTE:
## ✅ OPCIÓN A: Si tienes WSL2 con systemd habilitado WSL **no soporta `systemd` por defecto** en versiones antiguas. Sin embargo, **WSL2 en Windows 11** ya permite activarlo.
### 1. Verifica que `systemd` esté habilitado ---
En `/etc/wsl.conf`, debe decir: ## ✅ OPCIÓN A: Si tienes WSL2 con systemd habilitado
```ini ### 1. Verifica que `systemd` esté habilitado
[boot]
systemd=true En `/etc/wsl.conf`, debe decir:
```
```ini
Luego reinicia WSL: [boot]
systemd=true
```bash ```
wsl --shutdown
``` Luego reinicia WSL:
--- ```bash
wsl --shutdown
### 2. Crear servicio systemd para n8n ```
```bash ---
sudo nano /etc/systemd/system/n8n.service
``` ### 2. Crear servicio systemd para n8n
Contenido del archivo (ajusta tu nombre de usuario y la ruta si es necesario): ```bash
sudo nano /etc/systemd/system/n8n.service
```ini ```
[Unit]
Description=n8n workflow automation Contenido del archivo (ajusta tu nombre de usuario y la ruta si es necesario):
After=network.target
```ini
[Service] [Unit]
User=web # <- tu usuario de WSL Description=n8n workflow automation
Environment=PATH=/home/web/.nvm/versions/node/v18.XX.X/bin:/usr/bin:/bin After=network.target
Environment=NODE_ENV=production
WorkingDirectory=/home/web [Service]
ExecStart=/home/web/.nvm/versions/node/v18.XX.X/bin/n8n User=web # <- tu usuario de WSL
Restart=on-failure Environment=PATH=/home/web/.nvm/versions/node/v18.XX.X/bin:/usr/bin:/bin
Environment=NODE_ENV=production
[Install] WorkingDirectory=/home/web
WantedBy=default.target ExecStart=/home/web/.nvm/versions/node/v18.XX.X/bin/n8n
``` Restart=on-failure
📌 Reemplaza `v18.XX.X` con la versión exacta que tienes (`node -v` y `which n8n` te ayudan a saberlo). [Install]
WantedBy=default.target
--- ```
==Para ubuntu server== 📌 Reemplaza `v18.XX.X` con la versión exacta que tienes (`node -v` y `which n8n` te ayudan a saberlo).
```bash
ExecStart=/usr/bin/n8n ---
```
### 3. Habilita y levanta el servicio ==Para ubuntu server==
```bash
```bash ExecStart=/usr/bin/n8n
sudo systemctl daemon-reload ```
sudo systemctl enable n8n ### 3. Habilita y levanta el servicio
sudo systemctl start n8n
``` ```bash
sudo systemctl daemon-reload
Verifica que esté funcionando: sudo systemctl enable n8n
sudo systemctl start n8n
```bash ```
systemctl status n8n
``` Verifica que esté funcionando:
```bash
==Para ubuntu server== systemctl status n8n
```
Para que puedas acceder a `n8n` desde otro equipo (navegador o API):
- Asegúrate de configurar el host: ==Para ubuntu server==
```bash
export N8N_HOST=0.0.0.0 Para que puedas acceder a `n8n` desde otro equipo (navegador o API):
```
- Asegúrate de configurar el host:
- O en el archivo de servicio: ```bash
```bash export N8N_HOST=0.0.0.0
Environment=N8N_HOST=0.0.0.0 ```
```
- O en el archivo de servicio:
- Y abre el puerto 5678: ```bash
Environment=N8N_HOST=0.0.0.0
```bash ```
sudo ufw allow 5678/tcp
``` - Y abre el puerto 5678:
--- ```bash
sudo ufw allow 5678/tcp
## 🟡 OPCIÓN B: Si NO tienes systemd activado (por ejemplo en Windows 10 o WSL1) ```
Usa mejor **PM2** para ejecutar en segundo plano: ---
```bash ## 🟡 OPCIÓN B: Si NO tienes systemd activado (por ejemplo en Windows 10 o WSL1)
npm install -g pm2
pm2 start n8n Usa mejor **PM2** para ejecutar en segundo plano:
pm2 startup
pm2 save ```bash
``` npm install -g pm2
pm2 start n8n
Con eso n8n se ejecutará como demonio cada vez que abras WSL. pm2 startup
pm2 save
--- ```
## 🔄 ¿Cómo reiniciar n8n con systemd? Con eso n8n se ejecutará como demonio cada vez que abras WSL.
```bash ---
sudo systemctl restart n8n
``` ## 🔄 ¿Cómo reiniciar n8n con systemd?
¿Quieres que también tenga autenticación, log de errores o conecte a PostgreSQL? Puedo ayudarte a extender el servicio según tus necesidades. ```bash
sudo systemctl restart n8n
¿Te gustaría saber cómo revisar logs o cómo incluir variables de entorno como el webhook URL base? ```
¿Quieres que también tenga autenticación, log de errores o conecte a PostgreSQL? Puedo ayudarte a extender el servicio según tus necesidades.
¿Te gustaría saber cómo revisar logs o cómo incluir variables de entorno como el webhook URL base?

View File

@ -1,72 +1,72 @@
# Soluciones # Soluciones
Modal Modal
# Navbar # Navbar
- [x] Cambiar tipo de letra (Calibri ó Aptos) - [x] Cambiar tipo de letra (Calibri ó Aptos)
- [x] Cambiar el tamaño de fuente - [x] Cambiar el tamaño de fuente
- [ ] Cambiar el estilo de Contacto - [ ] Cambiar el estilo de Contacto
- [x] Footer y Navbar hacer letra más grande - [x] Footer y Navbar hacer letra más grande
https://www.buk.mx/ https://www.buk.mx/
trabajar en sección de trabajar en sección de
- Publicaciones: - Publicaciones:
- [ ] Añadir - [ ] Añadir
- [ ] Modificar - [ ] Modificar
- [ ] Eliminar - [ ] Eliminar
- Administrador - Administrador
- [ ] Crear usuario - [ ] Crear usuario
- [ ] Eliminar usuario - [ ] Eliminar usuario
https://codepen.io/david-felipe-huertas/pen/PoNqJgM https://codepen.io/david-felipe-huertas/pen/PoNqJgM
uw | main uw | main
80 x 90 80 x 90
Soluciones Soluciones
65 - 70 Letra más grande 65 - 70 Letra más grande
- checar relación imagen - checar relación imagen
QR que mande a la página web QR que mande a la página web
![[Pasted image 20250401111621.png]] ![[Pasted image 20250401111621.png]]
Readme file forma Readme file forma
# Modificaciones en producción # Modificaciones en producción
1. Debes de asegurar que el sitio tenga https. 1. Debes de asegurar que el sitio tenga https.
2. Cambiar la configuración en el archivo main.py: 2. Cambiar la configuración en el archivo main.py:
1. 1.
2. response.set_cookie('access_token_cookie', access_token, httponly=True, **secure=True**, samesite='Lax') 2. response.set_cookie('access_token_cookie', access_token, httponly=True, **secure=True**, samesite='Lax')
soluciones > fondo blanco. soluciones > fondo blanco.
Letra Open-Sans Letra Open-Sans
gradient gradient
pinkelephant-latam.com pinkelephant-latam.com
https://pinkelephant-latam.com/ https://pinkelephant-latam.com/
### Montserrat, Source Sans Pro, sans-serif ### Montserrat, Source Sans Pro, sans-serif
-> Gráficas de algo -> Gráficas de algo
- logo vueltas en navbar - logo vueltas en navbar
- logo en horizontal. - logo en horizontal.
- ojo en contraseña - ojo en contraseña
- re checar arroba - re checar arroba

View File

@ -1,95 +1,95 @@
En **Ubuntu Server**, puedes crear un nuevo usuario con privilegios de administrador siguiendo estos pasos: En **Ubuntu Server**, puedes crear un nuevo usuario con privilegios de administrador siguiendo estos pasos:
### 📌 1. Crear el usuario ### 📌 1. Crear el usuario
Ejecuta el siguiente comando, reemplazando `nuevo_usuario` con el nombre que quieras: Ejecuta el siguiente comando, reemplazando `nuevo_usuario` con el nombre que quieras:
```bash ```bash
sudo adduser nuevo_usuario sudo adduser nuevo_usuario
``` ```
Te pedirá que configures una contraseña y opcionalmente algunos datos adicionales. Te pedirá que configures una contraseña y opcionalmente algunos datos adicionales.
--- ---
### 📌 2. Otorgarle permisos de administrador (sudo) ### 📌 2. Otorgarle permisos de administrador (sudo)
Agrega el usuario al grupo `sudo`: Agrega el usuario al grupo `sudo`:
```bash ```bash
sudo usermod -aG sudo nuevo_usuario sudo usermod -aG sudo nuevo_usuario
``` ```
Esto le permite ejecutar comandos administrativos con `sudo`. Esto le permite ejecutar comandos administrativos con `sudo`.
--- ---
### 📌 3. Verificar que tiene privilegios ### 📌 3. Verificar que tiene privilegios
Inicia sesión con el nuevo usuario: Inicia sesión con el nuevo usuario:
```bash ```bash
su - nuevo_usuario su - nuevo_usuario
``` ```
Luego, prueba ejecutar un comando con permisos de administrador: Luego, prueba ejecutar un comando con permisos de administrador:
```bash ```bash
sudo whoami sudo whoami
``` ```
Si devuelve **"root"**, el usuario tiene permisos de administrador correctamente. 🚀 Si devuelve **"root"**, el usuario tiene permisos de administrador correctamente. 🚀
# Eliminar usuario # Eliminar usuario
Para eliminar un usuario en **Ubuntu (o cualquier Linux basado en Debian)**, puedes usar el comando `deluser` o `userdel`. Para eliminar un usuario en **Ubuntu (o cualquier Linux basado en Debian)**, puedes usar el comando `deluser` o `userdel`.
--- ---
### ✅ **1. Eliminar el usuario pero conservar su carpeta personal** ### ✅ **1. Eliminar el usuario pero conservar su carpeta personal**
```bash ```bash
sudo deluser usuario sudo deluser usuario
``` ```
Esto **elimina al usuario** pero deja su **directorio `/home/usuario/`** intacto. Esto **elimina al usuario** pero deja su **directorio `/home/usuario/`** intacto.
--- ---
### ✅ **2. Eliminar el usuario y su carpeta personal** ### ✅ **2. Eliminar el usuario y su carpeta personal**
```bash ```bash
sudo deluser --remove-home usuario sudo deluser --remove-home usuario
``` ```
Esto **elimina al usuario** y también **su directorio `/home/usuario/`**. Esto **elimina al usuario** y también **su directorio `/home/usuario/`**.
--- ---
### ✅ **3. Forzar eliminación con `userdel` (método alternativo)** ### ✅ **3. Forzar eliminación con `userdel` (método alternativo)**
Si `deluser` no está disponible, usa: Si `deluser` no está disponible, usa:
```bash ```bash
sudo userdel -r usuario sudo userdel -r usuario
``` ```
🔹 **`-r`** → Elimina la carpeta `/home/usuario/`. 🔹 **`-r`** → Elimina la carpeta `/home/usuario/`.
⚠️ **Cuidado:** Esto borra todos los archivos del usuario. ⚠️ **Cuidado:** Esto borra todos los archivos del usuario.
--- ---
### ✅ **4. Verificar que el usuario fue eliminado** ### ✅ **4. Verificar que el usuario fue eliminado**
Después de eliminarlo, verifica que ya no exista: Después de eliminarlo, verifica que ya no exista:
```bash ```bash
cat /etc/passwd | grep usuario cat /etc/passwd | grep usuario
``` ```
Si no muestra nada, significa que fue eliminado correctamente. Si no muestra nada, significa que fue eliminado correctamente.
--- ---
🚀 **¿Necesitas eliminar usuarios en masa o algo más específico?** Dime y te ayudo. 😃🔥 🚀 **¿Necesitas eliminar usuarios en masa o algo más específico?** Dime y te ayudo. 😃🔥

View File

@ -1,8 +1,8 @@
sudo apt install xrdp -y sudo apt install xrdp -y
sudo systemctl status xrdp sudo systemctl status xrdp
sudo adduser xrdp ssl-cert sudo adduser xrdp ssl-cert
sudo systemctl restart xrdp sudo systemctl restart xrdp
sudo ufw allow from 192.168.10.0/24 to any port 3389 sudo ufw allow from 192.168.10.0/24 to any port 3389
conectarse a través de remote desktop conectarse a través de remote desktop
ingresar la ip del equipop remoto en la ui de windows remote desktop ingresar la ip del equipop remoto en la ui de windows remote desktop

View File

@ -1,99 +1,99 @@
Sí, puedes usar **Let's Encrypt** para generar certificados SSL gratuitos y configurarlos en **HAProxy** para tus distintos sitios. Aquí tienes un resumen de cómo hacerlo: Sí, puedes usar **Let's Encrypt** para generar certificados SSL gratuitos y configurarlos en **HAProxy** para tus distintos sitios. Aquí tienes un resumen de cómo hacerlo:
--- ---
### 1⃣ **Instalar Certbot en tu Servidor** ### 1⃣ **Instalar Certbot en tu Servidor**
Certbot es la herramienta oficial de Let's Encrypt para generar certificados. Certbot es la herramienta oficial de Let's Encrypt para generar certificados.
```bash ```bash
sudo apt update && sudo apt upgrade -y sudo apt update && sudo apt upgrade -y
sudo apt install certbot -y sudo apt install certbot -y
``` ```
Si HAProxy está en la misma máquina donde se servirán los sitios, puedes usar **Certbot en modo standalone**. Si HAProxy está en la misma máquina donde se servirán los sitios, puedes usar **Certbot en modo standalone**.
--- ---
### 2⃣ **Generar Certificados para cada Dominio** ### 2⃣ **Generar Certificados para cada Dominio**
Ejecuta el siguiente comando para generar un certificado para tu dominio: Ejecuta el siguiente comando para generar un certificado para tu dominio:
```bash ```bash
sudo certbot certonly --standalone -d ejemplo.com -d www.ejemplo.com sudo certbot certonly --standalone -d ejemplo.com -d www.ejemplo.com
# Ejemplo: # Ejemplo:
sudo certbot certonly --standalone -d ai-reports.1.temporal.work -d www.ai-reports.1.temporal.work sudo certbot certonly --standalone -d ai-reports.1.temporal.work -d www.ai-reports.1.temporal.work
``` ```
Si tienes varios dominios en tu HAProxy, repite el comando para cada uno. Si tienes varios dominios en tu HAProxy, repite el comando para cada uno.
Esto generará los certificados en: Esto generará los certificados en:
``` ```
/etc/letsencrypt/live/ejemplo.com/fullchain.pem /etc/letsencrypt/live/ejemplo.com/fullchain.pem
/etc/letsencrypt/live/ejemplo.com/privkey.pem /etc/letsencrypt/live/ejemplo.com/privkey.pem
``` ```
--- ---
### 3⃣ **Combinar los Certificados para HAProxy** ### 3⃣ **Combinar los Certificados para HAProxy**
HAProxy requiere que el certificado y la clave privada estén en un solo archivo. Usa este comando para combinarlos: HAProxy requiere que el certificado y la clave privada estén en un solo archivo. Usa este comando para combinarlos:
```bash ```bash
cat /etc/letsencrypt/live/ejemplo.com/fullchain.pem \ cat /etc/letsencrypt/live/ejemplo.com/fullchain.pem \
/etc/letsencrypt/live/ejemplo.com/privkey.pem > \ /etc/letsencrypt/live/ejemplo.com/privkey.pem > \
/etc/haproxy/certs/ejemplo.com.pem /etc/haproxy/certs/ejemplo.com.pem
``` ```
Repite esto para cada dominio y asegúrate de que HAProxy pueda leer los archivos: Repite esto para cada dominio y asegúrate de que HAProxy pueda leer los archivos:
```bash ```bash
sudo chmod 600 /etc/haproxy/certs/*.pem sudo chmod 600 /etc/haproxy/certs/*.pem
``` ```
--- ---
### 4⃣ **Configurar HAProxy para HTTPS** ### 4⃣ **Configurar HAProxy para HTTPS**
Edita el archivo de configuración de HAProxy (generalmente en `/etc/haproxy/haproxy.cfg`) y agrega la configuración SSL para cada dominio: Edita el archivo de configuración de HAProxy (generalmente en `/etc/haproxy/haproxy.cfg`) y agrega la configuración SSL para cada dominio:
```haproxy ```haproxy
frontend https_front frontend https_front
bind *:443 ssl crt /etc/haproxy/certs/ejemplo.com.pem crt /etc/haproxy/certs/ bind *:443 ssl crt /etc/haproxy/certs/ejemplo.com.pem crt /etc/haproxy/certs/
mode http mode http
use_backend backend_ejemplo if { hdr(host) -i ejemplo.com } use_backend backend_ejemplo if { hdr(host) -i ejemplo.com }
backend backend_ejemplo backend backend_ejemplo
server srv1 192.168.1.100:80 check server srv1 192.168.1.100:80 check
``` ```
Esto permite que HAProxy seleccione el certificado correcto según el **hostname** de la solicitud. Esto permite que HAProxy seleccione el certificado correcto según el **hostname** de la solicitud.
--- ---
### 5⃣ **Renovación Automática** ### 5⃣ **Renovación Automática**
Let's Encrypt requiere renovar los certificados cada 90 días. Configura una tarea en **cron** para renovar y actualizar los archivos automáticamente: Let's Encrypt requiere renovar los certificados cada 90 días. Configura una tarea en **cron** para renovar y actualizar los archivos automáticamente:
Edita el crontab: Edita el crontab:
```bash ```bash
sudo crontab -e sudo crontab -e
``` ```
Añade esta línea: Añade esta línea:
```bash ```bash
0 3 * * * certbot renew --quiet && systemctl reload haproxy 0 3 * * * certbot renew --quiet && systemctl reload haproxy
``` ```
Esto intentará renovar los certificados diariamente a las **3 AM** y recargará HAProxy si hay cambios. Esto intentará renovar los certificados diariamente a las **3 AM** y recargará HAProxy si hay cambios.
--- ---
### ✅ **Conclusión** ### ✅ **Conclusión**
Con esto, HAProxy gestionará múltiples sitios con SSL gratuito de Let's Encrypt. Cada dominio tendrá su propio certificado y la renovación será automática. 🚀 Con esto, HAProxy gestionará múltiples sitios con SSL gratuito de Let's Encrypt. Cada dominio tendrá su propio certificado y la renovación será automática. 🚀
Si necesitas ayuda con algún paso, dime cómo tienes configurado tu HAProxy y lo ajustamos. 😃 Si necesitas ayuda con algún paso, dime cómo tienes configurado tu HAProxy y lo ajustamos. 😃

View File

@ -1,38 +1,38 @@
El comando que has proporcionado realiza lo siguiente: El comando que has proporcionado realiza lo siguiente:
### **Explicación del comando:** ### **Explicación del comando:**
```bash ```bash
sudo apt install samba samba-common-bin -y sudo apt install samba samba-common-bin -y
``` ```
1. **`sudo`**: Ejecuta el comando con permisos de administrador (root), necesario para instalar software en sistemas basados en Debian/Ubuntu. 1. **`sudo`**: Ejecuta el comando con permisos de administrador (root), necesario para instalar software en sistemas basados en Debian/Ubuntu.
2. **`apt install`**: Usa el gestor de paquetes APT (Advanced Package Tool) para instalar software desde los repositorios configurados en el sistema. 2. **`apt install`**: Usa el gestor de paquetes APT (Advanced Package Tool) para instalar software desde los repositorios configurados en el sistema.
3. **`samba`**: Es el paquete principal de Samba, un software que permite compartir archivos e impresoras entre sistemas Linux/Unix y Windows mediante los protocolos SMB/CIFS. 3. **`samba`**: Es el paquete principal de Samba, un software que permite compartir archivos e impresoras entre sistemas Linux/Unix y Windows mediante los protocolos SMB/CIFS.
4. **`samba-common-bin`**: Este paquete incluye utilidades adicionales para Samba, como herramientas de configuración (`smbpasswd`, `testparm`, etc.) que son útiles para administrar el servidor Samba. 4. **`samba-common-bin`**: Este paquete incluye utilidades adicionales para Samba, como herramientas de configuración (`smbpasswd`, `testparm`, etc.) que son útiles para administrar el servidor Samba.
5. **`-y`**: Responde automáticamente "sí" (yes) a cualquier pregunta de confirmación durante la instalación, evitando interrupciones. 5. **`-y`**: Responde automáticamente "sí" (yes) a cualquier pregunta de confirmación durante la instalación, evitando interrupciones.
--- ---
### **¿Para qué sirve Samba?** ### **¿Para qué sirve Samba?**
- Permite compartir archivos y carpetas entre Linux y Windows en una red local. - Permite compartir archivos y carpetas entre Linux y Windows en una red local.
- Habilita la autenticación de usuarios (puede integrarse con usuarios del sistema o con un dominio Windows Active Directory). - Habilita la autenticación de usuarios (puede integrarse con usuarios del sistema o con un dominio Windows Active Directory).
- Es útil para crear servidores de archivos en entornos mixtos (Linux/Windows). - Es útil para crear servidores de archivos en entornos mixtos (Linux/Windows).
--- ---
### **Pasos posteriores típicos:** ### **Pasos posteriores típicos:**
1. **Configurar Samba**: Editar el archivo de configuración `/etc/samba/smb.conf` para definir los recursos compartidos. 1. **Configurar Samba**: Editar el archivo de configuración `/etc/samba/smb.conf` para definir los recursos compartidos.
2. **Reiniciar el servicio**: 2. **Reiniciar el servicio**:
```bash ```bash
sudo systemctl restart smbd sudo systemctl restart smbd
``` ```
3. **Añadir usuarios de Samba**: 3. **Añadir usuarios de Samba**:
```bash ```bash
sudo smbpasswd -a [usuario] sudo smbpasswd -a [usuario]
``` ```
Si necesitas ayuda con la configuración de Samba, ¡avísame! Si necesitas ayuda con la configuración de Samba, ¡avísame!

View File

@ -1,95 +1,95 @@
Sí, hay varias herramientas que pueden ayudarte a interpretar mejor el estado del sistema en consola con una visualización más clara y estructurada. Aquí te dejo algunas opciones: Sí, hay varias herramientas que pueden ayudarte a interpretar mejor el estado del sistema en consola con una visualización más clara y estructurada. Aquí te dejo algunas opciones:
### 1**htop** (Mejor visualización que `top`) ### 1**htop** (Mejor visualización que `top`)
- Es una alternativa mejorada a `top`, con una interfaz en colores y barras gráficas para CPU, memoria y swap. - Es una alternativa mejorada a `top`, con una interfaz en colores y barras gráficas para CPU, memoria y swap.
- Puedes desplazarte por los procesos, ordenarlos y matarlos fácilmente. - Puedes desplazarte por los procesos, ordenarlos y matarlos fácilmente.
- **Instalación**: - **Instalación**:
```bash ```bash
sudo apt install htop # Debian/Ubuntu sudo apt install htop # Debian/Ubuntu
sudo yum install htop # CentOS/RHEL sudo yum install htop # CentOS/RHEL
sudo pacman -S htop # Arch Linux sudo pacman -S htop # Arch Linux
``` ```
- **Uso**: - **Uso**:
```bash ```bash
htop htop
``` ```
### 2**glances** (Monitoreo de sistema en tiempo real) ### 2**glances** (Monitoreo de sistema en tiempo real)
- Proporciona información detallada de CPU, memoria, disco, red y procesos en una sola pantalla. - Proporciona información detallada de CPU, memoria, disco, red y procesos en una sola pantalla.
- Se adapta automáticamente al tamaño de la pantalla y tiene colores para facilitar la lectura. - Se adapta automáticamente al tamaño de la pantalla y tiene colores para facilitar la lectura.
- **Instalación**: - **Instalación**:
```bash ```bash
sudo apt install glances # Debian/Ubuntu sudo apt install glances # Debian/Ubuntu
pip install glances # Alternativa con Python pip install glances # Alternativa con Python
``` ```
- **Uso**: - **Uso**:
```bash ```bash
glances glances
``` ```
### 3**nmon** (Análisis detallado del rendimiento) ### 3**nmon** (Análisis detallado del rendimiento)
- Muestra CPU, memoria, disco, red y más en tiempo real con gráficos ASCII. - Muestra CPU, memoria, disco, red y más en tiempo real con gráficos ASCII.
- Ideal para diagnósticos de rendimiento. - Ideal para diagnósticos de rendimiento.
- **Instalación**: - **Instalación**:
```bash ```bash
sudo apt install nmon # Debian/Ubuntu sudo apt install nmon # Debian/Ubuntu
``` ```
- **Uso**: - **Uso**:
```bash ```bash
nmon nmon
``` ```
Luego presiona **c, m, d, n** para ver CPU, memoria, disco y red respectivamente. Luego presiona **c, m, d, n** para ver CPU, memoria, disco y red respectivamente.
### 4**btop** (Interfaz moderna y colorida) ### 4**btop** (Interfaz moderna y colorida)
- Es una evolución de `htop`, con una interfaz más visual y amigable. - Es una evolución de `htop`, con una interfaz más visual y amigable.
- Muestra gráficos en tiempo real de CPU, RAM, disco y red. - Muestra gráficos en tiempo real de CPU, RAM, disco y red.
- **Instalación**: - **Instalación**:
```bash ```bash
sudo apt install btop # Debian/Ubuntu sudo apt install btop # Debian/Ubuntu
``` ```
- **Uso**: - **Uso**:
```bash ```bash
btop btop
``` ```
### ¿Cuál elegir? ### ¿Cuál elegir?
- **Para algo simple y rápido:** `htop` - **Para algo simple y rápido:** `htop`
- **Para información detallada en una pantalla:** `glances` - **Para información detallada en una pantalla:** `glances`
- **Para análisis de rendimiento:** `nmon` - **Para análisis de rendimiento:** `nmon`
- **Para una interfaz moderna y visualmente atractiva:** `btop` - **Para una interfaz moderna y visualmente atractiva:** `btop`
¿Quieres que te ayude con la configuración de alguna de ellas? 😊 ¿Quieres que te ayude con la configuración de alguna de ellas? 😊

View File

@ -1,236 +1,236 @@
1.- Instalar `rclone` en el servidor (si el servidor no tiene interfaz gráfica también instalalo en tu PC o laptop ) 1.- Instalar `rclone` en el servidor (si el servidor no tiene interfaz gráfica también instalalo en tu PC o laptop )
```bash ```bash
sudo apt install rclone sudo apt install rclone
``` ```
2.- Para poder usar la herramienta y mandar archivos al servidor debemos hacer la configuración inicial mediante el comando: 2.- Para poder usar la herramienta y mandar archivos al servidor debemos hacer la configuración inicial mediante el comando:
```bash ```bash
rclone config rclone config
``` ```
Primero debemos crear un repositorio remoto, para ello la herramienta nos hará una serie de preguntas y en algunos casos nos dará opciones, en la consola deberás ingresar cada una de las opciones seguida de la tecla enter: Primero debemos crear un repositorio remoto, para ello la herramienta nos hará una serie de preguntas y en algunos casos nos dará opciones, en la consola deberás ingresar cada una de las opciones seguida de la tecla enter:
2.1.- La primera vez debemos crear nuestro primer remoto, así que ingresa la letra **n** y **enter**: 2.1.- La primera vez debemos crear nuestro primer remoto, así que ingresa la letra **n** y **enter**:
```bash ```bash
No remotes found, make a new one? No remotes found, make a new one?
n) New remote n) New remote
s) Set configuration password s) Set configuration password
q) Quit config q) Quit config
n/s/q> n n/s/q> n
``` ```
2.2.- Nombre de nuevo remoto (no dejes espacios, mejor usa guion bajo): 2.2.- Nombre de nuevo remoto (no dejes espacios, mejor usa guion bajo):
```bash ```bash
Enter name for new remote. Enter name for new remote.
name> db_backups name> db_backups
``` ```
2.3.- Selección de la opción 18, es la opción de Google Drive 2.3.- Selección de la opción 18, es la opción de Google Drive
```bash ```bash
Option Storage. Option Storage.
Type of storage to configure. Type of storage to configure.
Choose a number from below, or type in your own value. Choose a number from below, or type in your own value.
18 / Google Drive 18 / Google Drive
\ (drive) \ (drive)
Storage> 18 Storage> 18
``` ```
2.4.- Te pedirá tu id de cliente de Google pero si no lo tienes solo da enter: 2.4.- Te pedirá tu id de cliente de Google pero si no lo tienes solo da enter:
```bash ```bash
Option client_id. Option client_id.
Google Application Client Id Google Application Client Id
Setting your own is recommended. Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own. See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance. If you leave this blank, it will use an internal key which is low performance.
Enter a value. Press Enter to leave empty. Enter a value. Press Enter to leave empty.
client_id> client_id>
``` ```
2.5.- Solicitará tu clave de OAuth pero lo puedes dejar vacío, solo da enter: 2.5.- Solicitará tu clave de OAuth pero lo puedes dejar vacío, solo da enter:
```bash ```bash
Option client_secret. Option client_secret.
OAuth Client Secret. OAuth Client Secret.
Leave blank normally. Leave blank normally.
Enter a value. Press Enter to leave empty. Enter a value. Press Enter to leave empty.
client_secret> client_secret>
``` ```
2.6.- Te pedirá el tipo de acceso que le darás a Drive, para esta caso yo elegiré la 1 que es acceso total a archivos. 2.6.- Te pedirá el tipo de acceso que le darás a Drive, para esta caso yo elegiré la 1 que es acceso total a archivos.
```bash ```bash
Option scope. Option scope.
Scope that rclone should use when requesting access from drive. Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value. Choose a number from below, or type in your own value.
Press Enter to leave empty. Press Enter to leave empty.
1 / Full access all files, excluding Application Data Folder. 1 / Full access all files, excluding Application Data Folder.
\ (drive) \ (drive)
2 / Read-only access to file metadata and file contents. 2 / Read-only access to file metadata and file contents.
\ (drive.readonly) \ (drive.readonly)
/ Access to files created by rclone only. / Access to files created by rclone only.
3 | These are visible in the drive website. 3 | These are visible in the drive website.
| File authorization is revoked when the user deauthorizes the app. | File authorization is revoked when the user deauthorizes the app.
\ (drive.file) \ (drive.file)
/ Allows read and write access to the Application Data folder. / Allows read and write access to the Application Data folder.
4 | This is not visible in the drive website. 4 | This is not visible in the drive website.
\ (drive.appfolder) \ (drive.appfolder)
/ Allows read-only access to file metadata but / Allows read-only access to file metadata but
5 | does not allow any access to read or download file content. 5 | does not allow any access to read or download file content.
\ (drive.metadata.readonly) \ (drive.metadata.readonly)
scope> 1 scope> 1
``` ```
2.7.- Te pedirá la ruta de las credenciales en formato JSON pero lo puedes dejar en blanco y solo dar enter: 2.7.- Te pedirá la ruta de las credenciales en formato JSON pero lo puedes dejar en blanco y solo dar enter:
```bash ```bash
Option service_account_file. Option service_account_file.
Service Account Credentials JSON file path. Service Account Credentials JSON file path.
Leave blank normally. Leave blank normally.
Needed only if you want use SA instead of interactive login. Needed only if you want use SA instead of interactive login.
Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`. Leading `~` will be expanded in the file name as will environment variables such as `${RCLONE_CONFIG_DIR}`.
Enter a value. Press Enter to leave empty. Enter a value. Press Enter to leave empty.
service_account_file> service_account_file>
``` ```
2.8- Preguntará si quieres editar la configuración avanzada, la opción es no (n): 2.8- Preguntará si quieres editar la configuración avanzada, la opción es no (n):
```bash ```bash
Edit advanced config? Edit advanced config?
y) Yes y) Yes
n) No (default) n) No (default)
y/n> n y/n> n
``` ```
2.9.- Te preguntara si quieres usar el método de configuración automática, pero **ingresa que no, ya que usa una UI y el servidor no tiene interfaz gráfica**. 2.9.- Te preguntara si quieres usar el método de configuración automática, pero **ingresa que no, ya que usa una UI y el servidor no tiene interfaz gráfica**.
```bash ```bash
Use auto config? Use auto config?
* Say Y if not sure * Say Y if not sure
* Say N if you are working on a remote or headless machine * Say N if you are working on a remote or headless machine
y) Yes (default) y) Yes (default)
n) No n) No
y/n> n y/n> n
``` ```
2.9.1.- Del comando anterior en consola te mostrará un mensaje como este: 2.9.1.- Del comando anterior en consola te mostrará un mensaje como este:
```bash ```bash
Option config_token. Option config_token.
For this to work, you will need rclone available on a machine that has For this to work, you will need rclone available on a machine that has
a web browser available. a web browser available.
For more help and alternate methods see: https://rclone.org/remote_setup/ For more help and alternate methods see: https://rclone.org/remote_setup/
Execute the following on the machine with the web browser (same rclone Execute the following on the machine with the web browser (same rclone
version recommended): version recommended):
rclone authorize "drive" "ayXzY01uSSI8ImRiaXZlIm0" rclone authorize "drive" "ayXzY01uSSI8ImRiaXZlIm0"
Then paste the result. Then paste the result.
Enter a value. Enter a value.
config_token> config_token>
``` ```
En tu computadora local, **NO EN EL SERVIDOR**, deberás abrir una terminal (previamente debiste instalar rclone en esa maquina), y pegar el comando que te da la terminal del servidor que en este caso es: En tu computadora local, **NO EN EL SERVIDOR**, deberás abrir una terminal (previamente debiste instalar rclone en esa maquina), y pegar el comando que te da la terminal del servidor que en este caso es:
```bash ```bash
rclone authorize "drive" "ayXzY01uSSI8ImRiaXZlIm0" rclone authorize "drive" "ayXzY01uSSI8ImRiaXZlIm0"
``` ```
De ese comando verás que te despliega la consola una respuesta como esta: De ese comando verás que te despliega la consola una respuesta como esta:
```bash ```bash
2025/06/03 13:12:35 NOTICE: Config file "/home/dave/.config/rclone/rclone.conf" not found - using defaults 2025/06/03 13:12:35 NOTICE: Config file "/home/dave/.config/rclone/rclone.conf" not found - using defaults
2025/06/03 13:12:35 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=VQQBIGPyiSNLYReNNPIXmj 2025/06/03 13:12:35 NOTICE: If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth?state=VQQBIGPyiSNLYReNNPIXmj
2025/06/03 13:12:35 NOTICE: Log in and authorize rclone for access 2025/06/03 13:12:35 NOTICE: Log in and authorize rclone for access
2025/06/03 13:12:35 NOTICE: Waiting for code... 2025/06/03 13:12:35 NOTICE: Waiting for code...
``` ```
En la segunda línea del mensaje, copia y pega en tu navegador la URL que aparece despues de link, en este caso es: http://127.0.0.1:53682/auth?state=VQQBIGPyiSNLYReNNPIXmj En la segunda línea del mensaje, copia y pega en tu navegador la URL que aparece despues de link, en este caso es: http://127.0.0.1:53682/auth?state=VQQBIGPyiSNLYReNNPIXmj
En tu navegador te aparecerán las cuentas de gmail, selecciona la cuenta de gmail que corresponde al DRIVE que le darás acceso a rclone, de forma inmediata el navegador te dará un mensaje de **SUCCESS** y debes regresar a tu consola de tu maquina local y te dará un hash largo similar a este: En tu navegador te aparecerán las cuentas de gmail, selecciona la cuenta de gmail que corresponde al DRIVE que le darás acceso a rclone, de forma inmediata el navegador te dará un mensaje de **SUCCESS** y debes regresar a tu consola de tu maquina local y te dará un hash largo similar a este:
```bash ```bash
Paste the following into your remote machine ---> Paste the following into your remote machine --->
eyJ0b2tlbiI6IntcImFjY2Vzc19....[muchos-caracteres]....NjowMFwifSJ9 eyJ0b2tlbiI6IntcImFjY2Vzc19....[muchos-caracteres]....NjowMFwifSJ9
<---End paste <---End paste
``` ```
Copia lo que esta entre las flechas (---> hash <---) y pégalo en la terminal de tu servidor VPS. Copia lo que esta entre las flechas (---> hash <---) y pégalo en la terminal de tu servidor VPS.
2.10.- Te preguntará que si es un drive compartido, en este caso es no: 2.10.- Te preguntará que si es un drive compartido, en este caso es no:
```bash ```bash
Configure this as a Shared Drive (Team Drive)? Configure this as a Shared Drive (Team Drive)?
y) Yes y) Yes
n) No (default) n) No (default)
y/n> n y/n> n
``` ```
2.11.- Finalmente te hará la pregunta de si quieres mantener la configuración hecha, debes ingresar la y: 2.11.- Finalmente te hará la pregunta de si quieres mantener la configuración hecha, debes ingresar la y:
```bash ```bash
Configuration complete. Configuration complete.
Options: Options:
- type: drive - type: drive
- scope: drive - scope: drive
- token: {"access_token":"datos-de-tu-token-de-acceso","token_type":"tu-tipo-de-token","refresh_token":"hash-del-token","expiry":"time-stamp-expiracion"} - token: {"access_token":"datos-de-tu-token-de-acceso","token_type":"tu-tipo-de-token","refresh_token":"hash-del-token","expiry":"time-stamp-expiracion"}
- team_drive: - team_drive:
Keep this "db_backups" remote? Keep this "db_backups" remote?
y) Yes this is OK (default) y) Yes this is OK (default)
e) Edit this remote e) Edit this remote
d) Delete this remote d) Delete this remote
y/e/d> y y/e/d> y
``` ```
Listo, tu configuración ya esta hecha, ahora solo debes salir de rclone ingresando la letra `q` seguida del enter, y en Listo, tu configuración ya esta hecha, ahora solo debes salir de rclone ingresando la letra `q` seguida del enter, y en
### Subir carpeta con `rclone copy` ### Subir carpeta con `rclone copy`
Este comando copia los archivos de origen a destino, sin borrar nada en destino. Este comando copia los archivos de origen a destino, sin borrar nada en destino.
```bash ```bash
rclone copy /ruta/local/de/la/carpeta formha_db_backups:/carpeta-en-drive rclone copy /ruta/local/de/la/carpeta formha_db_backups:/carpeta-en-drive
``` ```
rclone copy /home/dix/backups-db/ formha_db_backups:/formha-db-backups rclone copy /home/dix/backups-db/ formha_db_backups:/formha-db-backups
* `/ruta/local/de/la/carpeta` → la carpeta en tu VPS que quieres subir. * `/ruta/local/de/la/carpeta` → la carpeta en tu VPS que quieres subir.
* `formha_db_backups:/carpeta-en-drive` → la carpeta en tu Google Drive (se creará si no existe). * `formha_db_backups:/carpeta-en-drive` → la carpeta en tu Google Drive (se creará si no existe).
Ejemplo: Ejemplo:
```bash ```bash
rclone copy /home/dix/backups formha_db_backups:/backups-vps -p --v rclone copy /home/dix/backups formha_db_backups:/backups-vps -p --v
``` ```
Esto copiará todo el contenido de `/home/dix/backups` a la carpeta `backups-vps` en Google Drive. Esto copiará todo el contenido de `/home/dix/backups` a la carpeta `backups-vps` en Google Drive.
--- ---
### Subir carpeta con `rclone sync` ### Subir carpeta con `rclone sync`
Si quieres que la carpeta en Google Drive **quede idéntica** a la local (borra archivos en Drive que no estén en local): Si quieres que la carpeta en Google Drive **quede idéntica** a la local (borra archivos en Drive que no estén en local):
```bash ```bash
rclone sync /ruta/local/de/la/carpeta formha_db_backups:/carpeta-en-drive rclone sync /ruta/local/de/la/carpeta formha_db_backups:/carpeta-en-drive
``` ```
Ten cuidado con `sync` porque puede eliminar archivos en Drive. Ten cuidado con `sync` porque puede eliminar archivos en Drive.
--- ---
### Otros tips útiles ### Otros tips útiles
* Para ver el contenido en Drive: * Para ver el contenido en Drive:
```bash ```bash
rclone ls formha_db_backups:/carpeta-en-drive rclone ls formha_db_backups:/carpeta-en-drive
``` ```
* Para hacer dry-run (simular qué pasaría sin cambios reales): * Para hacer dry-run (simular qué pasaría sin cambios reales):
```bash ```bash
rclone copy --dry-run /home/dix/backups formha_db_backups:/backups-vps rclone copy --dry-run /home/dix/backups formha_db_backups:/backups-vps
``` ```
--- ---
¿Quieres que te ayude con un script automático o programación de backups? ¿Quieres que te ayude con un script automático o programación de backups?

View File

@ -1,101 +1,101 @@
Sí, **puedes usar una Raspberry Pi como cliente WireGuard y compartir Internet a través de ella**, como si fuera un router. Esto es útil, por ejemplo, si quieres que dispositivos conectados a la Raspberry (por cable o Wi-Fi) usen la conexión VPN. Sí, **puedes usar una Raspberry Pi como cliente WireGuard y compartir Internet a través de ella**, como si fuera un router. Esto es útil, por ejemplo, si quieres que dispositivos conectados a la Raspberry (por cable o Wi-Fi) usen la conexión VPN.
### ✅ Requisitos ### ✅ Requisitos
- Raspberry Pi (con Raspberry Pi OS o similar). - Raspberry Pi (con Raspberry Pi OS o similar).
- Conexión a Internet. - Conexión a Internet.
- Configuración de cliente WireGuard funcional (`wg0.conf`). - Configuración de cliente WireGuard funcional (`wg0.conf`).
- IP forwarding habilitado. - IP forwarding habilitado.
- `iptables` o `nftables` para NAT. - `iptables` o `nftables` para NAT.
--- ---
### 🔧 Pasos ### 🔧 Pasos
#### 1. **Instala WireGuard** #### 1. **Instala WireGuard**
```bash ```bash
sudo apt update sudo apt update
sudo apt install wireguard sudo apt install wireguard
``` ```
#### 2. **Configura el cliente WireGuard** #### 2. **Configura el cliente WireGuard**
Crea el archivo `/etc/wireguard/wg0.conf` con los datos del servidor: Crea el archivo `/etc/wireguard/wg0.conf` con los datos del servidor:
```ini ```ini
[Interface] [Interface]
PrivateKey = TU_CLAVE_PRIVADA PrivateKey = TU_CLAVE_PRIVADA
Address = 10.10.10.2/32 Address = 10.10.10.2/32
DNS = 1.1.1.1 DNS = 1.1.1.1
[Peer] [Peer]
PublicKey = CLAVE_PUBLICA_DEL_SERVIDOR PublicKey = CLAVE_PUBLICA_DEL_SERVIDOR
Endpoint = IP_DEL_SERVIDOR:51820 Endpoint = IP_DEL_SERVIDOR:51820
AllowedIPs = 0.0.0.0/0 AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25 PersistentKeepalive = 25
``` ```
Activa el túnel: Activa el túnel:
```bash ```bash
sudo wg-quick up wg0 sudo wg-quick up wg0
``` ```
#### 3. **Habilita IP forwarding** #### 3. **Habilita IP forwarding**
Edita `/etc/sysctl.conf` y descomenta o añade: Edita `/etc/sysctl.conf` y descomenta o añade:
```bash ```bash
net.ipv4.ip_forward=1 net.ipv4.ip_forward=1
``` ```
Aplica el cambio: Aplica el cambio:
```bash ```bash
sudo sysctl -p sudo sysctl -p
``` ```
#### 4. **Configura NAT para compartir Internet** #### 4. **Configura NAT para compartir Internet**
Asumiendo que los clientes están en `eth0` o `wlan0` y que la VPN va por `wg0`: Asumiendo que los clientes están en `eth0` o `wlan0` y que la VPN va por `wg0`:
```bash ```bash
# Reglas NAT # Reglas NAT
sudo iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE sudo iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
# Permitir reenvío entre interfaces # Permitir reenvío entre interfaces
sudo iptables -A FORWARD -i wg0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT sudo iptables -A FORWARD -i wg0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o wg0 -j ACCEPT sudo iptables -A FORWARD -i wlan0 -o wg0 -j ACCEPT
``` ```
Haz persistente con `iptables-persistent`: Haz persistente con `iptables-persistent`:
```bash ```bash
sudo apt install iptables-persistent sudo apt install iptables-persistent
sudo netfilter-persistent save sudo netfilter-persistent save
``` ```
#### 5. **Crea un hotspot o red para compartir** #### 5. **Crea un hotspot o red para compartir**
Puedes usar `hostapd` para crear un punto de acceso Wi-Fi, o compartir por Ethernet usando una IP estática y DHCP (`dnsmasq` o similar). Puedes usar `hostapd` para crear un punto de acceso Wi-Fi, o compartir por Ethernet usando una IP estática y DHCP (`dnsmasq` o similar).
--- ---
### 📶 Ejemplo de uso ### 📶 Ejemplo de uso
- Raspberry conectada a Internet por Wi-Fi. - Raspberry conectada a Internet por Wi-Fi.
- Cliente se conecta por Ethernet a la Raspberry. - Cliente se conecta por Ethernet a la Raspberry.
- Todo el tráfico del cliente pasa por la VPN (WireGuard). - Todo el tráfico del cliente pasa por la VPN (WireGuard).
--- ---
Si me das detalles sobre cómo quieres compartir (Wi-Fi o Ethernet), te puedo ayudar a configurar eso también. Si me das detalles sobre cómo quieres compartir (Wi-Fi o Ethernet), te puedo ayudar a configurar eso también.

View File

@ -1,78 +1,78 @@
¡Perfecto! 🎯 ¡Perfecto! 🎯
Eso confirma que `ip.xala.dev` ya **resuelve directamente a tu IP real pública (`189.131.79.23`)**, y **el proxy de Cloudflare está desactivado** (ícono gris / Solo DNS). Bien hecho. ✅ Eso confirma que `ip.xala.dev` ya **resuelve directamente a tu IP real pública (`189.131.79.23`)**, y **el proxy de Cloudflare está desactivado** (ícono gris / Solo DNS). Bien hecho. ✅
--- ---
### 🧩 Entonces… ¿por qué `git push` aún no funciona con `ip.xala.dev:3000`? ### 🧩 Entonces… ¿por qué `git push` aún no funciona con `ip.xala.dev:3000`?
Si el dominio resuelve bien y aún falla, quedan estas **posibles causas clave**: Si el dominio resuelve bien y aún falla, quedan estas **posibles causas clave**:
--- ---
### 1. ❌ **Cloudflare nunca estuvo en medio, pero tu servidor Git está restringido por `Host`** ### 1. ❌ **Cloudflare nunca estuvo en medio, pero tu servidor Git está restringido por `Host`**
Algunos servidores Git (como **Gitea**) pueden rechazar peticiones HTTP que usen un nombre de dominio diferente al configurado. Algunos servidores Git (como **Gitea**) pueden rechazar peticiones HTTP que usen un nombre de dominio diferente al configurado.
**Ejemplo típico de fallo:** **Ejemplo típico de fallo:**
```bash ```bash
# Este sí funciona porque coincide con la configuración del servidor # Este sí funciona porque coincide con la configuración del servidor
git remote add origin http://dix-ip.duckdns.org:3000/repo.git git remote add origin http://dix-ip.duckdns.org:3000/repo.git
# Este no funciona porque el servidor solo acepta dix-ip.duckdns.org como Host HTTP # Este no funciona porque el servidor solo acepta dix-ip.duckdns.org como Host HTTP
git remote add origin http://ip.xala.dev:3000/repo.git git remote add origin http://ip.xala.dev:3000/repo.git
``` ```
👉 **Solución:** 👉 **Solución:**
- Si usas Gitea, revisa el valor `DOMAIN` o `ROOT_URL` en su archivo `app.ini`. - Si usas Gitea, revisa el valor `DOMAIN` o `ROOT_URL` en su archivo `app.ini`.
- Asegúrate de que incluya `ip.xala.dev` o configúralo así: - Asegúrate de que incluya `ip.xala.dev` o configúralo así:
```ini ```ini
ROOT_URL = http://ip.xala.dev:3000/ ROOT_URL = http://ip.xala.dev:3000/
``` ```
Y reinicia Gitea. Y reinicia Gitea.
--- ---
### 2. 🔒 **Tu servidor Git usa una ACL o firewall basado en nombres** ### 2. 🔒 **Tu servidor Git usa una ACL o firewall basado en nombres**
Revisa si el servidor tiene alguna lógica o `nginx` / `apache` virtual host configurado para solo aceptar conexiones desde ciertos hosts. Revisa si el servidor tiene alguna lógica o `nginx` / `apache` virtual host configurado para solo aceptar conexiones desde ciertos hosts.
--- ---
### 3. 🧪 **Verifica que responde por nombre** ### 3. 🧪 **Verifica que responde por nombre**
Haz esta prueba desde la máquina cliente: Haz esta prueba desde la máquina cliente:
```bash ```bash
curl -v http://ip.xala.dev:3000/ curl -v http://ip.xala.dev:3000/
``` ```
Y también: Y también:
```bash ```bash
curl -v http://dix-ip.duckdns.org:3000/ curl -v http://dix-ip.duckdns.org:3000/
``` ```
- Si uno responde y el otro no: el problema está en cómo el servidor maneja el **nombre del host** (`Host: ...`) en la cabecera HTTP. - Si uno responde y el otro no: el problema está en cómo el servidor maneja el **nombre del host** (`Host: ...`) en la cabecera HTTP.
--- ---
### ✅ Solución temporal de prueba (si no puedes modificar el servidor): ### ✅ Solución temporal de prueba (si no puedes modificar el servidor):
Puedes engañar a Git y al servidor editando tu `/etc/hosts` y agregando: Puedes engañar a Git y al servidor editando tu `/etc/hosts` y agregando:
```bash ```bash
189.131.79.23 dix-ip.duckdns.org ip.xala.dev 189.131.79.23 dix-ip.duckdns.org ip.xala.dev
``` ```
Así, cuando uses `ip.xala.dev`, Git usará el nombre que acepta el servidor, como si fueran sinónimos. Así, cuando uses `ip.xala.dev`, Git usará el nombre que acepta el servidor, como si fueran sinónimos.
--- ---
¿Sabes qué servidor Git estás usando (¿Gitea, GitLab, bare Git+nginx?)? Puedo ayudarte a ajustar la configuración. ¿Sabes qué servidor Git estás usando (¿Gitea, GitLab, bare Git+nginx?)? Puedo ayudarte a ajustar la configuración.

View File

@ -1,254 +1,254 @@
Perfecto, David. A continuación te dejo el **manual completo y actualizado** para instalar `n8n` de forma manual en Ubuntu Server (sin Docker), incluyendo: Perfecto, David. A continuación te dejo el **manual completo y actualizado** para instalar `n8n` de forma manual en Ubuntu Server (sin Docker), incluyendo:
- Instalación limpia de Node.js 20 - Instalación limpia de Node.js 20
- Instalación de n8n y pm2 - Instalación de n8n y pm2
- Script de arranque con autenticación básica - Script de arranque con autenticación básica
- Ejecución en segundo plano con reinicio automático al encender el servidor - Ejecución en segundo plano con reinicio automático al encender el servidor
--- ---
# 🛠 Manual actualizado para instalar n8n (sin Docker) en Ubuntu Server # 🛠 Manual actualizado para instalar n8n (sin Docker) en Ubuntu Server
--- ---
## ✅ 1. Actualiza el sistema e instala dependencias ## ✅ 1. Actualiza el sistema e instala dependencias
```bash ```bash
sudo apt update && sudo apt upgrade -y sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg build-essential sudo apt install -y curl gnupg build-essential
``` ```
--- ---
## ✅ 2. Instala Node.js 20 (requerido por versiones recientes de n8n) ## ✅ 2. Instala Node.js 20 (requerido por versiones recientes de n8n)
```bash ```bash
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs sudo apt install -y nodejs
``` ```
Verifica que esté instalado correctamente: Verifica que esté instalado correctamente:
```bash ```bash
node -v node -v
npm -v npm -v
``` ```
Debe mostrar algo como `v20.x.x`. Debe mostrar algo como `v20.x.x`.
--- ---
## ✅ 3. Instala `n8n` y `pm2` globalmente ## ✅ 3. Instala `n8n` y `pm2` globalmente
```bash ```bash
sudo npm install -g pm2 n8n sudo npm install -g pm2 n8n
``` ```
--- ---
## ✅ 4. Crea el script de arranque `n8n` ## ✅ 4. Crea el script de arranque `n8n`
```bash ```bash
nano ~/start-n8n.sh nano ~/start-n8n.sh
``` ```
Pega el siguiente contenido: Pega el siguiente contenido:
```bash ```bash
#!/bin/bash #!/bin/bash
export N8N_HOST=0.0.0.0 export N8N_HOST=0.0.0.0
export N8N_PORT=5678 export N8N_PORT=5678
export N8N_BASIC_AUTH_ACTIVE=true export N8N_BASIC_AUTH_ACTIVE=true
export N8N_BASIC_AUTH_USER=admin export N8N_BASIC_AUTH_USER=admin
export N8N_BASIC_AUTH_PASSWORD=Shala55951254 export N8N_BASIC_AUTH_PASSWORD=Shala55951254
n8n n8n
``` ```
Guarda y cierra (Ctrl+O, Enter, Ctrl+X). Guarda y cierra (Ctrl+O, Enter, Ctrl+X).
Hazlo ejecutable: Hazlo ejecutable:
```bash ```bash
chmod +x ~/start-n8n.sh chmod +x ~/start-n8n.sh
``` ```
--- ---
## ✅ 5. Ejecuta el script para probar ## ✅ 5. Ejecuta el script para probar
```bash ```bash
~/start-n8n.sh ~/start-n8n.sh
``` ```
Deberías ver un mensaje como: Deberías ver un mensaje como:
``` ```
Editor is now accessible via: http://0.0.0.0:5678 Editor is now accessible via: http://0.0.0.0:5678
``` ```
📌 Accede desde el navegador con la IP del servidor: 📌 Accede desde el navegador con la IP del servidor:
``` ```
http://TU_IP:5678 http://TU_IP:5678
``` ```
Usuario: `admin` Usuario: `admin`
Contraseña: `Shala55951254` Contraseña: `Shala55951254`
--- ---
## ✅ 6. Ejecutar n8n en segundo plano con `pm2` ## ✅ 6. Ejecutar n8n en segundo plano con `pm2`
### A. Inicia el proceso con `pm2`: ### A. Inicia el proceso con `pm2`:
```bash ```bash
pm2 start ~/start-n8n.sh --name n8n pm2 start ~/start-n8n.sh --name n8n
``` ```
### B. Guarda el proceso para que se reinicie con el sistema: ### B. Guarda el proceso para que se reinicie con el sistema:
```bash ```bash
pm2 startup pm2 startup
``` ```
Copia y ejecuta la línea que te devuelva (ejemplo): Copia y ejecuta la línea que te devuelva (ejemplo):
```bash ```bash
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u $USER --hp /home/$USER sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u $USER --hp /home/$USER
``` ```
Luego: Luego:
```bash ```bash
pm2 save pm2 save
``` ```
--- ---
## ✅ 7. (Opcional) Abre el puerto en el firewall ## ✅ 7. (Opcional) Abre el puerto en el firewall
```bash ```bash
sudo ufw allow 5678/tcp sudo ufw allow 5678/tcp
sudo ufw enable sudo ufw enable
sudo ufw status sudo ufw status
``` ```
--- ---
## ✅ 8. Comandos útiles ## ✅ 8. Comandos útiles
- Ver estado de procesos: - Ver estado de procesos:
```bash ```bash
pm2 list pm2 list
``` ```
- Ver logs en tiempo real: - Ver logs en tiempo real:
```bash ```bash
pm2 logs n8n pm2 logs n8n
``` ```
- Parar o reiniciar: - Parar o reiniciar:
```bash ```bash
pm2 stop n8n pm2 stop n8n
pm2 restart n8n pm2 restart n8n
``` ```
- Eliminar proceso: - Eliminar proceso:
```bash ```bash
pm2 delete n8n pm2 delete n8n
``` ```
--- ---
¿Quieres que ahora te dé el manual con NGINX + HTTPS (Let's Encrypt) para que accedas por dominio seguro como `https://n8n.tudominio.com`? ¿Quieres que ahora te dé el manual con NGINX + HTTPS (Let's Encrypt) para que accedas por dominio seguro como `https://n8n.tudominio.com`?
# hacer que el servicio de n8n se reincie con el equipo # hacer que el servicio de n8n se reincie con el equipo
Excelente pregunta, David. Si `n8n` no se reinicia automáticamente tras reiniciar tu servidor, lo más probable es que **faltó ejecutar correctamente uno de los pasos con `pm2`** para registrar el arranque del proceso. Excelente pregunta, David. Si `n8n` no se reinicia automáticamente tras reiniciar tu servidor, lo más probable es que **faltó ejecutar correctamente uno de los pasos con `pm2`** para registrar el arranque del proceso.
Aquí te explico cómo asegurar que n8n se inicie automáticamente al arrancar el servidor: Aquí te explico cómo asegurar que n8n se inicie automáticamente al arrancar el servidor:
--- ---
## ✅ Paso a paso para activar reinicio automático con `pm2` ## ✅ Paso a paso para activar reinicio automático con `pm2`
### 1. Asegúrate de que `n8n` está corriendo con `pm2` ### 1. Asegúrate de que `n8n` está corriendo con `pm2`
Confirma con: Confirma con:
```bash ```bash
pm2 list pm2 list
``` ```
Deberías ver un proceso llamado `n8n`. Deberías ver un proceso llamado `n8n`.
--- ---
### 2. Genera el script de arranque para `systemd` ### 2. Genera el script de arranque para `systemd`
```bash ```bash
pm2 startup pm2 startup
``` ```
Esto te devolverá una línea como esta (con tu usuario): Esto te devolverá una línea como esta (con tu usuario):
```bash ```bash
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u web --hp /home/web sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u web --hp /home/web
``` ```
🔁 **Cópiala y ejecútala exactamente**. 🔁 **Cópiala y ejecútala exactamente**.
> ⚠️ Este paso es **clave**: si no ejecutas esa línea, `pm2` no se integrará con `systemd` y no podrá reiniciar tus procesos al arrancar el servidor. > ⚠️ Este paso es **clave**: si no ejecutas esa línea, `pm2` no se integrará con `systemd` y no podrá reiniciar tus procesos al arrancar el servidor.
--- ---
### 3. Guarda el estado actual de los procesos ### 3. Guarda el estado actual de los procesos
```bash ```bash
pm2 save pm2 save
``` ```
Esto crea un snapshot de los procesos actuales que serán restaurados al reinicio. Esto crea un snapshot de los procesos actuales que serán restaurados al reinicio.
--- ---
### 4. Verifica que todo esté correcto ### 4. Verifica que todo esté correcto
Puedes simular un reinicio: Puedes simular un reinicio:
```bash ```bash
sudo reboot sudo reboot
``` ```
Luego, tras reiniciar, verifica: Luego, tras reiniciar, verifica:
```bash ```bash
pm2 list pm2 list
``` ```
Y accede a `http://IP:5678` para confirmar que `n8n` se levantó automáticamente. Y accede a `http://IP:5678` para confirmar que `n8n` se levantó automáticamente.
--- ---
## ✅ Resumen de comandos clave ## ✅ Resumen de comandos clave
```bash ```bash
pm2 start ~/start-n8n.sh --name n8n pm2 start ~/start-n8n.sh --name n8n
pm2 startup # (ejecutar también la línea que devuelve) pm2 startup # (ejecutar también la línea que devuelve)
pm2 save pm2 save
``` ```
--- ---
¿Quieres que revise también cómo levantar `pm2` con un usuario distinto al login por defecto o con logs persistentes en un archivo? ¿Quieres que revise también cómo levantar `pm2` con un usuario distinto al login por defecto o con logs persistentes en un archivo?

View File

@ -1,22 +0,0 @@
Reunión en instalaciones de la SHCP 05/08/2025 11:00 am
Temas vistos:
- Revisión de cada uno de los proyectos de inversión para ver los estudios de preinversión que les aplican.
- Aclaración de dudas relacionados con los proyectos por parte de la Lic. María Asereth.
Acuerdos:
- Se designan a las contadoras Lic. Guadalupe y Lic. Alba como enlaces con la Lic. María Asereth para asesorías en el desarrollo de los estudios de preinversión.
- La Lic. María Asereth gestionará apartar una sala de reuniones para permitir que podamos trabajar en las instalaciones de la SHCP a fin de facilitar y atender dudas y aclaraciones en el desarrollo de los estudios de preinversión, para ello hay que compartir mediante los enlaces los nombres de los que estarán yendo a las instalaciones.
- La Lic. María Asereth compartirá un ejemplo de cartera de inversión.
- Los estudios de preinversión deben ser entregados a más tardar el 20 de agosto.
- IMPORTANTE: decidir si se debe involucrar al nuevo Director General Satelital de la AEM.

View File

@ -1,4 +1,4 @@
cd ~/Minecraft/ && zip -r "/home/web/backups_minecraft/world_gorromina_$(date +'%d-%m-%Y_%H-%M').zip" "world_gorromina" cd ~/Minecraft/ && zip -r "/home/web/backups_minecraft/world_gorromina_$(date +'%d-%m-%Y_%H-%M').zip" "world_gorromina"
rclone copy ~/backups_minecraft/ mc_backup:/mc_backup -P -v rclone copy ~/backups_minecraft/ mc_backup:/mc_backup -P -v

View File

0
Sin título.md Normal file
View File