Este tutorial ensina como fazer o deploy de uma aplicação Rails na Oracle Cloud com Kamal, cobrindo desde a criação da instância até a publicação, com exemplos reais.

Pré-requisitos

  • Conta ativa na Oracle Cloud Infrastructure (OCI)
  • Docker instalado localmente
  • Kamal instalado localmente gem install kamal
  • Aplicação Rails pronta para produção

Se ainda não possui uma conta, acesse o site da Oracle Cloud e siga o processo de cadastro. O Free Tier oferece recursos gratuitos para testes e aprendizado.

1. Criando sua instância na Oracle Cloud

No painel da Oracle Cloud, navegue até Compute > Instances e clique em Create Instance. Escolha o sistema operacional (recomendo Ubuntu 24.04 Minimal), defina um nome para facilitar a identificação e siga as instruções para gerar e adicionar sua chave SSH.

Oracle Cloud Dashboard

Nessa etapa, você pode escolher o tipo de arquitetura (AMD ou Intel), o sistema operacional e o tipo de máquina (virtual ou bare metal). Para a maioria dos projetos web, uma VM padrão já é suficiente.

Caso queira utilizar outro sistema operacional, clique em Change image para selecionar uma imagem diferente.

Configuração da imagem

Na seção de imagens, selecione Ubuntu, a versão utilizada para este tutorial.

Configuração da imagem

Em image name recomendo utilizar o Ubuntu 24.04 Minimal, pois é leve, estável e ideal para servidores. Após selecionar, defina um nome para sua instância para facilitar a identificação no painel.

Nomeando instância

1.1. Configurando rede

Crie uma Virtual Cloud Network exclusiva para sua instância.

Configuração de rede

1.2. Gerando e adicionando a chave SSH

Para acessar sua VM de forma segura, gere uma chave SSH no seu computador local:

ssh-keygen -t ed25519 -C "oracle-cloud"

Pressione Enter para aceitar o local padrão e, se desejar, defina uma senha para a chave (ou deixe em branco). Isso criará dois arquivos: uma chave privada (que fica no seu computador) e uma chave pública (que será cadastrada na Oracle Cloud).

Para copiar a chave pública, utilize:

cat ~/.ssh/id_ed25519.pub

Exemplo de chave SSH: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFakeExampleKeyData1234567890 oracle-cloud

Ainda na etapa Networking, Cole a chave pública no campo indicado durante a criação da instância. Isso permitirá que apenas quem possuir a chave privada tenha acesso ao servidor via SSH, aumentando a segurança.

Campo para colar a chave pública na Oracle Cloud

1.3. Configurando o Boot Volume

O Boot Volume é o disco principal da sua VM. Para este tutorial, mantenha as opções padrão, sem personalizar tamanho ou criptografia avançada. Isso simplifica o processo e é suficiente para testes e projetos iniciais.

Configuração do Boot Volume

Antes de finalizar, revise todas as configurações da instância. Se necessário, ajuste recursos como CPU, memória e armazenamento conforme a demanda da sua aplicação e finalize a criação da sua maquina virtual.

2. Reservando o IP público

Garanta que sua instância possua um IP público. Para isso, acesse sua instância e, no menu Networking, selecione IP Administration. Em seguida, clique em Edit e marque as opções para reservar e associar o IP à sua VM.

Lista de instâncias

No menu de Networking, clique na rede associada à sua VM.

Seção de networking

Em IP Administration, clique em Edit para garantir um endereço IP para sua instância.

Administração de IP

Após acessar o Edit, marque as opções Reserved public IP e Create new Reserved IP Address. Assim, sua VM terá um IP público dedicado.

Editar endereço IP reservado

2.1 Liberando portas

Para que sua aplicação web seja acessível, é necessário liberar as portas 80 (HTTP) e 443 (HTTPS) no firewall da rede. No painel da Oracle Cloud, acesse https://cloud.oracle.com/networking ou pesquise por Virtual Cloud Networks.

Lista de Virtual Cloud Networks

Clique na sua rede virtual e vá até Security Lists. Edite a lista padrão e adicione regras de entrada para as portas 80 e 443, permitindo tráfego de qualquer origem (0.0.0.0/0).

Security Lists

Acesse a aba Security Rules e adicione as portas 80 e 443:

Adicionando regra de entrada

Para acessar a máquina, execute: ssh ubuntu@ip_publico_da_sua_instancia

Pronto! Sua instância está configurada para aceitar tráfego externo e pronta para receber o deploy da sua aplicação.

Fazendo o deploy de uma aplicação Rails com Kamal

Com a instância configurada e acessível, você pode prosseguir para o deploy da sua aplicação Rails utilizando o Kamal. Certifique-se de que sua aplicação esteja pronta para produção e siga os passos abaixo.

1. Preparando o ambiente

Para executar o deploy, é necessário que o Docker esteja instalado na máquina virtual. Como não temos acesso ao usuário root na Oracle Cloud, será necessário fazer o ajuste manual do servidor antes de usar o Kamal.

Execute os seguintes comandos via SSH na máquina virtual:

sudo apt update
sudo apt upgrade -y
sudo apt install -y docker.io curl git
sudo usermod -a -G docker ubuntu

Esses comandos irão atualizar o sistema, instalar o Docker, curl e git, além de adicionar o usuário ubuntu ao grupo docker para permitir a execução dos comandos.

Com o Docker instalado e o usuário ubuntu adicionado ao grupo docker, você terá todas as dependências necessárias configuradas para executar o deploy da sua aplicação Rails.

1.2. Configurando o Kamal e executando deploy

No diretório do seu projeto Rails, gere o arquivo de configuração do Kamal deploy.yml e ajuste os parâmetros principais:


service: my_application
image: my_application

servers:
  web:
    - YOUR_INSTANCE_IP

registry:
  server: localhost:5555

env:
  secret:
    - RAILS_MASTER_KEY

ssh:
  user: ubuntu

proxy:
  ssl: false
  host: IP_DA_SUA_INSTANCIA

asset_path: /rails/public/assets
builder:
  arch: amd64

Substitua YOUR_INSTANCE_IP pelo IP público reservado. Se usar domínio, ajuste o campo host e ative o ssl: true.
O usuário SSH deve permanecer ubuntu.

Com tudo configurado, execute o comando abaixo para iniciar o deploy.
kamal deploy

Pronto! Sua aplicação Rails foi implantada e está acessível via Oracle Cloud Infrastructure.

Exemplos de aplicações em produção

Links úteis e documentação