O Redmine é uma ferramenta robusta e amplamente reconhecida no mundo do desenvolvimento de software para gestão de projetos e acompanhamento de bugs. Por ser open source e baseada na plataforma Ruby on Rails, ele oferece flexibilidade total, permitindo que equipes personalizem fluxos de trabalho, relatórios e integrações. Instalar o Redmine em um servidor próprio (self-hosted) garante controle total sobre os dados sensíveis do projeto, elimina custos de licença por usuário e permite a integração profunda com outros serviços de infraestrutura on-premise.
Este guia técnico detalha o processo de instalação e configuração do Redmine em um ambiente Linux Debian 12 (Bookworm). O foco é criar uma stack estável utilizando PostgreSQL como banco de dados, Passenger como servidor de aplicação e Nginx como proxy reverso. Esta combinação oferece melhor desempenho e estabilidade comparada ao uso padrão do WEBrick para ambientes de produção.
Pré-requisitos de Infraestrutura
Antes de iniciar a instalação, é fundamental ter uma infraestrutura adequada. Para um time pequeno até médio, recomenda-se o uso de uma VPS com pelo menos 2 vCPUs e 4GB de RAM. O sistema operacional deve ser limpo, sem conflitos de pacotes pré-instalados que possam interferir nas dependências do Ruby ou do banco de dados.
O primeiro passo é atualizar o sistema operacional para garantir que todos os patches de segurança estejam aplicados e que as listas de pacotes estejam sincronizadas. Execute os comandos abaixo com privilégios de root ou via sudo:
apt update
apt upgrade -y
Em seguida, instale as dependências básicas do sistema necessárias para compilar extensões Ruby e gerenciar o banco de dados. Utilize o seguinte comando para instalar os pacotes essenciais:
apt install -y git curl wget build-essential libpq-dev libreadline-dev libssl-dev zlib1g-dev libcurl4-openssl-dev libyaml-dev libxml2-dev libxslt1-dev libcurl4-openssl-dev autoconf bison libncurses5-dev libgdbm-dev libnss3-dev libldap2-dev default-libmysqlclient-dev
Instalação e Configuração do Ruby
O Redmine é construído sobre o framework Ruby on Rails. Para evitar conflitos de versões entre o sistema operacional e as gems do Redmine, a prática recomendada é utilizar um gerenciador de versões do Ruby, como o rbenv ou rvm. Neste tutorial, utilizaremos o rbenv por sua leveza e controle granular.
Inicie a instalação do rbenv clonando o repositório oficial na pasta home do usuário root (para fins didáticos) ou de um usuário dedicado:
cd ~
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc
Instale o plugin de compilação do ruby-build, que facilita a instalação das versões do Ruby:
cd ~/.rbenv/plugins/rbenv-doctor
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
Agora, instale uma versão estável do Ruby. O Redmine 6.x recomenda o uso do Ruby 3.2 ou superior. Verifique a versão mais recente compatível e instale:
rbenv install 3.2.2
rbenv global 3.2.2
ruby -v
Com o Ruby configurado, instale o bundler, que gerencia as dependências do projeto Redmine:
gem install bundler --no-document
Configuração do Banco de Dados PostgreSQL
O PostgreSQL é o banco de dados recomendado para instalações robustas do Redmine. Instale o servidor e as ferramentas cliente:
apt install -y postgresql postgresql-contrib
Inicie o serviço e verifique seu status:
systemctl start postgresql
systemctl enable postgresql
Crie um usuário dedicado para o Redmine. Isso é uma prática de segurança crítica. Substitua senha_secreta por uma senha forte e complexa:
su - postgres
psql
Dentro do prompt do psql, execute os seguintes comandos SQL:
CREATE USER redmine WITH PASSWORD 'senha_secreta';
CREATE DATABASE redmine OWNER redmine;
\q
exit
Instalação e Configuração do Redmine
Crie um diretório dedicado para a aplicação e baixe a versão estável mais recente. Verifique o site oficial para obter o link de download exato da versão mais recente, mas o padrão é:
cd /var/www
wget https://www.redmine.org/releases/redmine-6.0.3.tar.gz
tar -xzf redmine-6.0.3.tar.gz
mv redmine-6.0.3 redmine
chown -R www-data:www-data redmine
Navegue até o diretório da aplicação e configure as gems necessárias. É crucial definir a variável de ambiente para usar PostgreSQL:
cd /var/www/redmine
export BUNDLE_WITHOUT="development test mysql sqlite"
bundle install --without development test mysql sqlite
Agora, edite o arquivo de configuração do banco de dados. Copie o modelo e ajuste as credenciais:
cp config/database.yml.example config/database.yml
nano config/database.yml
No arquivo database.yml, localize a seção production e altere para:
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "senha_secreta"
encoding: utf8
Gere a chave secreta do Rails, que é essencial para sessões e cookies seguros:
bundle exec rake generate_secret_token
Por fim, inicialize o banco de dados com as tabelas padrão e carregue os dados iniciais (idioma, tipos de problema, etc.):
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production REDMINE_LANG=pt-BR bundle exec rake redmine:load_default_data
O último comando solicitará o idioma. Digite pt-BR e pressione Enter para configurar a interface em português brasileiro.
Configuração do Servidor Web (Nginx) e Passenger
Para produção, não use o servidor de desenvolvimento. Utilize o Nginx junto com o Phusion Passenger, que gerencia os processos Ruby de forma eficiente.
Instale o repositório oficial do Phusion Passenger para garantir a versão mais recente:
apt install -y dirmngr gnupg
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
sh -c 'echo "deb https://oss-binaries.phusionpassenger.com/apt/passenger bookworm main" > /etc/apt/sources.list.d/passenger.list'
apt update
apt install -y libapache2-mod-passenger nginx
Configure o Nginx para servir o Redmine. Crie um novo arquivo de configuração no diretório sites-available:
nano /etc/nginx/sites-available/redmine
Cole a seguinte configuração, ajustando o caminho se necessário:
server {
listen 80;
server_name seu-dominio.com www.seu-dominio.com; # Substitua pelo seu domínio ou IP
root /var/www/redmine/public;
passenger_enabled on;
rails_app_version 6.0;
# Configurações de segurança e performance
client_max_body_size 10m;
location /assets {
expires max;
add_header Cache-Control public;
}
# Log files
access_log /var/log/nginx/redmine.access.log;
error_log /var/log/nginx/redmine.error.log;
}
# Redirecionar HTTP para HTTPS após configurar o SSL (opcional neste passo inicial)
server {
listen 80;
server_name seu-dominio.com www.seu-dominio.com;
return 301 https://$host$request_uri;
}
Ative a configuração e teste a sintaxe do Nginx:
ln -s /etc/nginx/sites-available/redmine /etc/nginx/sites-enabled/
nginx -t
Se o teste for bem-sucedido, reinicie o serviço:
systemctl restart nginx
Habilitação de SSL com Let's Encrypt
A segurança é primordial em ferramentas de gestão. Instale o Certbot para obter certificados SSL gratuitos:
apt install -y certbot python3-certbot-nginx
certbot --nginx -d seu-dominio.com -d www.seu-dominio.com
O assistente do Certbot irá modificar automaticamente a configuração do Nginx para redirecionar todo o tráfego para HTTPS e configurar os certificados. Após a conclusão, verifique se o site está acessível via https://.
Configurações Finais e Segurança
Após a instalação, é recomendável ajustar algumas configurações de segurança e funcionalidade no arquivo /var/www/redmine/config/configuration.yml. Crie o arquivo se ele não existir:
cp config/configuration.yml.example config/configuration.yml
nano config/configuration.yml
Ajuste as seguintes chaves conforme a necessidade da sua equipe:
- attachment_storage_path: Defina um diretório persistente para armazenar anexos de arquivos, garantindo que eles não sejam perdidos em reinicializações se o container ou servidor mudar.
- session_store_type: Certifique-se de que está configurado corretamente se houver balanceamento de carga futuro.
Configure o agendamento de tarefas em segundo plano (backlogs), como envio de emails notificados e limpeza de logs, utilizando o cron do sistema. Edite o crontab do usuário root:
crontab -e
Adicione a linha abaixo para rodar as tarefas a cada 5 minutos:
/5 * * * * cd /var/www/redmine && RAILS_ENV=production bundle exec rake redmine:send_reminders
Considerações sobre Manutenção e Backup
Manter um Redmine self-hosted exige compromisso com a manutenção. Estabeleça um rotina de backups que inclua tanto o banco de dados PostgreSQL quanto o diretório files/ da aplicação, onde os anexos são armazenados.
Para backup do banco de dados:
pg_dump -U redmine -h localhost -F c -f /backup/redmine_db_$(date +%F).dump redmine
Para backup dos arquivos:
tar -czf /backup/redmine_files_$(date +%F).tar.gz -C /var/www/redmine files/
Além disso, mantenha o sistema operacional e as gems do Ruby atualizados. O Redmine possui atualizações frequentes que corrigem vulnerabilidades de segurança. Sempre teste atualizações em um ambiente de homologação antes de aplicar em produção.
Ao seguir este guia, você estabelece uma base sólida para gestão de projetos on-premise. A flexibilidade do Redmine combinada com a infraestrutura controlada permite escalar conforme a maturidade da equipe de desenvolvimento e as necessidades específicas da organização.