Como instalar facilmente Redmine usando Imagens Docker

Nota: Veja também este post de acompanhamento sobre como usar temas personalizados nesta configuração e este post de acompanhamento sobre como fazer backup do Redmine usando esta configuração.

Este tutorial mostra a você passo-a-passo o método mais fácil de configurar uma instalação fresca de redmine que eu encontrei até agora. Os comandos foram testados no Ubuntu 18.04, mas eles devem funcionar com modificificação mínima em outras distribuições baseadas em DEB

Instalando Docker & Docker-Compose

Por favor siga as instruções em Como instalar docker e docker-compose no Ubuntu em 30 segundos

Criando o diretório & configuração docker-compose

Instalaremos redmine em /var/lib/redmine que hospedará os diretórios de dados e o script docker-compose.

create_redmine_dirs.sh
# Criar diretórios
sudo mkdir /var/lib/redmine
sudo mkdir -p /var/lib/redmine/redmine_data /var/lib/redmine/mariadb_data
# Definir permissões corretas para os diretórios
sudo chown -R $USER:docker /var/lib/redmine
sudo chown -R 1001:1001 /var/lib/redmine/redmine_data /var/lib/redmine/mariadb_data

A seguir, criaremos /var/lib/redmine/docker-compose.yml.

Há algumas coisas que você precisa mudar aqui:

  • Defina REDMINE_EMAIL para o email do usuário admin que você quer usar (usualmente isso é seu email!)
  • Defina as credenciais SMTP (SMTP_HOST, SMTP_PORT, SMTP_USER e SMTP_PASSWORD) para um servidor SMTP válido. SMTP_TLS padrão é *true -*no caso raro que
  • A configuração de portas, neste caso '3718:3000' significa que Redmine será mapeado para a porta 3718 no PC local. Esta porta é escolhida um tanto arbitrariamente - já que executaremos redmine atrás de um proxy reverso nginx, a porta não precisa ser qualquer porta em particular (contanto que você use a mesma porta em todo lugar), mas pode não ser usada por qualquer outra coisa. Você pode usar qualquer porta aqui, desde que não seja usada para qualquer outra coisa. Deixe 3000 como está e apenas mude 3718 se necessário.

Note que você não precisa mudar REDMINE_PASSWORD - quando você faz login pela primeira vez, redmine forçará você a mudar a senha de qualquer maneira.

docker-compose.redmine.yml
services:
  mariadb:
    image: 'bitnami/mariadb:latest'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    volumes:
      - '/var/lib/redmine/mariadb_data:/bitnami'
  redmine:
    image: 'bitnami/redmine:latest'
    environment:
      - REDMINE_USERNAME=admin
      - REDMINE_PASSWORD=redmineadmin
      - REDMINE_EMAIL=me@gmail.com
      - SMTP_HOST=smtp.gmail.com
      - SMTP_PORT=25
      - SMTP_USER=me@gmail.com
      - SMTP_PASSWORD=yourGmailPassword
    ports:
      - '3718:3000'
    volumes:
      - '/var/lib/redmine/redmine_data:/bitnami'
    depends_on:
      - mariadb

Configurando o serviço systemd

A seguir, configuraremos o serviço systemd em /etc/systemd/system/redmine.service.

Defina User=... para seu usuário atual na seção [Service].

redmine.service
[Unit]
Description=Redmine
Requires=docker.service
After=docker.service

[Service]
Restart=always
User=uli
Group=docker
# Desligar container (se rodando) quando a unit é parada
ExecStartPre=/usr/local/bin/docker-compose -f /var/lib/redmine/docker-compose.yml down -v
# Iniciar container quando a unit é iniciada
ExecStart=/usr/local/bin/docker-compose -f /var/lib/redmine/docker-compose.yml up
# Parar container quando a unit é parada
ExecStop=/usr/local/bin/docker-compose -f /var/lib/redmine/docker-compose.yml down -v

[Install]
WantedBy=multi-user.target

Após criar o arquivo, podemos habilitar e iniciar o serviço redmine:

enable_start_redmine.sh
sudo systemctl enable redmine
sudo systemctl start redmine

A saída de sudo systemctl start redmine deve ser vazia. Caso seja

systemd_start_error.txt
Job for redmine.service failed because the control process exited with error code.
See "systemctl status redmine.service" and "journalctl -xe" for details.

depure o problema usando journalctl -xe e journalctl -e

A primeira inicialização usualmente demora cerca de 3 minutos, então pegue uma xícara de café.

Agora você pode verificar se redmine está rodando usando

check_redmine_wget.sh
wget -qO- http://localhost:3718/

(se você mudou a configuração de porta antes, você precisa usar sua porta customizada na URL).

Se funcionou, isso mostrará uma grande saída HTML, terminando com

redmine_index_sample.html
[...]
<div id="footer">
  <div class="bgl"><div class="bgr">
    Powered by <a href="https://www.redmine.org/">Redmine</a> &copy; 2006-2018 Jean-Philippe Lang
  </div></div>
</div>
</div>
</div>

</body>
</html>

Se a saída está vazia, tente wget -O- http://localhost:3718/ para ver a mensagem de erro

Configurando o proxy reverso nginx (opcional mas recomendado)

Usaremos nginx para proxear as requisições de um certo domínio (Usar Apache, se você já o usa, também é possível mas está fora do escopo deste tutorial dizer como fazer isso). Instale-o usando

