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.