diff --git a/.env.sample b/.env.sample index b419429..a04600f 100644 --- a/.env.sample +++ b/.env.sample @@ -1,6 +1,7 @@ TYPE=zammad DOMAIN=zammad.example.com +TIMEOUT=600 ## Domain aliases #EXTRA_DOMAINS=', `www.zammad.example.com`' @@ -8,5 +9,19 @@ DOMAIN=zammad.example.com LETS_ENCRYPT_ENV=production SECRET_DB_PASSWORD_VERSION=v1 +SECRET_SMTP_PASSWORD_VERSION=v1 +SECRET_ADMIN_PASSWORD_VERSION=v1 #RAILS_TRUSTED_PROXIES=['127.0.0.1', '::1', 'your-traefik_app'] +## Initialization ## +PRODUCT_NAME="Support" +ORGANIZATION="Test Org" +LOGO_URL=logo.svg +# TIMEZONE="Europe/Berlin" +LOCALE="de-de" + +ADMIN_EMAIL=admin@example.com +SMTP_HOST=mail.example.com +SMTP_LOGIN=user@example.com +SMTP_PORT=465 + diff --git a/abra.sh b/abra.sh index a9f232d..cabaa4e 100644 --- a/abra.sh +++ b/abra.sh @@ -1 +1,22 @@ export ENTRYPOINT_VERSION=v2 +export AUTO_WIZARD_VERSION=v1 + +get_setting_changes() { + /custom-entrypoint.sh "rails r 'puts JSON.pretty_generate(JSON.parse(Setting.all.select{ |setting| setting.state_current != setting.state_initial }.map { |setting| {name: setting.name, value: setting.state_current[\""value\""]} } .to_json))'" +} + +console() { + /custom-entrypoint.sh "rails c" +} + + +rails_run() { + COMMAND="rails r \"$@\"" + /custom-entrypoint.sh "$COMMAND" +} + +init() { + cp -f /opt/zammad/contrib/auto_wizard.json /tmp/auto_wizard.json + /custom-entrypoint.sh "rails zammad:setup:auto_wizard[/tmp/auto_wizard.json]" +} + diff --git a/auto_wizard.json.tmpl b/auto_wizard.json.tmpl new file mode 100644 index 0000000..f0c1b3e --- /dev/null +++ b/auto_wizard.json.tmpl @@ -0,0 +1,69 @@ +{ + "Users": [ + { + "login": "admin", + "firstname": "Admin", + "lastname": "Agent", + "password": "{{ secret "admin_password" }}", + "email": "{{ env "ADMIN_EMAIL" }}" + } + ], + "Channels": [ + { + "id": 1, + "area": "Email::Notification", + "options": { + "outbound": { + "adapter": "smtp", + "options": { + "host": "{{ env "SMTP_HOST" }}", + "user": "{{ env "SMTP_LOGIN" }}", + "password": "{{ secret "smtp_password" }}", + "port": "{{ env "SMTP_PORT" }}", + "ssl": true, + "domain": "{{ env "DOMAIN" }}", + "enable_starttls_auto": true, + "openssl_verify_mode": "none" + } + } + }, + "active": true, + "preferences": { + "online_service_disable": true + } + } + ], + "Settings": [ + { + "name": "fqdn", + "value": "{{ env "DOMAIN" }}" + }, + { + "name": "product_name", + "value": "{{ env "PRODUCT_NAME" }}" + }, + { + "name": "organization", + "value": "{{ env "ORGANIZATION" }}" + }, + { + "name": "product_logo", + "value": "{{ env "LOGO_URL" }}" + }, + { + "name": "timezone_default", + "value": "{{ env "TZ" }}" + }, + { + "name": "locale_default", + "value": "{{ env "LOCALE" }}" + }, + { + "name": "http_type", + "value": "https" + } + ], + "TextModuleLocale": { + "Locale": "{{ env "LOCALE" }}" + } +} diff --git a/compose.yml b/compose.yml index 184fe11..5170915 100644 --- a/compose.yml +++ b/compose.yml @@ -37,6 +37,15 @@ x-shared: ZAMMAD_SESSION_JOBS: ZAMMAD_PROCESS_SCHEDULED: ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS: + PRODUCT_NAME: + ORGANIZATION: + LOGO_URL: + LOCALE: + ADMIN_EMAIL: + SMTP_HOST: + SMTP_LOGIN: + SMTP_PORT: + DOMAIN: image: ghcr.io/zammad/zammad:6.3.1-95 deploy: restart_policy: @@ -53,8 +62,12 @@ x-shared: - source: entrypoint target: /custom-entrypoint.sh mode: 0555 + - source: auto_wizard + target: /opt/zammad/contrib/auto_wizard.json secrets: - db_password + - smtp_password + - admin_password services: zammad-backup: @@ -227,8 +240,18 @@ configs: entrypoint: name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_VERSION} file: entrypoint.sh + auto_wizard: + name: ${STACK_NAME}_auto_wizard_${AUTO_WIZARD_VERSION} + file: auto_wizard.json.tmpl + template_driver: golang secrets: db_password: external: true name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION} + smtp_password: + external: true + name: ${STACK_NAME}_smtp_password_${SECRET_SMTP_PASSWORD_VERSION} + admin_password: + external: true + name: ${STACK_NAME}_admin_password_${SECRET_ADMIN_PASSWORD_VERSION}