Add Uptime Kuma deployment
This commit is contained in:
6
.env.example
Normal file
6
.env.example
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Uptime Kuma listens on container port 3001.
|
||||||
|
# Keep this enabled for standalone/direct access, even when Caddy is also used.
|
||||||
|
UPTIME_KUMA_HOST_PORT=3001
|
||||||
|
|
||||||
|
# Public URL used in documentation and run output.
|
||||||
|
UPTIME_KUMA_PUBLIC_URL=https://uptime.amiirkhl.ir
|
||||||
6
.gitattributes
vendored
Normal file
6
.gitattributes
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
*.sh text eol=lf
|
||||||
|
*.yml text eol=lf
|
||||||
|
*.yaml text eol=lf
|
||||||
|
*.md text eol=lf
|
||||||
|
*.example text eol=lf
|
||||||
|
.gitignore text eol=lf
|
||||||
9
.gitignore
vendored
Normal file
9
.gitignore
vendored
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
.env
|
||||||
|
|
||||||
|
# Runtime data, backups, and local OS files
|
||||||
|
data/
|
||||||
|
backups/
|
||||||
|
*.tar.gz
|
||||||
|
*.sql
|
||||||
|
.DS_Store
|
||||||
|
Thumbs.db
|
||||||
66
README.md
Normal file
66
README.md
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
# Uptime Kuma Deployment
|
||||||
|
|
||||||
|
Docker Compose deployment for [Uptime Kuma](https://github.com/louislam/uptime-kuma).
|
||||||
|
|
||||||
|
This repo can run by itself on port `3001` and can also be reverse proxied by the sibling `caddy-deployment` repo over the shared `caddy_proxy` Docker network.
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
```bash
|
||||||
|
git clone http://git.amiirkhl.ir/interanet/uptime-kuma-deployment.git
|
||||||
|
cd uptime-kuma-deployment
|
||||||
|
chmod +x run.sh
|
||||||
|
./run.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
The first run creates `.env` from `.env.example`.
|
||||||
|
|
||||||
|
## Standalone Access
|
||||||
|
|
||||||
|
By default Uptime Kuma is available directly at:
|
||||||
|
|
||||||
|
```text
|
||||||
|
http://SERVER_IP:3001
|
||||||
|
```
|
||||||
|
|
||||||
|
Change the host port in `.env` if needed:
|
||||||
|
|
||||||
|
```env
|
||||||
|
UPTIME_KUMA_HOST_PORT=3001
|
||||||
|
```
|
||||||
|
|
||||||
|
## Caddy Integration
|
||||||
|
|
||||||
|
The compose file attaches `uptime-kuma` to the external Docker network named `caddy_proxy`.
|
||||||
|
|
||||||
|
`run.sh` creates that network if it does not already exist, so the stack can start even before `caddy-deployment` is running.
|
||||||
|
|
||||||
|
The sibling `caddy-deployment/config/caddy/Caddyfile` includes:
|
||||||
|
|
||||||
|
```caddyfile
|
||||||
|
uptime.amiirkhl.ir {
|
||||||
|
import {$CADDY_TLS_MODE:custom_tls}
|
||||||
|
reverse_proxy uptime-kuma:3001
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Start or reload Caddy after starting Uptime Kuma:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ../caddy-deployment
|
||||||
|
docker compose up -d
|
||||||
|
docker compose exec caddy caddy reload --config /etc/caddy/Caddyfile
|
||||||
|
```
|
||||||
|
|
||||||
|
## Data
|
||||||
|
|
||||||
|
Uptime Kuma data is stored in the Docker volume `uptime-kuma-deployment_uptime_kuma_data`.
|
||||||
|
|
||||||
|
Useful commands:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose logs -f
|
||||||
|
docker compose pull
|
||||||
|
docker compose up -d
|
||||||
|
docker compose down
|
||||||
|
```
|
||||||
32
docker-compose.yml
Normal file
32
docker-compose.yml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
networks:
|
||||||
|
uptime_kuma:
|
||||||
|
driver: bridge
|
||||||
|
caddy_proxy:
|
||||||
|
external: true
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
uptime_kuma_data:
|
||||||
|
|
||||||
|
services:
|
||||||
|
uptime-kuma:
|
||||||
|
image: louislam/uptime-kuma:2
|
||||||
|
container_name: uptime-kuma
|
||||||
|
restart: unless-stopped
|
||||||
|
ports:
|
||||||
|
- "${UPTIME_KUMA_HOST_PORT:-3001}:3001"
|
||||||
|
volumes:
|
||||||
|
- uptime_kuma_data:/app/data
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
networks:
|
||||||
|
- uptime_kuma
|
||||||
|
- caddy_proxy
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD-SHELL",
|
||||||
|
"node -e \"fetch('http://127.0.0.1:3001').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\""
|
||||||
|
]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 5
|
||||||
|
start_period: 60s
|
||||||
58
run.sh
Executable file
58
run.sh
Executable file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "========================================"
|
||||||
|
echo " Uptime Kuma Deployment Bootstrapper"
|
||||||
|
echo "========================================"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
if ! command -v docker >/dev/null 2>&1; then
|
||||||
|
echo -e "${RED}[ERROR] Docker is not installed or not in PATH.${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! docker compose version >/dev/null 2>&1; then
|
||||||
|
echo -e "${RED}[ERROR] Docker Compose v2 is not available.${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f ".env" ]; then
|
||||||
|
echo -e "${YELLOW}[INFO] .env file not found. Creating one from .env.example.${NC}"
|
||||||
|
cp .env.example .env
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Docker Compose requires external networks to exist before startup.
|
||||||
|
if ! docker network inspect caddy_proxy >/dev/null 2>&1; then
|
||||||
|
echo -e "${YELLOW}[INFO] Creating shared Docker network: caddy_proxy${NC}"
|
||||||
|
docker network create caddy_proxy >/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
|
set -a
|
||||||
|
source .env
|
||||||
|
set +a
|
||||||
|
|
||||||
|
echo "[STEP] Pulling images..."
|
||||||
|
docker compose pull
|
||||||
|
|
||||||
|
echo "[STEP] Starting Uptime Kuma..."
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}========================================${NC}"
|
||||||
|
echo -e "${GREEN}Uptime Kuma deployment started${NC}"
|
||||||
|
echo -e "${GREEN}========================================${NC}"
|
||||||
|
echo ""
|
||||||
|
echo "Direct access:"
|
||||||
|
echo " http://localhost:${UPTIME_KUMA_HOST_PORT:-3001}"
|
||||||
|
echo ""
|
||||||
|
echo "Caddy access:"
|
||||||
|
echo " ${UPTIME_KUMA_PUBLIC_URL:-https://uptime.amiirkhl.ir}"
|
||||||
|
echo ""
|
||||||
|
echo "Container status:"
|
||||||
|
docker compose ps
|
||||||
Reference in New Issue
Block a user