Instalação Strapi · 11 min read · Oct 19, 2025

Como Instalar o Strapi CMS no Ubuntu 22.04

Strapi é um sistema de gerenciamento de conteúdo (CMS) headless de código aberto, construído com JavaScript. Como outros CMS headless, o Strapi não vem com um frontend pronto para uso. Ele usa uma API para seu frontend, permitindo que você construa o site usando frameworks populares como React e Next.js. Baseado em um sistema de plugins, o Strapi é um CMS flexível cujo painel de administração e API são extensíveis - e cuja cada parte é personalizável para se adequar a qualquer caso de uso. O Strapi também possui um sistema de usuários embutido para gerenciar em detalhes o que os administradores e usuários finais têm acesso.

Neste tutorial, você aprenderá como instalar a versão comunitária do Strapi CMS em um servidor Ubuntu 22.04, juntamente com o Nginx como um servidor proxy reverso.

Pré-requisitos

  • Um servidor rodando Ubuntu 22.04.
  • Um usuário não-root com privilégios sudo.
  • Um nome de domínio totalmente qualificado (FQDN) como strapi.example.com.
  • Certifique-se de que tudo está atualizado. $ sudo apt update $ sudo apt upgrade
  • Alguns pacotes que seu sistema precisa. $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y Alguns desses pacotes podem já estar instalados em seu sistema.

Passo 1 - Configurar o Firewall

O primeiro passo é configurar o firewall. O Ubuntu vem com o ufw (Uncomplicated Firewall) por padrão.

Verifique se o firewall está rodando.

$ sudo ufw status

Você deve obter a seguinte saída.

Status: inactive

Permita a porta SSH para que o firewall não interrompa a conexão atual ao ativá-lo.

$ sudo ufw allow OpenSSH

Permita também as portas HTTP e HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Ative o Firewall

$ sudo ufw enable
Comando pode interromper conexões ssh existentes. Prosseguir com a operação (y|n)? y
Firewall está ativo e habilitado na inicialização do sistema

Verifique o status do firewall novamente.

$ sudo ufw status

Você deve ver uma saída semelhante.

Status: active

Para                         Ação      De
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Passo 2 - Instalar e Configurar o PostgreSQL

O Strapi funciona com PostgreSQL 11 e superior. O Ubuntu 22.04 vem com PostgreSQL 14 por padrão. Usaremos o PostgreSQL 15 para nosso tutorial.

Execute o seguinte comando para adicionar a chave GPG do PostgreSQL.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

Adicione o repositório APT à sua lista de fontes.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Atualize o repositório do sistema.

$ sudo apt update

Agora, você pode instalar o PostgreSQL usando o comando abaixo.

$ sudo apt install postgresql postgresql-contrib

O pacote postgresql-contrib contém algumas utilidades extras.

Verifique o status do serviço PostgreSQL.

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Wed 2022-12-28 18:03:03 UTC; 17s ago
   Main PID: 4119 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Dec 28 18:03:03 strapi systemd[1]: Starting PostgreSQL RDBMS...
Dec 28 18:03:03 strapi systemd[1]: Finished PostgreSQL RDBMS.

Você pode ver que o serviço está habilitado e rodando por padrão.

Inicie o shell do PostgreSQL.

$ sudo -i -u postgres psql

Crie o banco de dados Strapi.

postgres=# CREATE DATABASE strapidb;

Crie o usuário Strapi e escolha uma senha forte.

postgres-# CREATE USER strapiuser WITH PASSWORD 'Your_Password';

Mude o proprietário do banco de dados para o usuário Strapi.

postgres-# ALTER DATABASE strapidb OWNER TO strapiuser;

Saia do shell.

postgres-# \q

Verifique se suas credenciais funcionam.

