54 lines
1.9 KiB
Markdown
54 lines
1.9 KiB
Markdown
# Healthcheck
|
|
|
|
A healthcheck script that pings services, and if they are unreachable, restarts any associated Docker containers.
|
|
|
|
This script was created in order to restart Cloudflare Tunnel containers that would become unresponsive and never recover without manually restarting them.
|
|
|
|
Tunnels becoming unresponsive happens regularly due to intermittent internet connectivity.
|
|
|
|
The containers are responsible for hosting the tunnels associated with the following services:
|
|
|
|
* [Moshferatu.Dev](https://moshferatu.dev/) (this site)
|
|
* [Moshington](https://moshington.com/)
|
|
|
|
## Running the Healthcheck Script
|
|
|
|
Prior to running the script, you must set the following environment variables (example values provided):
|
|
|
|
```shell
|
|
CHECK_INTERVAL=60
|
|
MOSHFERATU_DEV_URL=https://moshferatu.dev
|
|
MOSHFERATU_DEV_CONTAINER=moshferatu-dev-tunnel
|
|
MOSHINGTON_URL=https://moshington.com
|
|
MOSHINGTON_CONTAINER=moshington-tunnel
|
|
```
|
|
|
|
The healthcheck depends on ```python-dotenv```, so you can create a ```.env``` file and place the variables in there.
|
|
|
|
### Docker Container
|
|
|
|
The script can be run in a Docker container of its own.
|
|
|
|
The necessary [Dockerfile](./Dockerfile) is provided here.
|
|
|
|
Just build and run the container like any other, while making sure to set the necessary environment variables as mentioned above.
|
|
|
|
The Docker socket will need to be mounted as a volume, however.
|
|
|
|
An example of this can be found in the [Healthcheck compose file](https://moshferatu.dev/moshferatu/docker-compose/src/branch/main/healthcheck.yaml).
|
|
|
|
This is necessary for the script to restart other containers running on the host.
|
|
|
|
### Standalone
|
|
|
|
Make sure you have the dependencies listed in [requirements.txt](./requirements.txt) installed in addition to Docker.
|
|
|
|
Then, run the following command:
|
|
|
|
```shell
|
|
python ./healthcheck.py
|
|
```
|
|
|
|
Again, make sure to set the necessary environment variables before running the script.
|
|
|
|
--- |