feat: Add Peekaping monitoring service infrastructure#14
Merged
ainsleyclark merged 12 commits intomainfrom Nov 20, 2025
Merged
Conversation
Add complete infrastructure setup for Peekaping as an alternative to Uptime Kuma. Includes Terraform configuration for Hetzner VM provisioning, Ansible playbook for automated deployment, and Docker Compose setup for local development and testing. Key components: - Terraform module for Peekaping service (CX23 server, 10GB volume) - Ansible playbook with microservice Docker Compose deployment - Local development environment with docker-compose - Makefile targets for deployment (make deploy-peekaping) - Comprehensive documentation and configuration examples The service runs in microservice mode with Redis, API, Producer, Worker, Ingester, Web, and Gateway components. Uptime Kuma configuration remains unchanged.
…cating inline Replace inline content duplication with proper file copying from docker/peekaping/ directory. This follows DRY principles and makes the configuration easier to maintain by keeping a single source of truth for these files. Changes: - Copy docker-compose.yml from docker/peekaping/ instead of inline definition - Copy nginx.conf from docker/peekaping/ instead of inline definition - Add replace task to substitute DATA_PATH for production mount point
Implement comprehensive version management to enable reproducible deployments and controlled upgrades. This addresses production stability concerns by allowing specific version pinning instead of always using 'latest' tags. Changes: - Add PEEKAPING_VERSION environment variable with default 'latest' - Update docker-compose.yml to use version variable for all services - Add peekaping_version variable to Ansible playbook - Create comprehensive VERSIONING.md guide covering: - Version pinning best practices - Upgrade procedures (local and production) - Rollback instructions - Monitoring current versions - Update documentation with version management guidance Usage: - Development: PEEKAPING_VERSION=latest - Production: PEEKAPING_VERSION=v1.2.3 Check releases: https://github.com/0xfurai/peekaping/releases
Remove separate VERSIONING.md file and consolidate all version management documentation directly into the relevant README files for easier reference. Changes: - Delete VERSIONING.md - Add condensed version management section to terraform/services/peekaping/README.md - Add condensed version management section to docker/peekaping/README.md - Keep essential info: version pinning, upgrade procedures, best practices - Remove redundancy while maintaining all critical information All version management documentation is now in context where it's needed.
Make service domains explicitly configurable via terraform.tfvars instead of relying on module defaults. This makes it clear where to configure domains and ensures DNS setup is properly documented. Changes: - Add uptime_kuma_domain and peekaping_domain variables to terraform/base/variables.tf - Pass domain variables to service modules in terraform/base/main.tf - Add domain configuration section to terraform.tfvars.example with clear comments - Update peekaping README with explicit domain configuration instructions - Document DNS A record requirement Users now configure domains in terraform.tfvars: peekaping_domain = "monitoring.yourdomain.com" uptime_kuma_domain = "uptime.yourdomain.com"
The playbook is in ansible/playbooks/, so we need to go up two levels (../..) to reach the project root where docker/ directory is located. Fixes path from playbook_dir/../docker to playbook_dir/../../docker
Instead of exposing port 8383 directly to the internet, configure host Nginx to reverse proxy to the Docker gateway on localhost:8383. This is more secure and follows best practices. Changes: - Add Nginx site configuration for domain proxying to localhost:8383 - Enable WebSocket support for Socket.io connections - Create and enable Nginx site before running Certbot - Test and reload Nginx after configuration Security improvements: - Port 8383 remains internal-only - Only standard ports (22, 80, 443) exposed to internet - Nginx handles SSL/TLS termination - Application not directly accessible from internet
Move Nginx site configuration to docker/peekaping/nginx-site.conf and copy it from there instead of defining inline in the Ansible playbook. This follows DRY principles and makes the configuration easier to maintain. Changes: - Create docker/peekaping/nginx-site.conf template - Copy nginx-site.conf from docker/peekaping/ instead of inline definition - Use replace task to substitute domain placeholder
Replace inline Nginx configuration with file copy from docker/peekaping/nginx-site.conf
Remove the default Nginx site so that accessing the server by IP address doesn't show the 'Welcome to nginx' page. Only the configured domain should respond with Peekaping.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add complete infrastructure setup for Peekaping as an alternative to Uptime Kuma.
Includes Terraform configuration for Hetzner VM provisioning, Ansible playbook for
automated deployment, and Docker Compose setup for local development and testing.
Key components:
The service runs in microservice mode with Redis, API, Producer, Worker, Ingester,
Web, and Gateway components. Uptime Kuma configuration remains unchanged.