机器:一台全新的ECS或VPS
配置:2核2G 50M(此处用的是百度云的ECS,如选择国外的ECS则带宽尽可能的高)
系统:Ubuntu 22.04
docker和docker-compose的参考本站文章
首先创建nginx的文件夹
mkdir /etc/application/nginx
cd nginx
mkdir conf.d
mkdir html
再创建komari的文件夹,用于存储komari的相关文件
mkdir /etc/application/komari
进入komari文件夹,创建komari的db库
cd komari && mkdir kmari-data
返回到application文件夹
cd /etc/application
vim docker-compose.yml
粘贴以下内容(注意缩进,yml文件格式要求严格)
version: '3.9'
services:
# Komari 监控服务
komari:
image: ghcr.nju.edu.cn/komari-monitor/komari:latest
container_name: komari
volumes:
- ./komari/komari-data:/app/data # 使用独立的数据目录
restart: unless-stopped
networks:
docker_bridge:
ipv4_address: 172.18.0.3 # 你指定的IP地址
nginx:
image: anqiqii/nginx-certbot
container_name: nginx
restart: always
depends_on:
- cloudreve
networks:
docker_bridge:
ipv4_address: 172.18.0.2
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/html:/var/www/html
networks:
docker_bridge:
driver: bridge
ipam:
config:
- subnet: 172.18.0.0/24
gateway: 172.18.0.1P.S.此处默认全新机器并未配置网桥。如已配置网桥,请参考如下。
version: '3.9'
services:
# Komari 监控服务
komari:
image: ghcr.nju.edu.cn/komari-monitor/komari:latest
container_name: komari
volumes:
- ./komari/komari-data:/app/data # 使用独立的数据目录
restart: unless-stopped
networks:
网桥名字:
ipv4_address: 172.18.0.105 # 你指定的IP地址
nginx:
image: anqiqii/nginx-certbot
container_name: nginx
restart: always
depends_on:
- cloudreve
networks:
网桥名字:
ipv4_address: 172.18.0.2
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/html:/var/www/html
# 使用外部网络
networks:
网桥名字:
external: true docker compose up -d
此时docker已经在运行
进入nginx的conf文件夹
cd /etc/application/nginx/conf.d
vim web.conf
复制以下文件粘贴进去
server {
listen 80;
server_name #你的域名;
# 自动跳转到 HTTPS
if ($server_port !~ 443) {
return 301 https://$host$request_uri;
}
# 禁止域名以外的方式访问
if ($host !~ ^(komari\.l1ttlebear\.link|www\.komari\.l1ttlebear\.link)$) {
return 444;
}
# 网站根目录(无实际作用,只为兼容)
root /var/www/html;
# 最大上传体积
client_max_body_size 0;
proxy_request_buffering off;
proxy_buffering off;
# 禁止访问敏感文件
location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md) {
return 404;
}
# 禁止访问日志文件
location ~* \.log$ {
deny all;
}
location / {
proxy_pass http://172.18.0.105:25774/;
proxy_http_version 1.1;
proxy_request_buffering off;
proxy_buffering off;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
client_max_body_size 0;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
}
}输入wq!
进入nginx的docker
docker exec -it nginx bash
输入
certbot --nginx --no-redirect -d 你的域名 --cert-name anqiqii --nginx-server-root /etc/nginx -n --register-unsafely-without-email --agree-tos
这里会遇到申请失败的情况:
1.DNS未解析域名,请去DNS服务商处确认
2.防火墙做了限制,请去VPS/ECS服务商处确认
3.国内ECS,未备案的情况下,一般验证不了
如果申请两次都未成功,先检查好情况,并查询解决方法,因为连续申请5次以上就要第2天才能继续申请了
检查web.conf是否能正常运行
docker exec -it nginx nginx -t
如果配置正确,以下为正常回显信息
[root@iZf8zbokd9wafj21xxvtbdZ conf.d]# docker exec -it nginx nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful重新加载nginx的配置文件
docker exec -it nginx nginx -s reload
这时候,打开的域名,就已经能正常访问上komari监控了。