如何使用 Docker 镜像轻松安装 Redmine
注意:另请参见此后续文章了解如何在此设置中使用自定义主题,以及此后续文章了解如何使用此设置备份 Redmine。
本教程逐步向你展示我迄今为止发现的设置全新 redmine 安装的最简单方法。命令已在 Ubuntu 18.04 上测试,但它们应该在其他基于 DEB 的发行版上以最少的修改工作。
安装 Docker 和 Docker-Compose
请按照如何在 30 秒内在 Ubuntu 上安装 docker 和 docker-compose中的说明操作
创建目录和 docker-compose 配置
我们将在 /var/lib/redmine 中安装 redmine,该目录将存放数据目录和 docker-compose 脚本。
# 创建目录
sudo mkdir /var/lib/redmine
sudo mkdir -p /var/lib/redmine/redmine_data /var/lib/redmine/mariadb_data
# 为目录设置正确的权限
sudo chown -R $USER:docker /var/lib/redmine
sudo chown -R 1001:1001 /var/lib/redmine/redmine_data /var/lib/redmine/mariadb_data接下来,我们将创建 /var/lib/redmine/docker-compose.yml。
这里有几件事你需要更改:
- 将
REDMINE_EMAIL设置为你想使用的管理员用户的电子邮件(通常是你的电子邮件!) - 将 SMTP 凭据(
SMTP_HOST、SMTP_PORT、SMTP_USER和SMTP_PASSWORD)设置为有效的 SMTP 服务器。SMTP_TLS默认为true - 在极少数情况下 - 端口配置,在此例中为
'3718:3000'表示 Redmine 将映射到本地 PC 的端口 3718。此端口的选择有些随意 - 因为我们将在 nginx 反向代理后运行 redmine,端口不需要是任何特定端口(只要你在所有地方使用相同的端口),但它不能被其他任何东西使用。你可以在此使用任何端口,前提是它不被其他任何东西使用。保持3000不变,仅在需要时只更改3718。
注意你不需要更改 REDMINE_PASSWORD - 当你首次登录时,redmine 无论如何都会强制你更改密码。
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设置 systemd 服务
接下来,我们将在 /etc/systemd/system/redmine.service 中配置 systemd 服务。
在 [Service] 部分将 User=... 设置为你的当前用户。
[Unit]
Description=Redmine
Requires=docker.service
After=docker.service
[Service]
Restart=always
User=uli
Group=docker
# 当单元停止时关闭容器(如果正在运行)
ExecStartPre=/usr/local/bin/docker-compose -f /var/lib/redmine/docker-compose.yml down -v
# 当单元启动时启动容器
ExecStart=/usr/local/bin/docker-compose -f /var/lib/redmine/docker-compose.yml up
# 当单元停止时停止容器
ExecStop=/usr/local/bin/docker-compose -f /var/lib/redmine/docker-compose.yml down -v
[Install]
WantedBy=multi-user.target创建文件后,我们可以启用并启动 redmine 服务:
sudo systemctl enable redmine
sudo systemctl start redminesudo systemctl start redmine 的输出应为空。如果是
Job for redmine.service failed because the control process exited with error code.
See "systemctl status redmine.service" and "journalctl -xe" for details.使用 journalctl -xe 和 journalctl -e 调试问题
首次启动通常需要约 3 分钟,所以准备一杯咖啡。
现在你可以使用以下命令检查 redmine 是否正在运行
wget -qO- http://localhost:3718/(如果你之前更改了端口配置,你需要在 URL 中使用你的自定义端口)。
如果成功,它将显示大量 HTML 输出,以
[...]
<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>如果输出为空,尝试 wget -O- http://localhost:3718/ 查看错误消息
设置 nginx 反向代理(可选但推荐)
我们将使用 nginx 代理来自特定域名的请求(如果你已经在使用 Apache,也可以,但告诉你如何操作不在本教程范围内)。使用以下命令安装
sudo apt -y install nginx首先,你需要一个配置了 DNS 的域名。在此示例中,我们假设你的域名为 redmine.techoverflow.net!你需要将其更改为你的域名!
首先,我们将在 /etc/nginx/sites-enabled/redmine.conf 中创建配置文件。记住将 redmine.techoverflow.net **替换为你的域名!**如果你使用不同于 3718 的端口,也要替换它。
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 forwarded
proxy_read_timeout 3600s;
proxy_http_version 1.1;
}
}现在运行 sudo nginx -t 测试配置文件中是否有任何错误。如果一切正常,你将看到
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful一旦你修复了所有错误(如果有),运行 sudo service nginx reload 应用配置。
通过在浏览器中导航你的域名来测试设置。你应该看到 redmine 界面:

