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.
# 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_dataA seguir, criaremos /var/lib/redmine/docker-compose.yml.
Há algumas coisas que você precisa mudar aqui:
- Defina
REDMINE_EMAILpara o email do usuário admin que você quer usar (usualmente isso é seu email!) - Defina as credenciais SMTP (
SMTP_HOST,SMTP_PORT,SMTP_USEReSMTP_PASSWORD) para um servidor SMTP válido.SMTP_TLSpadrã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. Deixe3000como está e apenas mude3718se 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.
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:
- mariadbConfigurando 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].
[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.targetApós criar o arquivo, podemos habilitar e iniciar o serviço redmine:
sudo systemctl enable redmine
sudo systemctl start redmineA saída de sudo systemctl start redmine deve ser vazia. Caso seja
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
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
[...]
<div id="footer">
<div class="bgl"><div class="bgr">
Powered by <a href="https://www.redmine.org/">Redmine</a> © 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
sudo apt -y install nginxPrimeiro, 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.
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: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulUma 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:
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:
sudo apt -y install python3-certbot python3-certbot-nginxFelizmente certbot automatiza a maior parte do processo de instalação & configuração SSL e do certificado. Execute
sudo certbot --nginxEle 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:
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á
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/redmine.techoverflow.net.confAgora ele perguntará se você quer redirecionar todas as requisições para HTTPS automaticamente:
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:
- Configure o nome de domínio correto: Vá para Administration -> Settings e defina
Host name and pathpara seu nome de domínio, e.g.redmine.techoverflow.net. DefinaProtocolparaHTTPS. Você também pode definir um nome customizado para sua instalação Redmine sobApplication Title - 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ê usariaredmine@yourdomainname.tldaqui, mas você pode querer usar seu nome de usuário SMTP para alguns provedores SMTP como GMail) - Role para baixo até o fundo da página Email Notifications e clique
Send a test emailque 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 emREDMINE_EMAILem/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
sudo systemctl restart redmineque 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
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow httpsLembre-se de adicionar quaisquer portas que você precisa ter abertas à lista também. Veja a documentação ufw para mais informação.
