diff --git a/public/v4/apps/crater.yml b/public/v4/apps/crater.yml new file mode 100644 index 0000000..ccc1d11 --- /dev/null +++ b/public/v4/apps/crater.yml @@ -0,0 +1,345 @@ +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 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 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 + 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 Host + 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_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. diff --git a/public/v4/logos/crater.png b/public/v4/logos/crater.png new file mode 100644 index 0000000..0413bca Binary files /dev/null and b/public/v4/logos/crater.png differ