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.
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.
Na seção de imagens, selecione Ubuntu, a versão utilizada para este tutorial.
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.
1.1. Configurando rede
Crie uma Virtual Cloud Network exclusiva para sua instância.
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.
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.
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.
No menu de Networking, clique na rede associada à sua VM.
Em IP Administration, clique em Edit para garantir um endereço IP para sua instância.
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.
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.
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).
Acesse a aba Security Rules e adicione as portas 80 e 443:
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
Exemplos de aplicações em produção
-
FitPlan
Plataforma de planos de treino e dietas personalizados. Utilizada como base para este tutorial. -
Boardgame Explorer
- Projeto de mostração para a gem bgg_remote, integrando facilmente com a API do BoardGameGeek.
- github: boardgame_explorer
Links úteis e documentação
- Oracle Cloud — Página principal para acessar e criar recursos na nuvem.
- Documentação Oracle Cloud — Guia oficial para todos os serviços da Oracle Cloud.
- Documentação do Docker — Guia oficial para instalação e uso do Docker.
- Guia oficial do Rails — Documentação para começar com Ruby on Rails.
- Documentação do Kamal — Guia completo para deploy com Kamal.