使用 Let’s Encrypt 保护 nginx 反向代理
首先我们需要安装 certbot 和 certbot nginx 插件,以便在 nginx 中创建和安装证书:
sudo apt -y install python3-certbot python3-certbot-nginx幸运的是 certbot 自动化了安装和配置 SSL 及证书的大部分过程。运行
sudo certbot --nginx它会要求你输入电子邮件地址并同意服务条款以及是否想接收 EFF 时事通讯。
之后,certbot 会要求你选择正确的域名:
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):在这种情况下,只有一个域名(如果你在 nginx 上激活了更多域名,会有更多!)。
因此,输入 1 并按回车。certbot 现在将生成证书。如果成功,你将看到
Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/redmine.techoverflow.net.conf现在它会问你是否自动将所有请求重定向到 HTTPS:
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):在此选择 Redirect:输入 2 并按回车。现在你可以登录 redmine 并完成安装。
你需要每 3 个月续订一次证书以保持有效,之后运行 sudo service nginx reload 使用新证书。如果你未能这样做,用户将看到证书过期错误消息,并且无法轻松访问 Redmine!请参见此文章了解如何大部分自动化此过程!
设置 Redmine
转到你的域名(如果你按照上面的说明操作,它应该自动将你重定向到 HTTPS)。点击右上角的登录,使用用户名 admin 和默认密码 redmineadmin 登录。首次登录时,它会要求你将密码更改为新的 - 更安全的密码。
我不会详细描述如何为你的项目设置 Redmine。但是,首次登录后你应该立即处理两件事:
- 配置正确的域名:转到Administration -> Settings并将
Host name and path设置为你的域名,例如redmine.techoverflow.net。将Protocol设置为HTTPS。你还可以在Application Title下为你的 Redmine 安装设置自定义名称 - 仍在Administration -> Settings下,转到Email Notifications选项卡,在
Emission email address下设置适当的发件人电子邮件地址(通常你会在此使用redmine@yourdomainname.tld,但对于某些 SMTP 提供商如 GMail,你可能想使用你的 SMTP 用户名) - 向下滚动到Email Notifications页面底部并点击
Send a test email,它将向当前 redmine 用户的电子邮件地址发送测试电子邮件。除非你已更改它,否则默认是/var/lib/redmine/docker-compose.yml中REDMINE_EMAIL中配置的地址。
如果电子邮件不起作用,更改 /var/lib/redmine/docker-compose.yml 中的 SMTP_...=...,但你还需要在 /var/lib/redmine/redmine_data/redmine/conf/configuration.yml 中更改它!进行更改后,通过以下命令重启 redmine
sudo systemctl restart redmine这将使用配置文件中的新配置。
使用 ufw 阻止对转发端口的访问(可选)
ufw 是 Ubuntu 的简单防火墙。使用 sudo apt install ufw 安装它,使用 sudo ufw enable 激活它。默认配置将允许 SSH 但会阻止其他端口,包括端口 3718 或你可能使用的任何其他自定义端口。
要启用它,使用
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https记住也将你需要打开的任何端口添加到列表中。请参见 ufw 文档了解更多信息。