install_nginx.sh
sudo apt -y install nginx

Primeiro, você precisará de um nome de domínio com DNS configurado. Para este exemplo, assumiremos que seu nome de domínio é redmine.techoverflow.net ! Você precisa mudá-lo para seu nome de domínio!

Primeiro, criaremos o arquivo de configuração em /etc/nginx/sites-enabled/redmine.conf. Lembre-se de substituir redmine.techoverflow.net pelo seu nome de domínio! Se você usa uma porta diferente de 3718, substitua-a também.

redmine.nginx.conf
server {
  listen 80;
  server_name redmine.techoverflow.net;

  access_log /var/log/nginx/redmine.access_log;
  error_log /var/log/nginx/redmine.error_log info;

  location / {
    proxy_pass http://127.0.0.1:3718; # docker-compose encaminhado
    proxy_read_timeout 3600s;
    proxy_http_version 1.1;
  }

}

Agora execute sudo nginx -t para testar se há quaisquer erros no arquivo de configuração. Se tudo estiver bem, você verá

nginx_test_output.txt
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Uma vez que você tiver corrigido todos os erros, se houver, execute sudo service nginx reload para aplicar a configuração.

Teste a configuração navegando para seu nome de domínio no navegador. Você deve ver a interface do redmine:

Interface web do Redmine após instalação

Protegendo o proxy reverso nginx usando Let’s Encrypt

Primeiro precisamos instalar certbot e o plugin nginx do certbot para criar & instalar o certificado no nginx:

install_certbot.sh
sudo apt -y install python3-certbot python3-certbot-nginx

Felizmente certbot automatiza a maior parte do processo de instalação & configuração SSL e do certificado. Execute

certbot_nginx.sh
sudo certbot --nginx

Ele pedirá que você insira seu endereço de Email e concorde com os termos de serviço e se você quer receber a newsletter da EFF.

Após isso, certbot pedirá que você selecione o nome de domínio correto:

certbot_select_names.txt
Which names would you like to activate HTTPS for?
-------------------------------------------------------------------------------
1: redmine.techoverflow.net
-------------------------------------------------------------------------------
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel):

Neste caso, há apenas um nome de domínio (haverá mais se você tiver mais domínios ativos no nginx!).

Portanto, insira 1 e pressione enter. certbot agora gerará o certificado. Em caso de sucesso você verá

certbot_deploy_output.txt
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/redmine.techoverflow.net.conf

Agora ele perguntará se você quer redirecionar todas as requisições para HTTPS automaticamente:

certbot_redirect_choice.txt
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Escolha Redirect aqui: Digite 2 e pressione enter. Agora você pode fazer login no redmine e terminar a instalação.

Você precisa renovar o certificado a cada 3 meses para que ele permaneça válido, e execute sudo service nginx reload depois para usar o novo certificado. Se você falhar em fazer isso, usuários verão mensagens de erro de certificado expirado e não poderão acessar Redmine facilmente! Veja este post para detalhes sobre como automatizar em grande parte este processo!

Configurando Redmine

Vá para seu nome de domínio (se você seguiu as instruções acima, ele deve automaticamente redirecioná-lo para HTTPS). Clique Login no topo direita e faça login com o nome de usuário admin e a senha padrão redmineadmin. No primeiro login, ele requererá que você mude a senha para uma nova - e mais segura.

Eu não descreverei em detalhes como configurar Redmine para seu projeto. No entanto há duas coisas que você deve cuidar imediatamente após o primeiro login:

  1. Configure o nome de domínio correto: Vá para Administration -> Settings e defina Host name and path para seu nome de domínio, e.g. redmine.techoverflow.net. Defina Protocol para HTTPS. Você também pode definir um nome customizado para sua instalação Redmine sob Application Title
  2. Ainda sob Administration -> Settings, vá para a aba Email Notifications, defina um endereço de email de remetente apropriado sob Emission email address (usualmente você usaria redmine@yourdomainname.tld aqui, mas você pode querer usar seu nome de usuário SMTP para alguns provedores SMTP como GMail)
  3. Role para baixo até o fundo da página Email Notifications e clique Send a test email que enviará um email de teste para o endereço de email do usuário atual do redmine. A menos que você o tenha mudado, o padrão é o endereço configurado em REDMINE_EMAIL em /var/lib/redmine/docker-compose.yml.

Caso o email não funcione, mude SMTP_...=... em /var/lib/redmine/docker-compose.yml mas você também tem que mudá-lo em /var/lib/redmine/redmine_data/redmine/conf/configuration.yml ! Após fazer as mudanças, reinicie redmine com

restart_redmine.sh
sudo systemctl restart redmine

que usará a nova configuração do arquivo de configuração.

Bloquear acesso à porta encaminhada usando ufw (opcional)

ufw é um Firewall simples para Ubuntu. Use sudo apt install ufw para instalá-lo e sudo ufw enable para ativá-lo. A configuração padrão permitirá SSH mas bloqueará outras portas, incluindo porta 3718 ou qualquer outra porta customizada que você possa ter usado.

Para habilitá-lo, use

ufw_enable_and_allow.sh
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https

Lembre-se de adicionar quaisquer portas que você precisa ter abertas à lista também. Veja a documentação ufw para mais informação.


Check out similar posts by category: Contêineres Docker Linux Project Management