[i-Diário] - INSTALAÇÃO COMPLETA E ATUALIZADA NO MODO DE PRODUÇÃO EM UMA VPS COM UBUNTU 22.04

Este guia detalha o processo de instalação do i-Diario em um servidor VPS com Ubuntu 22.04, utilizando PostgreSQL 15 e Ruby 2.6.6, incluindo todas as dependências e configurações necessárias para evitar erros de compilação e conexão.

Passo 1: Configuração Inicial do Servidor

Conecte-se ao seu servidor e atualize o sistema. Em seguida, configure o ambiente para evitar interrupções e aumentar os limites do sistema de arquivos.

# Atualiza os pacotes do sistema
sudo apt update && sudo apt upgrade -y

Configura o bash para execuções não interativas

echo ‘export DEBIAN_FRONTEND=noninteractive’ >> ~/.bashrc
source ~/.bashrc

Aumenta o limite de monitoramento de arquivos (evita erros com Yarn/Webpack)

echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

Passo 2: Instalação de TODAS as Dependências do Sistema

Instale de uma só vez todas as ferramentas de compilação e bibliotecas necessárias para o Ruby, PostgreSQL e outras gems. Esta etapa já inclui as correções para zlib e readline.

sudo apt install -y curl wget git build-essential libpq-dev shared-mime-info redis-server zlib1g-dev libreadline-dev

  • zlib1g-dev: Necessário para o Ruby lidar com arquivos compactados (gems).

  • libreadline-dev: Essencial para a interatividade do terminal em ferramentas como byebug.

Passo 3: Instalação e Configuração do PostgreSQL 15

Adicione o repositório oficial do PostgreSQL para instalar a versão 15.

# Adiciona o repositório do PostgreSQL
sudo sh -c ‘echo “deb [ Index of /pub/repos/apt/ ]( Index of /pub/repos/apt/ ) $(lsb_release -cs)-pgdg main” > /etc/apt/sources.list.d/pgdg.list’
wget --quiet -O - [https://www.postgresql.org/media/keys/ACCC4CF8.asc\](https://www.postgresql.org/media/keys/ACCC4CF8.asc) | sudo apt-key add -

Instala o PostgreSQL 15

sudo apt update
sudo apt install -y postgresql-15 postgresql-contrib-15

Habilita e inicia o serviço

sudo systemctl enable postgresql
sudo systemctl start postgresql

Cria o usuário ‘idiario’ no banco de dados

sudo -u postgres createuser idiario --superuser
sudo -u postgres psql -c “ALTER USER idiario WITH PASSWORD ‘idiario’;”

Passo 4: Instalação do OpenSSL 1.1.1 (Compilação Manual)

O Ruby 2.6.6 requer o OpenSSL 1.1, que não é o padrão no Ubuntu 22.04. Portanto, compilamos e instalamos manualmente.

mkdir ~/openssl
cd ~/openssl
wget [https://www.openssl.org/source/openssl-1.1.1w.tar.gz\](https://www.openssl.org/source/openssl-1.1.1w.tar.gz)
tar -xzvf openssl-1.1.1w.tar.gz
cd openssl-1.1.1w
./config --prefix=/opt/openssl-1.1 --openssldir=/opt/openssl-1.1
make -j$(nproc)
sudo make install
cd ~

Passo 5: Configuração do Ambiente Shell (.bashrc)

Vamos configurar de uma vez só o rbenv e a variável de ambiente SSL_CERT_FILE para que o Ruby encontre os certificados de segurança do sistema.

# Adiciona as configurações do rbenv e a variável SSL ao .bashrc
echo ‘’ >> ~/.bashrc
echo ‘# RBENV CONFIG’ >> ~/.bashrc
echo ‘export PATH=“$HOME/.rbenv/bin:$PATH”’ >> ~/.bashrc
echo ‘eval “$(rbenv init -)”’ >> ~/.bashrc
echo ‘’ >> ~/.bashrc
echo ‘# SSL CERTIFICATE CONFIG FOR CUSTOM RUBY/OPENSSL’ >> ~/.bashrc
echo ‘export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt’ >> ~/.bashrc

Recarrega o shell

source ~/.bashrc

Passo 6: Instalação do Ruby 2.6.6 e Bundler

Instale o rbenv e, em seguida, o Ruby, apontando para a versão correta do OpenSSL. Como as dependências já foram instaladas no Passo 2, a compilação ocorrerá sem erros.

# Instala o rbenv e o ruby-build
git clone [ GitHub - rbenv/rbenv: Manage your app's Ruby environment ]( GitHub - rbenv/rbenv: Manage your app's Ruby environment ) ~/.rbenv
git clone [ GitHub - rbenv/ruby-build: A tool to download, compile, and install Ruby on Unix-like systems. ]( GitHub - rbenv/ruby-build: A tool to download, compile, and install Ruby on Unix-like systems. ) ~/.rbenv/plugins/ruby-build
source ~/.bashrc

Instala o Ruby 2.6.6

RUBY_CONFIGURE_OPTS=“–with-openssl-dir=/opt/openssl-1.1” rbenv install 2.6.6
rbenv global 2.6.6

Atualiza o RubyGems e instala a versão correta do Bundler

gem update --system
gem install bundler -v 2.4.22

Verifica a versão do Ruby

ruby -v

Passo 7: Instalação do Node.js 14 e Yarn

Instale a versão específica do Node.js requerida pelo i-Diario usando o NVM (Node Version Manager).

curl -o- [https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh\](https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh) | bash
source ~/.bashrc
nvm install 14
nvm use 14
npm install -g yarn

Passo 8: Instalação do i-Diario

Clone o repositório e instale as dependências do projeto com Bundler e Yarn.

git clone [ GitHub - portabilis/i-diario: Lançando o maior software livre de educação do Brasil! ]( GitHub - portabilis/i-diario: Lançando o maior software livre de educação do Brasil! )
cd i-diario
bundle install
yarn install

Passo 9: Configuração do Banco de Dados e Arquivos

Copie os arquivos de exemplo e gere o secrets.yml com a chave da aplicação.

cp config/database.sample.yml config/database.yml
cp public/404.html.sample public/404.html
cp public/500.html.sample public/500.html

Gera o arquivo de segredos (agora deve funcionar sem erros)

echo -e “development:\n secret_key_base: \`bundle exec rails secret\`\n REDIS_URL: ‘redis://localhost:6379/0’” > config/secrets.yml

Passo 10: Finalização da Instalação (Banco de Dados)

Crie o banco de dados, execute as migrações e configure a entidade inicial.

bundle exec rails db:create
bundle exec rails db:migrate
bundle exec rails entity:setup NAME=idiario DOMAIN=$(hostname -I | awk ‘{print $1}’) DATABASE=idiario
bundle exec rails entity:admin:create NAME=idiario ADMIN_PASSWORD=A123456789$

Passo 11: Execução do i-Diario

Para rodar a aplicação, você precisará de 3 terminais diferentes no seu servidor.

Terminal 1: Puma (Servidor Web)

cd ~/i-diario
bundle exec rails server -b 0.0.0.0 -p 3000

Terminal 2: Sidekiq (Sincronização)

cd ~/i-diario
bundle exec sidekiq -q synchronizer_enqueue_next_job -c 1 --logfile log/sidekiq.log

Terminal 3: Sidekiq (Demais Filas)

cd ~/i-diario
bundle exec sidekiq -c 10 --logfile log/sidekiq.log

Primeiro Acesso

Acesse http://SEU_IP_DO_SERVIDOR:3000 em seu navegador.

  • Usuário: admin

  • Senha: A123456789$