$ psql --username strapiuser --password --host localhost strapidb
Password:
psql (15.1 (Ubuntu 15.1-1.pgdg22.04+1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

strapidb=>

Saia do shell digitando \q.

Passo 3 - Instalar o Node.js

O Ubuntu 22.04 vem com o Node v12, que está desatualizado. Vamos instalar a versão LTS mais recente do Node, que é a v18 no momento da redação deste tutorial.

Baixe o instalador do Node v18 do Nodesource.

$ curl -sL https://deb.nodesource.com/setup_18.x -o nodesource_setup.sh

Execute o script do instalador.

$ sudo bash nodesource_setup.sh

Instale o Node.js.

$ sudo apt install nodejs

Verifique a versão do Node.js.

$ node -v
v18.12.1

Exclua o arquivo do instalador.

$ rm nodesource_setup.sh

Passo 4 - Instalar o Strapi

Execute o seguinte comando para instalar o Strapi.

$ npx create-strapi-app@latest howtoforge-project
Need to install the following packages:
  [email protected]
Ok to proceed? (y) y

Digite y para prosseguir com a instalação. Em seguida, você será solicitado a escolher o tipo de instalação. Escolha Personalizado para prosseguir e responda às perguntas da seguinte forma.

? Choose your installation type Custom (manual settings)
? Choose your preferred language JavaScript
? Choose your default database client postgres
? Database name: strapidb
? Host: 127.0.0.1
? Port: 5432
? Username: strapiuser
? Password: Your_Password
? Enable SSL connection: No

Dependendo de suas necessidades, você pode escolher Typescript ou JavaScript como a linguagem para o Strapi.

Uma vez que a instalação esteja completa, você está pronto para construir seu projeto Strapi.

Mude para o diretório do projeto.

$ cd howtoforge-project

Execute o seguinte comando para construir o projeto, incluindo a interface de administração do Strapi.

$ NODE_ENV=production npm run build

Inicie o servidor Strapi usando o seguinte comando.

$ node ~/howtoforge-project/node_modules/.bin/strapi start

Sua aplicação deve ser visível na URL http://:1337. Mas primeiro, abra a porta no firewall.

$ sudo ufw allow 1337

Uma vez que você abra a URL, você deve obter a seguinte tela.

Strapi CMS Home

Pressione Ctrl + C no terminal para parar o servidor. Você deve excluir a regra do firewall porque não precisaremos dela.

$ sudo ufw delete allow 1337

Passo 5 - Instalar e Configurar o PM2

Em vez de iniciar o servidor manualmente, podemos usar o PM2 (Process Manager 2) para gerenciar o processo e criar um serviço systemd para o mesmo.

Mude para o diretório home.

$ cd ~

Instale o PM2.

$ sudo npm install pm2@latest -g

Crie e abra o arquivo de configuração do PM2 para edição.

$ sudo nano ecosystem.config.js

Cole o seguinte conteúdo no arquivo. Certifique-se de inserir o nome do diretório correto junto com as credenciais do Postgres.

module.exports = {
  apps: [
    {
      name: 'strapi',
      cwd: '/home/navjot/my-project',
      script: 'npm',
      args: 'start',
      env: {
        NODE_ENV: 'production',
        DATABASE_HOST: 'localhost',
        DATABASE_PORT: '5432',
        DATABASE_NAME: 'strapidb',
        DATABASE_USERNAME: 'strapiuser',
        DATABASE_PASSWORD: 'Your_Password',
      },
    },
  ],
};

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado ao terminar.

Execute sua instância Strapi em segundo plano usando o PM2.

$ pm2 start ecosystem.config.js

Você receberá a seguinte saída.

                        -------------

__/\\\\\\\\\____/\\\____________/\\\____/\\\\\\\_____  
 _\/\\\/////////\\\_\/\\\\\________/\\\\\__/\\\///////\\\___
  _\/\\\_______\/\\\_\/\\\//\\\____/\\\//\\\_\///______\//\\\__
   _\/\\\\\\\\\\\\\/__\/\\\///\\\/\\\/__\/\\\___________/\\\/___
    _\/\\\/////////____\/\\\__\///\\\/___\/\\\________/\\\//_____
     _\/\\\_____________\/\\\____\///_____\/\\\_____/\\\//________
      _\/\\\_____________\/\\\_____________\/\\\___/\\\/___________
       _\/\\\_____________\/\\\_____________\/\\\__/\\\\\\\\\\\\\__
        _\///______________\///______________\///__\///////////////__

                          Runtime Edition

        PM2 é um Gerenciador de Processos de Produção para aplicações Node.js
                     com um Balanceador de Carga embutido.

                Inicie e Daemonize qualquer aplicação:
                $ pm2 start app.js

                Balanceie 4 instâncias de api.js:
                $ pm2 start api.js -i 4

                Monitore em produção:
                $ pm2 monitor

                Faça o pm2 iniciar automaticamente na reinicialização do servidor:
                $ pm2 startup

                Para ir mais longe, confira:
                http://pm2.io/

                        -------------

[PM2] Spawning PM2 daemon with pm2_home=/home/navjot/.pm2
[PM2] PM2 Successfully daemonized
[PM2][WARN] Applications strapi not running, starting...
[PM2] App [strapi] launched (1 instances)
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? id  ? name      ? namespace   ? version ? mode    ? pid      ? uptime ? ?    ? status    ? cpu      ? mem      ? user
    ? watching ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
? 0   ? strapi    ? default     ? N/A     ? fork    ? 4824     ? 0s     ? 0    ? online    ? 0%       ? 31.9mb   ? navjot   ? disabled ?
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

Aplicações rodando sob o PM2 reiniciam automaticamente se falharem ou forem encerradas.

Crie um script de inicialização systemd usando o seguinte comando.

$ pm2 startup

Você receberá a seguinte saída.

[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot

Copie o comando da saída acima e execute-o.

$ sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u navjot --hp /home/navjot

Salve a lista de processos do PM2.

$ pm2 save

Seu serviço Strapi agora está rodando em segundo plano no modo de produção.

Passo 6 - Instalar o Nginx

O Ubuntu 22.04 vem com uma versão mais antiga do Nginx. Para instalar a versão mais recente, você precisa baixar o repositório oficial do Nginx.

Importe a chave de assinatura do Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Adicione o repositório para a versão estável do Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

Atualize os repositórios do sistema.

$ sudo apt update

Instale o Nginx.

$ sudo apt install nginx

Verifique a instalação.

$ nginx -v
nginx version: nginx/1.22.1

Inicie o servidor Nginx.

$ sudo systemctl start nginx

Passo 7 - Instalar SSL

Precisamos instalar o Certbot para gerar o certificado SSL. Você pode instalar o Certbot usando o repositório do Ubuntu ou pegar a versão mais recente usando a ferramenta Snapd. Usaremos a versão Snapd.

O Ubuntu 22.04 vem com o Snapd instalado por padrão. Execute os seguintes comandos para garantir que sua versão do Snapd esteja atualizada. Certifique-se de que sua versão do Snapd esteja atualizada.

$ sudo snap install core
$ sudo snap refresh core

Instale o Certbot.

$ sudo snap install --classic certbot

Use o seguinte comando para garantir que o comando Certbot seja executado criando um link simbólico para o diretório /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Execute o seguinte comando para gerar um Certificado SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d strapi.example.com

O comando acima fará o download de um certificado para o diretório /etc/letsencrypt/live/strapi.example.com em seu servidor.

Gere um certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Faça um teste do processo para verificar se a renovação do SSL está funcionando bem.

$ sudo certbot renew --dry-run

Se você não ver erros, está tudo pronto. Seu certificado será renovado automaticamente.

Passo 8 - Configurar o Nginx

Abra o arquivo /etc/nginx/nginx.conf para edição.

$ sudo nano /etc/nginx/nginx.conf

Adicione a seguinte linha antes da linha include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Crie e abra o arquivo /etc/nginx/conf.d/strapi.conf para edição.

$ sudo nano /etc/nginx/conf.d/strapi.conf

Cole o seguinte código nele.

server {
  # Redireciona qualquer requisição http para https
  listen         80;
  listen         [::]:80;
  server_name    strapi.example.com;
  return 301     https://$host$request_uri;
}

server {
  listen                    443 ssl http2;
  listen                    [::]:443 ssl http2;
  server_name               strapi.example.com;

  access_log                /var/log/nginx/strapi.access.log;
  error_log                 /var/log/nginx/strapi.error.log;

  # Configuração TLS
  ssl_certificate           /etc/letsencrypt/live/strapi.example.com/fullchain.pem;
  ssl_certificate_key       /etc/letsencrypt/live/strapi.example.com/privkey.pem;
  ssl_trusted_certificate   /etc/letsencrypt/live/strapi.example.com/chain.pem;
  ssl_protocols             TLSv1.2 TLSv1.3;

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
  ssl_prefer_server_ciphers on;
  ssl_session_cache         shared:SSL:50m;
  ssl_session_timeout       1d;

  # OCSP Stapling ---
  # busca registros OCSP da URL no ssl_certificate e os armazena em cache
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  location / {
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-Proto $scheme;
    proxy_set_header        X-Forwarded-Host $http_host;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass              http://127.0.0.1:1337;
  }
}

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado ao terminar.

Verifique a sintaxe do arquivo de configuração do Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reinicie o serviço Nginx.

$ sudo systemctl restart nginx

Agora você pode acessar o Strapi CMS pela URL https://strapi.example.com. Você verá a seguinte página que mostra que o Strapi está rodando em modo de produção.

Strapi Production Home

Visite a URL https://strapi.example.com/admin para criar um usuário administrador.

Strapi Admin User Create Page

Preencha seus dados de administrador e clique no botão Vamos começar para prosseguir para a tela do painel de administração.

Strapi Admin Dashboard

A partir daqui, você pode começar a criar conteúdo no Strapi.

Passo 9 - Atualizar o Strapi

O primeiro passo para atualizar o Strapi é parar o servidor.

$ cd ~
$ pm2 stop ecosystem.config.js

Mude para o diretório do projeto e abra o arquivo package.json para edição.

$ cd howtoforge-project
$ nano package.json

Atualize todos os números de versão do pacote Strapi para a versão estável mais recente. Você pode obter a versão mais recente disponível na página de lançamentos do GitHub do Strapi.

"devDependencies": {},
  "dependencies": {
    "@strapi/strapi": "4.5.5",
    "@strapi/plugin-users-permissions": "4.5.5",
    "@strapi/plugin-i18n": "4.5.5",
    "pg": "8.6.0"
  },

Aqui você precisa mudar 4.5.5 para a versão estável mais recente. Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado ao terminar.

Instale a versão atualizada.

$ npm install

Reconstrua o painel de administração.

$ NODE_ENV=production npm run build

Inicie o servidor novamente.

$ cd ~
$ pm2 start ecosystem.config.js

Sua instalação do Strapi agora está atualizada e rodando.

Conclusão

Isso conclui nosso tutorial sobre como instalar o Strapi CMS em um servidor Ubuntu 22.04 e Nginx como um servidor proxy reverso. Se você tiver alguma dúvida, poste nos comentários abaixo.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.