iT邦幫忙

2025 iThome 鐵人賽

DAY 22
0

前一篇文章我們解決了如何將外部流量導到我們架設的主機了,接下來我想來介紹第一個服務 uptime-kuma,連結如下

https://github.com/louislam/uptime-kuma

服務簡介

會選擇這個服務作為第一個介紹的服務的原因如下

  1. 這個服務相對單純,只有一個service,yaml檔會相對單純
  2. 提供了一個簡單的dashboard以及health check並通知的功能

雖然說這個服務可能沒辦法像Prometheus+Grafana一樣,拉出很多有用的圖表,並且設定一些比較特别的指標,但由於自架系統通常規模會比較小,初步架設最常使用的不外乎就是系統是否正常運行並通報,而uptime-kuma則可以很簡單且快速的完成這些基本需求

如何設定

這是他官網的說明
https://github.com/louislam/uptime-kuma/wiki

我們可以看到他github寫的docker-compose.yaml內的內容(2025/10/05)
https://github.com/louislam/uptime-kuma/blob/1.23.X/docker/docker-compose.yml

version: '3.3'

services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    volumes:
      - ./uptime-kuma-data:/app/data
    ports:
      - 3001:3001  # <Host Port>:<Container Port>
    restart: always

如果我們要使用這個服務,最直接的就是需要連到他的網頁,所以我們要先來看他的ports欄位,裡面出現了3001,3001看起來應該就是他的服務的port,在專案中的Dockerfile中也有寫上EXPOSE 3001這個標示,所以我們可以先猜測他的服務是開在port 3001

緊接著就直接啟動他就好,並進到 http://localhost:3001 就可以看到設定畫面了

設定domain

接下來,我們要改一下上方的docker-compose.yaml,把上面定義好的service跟cloudflared tunnel放到同一個網路環境

version: '3.3'

services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    networkds: ["cloudflared_tunnel"]
    volumes:
      - ./uptime-kuma-data:/app/data
    # ports:
      # - 3001:3001  # <Host Port>:<Container Port>
    restart: always
networks:
  cloudflared_tunnel:
    name: cloudflared_tunnel
    external: true

接著我們就可以到cloudflared tunnel那邊再加一個你需要的domain name,並且把服務內部的網址改成http://uptime-kuma:3001,如此一來,就可以順利讓你的服務加上domain了

而因為現在服務可以透過cloudflared tunnel來存取了,所以其實也不用佔據你電腦的port 3001,所以可以先暫時註解掉,如果有需要可以再把註解打開

監控docker container的狀態

https://github.com/louislam/uptime-kuma/wiki/How-to-Monitor-Docker-Containers
他這邊設計的原理是將你的服務的docker.sock掛載到container裡面,這樣就可以讓uptime-kuma能夠碰到你原生機器的docker的服務,所以就可以做到類似你一般在下docker ps的效果,如果套用到上面的設定檔就會長這樣

version: '3.3'

services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    networkds: ["cloudflared_tunnel"]
    volumes:
      - ./uptime-kuma-data:/app/data
	  - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - 3001:3001  # <Host Port>:<Container Port>
    restart: always
networks:
  cloudflared_tunnel:
    name: cloudflared_tunnel
    external: true

記得改完設定要記得檔案存檔並且重啟docker compose,你的改變才會被順利apply喔

專案怎麼管理

在未來我相信你一定還會裝上各式各樣的服務,而我在這邊分享一下我是怎麼管理這些專案的

由於是自架服務,我目前還沒有接上各種的cicd跟自動化,目前我是直接開一個資料夾,然後把要管理的服務一個資料夾一個服務,裡面都有各自的docker-compose.yaml,並且各自下docker compose up -d來管理,而服務之間的流量導傳則是透過先建立一個external的network,這樣服務跟服務之間就可以連到彼此

server
├── cloudflared-tunnel
│   └── docker-compose.yaml
└── uptime-kuma
	└── docker-compose.yaml

上一篇
Day21-[Hands-on]手把手設定cloudflared-tunnel
下一篇
Day23-幫docker container加上自動重啟功能
系列文
開發環境設定指南及工具分享24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言