one-click-apps/public/v4/apps/crater.yml

361 lines
15 KiB
YAML

captainVersion: 4
services:
$$cap_appname:
caproverExtra:
dockerfileLines:
- ARG CRATER_PHP_VERSION
- FROM shinsenter/crater:php$CRATER_PHP_VERSION
- ARG TZ
- ARG PUID
- ARG PGID
- ARG CRATER_AUTO_OPTIMIZE
- ARG CRATER_LINK_STORAGE
- ARG CRATER_AUTO_MIGRATION
- ARG CRATER_QUEUE_ENABLED
- ARG CRATER_QUEUE_OPTIONS
- ARG CRATER_SCHEDULE_ENABLED
- ARG CRATER_SCHEDULE_OPTIONS
- ARG APP_ENV
- ARG APP_KEY
- ARG APP_DEBUG
- ARG APP_LOG_LEVEL
- ARG APP_URL
- ARG DB_CONNECTION
- ARG DB_HOST
- ARG DB_PORT
- ARG DB_DATABASE
- ARG DB_USERNAME
- ARG DB_PASSWORD
- ARG BROADCAST_DRIVER
- ARG CACHE_DRIVER
- ARG QUEUE_DRIVER
- ARG SESSION_DRIVER
- ARG SESSION_LIFETIME
- ARG REDIS_HOST
- ARG REDIS_PORT
- ARG MAIL_DRIVER
- ARG MAIL_HOST
- ARG MAIL_PORT
- ARG MAIL_USERNAME
- ARG MAIL_PASSWORD
- ARG MAIL_ENCRYPTION
- ARG MAIL_FROM_ADDRESS
- ARG MAIL_FROM_NAME
- ARG PUSHER_APP_ID
- ARG PUSHER_KEY
- ARG PUSHER_SECRET
- ARG SANCTUM_STATEFUL_DOMAINS
- ARG SESSION_DOMAIN
- ARG TRUSTED_PROXIES
- ARG CRON_JOB_AUTH_TOKEN
- ARG PROJECT_DIRECTORY=/var/www/html
- ARG STARTUP_COMMANDS_FILE=/startup/500-init-crater
- ARG ENVIRONMENT_FILE=$PROJECT_DIRECTORY/.env
- >-
ARG ENVIRONMENT_VARIABLE_NAMES="APP_ENV APP_KEY APP_DEBUG
APP_LOG_LEVEL APP_URL DB_CONNECTION DB_HOST DB_PORT
DB_DATABASE DB_USERNAME DB_PASSWORD BROADCAST_DRIVER
CACHE_DRIVER QUEUE_DRIVER SESSION_DRIVER SESSION_LIFETIME
REDIS_HOST REDIS_PORT MAIL_DRIVER MAIL_HOST MAIL_PORT
MAIL_USERNAME MAIL_PASSWORD MAIL_ENCRYPTION MAIL_FROM_ADDRESS
MAIL_FROM_NAME PUSHER_APP_ID PUSHER_KEY PUSHER_SECRET
SANCTUM_STATEFUL_DOMAINS SESSION_DOMAIN TRUSTED_PROXIES
CRON_JOB_AUTH_TOKEN"
- ARG COMMAND_CLEAN_ENVIRONMENT_FILE="> $ENVIRONMENT_FILE"
- ARG COMMAND_ADD_TO_ENVIRONMENT_FILE="for name in $ENVIRONMENT_VARIABLE_NAMES; do printf \"\$name=\${!name}\\\n\" >> $ENVIRONMENT_FILE; done"
- ARG COMMAND_NOTIFY="echo; echo 'Created environment file'"
- ENV TZ=$TZ
- ENV PUID=$PUID
- ENV PGID=$PGID
- ENV CRATER_AUTO_OPTIMIZE=$CRATER_AUTO_OPTIMIZE
- ENV CRATER_LINK_STORAGE=$CRATER_LINK_STORAGE
- ENV CRATER_AUTO_MIGRATION=$CRATER_AUTO_MIGRATION
- ENV CRATER_QUEUE_ENABLED=$CRATER_QUEUE_ENABLED
- ENV CRATER_QUEUE_OPTIONS=$CRATER_QUEUE_OPTIONS
- ENV CRATER_SCHEDULE_ENABLED=$CRATER_SCHEDULE_ENABLED
- ENV CRATER_SCHEDULE_OPTIONS=$CRATER_SCHEDULE_OPTIONS
- ENV WEBHOME=$PROJECT_DIRECTORY
- RUN printf "\n$COMMAND_CLEAN_ENVIRONMENT_FILE\n$COMMAND_ADD_TO_ENVIRONMENT_FILE\n$COMMAND_NOTIFY" >> $STARTUP_COMMANDS_FILE
environment:
CRATER_PHP_VERSION: $$cap_PHP_VERSION
TZ: $$cap_TZ
PUID: $$cap_PUID
PGID: $$cap_PGID
CRATER_AUTO_OPTIMIZE: $$cap_CRATER_AUTO_OPTIMIZE
CRATER_LINK_STORAGE: $$cap_CRATER_LINK_STORAGE
CRATER_AUTO_MIGRATION: $$cap_CRATER_AUTO_MIGRATION
CRATER_QUEUE_ENABLED: $$cap_CRATER_QUEUE_ENABLED
CRATER_QUEUE_OPTIONS: $$cap_CRATER_QUEUE_OPTIONS
CRATER_SCHEDULE_ENABLED: $$cap_CRATER_SCHEDULE_ENABLED
CRATER_SCHEDULE_OPTIONS: $$cap_CRATER_SCHEDULE_OPTIONS
APP_ENV: $$cap_APP_ENV
APP_KEY: $$cap_APP_KEY
APP_DEBUG: $$cap_APP_DEBUG
APP_LOG_LEVEL: $$cap_APP_LOG_LEVEL
APP_URL: $$cap_APP_URL
DB_CONNECTION: $$cap_DB_CONNECTION
DB_HOST: srv-captain--$$cap_appname-db
DB_PORT: $$cap_DB_PORT
DB_DATABASE: $$cap_DB_DATABASE
DB_USERNAME: $$cap_DB_USERNAME
DB_PASSWORD: $$cap_DB_PASSWORD
BROADCAST_DRIVER: $$cap_BROADCAST_DRIVER
CACHE_DRIVER: $$cap_CACHE_DRIVER
QUEUE_DRIVER: $$cap_QUEUE_DRIVER
SESSION_DRIVER: $$cap_SESSION_DRIVER
SESSION_LIFETIME: $$cap_SESSION_LIFETIME
REDIS_HOST: srv-captain--$$cap_appname-queue
REDIS_PORT: $$cap_REDIS_PORT
MAIL_DRIVER: $$cap_MAIL_DRIVER
MAIL_HOST: $$cap_MAIL_HOST
MAIL_PORT: $$cap_MAIL_PORT
MAIL_USERNAME: $$cap_MAIL_USERNAME
MAIL_PASSWORD: $$cap_MAIL_PASSWORD
MAIL_ENCRYPTION: $$cap_MAIL_ENCRYPTION
MAIL_FROM_ADDRESS: $$cap_MAIL_FROM_ADDRESS
MAIL_FROM_NAME: $$cap_MAIL_FROM_NAME
PUSHER_APP_ID: $$cap_PUSHER_APP_ID
PUSHER_KEY: $$cap_PUSHER_KEY
PUSHER_SECRET: $$cap_PUSHER_SECRET
SANCTUM_STATEFUL_DOMAINS: $$cap_appname.$$cap_root_domain
SESSION_DOMAIN: $$cap_appname.$$cap_root_domain
TRUSTED_PROXIES: $$cap_TRUSTED_PROXIES
CRON_JOB_AUTH_TOKEN: $$cap_CRON_JOB_AUTH_TOKEN
volumes:
- $$cap_appname-web:/var/www/html
$$cap_appname-db:
caproverExtra:
notExposeAsWebApp: 'true'
image: mysql:$$cap_MYSQL_VERSION
environment:
TZ: $$cap_TZ
MYSQL_USER: $$cap_DB_USERNAME
MYSQL_PASSWORD: $$cap_DB_PASSWORD
MYSQL_DATABASE: $$cap_DB_DATABASE
MYSQL_ROOT_PASSWORD: $$cap_DB_ROOT_PASSWORD
volumes:
- $$cap_appname-db-data:/var/lib/mysql
- $$cap_appname-db-dump:/docker-entrypoint-initdb.d
$$cap_appname-queue:
caproverExtra:
notExposeAsWebApp: 'true'
image: redis:$$cap_REDIS_VERSION
volumes:
- $$cap_appname-queue:/data
caproverOneClickApp:
instructions:
start: |-
Crater is an open-source web & mobile app that helps you track expenses, payments & create professional invoices & estimates.
Please note that this is **NOT** the official image.
We are using the image provided by Shinsenter: https://hub.docker.com/r/shinsenter/crater
Please make sure you enter `APP_URL` and `APP_KEY` before proceeding.
end: |-
Crater has been successfully deployed! It might take few moments before it's fully started.
You can access it at `http://$$cap_appname.$$cap_root_domain`
It will show the installation wizard.
Please enter the following details:
- Database Host: `srv-captain--$$cap_appname-db`
- Database Name: `$$cap_DB_DATABASE`
- Database Username: `$$cap_DB_USERNAME`
- Database Password: `$$cap_DB_PASSWORD`
displayName: Crater
isOfficial: false
description: Open Source Invoicing Solution for Individuals & Businesses
documentation: See https://docs.craterapp.com/developer-guide.html
variables:
- id: $$cap_PHP_VERSION
label: PHP Image Version Tag
description: Without "php" prefix. Check out their valid tags at https://hub.docker.com/r/shinsenter/crater/tags
defaultValue: '8.1'
validRegex: /.{1,}/
- id: $$cap_MYSQL_VERSION
label: MySQL Image Version Tag
description: Check out their valid tags at https://hub.docker.com/_/mysql/tags
defaultValue: '8.0.30'
validRegex: /.{1,}/
- id: $$cap_REDIS_VERSION
label: Redis Image Version Tag
description: Check out their valid tags at https://hub.docker.com/_/redis/tags
defaultValue: '7.0.5'
validRegex: /.{1,}/
- id: $$cap_TZ
label: Timezone
description: Timezone for the application, find yours at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
defaultValue: UTC
validRegex: /.{1,}/
- id: $$cap_PUID
label: User ID
defaultValue: '1000'
description: User ID that the process uses, run (id $user) on your instance to see the ID
validRegex: /.{1,}/
- id: $$cap_PGID
label: Group ID
defaultValue: '1000'
description: Group ID that the process uses, run (id $user) on your instance to see the ID
validRegex: /.{1,}/
- id: $$cap_CRATER_AUTO_OPTIMIZE
label: Automatic Optimizations
defaultValue: 'false'
description: Optimization and caching of all configs, views and routes.
validRegex: /^(true|false)$/
- id: $$cap_CRATER_LINK_STORAGE
label: Link Storage
defaultValue: 'false'
description: Symlinks to the storage folder.
validRegex: /^(true|false)$/
- id: $$cap_CRATER_AUTO_MIGRATION
label: Automatic Migrations
defaultValue: 'false'
description: Run Crater migrations for development purposes.
validRegex: /^(true|false)$/
- id: $$cap_CRATER_QUEUE_ENABLED
label: Enable Queue Worker
defaultValue: 'true'
description: Start queue worker when the container is up.
validRegex: /^(true|false)$/
- id: $$cap_CRATER_QUEUE_OPTIONS
label: Queue Worker Options
description: Extra arguments for queue worker.
- id: $$cap_CRATER_SCHEDULE_ENABLED
label: Enable Schedule Worker
defaultValue: 'true'
description: Start schedule worker when container is up.
validRegex: /^(true|false)$/
- id: $$cap_CRATER_SCHEDULE_OPTIONS
label: Schedule Worker Options
description: Extra arguments for schedule worker.
- id: $$cap_APP_ENV
label: Environment
defaultValue: production
description: Application environment.
validRegex: /^(production|development)$/
- id: $$cap_APP_KEY
label: Key
description: |-
Base64 encoded application key for encryption.
Run `openssl rand -base64 32` in the terminal to generate a key.
Prepend `base64:` and paste it here.
Example: `base64:cUNxR6ZmeVIj2zd7Q9z0OmHy+DpDB8wv+15OA9AVHKY=`
validRegex: /.{1,}/
- id: $$cap_APP_DEBUG
label: Debugging Mode
defaultValue: 'false'
description: Whether debugging information should be shown.
validRegex: /^(true|false)$/
- id: $$cap_APP_LOG_LEVEL
label: Log Level
defaultValue: error
description: Level of information shown in the logging console.
validRegex: /.{1,}/
- id: $$cap_APP_URL
label: Application URL
description: URL of user-facing service. (e.g. http://crater.example.com)
validRegex: /.{1,}/
- id: $$cap_DB_CONNECTION
label: Database Type
description: Type of database (e.g. mysql, sqlite, pgsql)
defaultValue: mysql
validRegex: /.{1,}/
- id: $$cap_DB_PORT
label: Database Port
description: Port of database host.
defaultValue: 3306
validRegex: /.{1,}/
- id: $$cap_DB_DATABASE
label: Database Name
description: Name of database.
defaultValue: crater
validRegex: /.{1,}/
- id: $$cap_DB_USERNAME
label: Database User Name
description: Name of database user.
defaultValue: crater
validRegex: /.{1,}/
- id: $$cap_DB_PASSWORD
label: Database User Password
description: Password of database user.
defaultValue: $$cap_gen_random_hex(16)
validRegex: /.{1,}/
- id: $$cap_DB_ROOT_PASSWORD
label: Database Root User Password
description: Password of database root user.
defaultValue: $$cap_gen_random_hex(16)
validRegex: /.{1,}/
- id: $$cap_BROADCAST_DRIVER
label: Broadcast Driver
description: Driver for broadcasting.
defaultValue: log
validRegex: /.{1,}/
- id: $$cap_CACHE_DRIVER
label: Cache Driver
description: Driver for caching.
defaultValue: file
validRegex: /.{1,}/
- id: $$cap_QUEUE_DRIVER
label: Queue Driver
description: Driver for queue.
defaultValue: sync
validRegex: /.{1,}/
- id: $$cap_SESSION_DRIVER
label: Session Driver
description: Driver for sessions.
defaultValue: cookie
validRegex: /.{1,}/
- id: $$cap_SESSION_LIFETIME
label: Session Lifetime
description: Duration of a valid session in minutes.
defaultValue: 1440
validRegex: /.{1,}/
- id: $$cap_REDIS_PORT
label: Redis Port
description: Port of Redis host.
defaultValue: 6379
validRegex: /.{1,}/
- id: $$cap_MAIL_DRIVER
label: Mail Driver
description: Driver for email delivery.
defaultValue: smtp
validRegex: /.{1,}/
- id: $$cap_MAIL_HOST
label: Mail Host
description: Host of mail server.
- id: $$cap_MAIL_PORT
label: Mail Port
description: Port of mail server.
- id: $$cap_MAIL_USERNAME
label: Mail User Name
description: Name of mail server user.
- id: $$cap_MAIL_PASSWORD
label: Mail User Password
description: Password of mail server user.
- id: $$cap_MAIL_ENCRYPTION
label: Mail Server Encryption
description: Mail server's encryption type (e.g. ssl or tls).
- id: $$cap_MAIL_FROM_ADDRESS
label: Mail From Address
description: Sender mail address for system mails.
defaultValue: admin@crater.in
validRegex: /.{1,}/
- id: $$cap_MAIL_FROM_NAME
label: Mail From Name
description: Sender name for system mails.
defaultValue: Crater
validRegex: /.{1,}/
- id: $$cap_PUSHER_APP_ID
label: Pusher Application ID
description: If using Pusher, insert application ID here.
- id: $$cap_PUSHER_KEY
label: Pusher Key
description: If using Pusher, insert key here.
- id: $$cap_PUSHER_SECRET
label: Pusher Secret
description: If using Pusher, insert secret here.
- id: $$cap_TRUSTED_PROXIES
label: Trusted Proxies
description: Restrict proxy access.
defaultValue: '*'
validRegex: /.{1,}/
- id: $$cap_CRON_JOB_AUTH_TOKEN
label: Cronjob Authentication Token
description: Authentication token for cronjob executions.