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.
|