{"id":16626,"date":"2024-05-29T09:24:24","date_gmt":"2024-05-29T15:24:24","guid":{"rendered":"https:\/\/sada.services\/?p=16626"},"modified":"2024-07-22T10:46:06","modified_gmt":"2024-07-22T16:46:06","slug":"directus-instalacion-ubuntu-24-04","status":"publish","type":"post","link":"https:\/\/sada.services\/?p=16626","title":{"rendered":"Directus: Instalaci\u00f3n Ubuntu 24.04"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Postgres<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>guia: <a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-install-postgresql-on-ubuntu-22-04-quickstart\">https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-install-postgresql-on-ubuntu-22-04-quickstart<\/a><\/li>\n\n\n\n<li>Debemos instalar la base de datos <\/li>\n\n\n\n<li>Primero actualizamos el sistema<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo su\napt update\napt upgrade<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Instalamos la BD<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install postgresql postgresql-contrib<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Probamos el acceso<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Ingresamos el el usuario postgres\nsudo -i -u postgres\n\n# ingresamos a la BD\npsql\n\n# Salimos\n\\q\n\nexit<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Crear usuario postgres<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para crear un usuario postgres <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Ingresar a postgreSQL\nsudo -i -u postgres\n\n# Crear usuario\ncreateuser --interactive<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Digitamos si nombre y si es super usuario<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Enter name of role to add: directus\nShall the new role be a superuser? (y\/n) y\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Luego le establecemos una contrase\u00f1a<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo -i -u postgres\n\npsql\n\n\\password directus<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Resultado<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>Enter new password for user \"directus\": $Ska198\nEnter it again:$Ska198<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Crear Base de Datos<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para crear la base de datos ejecutamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Ingresamos\nsudo -i -u postgres\n\n# Creamos la base de datos\ncreatedb directus\n\n# O sin ingresar\nsudo -u postgres createdb directus<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Crear usuario Linux para ingresar a la BD<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Creamos usuario de sistema que se llame igual al rol y BD<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Salimos de postgres \nexit\n\n# Creamos el usuario\nsudo adduser directus<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>A\u00f1adiendo el usuario `directus' ...\nA\u00f1adiendo el nuevo grupo `directus' (1001) ...\nA\u00f1adiendo el nuevo usuario `directus' (1001) con grupo `directus' ...\nNueva contrase\u00f1a: $Ska198\nVuelva a escribir la nueva contrase\u00f1a: $Ska198\npasswd: contrase\u00f1a actualizada correctamente\nCambiando la informaci\u00f3n de usuario para directus\nIntroduzca el nuevo valor, o presione INTRO para el predeterminado\n\tNombre completo &#91;]: Directus\n\tN\u00famero de habitaci\u00f3n &#91;]: \n\tTel\u00e9fono del trabajo &#91;]: \n\tTel\u00e9fono de casa &#91;]: \n\tOtro &#91;]: \n\u00bfEs correcta la informaci\u00f3n? &#91;S\/n] \n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ahora podemos ingresar directamente con el usuario<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo -u directus psql<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>psql (14.11 (Ubuntu 14.11-0ubuntu0.22.04.1))\nType \"help\" for help.\n\ndirectus=# <\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Si desea conectarse a otra BD<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>psql -d nombre_base_datos<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Si desea ver la informaci\u00f3n de la conexi\u00f3n<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>\\conninfo<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Resultado<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>You are connected to database \"directus\" as user \"directus\" via socket in \"\/var\/run\/postgresql\" at port \"5432\".<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Instalar pgAdmin<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para instalar la aplicaci\u00f3n de administraci\u00f3n de postgresql<\/li>\n\n\n\n<li>ejecutamos la instlaci\u00f3n de solo la versi\u00f3n desktop<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code># Obtener llave\ncurl -fsS https:\/\/www.pgadmin.org\/static\/packages_pgadmin_org.pub | sudo gpg --dearmor -o \/usr\/share\/keyrings\/packages-pgadmin-org.gpg\n\n# configurar repositorio\nsudo sh -c 'echo \"deb &#91;signed-by=\/usr\/share\/keyrings\/packages-pgadmin-org.gpg] https:\/\/ftp.postgresql.org\/pub\/pgadmin\/pgadmin4\/apt\/$(lsb_release -cs) pgadmin4 main\" &gt; \/etc\/apt\/sources.list.d\/pgadmin4.list &amp;&amp; apt update'\n\n# Install for both desktop and web modes:\nsudo apt install pgadmin4\n\n# Install for desktop mode only:\nsudo apt install pgadmin4-desktop\n\n# Install for web mode only: \nsudo apt install pgadmin4-web \n\n# Configure the webserver, if you installed pgadmin4-web:\nsudo \/usr\/pgadmin4\/bin\/setup-web.sh<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Abrimos la aplicaci\u00f3n<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"437\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_065-1024x437.png\" alt=\"\" class=\"wp-image-16643\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_065-1024x437.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_065-300x128.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_065-768x328.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_065-1536x655.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_065.png 1906w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y agregamos un nuevo servidor<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"716\" height=\"626\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_066.png\" alt=\"\" class=\"wp-image-16644\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_066.png 716w, https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_066-300x262.png 300w\" sizes=\"(max-width: 716px) 100vw, 716px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Agregamos<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"707\" height=\"562\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_067.png\" alt=\"\" class=\"wp-image-16648\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_067.png 707w, https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_067-300x238.png 300w\" sizes=\"(max-width: 707px) 100vw, 707px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>PASS: $Ska198<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"712\" height=\"564\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_068.png\" alt=\"\" class=\"wp-image-16649\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_068.png 712w, https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_068-300x238.png 300w\" sizes=\"(max-width: 712px) 100vw, 712px\" \/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y con esto podemos ingresar<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"461\" src=\"https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_069-1024x461.png\" alt=\"\" class=\"wp-image-16651\" srcset=\"https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_069-1024x461.png 1024w, https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_069-300x135.png 300w, https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_069-768x345.png 768w, https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_069-1536x691.png 1536w, https:\/\/sada.services\/wp-content\/uploads\/2024\/05\/Seleccion_069.png 1874w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Install Node.js<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=yB4n_K7dZV8&amp;t=4212s\">https:\/\/www.youtube.com\/watch?v=yB4n_K7dZV8&amp;t=4212s<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/Schniz\/fnm\">https:\/\/github.com\/Schniz\/fnm<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/rust-lang\/rust\">https:\/\/github.com\/rust-lang\/rust<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">1 Rust<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Instalamos <\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>curl --proto '=https' --tlsv1.2 https:\/\/sh.rustup.rs -sSf | sh<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>RESULTADO<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>info: downloading installer\n\nWelcome to Rust!\n\nThis will download and install the official compiler for the Rust\nprogramming language, and its package manager, Cargo.\n\nRustup metadata and toolchains will be installed into the Rustup\nhome directory, located at:\n\n  \/home\/tavo\/.rustup\n\nThis can be modified with the RUSTUP_HOME environment variable.\n\nThe Cargo home directory is located at:\n\n  \/home\/tavo\/.cargo\n\nThis can be modified with the CARGO_HOME environment variable.\n\nThe cargo, rustc, rustup and other commands will be added to\nCargo's bin directory, located at:\n\n  \/home\/tavo\/.cargo\/bin\n\nThis path will then be added to your PATH environment variable by\nmodifying the profile files located at:\n\n  \/home\/tavo\/.profile\n  \/home\/tavo\/.bashrc\n\nYou can uninstall at any time with rustup self uninstall and\nthese changes will be reverted.\n\nCurrent installation options:\n\n\n   default host triple: x86_64-unknown-linux-gnu\n     default toolchain: stable (default)\n               profile: default\n  modify PATH variable: yes\n\n1) Proceed with standard installation (default - just press enter)\n2) Customize installation\n3) Cancel installation\n&gt;1\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cerramos la terminal y la volvemos abrir<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2 instalaci\u00f3n fnm<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ejecutamos<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/Schniz\/fnm\">https:\/\/github.com\/Schniz\/fnm<\/a><\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/fnm.vercel.app\/install | bash<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cerramos la terminal y ejecutamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>source \/home\/tavo\/.bashrc<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>verificamos que funcione<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>fnm --version\n\n# Resultado\nfnm 1.37.0<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Instalamos la version 18.17.0 LTS<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>fnm install 18.17.0<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>y la listamos<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>fnm list\n\n# Resultado\n* v18.17.0 default\n* system\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Y vemos que esta por defecto<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>node --version\nv18.17.0<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Instalaci\u00f3n de Directus<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># Instalamos dependencias\nsudo apt-get install python2 g++ build-essential\n\n\n\n# Ingresamos al directorio\ncd \/home\/tavo\/\n\n# Creamos el directorio\nmkdir gym_directus\n\n# ingresamos al directorio\ncd gym_directus\n\n# Instalamos isolated-vm\nnpm install isolated-vm\n\n#Instalamos directus\nnpm init directus-project@latest gym\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nos pide selecciona la base de datos seleccionamos postgresql<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&gt; npx\n&gt; cdp gym\n\n? Choose your database client (Use arrow keys)\n\u276f PostgreSQL \/ Redshift \n  CockroachDB (Beta) \n  MySQL \/ MariaDB \/ Aurora \n  SQLite \n  Microsoft SQL Server \n  Oracle Database <\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nos pide<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>? Choose your database client PostgreSQL \/ Redshift\n? Database Host: 127.0.0.1\n? Port: 5432\n? Database Name: directus\n? Database User: directus\n? Database Password: $Ska198\n? Enable SSL: (y\/N) N\nCreate your first admin user:\n\n? Email gustavo.matamoros@gmail.com\n? Password $Ska198\nYour project has been created at \/home\/tavo\/directus\/gym.\n\nThe configuration can be found in \/home\/tavo\/directus\/gym\/.env\n\nStart Directus by running:\n  cd \/home\/tavo\/directus\/gym\n  npx directus start\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Arranque con el sistema (no sirvio)<\/h2>\n\n\n\n<p><a href=\"https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-set-up-a-node-js-application-for-production-on-ubuntu-20-04-es\">https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-set-up-a-node-js-application-for-production-on-ubuntu-20-04-es<\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo npm install pm2@latest -g\n\n#Actualizar\nnpm install -g npm@10.8.2\n\n# Dentro del directorio de gym\ncd \/home\/tavo\/gym_directus\/gym\/\n\n# lo mandamos agregar pm2\npm2 start npx --name \"directus\" -- directus start\n\n# indicamos que arraque con el sistema operativo\npm2 startup systemd\n\n# este comando devuelve un comando que debemos ejecutar\nsudo env PATH=$PATH:\/home\/tavo\/.local\/share\/fnm\/node-versions\/v18.17.0\/installation\/bin \/usr\/local\/lib\/node_modules\/pm2\/bin\/pm2 startup systemd -u tavo --hp \/home\/tavo\n\n# Mandamos a guardar\npm2 save<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Forma 2<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># Creamos script\nnano \/home\/tavo\/start_directus.sh\n\n# Le agregamos\n\n#!\/bin\/bash\ncd \/home\/tavo\/gym_directus\/gym\nnpx directus start\n\n# le damos permisos\nchmod +x \/home\/tavo\/start_directus.sh\n\n# Abrimos crontab\ncrontab -e\n\n# agregamos\n@reboot \/home\/tavo\/start_directus.sh<\/code><\/pre>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Certificado Letsencrypt<\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># Ya debemos tener creado los dominios \n# directus.sada.services\n# api.directus.sada.services\n# Dentro de godaddy\n\n# Creamos el virtualhost\nnano \/etc\/apache2\/sites-available\/directus.sada.services.conf\n\n#Agregamos\n&lt;VirtualHost *:80>\n    ServerName directus.sada.services\n    ServerAlias www.directus.sada.services\n\n    ProxyPass \/ http:\/\/127.0.0.1:8055\/\n    ProxyPassReverse \/ http:\/\/127.0.0.1:8055\/\n&lt;\/VirtualHost>\n\n# Habilitamos el sitio\ncd \/etc\/apache2\/sites-available\/\na2ensite directus.sada.services.conf\n\n# Creamos certificado\nsudo certbot --apache\n\n# Resultado\nSaving debug log to \/var\/log\/letsencrypt\/letsencrypt.log\n\nWhich names would you like to activate HTTPS for?\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n1: sada.services\n2: demo.sada.services\n3: www.demo.sada.services\n4: directus.sada.services\n5: www.directus.sada.services\n6: gym.sada.services\n7: www.gym.sada.services\n8: nube.sada.services\n9: www.nube.sada.services\n10: sae2.sada.services\n11: www.sae2.sada.services\n12: sigetic.sada.services\n13: www.sigetic.sada.services\n14: www.sada.services\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nSelect the appropriate numbers separated by commas and\/or spaces, or leave input\nblank to select all options shown (Enter 'c' to cancel): 4 5\nRequesting a certificate for directus.sada.services and www.directus.sada.services\n\nSuccessfully received certificate.\nCertificate is saved at: \/etc\/letsencrypt\/live\/directus.sada.services\/fullchain.pem\nKey is saved at:         \/etc\/letsencrypt\/live\/directus.sada.services\/privkey.pem\nThis certificate expires on 2024-10-20.\nThese files will be updated when the certificate renews.\nCertbot has set up a scheduled task to automatically renew this certificate in the background.\n\nDeploying certificate\nSuccessfully deployed certificate for directus.sada.services to \/etc\/apache2\/sites-available\/directus.sada.services-le-ssl.conf\nSuccessfully deployed certificate for www.directus.sada.services to \/etc\/apache2\/sites-available\/directus.sada.services-le-ssl.conf\nCongratulations! You have successfully enabled HTTPS on https:\/\/directus.sada.services and https:\/\/www.directus.sada.services\n\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nIf you like Certbot, please consider supporting our work by:\n * Donating to ISRG \/ Let's Encrypt:   https:\/\/letsencrypt.org\/donate\n * Donating to EFF:                    https:\/\/eff.org\/donate-le\n\n# Revisamos que el certobot nueve automaticamente\nsudo systemctl status certbot.timer\n\n# Abrimos el archivo \nnano \/home\/tavo\/gym_directus\/gym\/.env\n\n# Agregamos la lineas\nDIRECTUS_APP_URL=\"https:\/\/directus.sada.services\"\nDIRECTUS_API_URL=\"https:\/\/api.directus.sada.services\"\n\n# Abrimos el archivo\nnano \/etc\/apache2\/sites-available\/directus.sada.services-le-ssl.conf\n\n# Y le agregamos\nHeader always set Strict-Transport-Security \"max-age=31536000; includeSubDomains\"<\/code><\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Postgres Crear usuario postgres Crear Base de Datos Crear usuario Linux para ingresar a la BD Instalar pgAdmin Install Node.js 1 Rust 2 instalaci\u00f3n fnm Instalaci\u00f3n de Directus Arranque con el sistema (no sirvio) https:\/\/www.digitalocean.com\/community\/tutorials\/how-to-set-up-a-node-js-application-for-production-on-ubuntu-20-04-es Forma 2 Certificado Letsencrypt<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[630],"tags":[631],"class_list":["post-16626","post","type-post","status-publish","format-standard","hentry","category-directus","tag-directus"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/16626","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=16626"}],"version-history":[{"count":30,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/16626\/revisions"}],"predecessor-version":[{"id":16700,"href":"https:\/\/sada.services\/index.php?rest_route=\/wp\/v2\/posts\/16626\/revisions\/16700"}],"wp:attachment":[{"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=16626"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=16626"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sada.services\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=16626"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}