361 lines
15 KiB
YAML
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.
|