No description
Find a file
Graham McIntire d92443d91b
feat: add podman support and Docker Hub push to base image builder
Enhanced base image build system with:

Container Engine Support:
- Auto-detect podman or docker (prefers podman if both installed)
- All scripts work with either engine seamlessly
- No configuration needed

Docker Hub Integration:
- Push to both GitLab and Docker Hub registries
- GitLab: registry.gitlab.com/towerops/towerops/elixir-runtime
- Docker Hub: docker.io/gmcintire/elixir-runtime
- Both versioned and :latest tags pushed to each

Build Script:
- Detect and use $CONTAINER_CMD for all operations
- Show which container engine is being used in output
- Tag and push to both registries automatically

Makefile:
- Add CONTAINER_CMD variable with auto-detection
- Add DOCKERHUB_REGISTRY configuration
- Update all targets to use detected container engine
- Add login-dockerhub target for Docker Hub authentication
- Update push target to push to both registries

Documentation:
- Document podman/docker auto-detection
- Update login instructions for both registries
- Update troubleshooting with examples for both engines

This makes the build system more flexible and accessible to users
who prefer podman over docker, while also publishing to the public
Docker Hub registry for easier access.
2026-01-25 09:18:03 -06:00
.gitlab/agents Add aprs.me project to home-cluster-agent configuration 2026-01-14 13:31:23 -06:00
assets better discovery 2026-01-22 17:40:58 -06:00
config refactor: filter harmless Oban shutdown messages during deployments 2026-01-25 08:38:33 -06:00
docs Update infrastructure documentation with Valkey restart fix 2026-01-19 15:41:11 -06:00
k8s feat: add podman support and Docker Hub push to base image builder 2026-01-25 09:18:03 -06:00
lib refactor: alias DiscoveryWorker at module top and skip flaky performance test 2026-01-25 09:14:07 -06:00
mibs handle mib uploading 2026-01-18 16:29:24 -06:00
priv refactor: migrate from etcd to Oban for distributed job coordination 2026-01-24 16:12:27 -06:00
rel/overlays/bin add release 2026-01-02 14:36:38 -06:00
scripts import yamls 2026-01-21 14:30:04 -06:00
test refactor: alias DiscoveryWorker at module top and skip flaky performance test 2026-01-25 09:14:07 -06:00
towerops Add towerops/gitlab-agent-helm-release.yaml via glab file sync 2026-01-02 14:22:22 -06:00
.credo.exs credo improvements 2026-01-23 13:40:49 -06:00
.dialyzer_ignore.exs fix: resolve all dialyzer unmatched return and pattern match warnings 2026-01-24 17:34:37 -06:00
.dockerignore add release 2026-01-02 14:36:38 -06:00
.formatter.exs format 2025-12-21 11:31:08 -06:00
.gitignore add state sensor schema, migration, and discovery 2026-01-21 10:25:01 -06:00
.gitlab-ci.yml dont wait for deploy 2026-01-18 17:17:43 -06:00
.sourceignore Add .sourceignore to exclude non-k8s files from Flux 2026-01-02 14:43:57 -06:00
.test-watch.exs add test watch 2026-01-03 12:35:26 -06:00
.tool-versions test cleanup 2026-01-19 13:29:38 -06:00
AGENTS.md 1. User Authentication 2025-12-21 13:31:59 -06:00
CLAUDE.md refactor: convert periodic workers to Oban Cron for better resilience 2026-01-24 16:56:28 -06:00
DEPLOYMENT.md more features 2026-01-02 14:06:44 -06:00
Dockerfile import yamls 2026-01-21 14:30:04 -06:00
LIBRENMS_INTEGRATION.md add universoal import 2026-01-18 16:59:34 -06:00
mix.exs refactor: simplify job architecture from Oban coordinators to direct workers 2026-01-24 16:36:57 -06:00
mix.lock refactor: simplify job architecture from Oban coordinators to direct workers 2026-01-24 16:36:57 -06:00
MOBILE_API.md add api for mobile login 2026-01-15 15:36:14 -06:00
PROFILES.md refactor: use API token auth for profile imports instead of session cookies 2026-01-18 09:30:21 -06:00
PROFILES_README.md add universoal import 2026-01-18 16:59:34 -06:00
README.md timescaledb 2025-12-21 17:17:26 -06:00
tail_logs.sh add logs helper script 2026-01-11 15:45:02 -06:00

TowerOps

Network monitoring and alerting platform built with Phoenix LiveView.

Features

  • Multi-tenant architecture - Organizations with role-based permissions
  • Site hierarchy - Organize equipment across multiple sites
  • Automated monitoring - Real-time ping monitoring with configurable intervals
  • Time-series data - Efficient storage with TimescaleDB (optional)
  • Real-time updates - LiveView dashboard with PubSub
  • Equipment tracking - Monitor network devices by IP address

Quick Start

Prerequisites

  • Elixir 1.14+
  • PostgreSQL 14+
  • (Optional) TimescaleDB for production-grade time-series performance

Setup

# Install dependencies
mix setup

# Start the server
mix phx.server

Visit localhost:4000 from your browser.

TimescaleDB (Production Only)

Development: Uses standard PostgreSQL (no TimescaleDB required).

Production: TimescaleDB is automatically enabled for optimal performance with time-series data.

# Production deployment - install TimescaleDB first
brew tap timescale/tap && brew install timescaledb  # macOS
# Then run migrations with MIX_ENV=prod
MIX_ENV=prod mix ecto.migrate

See TIMESCALEDB.md for detailed installation and configuration.

How it works: Migrations detect the environment (MIX_ENV) and only enable TimescaleDB features (hypertables, compression, retention policies, continuous aggregates) in production.

Development

Database

mix ecto.create       # Create database
mix ecto.migrate      # Run migrations
mix ecto.reset        # Drop, create, and migrate

Testing

mix test              # Run all tests
mix test --trace      # Run with detailed output

Code Quality

mix format            # Format code with Styler
mix compile --warnings-as-errors

Learn more