Uptime Kuma
Last updated
heat_template_version: 2021-04-16
description: >
NeevCloud: Uptime Kuma monitoring and status page via Docker.
Accessible on port 3001.
parameters:
image:
type: string
default: Ubuntu 22.04 Updated
flavor:
type: string
default: Nano
volume_size:
type: number
description: Boot volume size in GB
default: 30
public_network:
type: string
default: Public
key_name:
type: string
default: stack-test
resources:
net:
type: OS::Neutron::Net
properties:
name: uptimekuma-net
subnet:
type: OS::Neutron::Subnet
properties:
network: { get_resource: net }
cidr: 10.200.0.0/24
dns_nameservers: [8.8.8.8, 8.8.4.4]
router:
type: OS::Neutron::Router
properties:
external_gateway_info:
network: { get_param: public_network }
router_interface:
type: OS::Neutron::RouterInterface
properties:
router: { get_resource: router }
subnet: { get_resource: subnet }
sg:
type: OS::Neutron::SecurityGroup
properties:
name: uptimekuma-sg
rules:
- { direction: ingress, protocol: tcp, port_range_min: 22, port_range_max: 22, remote_ip_prefix: 0.0.0.0/0 }
- { direction: ingress, protocol: tcp, port_range_min: 3001, port_range_max: 3001, remote_ip_prefix: 0.0.0.0/0 }
- { direction: ingress, protocol: icmp, remote_ip_prefix: 0.0.0.0/0 }
server:
type: OS::Nova::Server
properties:
name: uptimekuma-server
flavor: { get_param: flavor }
key_name: { get_param: key_name }
networks:
- network: { get_resource: net }
security_groups:
- { get_resource: sg }
block_device_mapping_v2:
- boot_index: 0
delete_on_termination: true
image: { get_param: image }
volume_size: { get_param: volume_size }
user_data_format: RAW
user_data: |
#!/bin/bash
set -e
export DEBIAN_FRONTEND=noninteractive
# Install Docker
apt-get update -y
apt-get install -y ca-certificates curl gnupg
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list
apt-get update -y
apt-get install -y docker-ce docker-ce-cli containerd.io
# Run Uptime Kuma
docker run -d \
--name uptime-kuma \
--restart=always \
-p 3001:3001 \
-v uptime-kuma-data:/app/data \
louislam/uptime-kuma:1
fip:
type: OS::Neutron::FloatingIP
properties:
floating_network: { get_param: public_network }
fip_assoc:
type: OS::Neutron::FloatingIPAssociation
properties:
floatingip_id: { get_resource: fip }
port_id: { get_attr: [server, addresses, { get_resource: net }, 0, port] }
outputs:
uptimekuma_url:
description: Uptime Kuma URL (create admin account on first login)
value:
str_replace:
template: http://HOST:3001
params:
HOST: { get_attr: [fip, floating_ip_address] }
floating_ip:
description: Public IP
value: { get_attr: [fip, floating_ip_address] }