diff --git a/blueprints/billmora/billmora.svg b/blueprints/billmora/billmora.svg new file mode 100644 index 00000000..e9daa0b3 --- /dev/null +++ b/blueprints/billmora/billmora.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/blueprints/billmora/docker-compose.yml b/blueprints/billmora/docker-compose.yml new file mode 100644 index 00000000..870629e1 --- /dev/null +++ b/blueprints/billmora/docker-compose.yml @@ -0,0 +1,130 @@ +version: "3.8" + +services: + billmora-app: + image: ghcr.io/billmora/billmora:latest + restart: always + environment: + - APP_NAME=${APP_NAME} + - APP_ENV=${APP_ENV} + - APP_KEY=${APP_KEY} + - APP_URL=${APP_URL} + - DB_CONNECTION=${DB_CONNECTION} + - DB_HOST=${DB_HOST} + - DB_PORT=${DB_PORT} + - DB_DATABASE=${DB_DATABASE} + - DB_USERNAME=${DB_USERNAME} + - DB_PASSWORD=${DB_PASSWORD} + - REDIS_HOST=${REDIS_HOST} + - REDIS_PASSWORD=${REDIS_PASSWORD} + - REDIS_PORT=${REDIS_PORT} + - SESSION_DRIVER=${SESSION_DRIVER} + - CACHE_STORE=${CACHE_STORE} + - QUEUE_CONNECTION=${QUEUE_CONNECTION} + - AUTORUN_ENABLED=true + - AUTORUN_LARAVEL_MIGRATION=true + - AUTORUN_LARAVEL_MIGRATION_FORCE=true + - AUTORUN_LARAVEL_MIGRATION_SEED=true + - AUTORUN_LARAVEL_STORAGE_LINK=true + volumes: + - billmora-storage:/var/www/html/storage + depends_on: + billmora-db: + condition: service_healthy + billmora-redis: + condition: service_healthy + + billmora-worker: + image: ghcr.io/billmora/billmora:latest + restart: always + command: ["php", "artisan", "queue:work", "--sleep=3", "--tries=3", "--max-time=3600"] + environment: + - APP_NAME=${APP_NAME} + - APP_ENV=${APP_ENV} + - APP_KEY=${APP_KEY} + - APP_URL=${APP_URL} + - DB_CONNECTION=${DB_CONNECTION} + - DB_HOST=${DB_HOST} + - DB_PORT=${DB_PORT} + - DB_DATABASE=${DB_DATABASE} + - DB_USERNAME=${DB_USERNAME} + - DB_PASSWORD=${DB_PASSWORD} + - REDIS_HOST=${REDIS_HOST} + - REDIS_PASSWORD=${REDIS_PASSWORD} + - REDIS_PORT=${REDIS_PORT} + - SESSION_DRIVER=${SESSION_DRIVER} + - CACHE_STORE=${CACHE_STORE} + - QUEUE_CONNECTION=${QUEUE_CONNECTION} + - AUTORUN_ENABLED=false + volumes: + - billmora-storage:/var/www/html/storage + depends_on: + billmora-db: + condition: service_healthy + billmora-redis: + condition: service_healthy + + billmora-scheduler: + image: ghcr.io/billmora/billmora:latest + restart: always + command: ["/bin/sh", "-c", "while true; do php artisan schedule:run >> /dev/null 2>&1; sleep 60; done"] + environment: + - APP_NAME=${APP_NAME} + - APP_ENV=${APP_ENV} + - APP_KEY=${APP_KEY} + - APP_URL=${APP_URL} + - DB_CONNECTION=${DB_CONNECTION} + - DB_HOST=${DB_HOST} + - DB_PORT=${DB_PORT} + - DB_DATABASE=${DB_DATABASE} + - DB_USERNAME=${DB_USERNAME} + - DB_PASSWORD=${DB_PASSWORD} + - REDIS_HOST=${REDIS_HOST} + - REDIS_PASSWORD=${REDIS_PASSWORD} + - REDIS_PORT=${REDIS_PORT} + - SESSION_DRIVER=${SESSION_DRIVER} + - CACHE_STORE=${CACHE_STORE} + - QUEUE_CONNECTION=${QUEUE_CONNECTION} + - AUTORUN_ENABLED=false + volumes: + - billmora-storage:/var/www/html/storage + depends_on: + billmora-db: + condition: service_healthy + billmora-redis: + condition: service_healthy + + billmora-db: + image: mariadb:11 + restart: always + environment: + - MARIADB_DATABASE=${DB_DATABASE} + - MARIADB_USER=${DB_USERNAME} + - MARIADB_PASSWORD=${DB_PASSWORD} + - MARIADB_ROOT_PASSWORD=${DB_ROOT_PASSWORD} + volumes: + - billmora-db-data:/var/lib/mysql + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 30s + + billmora-redis: + image: redis:7-alpine + restart: always + command: redis-server --requirepass ${REDIS_PASSWORD} + volumes: + - billmora-redis-data:/data + healthcheck: + test: ["CMD", "redis-cli", "--no-auth-warning", "-a", "${REDIS_PASSWORD}", "ping"] + interval: 10s + timeout: 3s + retries: 5 + start_period: 10s + +volumes: + billmora-storage: + billmora-db-data: + billmora-redis-data: diff --git a/blueprints/billmora/template.toml b/blueprints/billmora/template.toml new file mode 100644 index 00000000..40a37e29 --- /dev/null +++ b/blueprints/billmora/template.toml @@ -0,0 +1,31 @@ +[variables] +APP_KEY = "base64:${base64:32}" +APP_URL = "https://${domain}" +DB_PASSWORD = "${password:16}" +DB_ROOT_PASSWORD = "${password:16}" +REDIS_PASSWORD = "${password:16}" + +[config] +[[config.domains]] +serviceName = "billmora-app" +port = 8080 +host = "${domain}" + +[config.env] +APP_NAME = "Billmora" +APP_ENV = "production" +APP_KEY = "${APP_KEY}" +APP_URL = "${APP_URL}" +DB_CONNECTION = "mariadb" +DB_HOST = "billmora-db" +DB_PORT = "3306" +DB_DATABASE = "billmora" +DB_USERNAME = "billmora" +DB_PASSWORD = "${DB_PASSWORD}" +DB_ROOT_PASSWORD = "${DB_ROOT_PASSWORD}" +REDIS_HOST = "billmora-redis" +REDIS_PASSWORD = "${REDIS_PASSWORD}" +REDIS_PORT = "6379" +SESSION_DRIVER = "redis" +CACHE_STORE = "redis" +QUEUE_CONNECTION = "redis" diff --git a/meta.json b/meta.json index e046c04e..089aa9d6 100644 --- a/meta.json +++ b/meta.json @@ -788,6 +788,24 @@ "business" ] }, + { + "id": "billmora", + "name": "Billmora", + "version": "latest", + "description": "Billmora (Billing Management, Operation, and Recurring Automation) is a free, open-source platform for hosting providers to manage clients, invoicing, and server provisioning.", + "logo": "billmora.svg", + "links": { + "website": "https://billmora.com", + "github": "https://github.com/Billmora/billmora", + "docs": "https://billmora.com/docs/introduction" + }, + "tags": [ + "laravel", + "billing", + "hosting", + "automation" + ] + }, { "id": "blender", "name": "Blender",