{"id":47233,"date":"2026-06-27T17:57:53","date_gmt":"2026-06-27T08:57:53","guid":{"rendered":"https:\/\/raybeam.jp\/docs\/initial-server-setup\/"},"modified":"2026-06-28T08:15:35","modified_gmt":"2026-06-27T23:15:35","slug":"initial-server-setup","status":"publish","type":"docs","link":"https:\/\/raybeam.jp\/es\/docs\/initial-server-setup\/","title":{"rendered":"Configuraci\u00f3n inicial del servidor"},"content":{"rendered":"<h2 id=\"ubuntu-server-lts-setup-guide-2004--2404\" class=\"wp-block-heading\">Gu\u00eda de configuraci\u00f3n del servidor Ubuntu LTS (20.04 \/ 24.04)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Esta gu\u00eda da por hecho que est\u00e1s configurando un nuevo <strong>Servidor Ubuntu LTS<\/strong> instancia (20.04 o 24.04) en un servidor virtual (VPS) o en un proveedor de servicios en la nube.<\/p>\n\n\n\n<h2 id=\"1-create-a-nonroot-sudo-user\" class=\"wp-block-heading\">1. Crear un usuario \u00absudo\u00bb que no sea \u00abroot\u00bb<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code><code>adduser tuNombreDeUsuario\nusermod -aG sudo tuNombreDeUsuario<\/code><\/code><\/pre>\n\n\n\n<h2 id=\"2-get-ssh-key-access-to-the-new-user\" class=\"wp-block-heading\">2. Obtener acceso mediante clave SSH para el nuevo usuario<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Si tu proveedor de alojamiento no admite la inserci\u00f3n de claves SSH p\u00fablicas en el momento de la creaci\u00f3n, copia tu clave desde tu equipo local al directorio temporal <code>ra\u00edz<\/code> iniciar sesi\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>ssh-copy-id <span \n                data-original-string='g3ZJqNdI0beimJ\/cZDOo5Q==a66xCn49Ql8ydH\/4GtQa6dF6mqvNdSNiUDUGjVqYk5oWsg='\n                class='apbct-email-encoder'\n                title='Este contacto ha sido codificado por Anti-Spam by CleanTalk. Haz clic para decodificar. Para finalizar la decodificaci\u00f3n, aseg\u00farate de que JavaScript est\u00e1 activado en tu navegador.'>ro<span class=\"apbct-blur\">**<\/span>@<span class=\"apbct-blur\">**********<\/span>ne.ip<\/span>.000<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez que hayas iniciado sesi\u00f3n como <code>ra\u00edz<\/code>, transfiere las claves SSH al nuevo usuario:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>rsync --archive --chown=tuNombreDeUsuario:tuNombreDeUsuario \/root\/.ssh \/home\/tuNombreDeUsuario<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cierra la sesi\u00f3n y vuelve a iniciar sesi\u00f3n como el nuevo usuario:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>salir\nssh <span \n                data-original-string='Hk1Xht3sZTyLsy3sArlM\/w==a663k7txlh9Ad\/vfWdnnnThe4OjMNKThgTjIm+B8x+ZHx0='\n                class='apbct-email-encoder'\n                title='Este contacto ha sido codificado por Anti-Spam by CleanTalk. Haz clic para decodificar. Para finalizar la decodificaci\u00f3n, aseg\u00farate de que JavaScript est\u00e1 activado en tu navegador.'>yo<span class=\"apbct-blur\">**********<\/span>@<span class=\"apbct-blur\">**********<\/span>ne.ip<\/span>.000<\/code><\/code><\/pre>\n\n\n\n<h2 id=\"3-harden-ssh\" class=\"wp-block-heading\">3. Reforzar la seguridad de SSH<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez que hayas comprobado que puedes iniciar sesi\u00f3n como <code>tuNombreDeUsuario<\/code>, desactiva el acceso SSH como usuario root:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Edita la configuraci\u00f3n del demonio SSH: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>sudo nano \/etc\/ssh\/sshd_config<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aseg\u00farate de que la l\u00ednea diga lo siguiente: <code>PermitRootLogin no<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reiniciar SSH: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>sudo service ssh restart<\/code><\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Importante:<\/strong> Mant\u00e9n abierta una sesi\u00f3n SSH activa hasta que hayas comprobado que el inicio de sesi\u00f3n sin contrase\u00f1a funciona para tu nuevo usuario; a continuaci\u00f3n, prueba a establecer una nueva conexi\u00f3n desde otro terminal antes de cerrar la sesi\u00f3n de root.<\/p>\n<\/blockquote>\n\n\n\n<h2 id=\"4-set-the-timezone\" class=\"wp-block-heading\">4. Configura la zona horaria<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code><code>sudo timedatectl set-timezone Continente\/Ciudad\n<em># Ejemplo: sudo timedatectl set-timezone Asia\/Tokio<\/em><\/code><\/code><\/pre>\n\n\n\n<h2 id=\"5-configure-the-fqdn\" class=\"wp-block-heading\">5. Configurar el FQDN<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Editar <code>\/etc\/hosts<\/code> y sustituye la l\u00ednea predeterminada y a\u00f1ade tu IP p\u00fablica:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>127.0.1.1 nombre-del-ordenador.ejemplo.com\ntu.ip.000    nombre-del-ordenador.ejemplo.com nombre-del-ordenador<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, configura el nombre de host del sistema:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>sudo hostnamectl set-hostname nombre-del-ordenador.example.com<\/code><\/code><\/pre>\n\n\n\n<h2 id=\"6-install-wordops\" class=\"wp-block-heading\">6. Instalar WordOps<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code><code>wget -qO wo wops.cc &amp;&amp; sudo bash wo\nsource \/etc\/bash_completion.d\/wo_auto.rc\necho -e \"alias wo='sudo -E wo'\" &gt;&gt; $HOME\/.bashrc<\/code><\/code><\/pre>\n\n\n\n<h2 id=\"7-install-and-configure-ufw-firewall\" class=\"wp-block-heading\">7. Instalar y configurar UFW (cortafuegos)<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code><code>wo stack install --ufw\nwo secure --ssh<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de activar UFW, aseg\u00farate de permitir el acceso por SSH (ya gestionado por <code>wo secure --ssh<\/code>), y a continuaci\u00f3n activa el cortafuegos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>sudo ufw allow 22\/tcp\nsudo ufw allow 80\/tcp\nsudo ufw allow 443\/tcp\nsudo ufw enable<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para configurar una lista de direcciones IP permitidas compatible con Cloudflare, consulta este otro art\u00edculo:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-raybeam wp-block-embed-raybeam\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"22Us8SmqGN\"><a href=\"https:\/\/raybeam.jp\/es\/docs\/initial-server-setup\/how-to-auto-update-ufw-rules-with-cloudflare-ips\/\">C\u00f3mo actualizar autom\u00e1ticamente las reglas de UFW con las direcciones IP de la versi\u00f3n Cloudflare<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"\u201cC\u00f3mo actualizar autom\u00e1ticamente las reglas de UFW con las direcciones IP de Cloudflare\u201d \u2014 Raybeam\" src=\"https:\/\/raybeam.jp\/docs\/initial-server-setup\/how-to-auto-update-ufw-rules-with-cloudflare-ips\/embed\/#?secret=wG57cXpQh0#?secret=22Us8SmqGN\" data-secret=\"22Us8SmqGN\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 id=\"8-cloudflare-api-variables-for-automation-scripts\" class=\"wp-block-heading\">8. Variables de la API Cloudflare (para scripts de automatizaci\u00f3n)<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code><code>export CF_Key=\"yourCloudflareAPIKey\"\nexport CF_Email=\"<span \n                data-original-string='xQsoq2yyCq4fPLf59hTcbw==a66tNzC6X8krjzxNAKEFteK8cmH\/GVQFqNAWw4VaOP0tls='\n                class='apbct-email-encoder'\n                title='Este contacto ha sido codificado por Anti-Spam by CleanTalk. Haz clic para decodificar. Para finalizar la decodificaci\u00f3n, aseg\u00farate de que JavaScript est\u00e1 activado en tu navegador.'>yo<span class=\"apbct-blur\">*****************<\/span>@<span class=\"apbct-blur\">*****<\/span>le.com<\/span>\"<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Gu\u00e1rdalas en <code>~\/.bashrc<\/code> o un archivo de entorno espec\u00edfico si tu sistema de automatizaci\u00f3n los necesita en cada inicio de sesi\u00f3n.<\/p>\n\n\n\n<h2 id=\"9-enable-wordpress-cron-via-system-cron\" class=\"wp-block-heading\">9. Activar el cron de WordPress a trav\u00e9s del cron del sistema<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Edita el archivo crontab de root:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>sudo crontab -e<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A\u00f1adir:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>*\/2 * * * * find \/var\/www -type f -name \"wp-cron.php\" -path \"*\/htdocs\/wp-cron.php\" -execdir sudo -u www-data php {} \\; &gt; \/dev\/null 2&gt;&amp;1<\/code><\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Aseg\u00farate de que el <code>cron<\/code> El servicio se est\u00e1 ejecutando:<br><code>sudo systemctl enable --now cron<\/code><\/p>\n<\/blockquote>\n\n\n\n<h2 id=\"10-miscellaneous-tools\" class=\"wp-block-heading\">10. Herramientas diversas<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code><code><em>Herramienta de l\u00ednea de comandos # S3<\/em>\nsudo apt update\nsudo apt install -y s3cmd\n<em># Configurar con: s3cmd --configure<\/em>\n\n<em># Analizador de uso del disco<\/em>\nsudo apt install -y ncdu<\/code><\/code><\/pre>\n\n\n\n<h2 id=\"11-redis-object-cache\" class=\"wp-block-heading\">11. Redis (cach\u00e9 de objetos)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Habilitar e iniciar Redis como servicio del sistema:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>sudo systemctl enable redis-server.service\nsudo systemctl start redis-server.service<\/code><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cons\u00faltalo con:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>sudo systemctl status redis-server.service<\/code><\/code><\/pre>\n\n\n\n<h2 id=\"12-wordops-modules-we-skip-by-default\" class=\"wp-block-heading\">12. M\u00f3dulos de WordOps que se omiten por defecto<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Nginx: el mejor bloqueador de bots maliciosos<\/strong>: Es una herramienta estupenda, pero resulta innecesaria si ya utilizas el WAF y la limitaci\u00f3n de tr\u00e1fico de Cloudflare.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"13-final-steps--next-guides\" class=\"wp-block-heading\">13. Pasos finales y pr\u00f3ximas gu\u00edas<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sigue las gu\u00edas espec\u00edficas para completar la pila (en esos art\u00edculos se explican los motivos de cada elecci\u00f3n y se ofrecen alternativas).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez completados estos pasos, tu servidor Ubuntu LTS contar\u00e1 con:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un usuario \u00absudo\u00bb seguro que no sea \u00abroot\u00bb y que tenga acceso mediante clave SSH<\/li>\n\n\n\n<li>Inicio de sesi\u00f3n como usuario \u00abroot\u00bb desactivado a trav\u00e9s de SSH<\/li>\n\n\n\n<li>FQDN y zona horaria correctos<\/li>\n\n\n\n<li>Integraci\u00f3n de WordOps + UFW + Cloudflare<\/li>\n\n\n\n<li>WP-Cron a nivel del sistema, Redis y herramientas de administraci\u00f3n habituales<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ya est\u00e1s listo para crear sitios web de WordPress con <code>wo site create example.com --wpfc<\/code> (u otras opciones de pila) y reforzar la seguridad de cada sitio web por separado.<\/p>","protected":false},"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"pmpro_default_level":"","nav_title":"","positive":"1","negative":"","footnotes":""},"docs_category":[],"class_list":["post-47233","docs","type-docs","status-publish","hentry","pmpro-has-access"],"_links":{"self":[{"href":"https:\/\/raybeam.jp\/es\/wp-json\/wp\/v2\/docs\/47233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/raybeam.jp\/es\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/raybeam.jp\/es\/wp-json\/wp\/v2\/types\/docs"}],"replies":[{"embeddable":true,"href":"https:\/\/raybeam.jp\/es\/wp-json\/wp\/v2\/comments?post=47233"}],"version-history":[{"count":8,"href":"https:\/\/raybeam.jp\/es\/wp-json\/wp\/v2\/docs\/47233\/revisions"}],"predecessor-version":[{"id":47292,"href":"https:\/\/raybeam.jp\/es\/wp-json\/wp\/v2\/docs\/47233\/revisions\/47292"}],"wp:attachment":[{"href":"https:\/\/raybeam.jp\/es\/wp-json\/wp\/v2\/media?parent=47233"}],"wp:term":[{"taxonomy":"docs_category","embeddable":true,"href":"https:\/\/raybeam.jp\/es\/wp-json\/wp\/v2\/docs_category?post=47233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}