开源状态页Cachet容器化部署指南


Beautiful & simple service statuses. The open source status page system, for everyone.

优势用途

  • Beautifully crafted 页面美观至少我感觉挺不错的哈哈
  • JSON API API接口功能相当强大
  • Scheduled maintenance 维护计划(但是2.4-dev版本存在严重bug,镜像做了调整😁)

主要就是如上优势。基于此可以完美构建自己的服务状态页。

部署

通过容器化部署,一步solo。docker-compose.yaml如下

version: "3"

services:
  postgres:
    image: postgres
    container_name: postgres
    volumes:
      - /var/lib/postgresql/data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=xpostgres
      - POSTGRES_PASSWORD=xpostgres
    network_mode: host
    restart: always
  cachet:
    image: ysicing/cachet
    container_name: cachet
    environment:
      - APP_ENV=production
      - DB_DRIVER=pgsql
      - DB_HOST=127.0.0.1
      - DB_PORT=5432
      - DB_DATABASE=postgres
      - DB_USERNAME=xpostgres
      - DB_PASSWORD=xpostgres
      - DB_PREFIX=chq_
      - APP_KEY=base64:ZryHTRjgA6CEZLJymTiM2F4O9pyCBEe75UFAQe54nmY=
      - APP_LOG=errorlog
      - APP_DEBUG=false
      - APP_URL=https://status.godu.dev
    network_mode: host
    restart: on-failure

其中需要注意APP_KEY需要替换为自己定义的值,如果不指定这个值,会默认生成一个。

docker-compose pull
docker-compose up -d

因为某些原因,我强制所有请求为https了。具体参考dockerfile源码ysicing/dockerfiles

web服务部署

  1. 通过宙斯负载均衡https(有时间会详细讲下)
  2. 通过nginx部署可以参考官方文档
  3. 通过caddy部署
status.godu.dev {
    gzip
    prometheus
    log / /var/log/caddy/cdn.tc.log "{remote} {when} {method} {uri} {proto} {status} {size} {>User-Agent} {latency}" {
        rotate_size 50
        rotate_age  90
        rotate_keep 20
        rotate_compress
    }
    errors {
        * /tmp/404.html
    }
    tls root@ysicing.net
    header / {
        Strict-Transport-Security "max-age=31536000;includeSubDomains;preload"
        -Server
    }
    proxy / http://127.0.0.1:8000 {
        websocket
        transparent
    }
}

最后

效果如:status

WeChat1e78078b11dca72b52b7944853ee52c8.png

抽空明天写下如何对接zabbix

Update

已经移除默认https,否则访问有些问题,特殊场景特殊对待。

Last modification:October 13th, 2019 at 08:35 am
搞技术/肝文章不易,恳请随意打赏 OwO

Leave a Comment