Introduction courte présentant l’objectif de la documentation.
Description du résultat attendu.
Liste des conditions et composants nécessaires.
Pour notre première mise en situation, mettons en place une petite application simple mais utile : Uptime Kuma !
Uptime Kuma est une alternative OpenSource et SelfHosted d'Uptime Robot. Elle se veux simple à mettre en place, à administrer et à utiliser. Elle dispose d'un large panel de check et de notifications.
Démo : uptime.papamica.com
Github : louislam/uptime-kuma
uptime-kuma.yml:heat_template_version: rocky
description: "Uptime Kuma"
parameters:
image:
type: string
description: image use for kuma
default: Debian 11.1 bullseye
flavor:
type: string
description: flavor used by kuma
default: a1-ram2-disk20-perf1
network:
type: string
description: network used by kuma
default: kuma-network
subnet_id:
type: string
description: dedicated subnet for kuma
default: kuma-subnet
floating_network_id:
type: string
description: UUID of a Neutron external network
default: ext-floating1
resources:
wait_condition:
type: OS::Heat::WaitCondition
properties:
handle: { get_resource: wait_handle }
timeout: 600
wait_handle:
type: OS::Heat::WaitConditionHandle
# security group
kuma_security_group:
type: OS::Neutron::SecurityGroup
properties:
name: "kuma_security_group"
description: >
Allows 3001
rules:
- { direction: ingress, protocol: tcp, port_range_min: 3001, port_range_max: 3001 }
# network resources
kuma_network:
type: OS::Neutron::Net
properties:
name: { get_param: network }
value_specs:
mtu: 1500
kuma_subnet:
type: OS::Neutron::Subnet
properties:
name: 'kuma-subnet'
network_id: { get_resource: kuma_network }
cidr: "10.11.3.0/24"
dns_nameservers:
- "84.16.67.69"
- "84.16.67.70"
ip_version: 4
kuma_router:
type: OS::Neutron::Router
properties:
name: 'kuma-router'
external_gateway_info: { network: ext-floating1 }
kuma_router_subnet_interface:
type: OS::Neutron::RouterInterface
properties:
router_id: { get_resource: kuma_router }
subnet: { get_resource: kuma_subnet }
kuma_port:
type: OS::Neutron::Port
properties:
network: { get_resource: kuma_network }
security_groups: [ { get_resource: kuma_security_group } ]
fixed_ips:
- subnet_id: { get_resource: kuma_subnet }
kuma_floating:
type: OS::Neutron::FloatingIP
properties:
floating_network_id: { get_param: floating_network_id }
port_id: { get_resource: kuma_port }
# instance
server:
type: OS::Nova::Server
depends_on: [ kuma_router]
properties:
flavor: { get_param: flavor }
image: { get_param: image }
networks:
- port: { get_resource: kuma_port }
user_data:
str_replace:
template: |
#!/bin/bash -v
apt update && apt upgrade -y
apt install -y git curl
curl -sL https://deb.nodesource.com/setup_16.x | sudo bash -
apt update
apt install -y nodejs
npm install pm2 -g
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup
pm2 start server/server.js --name uptime-kuma
pm2 startup
wc_notify --data-binary '{"status": "SUCCESS"}'
params:
wc_notify: { get_attr: ['wait_handle', 'curl_cli'] }
outputs:
server_IP:
value:
str_replace:
template: http://IP:3001
params:
IP: { get_attr: [kuma_floating, floating_ip_address] }
description: "IP"
Lancez la création de la stack avec la commande suivante :
openstack stack create --template uptime-kuma.yml uptime-kuma
Après quelques minutes, vous pouvez utilisez la commande suivante pour afficher l'IP de votre Uptime Kuma :
openstack stack show uptime-kuma
+-----------------------+----------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-----------------------+----------------------------------------------------------------------------------------------------------------------------------+
| id | 65277898-f5e5-495c-9010-c84eff43c656 |
| stack_name | uptime |
| description | Uptime Kuma |
| creation_time | 2021-11-25T10:29:33Z |
| updated_time | None |
| stack_status | CREATE_COMPLETE |
| stack_status_reason | Stack CREATE completed successfully |
| parameters | OS::project_id: 7368f02b559648d0a9ff15bff29b464f |
| | OS::stack_id: 65277898-f5e5-495c-9010-c84eff43c656 |
| | OS::stack_name: uptime-kuma |
| | flavor: a1-ram2-disk20-perf1 |
| | floating_network_id: ext-floating1 |
| | image: Debian 11.1 bullseye |
| | network: kuma-network |
| | subnet_id: kuma-subnet |
| | |
| outputs | - description: IP |
| | output_key: server_IP |
| | output_value: http://195.15.246.154:3001 |
| | |
| links | - href: https://api.pub1.infomaniak.cloud/v1/7368f02b559648d0a9ff15bff29b464f/stacks/uptime/65277898-f5e5-495c-9010-c84eff43c656 |
| | rel: self |
| | |
| deletion_time | None |
| notification_topics | [] |
| capabilities | [] |
| disable_rollback | True |
| timeout_mins | None |
| stack_owner | PCU-U2CAZJ4 |
| parent | None |
| stack_user_project_id | 14890fd555b648049c0da38ae51e6b97 |
| tags | [] |
| | |
+-----------------------+----------------------------------------------------------------------------------------------------------------------------------+
Dans notre exemple, Uptime Kuma est accessible depuis : http://195.15.246.154:3001
Voir ce tutoriel pour l'explication des commandes :
openstack security group create --description "Uptime Kuma (3001) + SSH (22)" Uptime-Kuma
openstack security group rule create --dst-port 3001 --protocol TCP Uptime-Kuma
openstack security group rule create --dst-port 22 --protocol TCP Uptime-Kuma
Voir ce tutoriel pour l'explication des commandes :
openstack server create --image "Debian 11.1 bullseye" --flavor a1-ram2-disk20-perf1 --security-group "Uptime-Kuma" --key-name <KEYPAIR> --network ext-net1 Uptime-Kuma-CLI
openstack server show Uptime-Kuma-CLI
Dans un terminal, connectez vous avec :
ssh [-i <URL/KEY>] debian@<IP_INSTANCE>
[-i URL/KEY]
- Chemin de votre clé SSH (optionnel)
IP_INSTANCE
Adresse IP de votre instance
Docker.
sudo apt update && sudo apt upgrade
sudo apt install -y git curl
curl -sL https://deb.nodesource.com/setup_16.x | sudo bash -
sudo apt update
sudo apt install -y nodejs
sudo npm install pm2 -g
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
npm run setup
sudo pm2 start server/server.js --name uptime-kuma
sudo pm2 startup
Il ne vous reste plus qu'à vous connecter à cette adresse : http://<IP_ADDRESS>:3001
Méthode permettant de confirmer le bon fonctionnement.
Erreurs fréquentes et pistes de diagnostic.