summaryrefslogtreecommitdiffhomepage
path: root/public/v4/apps/crater.yml
blob: fc425f443754c155a9d9ef6497b59142987bed83 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
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: [email protected]
          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.