Skip to content

feat: Add Peekaping monitoring service infrastructure#14

Merged
ainsleyclark merged 12 commits intomainfrom
claude/add-peekaping-service-01BjPKRhLgWGMrK4RszKKWBn
Nov 20, 2025
Merged

feat: Add Peekaping monitoring service infrastructure#14
ainsleyclark merged 12 commits intomainfrom
claude/add-peekaping-service-01BjPKRhLgWGMrK4RszKKWBn

Conversation

@ainsleyclark
Copy link
Contributor

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.

claude and others added 12 commits November 19, 2025 21:03
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.
@ainsleyclark ainsleyclark merged commit 075b824 into main Nov 20, 2025
@ainsleyclark ainsleyclark deleted the claude/add-peekaping-service-01BjPKRhLgWGMrK4RszKKWBn branch November 20, 2025 07:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants