Zammad-Rolle
This commit is contained in:
commit
a6b16394ed
27 changed files with 552 additions and 0 deletions
22
defaults/main.yml
Normal file
22
defaults/main.yml
Normal file
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
debian_version: buster
|
||||
|
||||
ruby_path: "{{ zammad_user_home }}/.rbenv"
|
||||
ruby_bin_path: "{{ ruby_path }}/versions/{{ ruby_version }}/bin"
|
||||
ruby_build_repo: https://github.com/rbenv/ruby-build.git
|
||||
ruby_version: 2.6.6
|
||||
|
||||
zammad_database_name: zammad
|
||||
zammad_database_password: "{{ lookup('password', '/tmp/zammad_database_pwd length=42 chars=ascii_letters,digits') }}"
|
||||
zammad_database_user: zammad
|
||||
zammad_database_configuration: "{{ zammad_home }}/config/database.yml"
|
||||
zammad_home: /opt/zammad
|
||||
zammad_host: support.sao
|
||||
zammad_log_file: zammad.log
|
||||
zammad_log_name: zammad
|
||||
zammad_log_path: /var/log/zammad
|
||||
zammad_repo: https://github.com/zammad/zammad.git
|
||||
zammad_user: zammad
|
||||
zammad_user_home: "/home/{{ zammad_user }}"
|
||||
zammad_version: 4.1.0
|
||||
zammad_webserver_configuration: "/etc/nginx/sites-available/{{ zammad_domain }}"
|
10
files/plain-text.patch
Normal file
10
files/plain-text.patch
Normal file
|
@ -0,0 +1,10 @@
|
|||
--- app/models/channel/email_build.rb.orig 2021-07-27 18:03:57.295467567 +0200
|
||||
+++ app/models/channel/email_build.rb 2021-07-27 18:04:20.705471697 +0200
|
||||
@@ -62,6 +62,7 @@
|
||||
|
||||
# generate plain part
|
||||
attr[:body] = attr[:body].html2text
|
||||
+ html_alternative = false
|
||||
end
|
||||
|
||||
# add plain text part
|
6
files/zammad.env
Normal file
6
files/zammad.env
Normal file
|
@ -0,0 +1,6 @@
|
|||
BUNDLE_BINARY="rbenv exec bundle"
|
||||
RAILS_ENV=production
|
||||
RAILS_SERVE_STATIC_FILES=true
|
||||
ZAMMAD_BIND_IP=127.0.0.1
|
||||
ZAMMAD_RAILS_PORT=3000
|
||||
ZAMMAD_WEBSOCKET_PORT=6042
|
18
files/zammad.service
Normal file
18
files/zammad.service
Normal file
|
@ -0,0 +1,18 @@
|
|||
[Unit]
|
||||
Description=Zammad
|
||||
After=syslog.target
|
||||
After=network.target
|
||||
StopWhenUnneeded=true
|
||||
Wants=zammad-rails.service
|
||||
Wants=zammad-scheduler.service
|
||||
Wants=zammad-websocket.service
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=/etc/zammad/zammad.env
|
||||
User=zammad
|
||||
Group=zammad
|
||||
Restart=always
|
||||
ExecStart=/bin/sleep infinity
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
21
handlers/main.yml
Normal file
21
handlers/main.yml
Normal file
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
- name: reload monit
|
||||
service:
|
||||
name: monit
|
||||
state: reloaded
|
||||
|
||||
- name: reload nginx
|
||||
service:
|
||||
name: nginx
|
||||
state: reloaded
|
||||
|
||||
- name: reload reverse_proxy
|
||||
service:
|
||||
name: nginx
|
||||
state: reloaded
|
||||
delegate_to: "{{ gateway_host }}"
|
||||
|
||||
- name: reload rsyslog
|
||||
service:
|
||||
name: rsyslog
|
||||
state: reloaded
|
10
meta/main.yml
Normal file
10
meta/main.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
galaxy_info:
|
||||
author: systemausfall.org
|
||||
description: Install Zammad ticket system from source
|
||||
company: Sense.Lab e.V.
|
||||
license: GPLv3
|
||||
min_ansible_version: 2.9
|
||||
platforms:
|
||||
- name: Debian
|
||||
versions:
|
||||
- Buster
|
52
tasks/database.yml
Normal file
52
tasks/database.yml
Normal file
|
@ -0,0 +1,52 @@
|
|||
---
|
||||
- name: "database: Datenbank anlegen"
|
||||
postgresql_db:
|
||||
name: "{{ zammad_database_name }}"
|
||||
encoding: UTF8
|
||||
template: template0
|
||||
become: true
|
||||
become_user: postgres
|
||||
delegate_to: "{{ database_host }}"
|
||||
|
||||
- name: "database: Benutzer einrichten"
|
||||
postgresql_user:
|
||||
name: "{{ zammad_database_user }}"
|
||||
password: "{{ zammad_database_password }}"
|
||||
db: "{{ zammad_database_name }}"
|
||||
become: true
|
||||
become_user: postgres
|
||||
delegate_to: "{{ database_host }}"
|
||||
|
||||
- name: "database: Konfiguration kopieren"
|
||||
template:
|
||||
src: database.yml.j2
|
||||
dest: "{{ zammad_database_configuration }}"
|
||||
|
||||
- name: "database: Stoppe Service"
|
||||
service:
|
||||
name: zammad
|
||||
state: stopped
|
||||
register: unused_disable
|
||||
failed_when: "unused_disable is failed and ('find' not in unused_disable.msg and 'found' not in unused_disable.msg)"
|
||||
|
||||
- name: "database: Führe Migrationen aus"
|
||||
shell: "RAILS_ENV=production rbenv exec bundle exec rake db:migrate"
|
||||
args:
|
||||
chdir: "{{ zammad_home }}"
|
||||
become: true
|
||||
become_user: "{{ zammad_user }}"
|
||||
|
||||
- name: "database: Führe Seeds aus"
|
||||
shell: "RAILS_ENV=production rbenv exec bundle exec rake db:seed"
|
||||
args:
|
||||
chdir: "{{ zammad_home }}"
|
||||
become: true
|
||||
become_user: "{{ zammad_user }}"
|
||||
when: zammad_database_configured.stat.exists == False
|
||||
|
||||
- name: "database: Precompile Assets"
|
||||
shell: "RAILS_ENV=production rbenv exec bundle exec rake assets:precompile"
|
||||
args:
|
||||
chdir: "{{ zammad_home }}"
|
||||
become: true
|
||||
become_user: "{{ zammad_user }}"
|
29
tasks/gateway.yml
Normal file
29
tasks/gateway.yml
Normal file
|
@ -0,0 +1,29 @@
|
|||
---
|
||||
- name: "gateway: Domain zur Zertifikatsliste hinzufügen"
|
||||
lineinfile:
|
||||
path: /etc/dehydrated/domains.txt
|
||||
insertafter: "^### systemausfall"
|
||||
line: "{{ zammad_domain }}"
|
||||
when: "'dehydrated' in ansible_facts.packages"
|
||||
register: add_certificate
|
||||
delegate_to: "{{ gateway_host }}"
|
||||
|
||||
- name: "gateway: Zertifikat erstellen"
|
||||
command: dehydrated --cron -g
|
||||
when: add_certificate.changed
|
||||
delegate_to: "{{ gateway_host }}"
|
||||
|
||||
- name: "gateway: Proxy einrichten"
|
||||
template:
|
||||
src: nginx-rp-site.j2
|
||||
dest: "/etc/nginx/sites-available/{{ zammad_domain }}"
|
||||
force: no
|
||||
delegate_to: "{{ gateway_host }}"
|
||||
|
||||
- name: "gateway: Seite aktivieren"
|
||||
file:
|
||||
src: "/etc/nginx/sites-available/{{ zammad_domain }}"
|
||||
dest: "/etc/nginx/sites-enabled/{{ zammad_domain }}"
|
||||
state: link
|
||||
notify: reload reverse_proxy
|
||||
delegate_to: "{{ gateway_host }}"
|
4
tasks/locales.yml
Normal file
4
tasks/locales.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
- name: "locales: Richte locales ein"
|
||||
locale_gen:
|
||||
name: en_US.UTF-8
|
||||
state: present
|
17
tasks/main.yml
Normal file
17
tasks/main.yml
Normal file
|
@ -0,0 +1,17 @@
|
|||
- name: "Prüfe vorhandene Datenbank-Konfiguration"
|
||||
stat:
|
||||
path: "{{ zammad_database_configuration }}"
|
||||
register: zammad_database_configured
|
||||
|
||||
- import_tasks: packages.yml
|
||||
- import_tasks: locales.yml
|
||||
- import_tasks: user.yml
|
||||
- import_tasks: zammad.yml
|
||||
- import_tasks: ruby.yml
|
||||
- import_tasks: database.yml
|
||||
- import_tasks: syslog.yml
|
||||
- import_tasks: webserver.yml
|
||||
- import_tasks: systemd.yml
|
||||
- import_tasks: monit.yml
|
||||
tags: monit
|
||||
- import_tasks: gateway.yml
|
5
tasks/monit.yml
Normal file
5
tasks/monit.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
- name: "monit: Kopiere Konfiguration"
|
||||
template:
|
||||
src: monit.j2
|
||||
dest: /etc/monit/conf-enabled/zammad
|
||||
notify: reload monit
|
37
tasks/packages.yml
Normal file
37
tasks/packages.yml
Normal file
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
- name: "packages: Fakten sammeln"
|
||||
package_facts:
|
||||
manager: apt
|
||||
|
||||
- name: "packages: Abhängigkeiten installieren"
|
||||
apt:
|
||||
default_release: "{{ debian_version }}"
|
||||
pkg:
|
||||
- autoconf
|
||||
- automake
|
||||
- autotools-dev
|
||||
- bison
|
||||
- build-essential
|
||||
- curl
|
||||
- gawk
|
||||
- git
|
||||
- libffi-dev
|
||||
- libgdbm-dev
|
||||
- libgmp-dev
|
||||
- libimlib2-dev
|
||||
- libncurses5-dev
|
||||
- libpq-dev
|
||||
- libreadline-dev
|
||||
- libssl-dev
|
||||
- libtool
|
||||
- libxml2-dev
|
||||
- libxslt1-dev
|
||||
- libyaml-0-2
|
||||
- libyaml-dev
|
||||
- locales
|
||||
- nginx-light
|
||||
- patch
|
||||
- pkg-config
|
||||
- rbenv
|
||||
- sudo
|
||||
- zlib1g-dev
|
50
tasks/ruby.yml
Normal file
50
tasks/ruby.yml
Normal file
|
@ -0,0 +1,50 @@
|
|||
- name: "ruby: rbenv einrichten"
|
||||
lineinfile:
|
||||
path: "{{ zammad_user_home }}/.bashrc"
|
||||
line: eval "$(rbenv init -)"
|
||||
|
||||
- name: "ruby: rbenv plugin-verzeichnis erstellen"
|
||||
file:
|
||||
path: "{{ ruby_path }}/plugins"
|
||||
state: directory
|
||||
owner: "{{ zammad_user }}"
|
||||
group: "{{ zammad_user }}"
|
||||
|
||||
- name: "ruby: ruby-build installieren"
|
||||
git:
|
||||
repo: "{{ ruby_build_repo }}"
|
||||
dest: "{{ ruby_path }}/plugins/ruby-build"
|
||||
|
||||
- name: "ruby: Version prüfen"
|
||||
stat:
|
||||
path: "{{ ruby_path }}/versions/{{ ruby_version }}"
|
||||
register: ruby_installed
|
||||
|
||||
- name: "ruby installieren"
|
||||
command:
|
||||
cmd: "rbenv install {{ ruby_version }}"
|
||||
chdir: "{{ zammad_user_home }}"
|
||||
become: true
|
||||
become_user: "{{ zammad_user }}"
|
||||
when: ruby_installed.stat.exists == False
|
||||
|
||||
- name: "ruby aktivieren"
|
||||
shell: "rbenv local {{ ruby_version }}"
|
||||
args:
|
||||
chdir: "{{ zammad_home }}"
|
||||
become: true
|
||||
become_user: "{{ zammad_user }}"
|
||||
|
||||
- name: "ruby: Bundler installieren"
|
||||
command:
|
||||
cmd: rbenv exec gem install bundler
|
||||
chdir: "{{ zammad_home }}"
|
||||
become: true
|
||||
become_user: "{{ zammad_user }}"
|
||||
|
||||
- name: "ruby: Ruby-Abhängigkeiten installieren"
|
||||
shell: "RAILS_ENV=production {{ ruby_bin_path }}/bundle install --without test development mysql"
|
||||
args:
|
||||
chdir: "{{ zammad_home }}"
|
||||
become: true
|
||||
become_user: "{{ zammad_user }}"
|
10
tasks/syslog.yml
Normal file
10
tasks/syslog.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
- name: "syslog: Erstelle Verzeichnis"
|
||||
file:
|
||||
src: "{{ zammad_home }}/log"
|
||||
dest: "{{ zammad_log_path }}"
|
||||
state: link
|
||||
|
||||
- name: "syslog: Konfiguriere logrotate"
|
||||
template:
|
||||
src: logrotate.j2
|
||||
dest: /etc/logrotate.d/zammad
|
32
tasks/systemd.yml
Normal file
32
tasks/systemd.yml
Normal file
|
@ -0,0 +1,32 @@
|
|||
- name: "systemd: Kopiere Services"
|
||||
template:
|
||||
src: "systemd/{{ item }}.j2"
|
||||
dest: "/etc/systemd/system/{{ item }}"
|
||||
loop:
|
||||
- zammad-rails.service
|
||||
- zammad-scheduler.service
|
||||
- zammad-websocket.service
|
||||
|
||||
- name: "systemd: Kopiere Zammad-Service"
|
||||
copy:
|
||||
src: zammad.service
|
||||
dest: /etc/systemd/system/zammad.service
|
||||
|
||||
- name: "systemd: Erstelle Konfigurationsverzeichnis"
|
||||
file:
|
||||
path: /etc/zammad
|
||||
state: directory
|
||||
|
||||
- name: "systemd: Kopiere Konfiguration"
|
||||
copy:
|
||||
src: zammad.env
|
||||
dest: /etc/zammad/zammad.env
|
||||
force: no
|
||||
|
||||
- name: "systemd: Aktiviere Service"
|
||||
systemd:
|
||||
enabled: yes
|
||||
daemon_reload: yes
|
||||
state: started
|
||||
name: zammad
|
||||
|
6
tasks/user.yml
Normal file
6
tasks/user.yml
Normal file
|
@ -0,0 +1,6 @@
|
|||
---
|
||||
- name: "user: Systemkonto anlegen"
|
||||
user:
|
||||
name: "{{ zammad_user }}"
|
||||
shell: /bin/bash
|
||||
password_lock: yes
|
12
tasks/webserver.yml
Normal file
12
tasks/webserver.yml
Normal file
|
@ -0,0 +1,12 @@
|
|||
- name: "webserver: Konfiguration kopieren"
|
||||
template:
|
||||
src: nginx-site.j2
|
||||
dest: "{{ zammad_webserver_configuration }}"
|
||||
|
||||
- name: "webserver: Kofiguration aktivieren"
|
||||
file:
|
||||
src: "{{ zammad_webserver_configuration }}"
|
||||
dest: "/etc/nginx/sites-enabled/{{ zammad_domain }}"
|
||||
state: link
|
||||
|
||||
|
20
tasks/zammad.yml
Normal file
20
tasks/zammad.yml
Normal file
|
@ -0,0 +1,20 @@
|
|||
- name: "zammad: Hole Zammad Repo"
|
||||
git:
|
||||
repo: "{{ zammad_repo }}"
|
||||
dest: "{{ zammad_home }}"
|
||||
version: "{{ zammad_version }}"
|
||||
force: yes
|
||||
|
||||
- name: "zammad: Ändere Besitzrechte"
|
||||
file:
|
||||
path: "{{ zammad_home }}"
|
||||
state: directory
|
||||
recurse: yes
|
||||
owner: "{{ zammad_user }}"
|
||||
group: "{{ zammad_user }}"
|
||||
|
||||
# https://github.com/zammad/zammad/issues/325
|
||||
- name: "zammad: Wende plain-Text-Patch an"
|
||||
patch:
|
||||
src: plain-text.patch
|
||||
dest: "{{ zammad_home }}/app/models/channel/email_build.rb"
|
44
templates/database.yml.j2
Normal file
44
templates/database.yml.j2
Normal file
|
@ -0,0 +1,44 @@
|
|||
# this is a database config sample for zammad ready to use with a postgresql db
|
||||
# copy or symlink this file to config/database.yml to use it
|
||||
|
||||
default: &default
|
||||
# For details on connection pooling, see Rails configuration guide
|
||||
# http://guides.rubyonrails.org/configuring.html#database-pooling
|
||||
pool: 50
|
||||
timeout: 5000
|
||||
encoding: utf8
|
||||
|
||||
##### postgresql config #####
|
||||
|
||||
adapter: postgresql
|
||||
username: {{ zammad_database_user }}
|
||||
password: {{ zammad_database_password }}
|
||||
|
||||
# If the database server is not on localhost, you can set hostname and port:
|
||||
host: {{ database_host }}
|
||||
# port:
|
||||
|
||||
#### mysql config #####
|
||||
|
||||
# adapter: mysql2
|
||||
# username: zammad
|
||||
# password: <Password>
|
||||
|
||||
# If the database server is not on localhost, you can set hostname and port:
|
||||
# host:
|
||||
# port:
|
||||
|
||||
production:
|
||||
<<: *default
|
||||
database: {{ zammad_database_name }}
|
||||
|
||||
development:
|
||||
<<: *default
|
||||
database: zammad_development
|
||||
|
||||
# Warning: The database defined as "test" will be erased and
|
||||
# re-generated from your development database when you run "rake".
|
||||
# Do not set this db to the same as development or production.
|
||||
test:
|
||||
<<: *default
|
||||
database: zammad_test
|
9
templates/logrotate.j2
Normal file
9
templates/logrotate.j2
Normal file
|
@ -0,0 +1,9 @@
|
|||
{{ zammad_log_path }}/*.log {
|
||||
daily
|
||||
missingok
|
||||
rotate 2
|
||||
compress
|
||||
delaycompress
|
||||
notifempty
|
||||
copytruncate
|
||||
}
|
23
templates/monit.j2
Normal file
23
templates/monit.j2
Normal file
|
@ -0,0 +1,23 @@
|
|||
check process zammad-rails with pidfile {{ zammad_home }}/tmp/pids/server.pid
|
||||
start program = "/usr/sbin/service zammad-rails start"
|
||||
stop program = "/usr/sbin/service zammad-rails stop"
|
||||
if 2 restarts within 3 cycles then timeout
|
||||
if cpu usage > 95% for 3 cycles then restart
|
||||
if failed host 127.0.0.1 port 3000 for 3 cycles then restart
|
||||
if 5 restarts within 5 cycles then timeout
|
||||
|
||||
check process zammad-websocket
|
||||
matching "script/websocket-server.rb -b 127.0.0.1 -p 6042 start"
|
||||
start program = "/usr/sbin/service zammad-websocket start"
|
||||
stop program = "/usr/sbin/service zammad-websocket stop"
|
||||
if 2 restarts within 3 cycles then timeout
|
||||
if cpu usage > 95% for 3 cycles then restart
|
||||
if failed host 127.0.0.1 port 6042 for 3 cycles then restart
|
||||
if 5 restarts within 5 cycles then timeout
|
||||
|
||||
check process zammad-scheduler with pidfile {{ zammad_home }}/tmp/pids/scheduler.pid
|
||||
start program = "/usr/sbin/service zammad-scheduler start"
|
||||
stop program = "/usr/sbin/service zammad-scheduler stop"
|
||||
if 2 restarts within 3 cycles then timeout
|
||||
if cpu usage > 95% for 3 cycles then restart
|
||||
if 5 restarts within 5 cycles then timeout
|
21
templates/nginx-rp-site.j2
Normal file
21
templates/nginx-rp-site.j2
Normal file
|
@ -0,0 +1,21 @@
|
|||
server {
|
||||
listen 80;
|
||||
server_name {{ zammad_domain }};
|
||||
include snippets/letsencrypt.conf;
|
||||
location / { return 301 https://$http_host$request_uri; }
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name {{ zammad_domain }};
|
||||
ssl_certificate /var/lib/dehydrated/certs/{{ zammad_domain }}/fullchain.pem;
|
||||
ssl_certificate_key /var/lib/dehydrated/certs/{{ zammad_domain }}/privkey.pem;
|
||||
include /etc/nginx/snippets/add_headers.conf;
|
||||
location /ws {
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header Host $host;
|
||||
proxy_pass http://{{ zammad_host }}:80;
|
||||
}
|
||||
location / { proxy_pass http://{{ zammad_host }}:80; }
|
||||
}
|
35
templates/nginx-site.j2
Normal file
35
templates/nginx-site.j2
Normal file
|
@ -0,0 +1,35 @@
|
|||
server {
|
||||
listen 80;
|
||||
server_name {{ zammad_domain }};
|
||||
|
||||
root {{ zammad_home }}/public;
|
||||
error_log /var/log/nginx/{{ zammad_domain }}.error.log;
|
||||
|
||||
client_max_body_size 50M;
|
||||
|
||||
location ~ ^/(assets/|robots.txt|humans.txt|favicon.ico|apple-touch-icon.png) {
|
||||
expires max;
|
||||
}
|
||||
|
||||
location /ws {
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_set_header CLIENT_IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_read_timeout 86400;
|
||||
proxy_pass http://127.0.0.1:6042;
|
||||
}
|
||||
|
||||
location / {
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header CLIENT_IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto https;
|
||||
# Change this line in an SSO setup
|
||||
proxy_set_header X-Forwarded-User "";
|
||||
proxy_read_timeout 300;
|
||||
proxy_pass http://127.0.0.1:3000;
|
||||
}
|
||||
}
|
1
templates/syslog.j2
Normal file
1
templates/syslog.j2
Normal file
|
@ -0,0 +1 @@
|
|||
if $programname == '{{ zammad_log_name }}' then { action(type="omfile" file="{{ zammad_log_path }}/{{ zammad_log_file }}") stop }
|
19
templates/systemd/zammad-rails.service.j2
Normal file
19
templates/systemd/zammad-rails.service.j2
Normal file
|
@ -0,0 +1,19 @@
|
|||
[Unit]
|
||||
Description=Zammad rails server
|
||||
After=syslog.target
|
||||
After=network.target
|
||||
After=zammad.service
|
||||
Requires=zammad.service
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=/etc/zammad/zammad.env
|
||||
User=zammad
|
||||
Group=zammad
|
||||
Restart=always
|
||||
|
||||
WorkingDirectory={{ zammad_home }}
|
||||
|
||||
ExecStart=/bin/bash -l -c "${BUNDLE_BINARY} exec script/rails server -b ${ZAMMAD_BIND_IP} -p ${ZAMMAD_RAILS_PORT}"
|
||||
|
||||
[Install]
|
||||
WantedBy=zammad.service
|
20
templates/systemd/zammad-scheduler.service.j2
Normal file
20
templates/systemd/zammad-scheduler.service.j2
Normal file
|
@ -0,0 +1,20 @@
|
|||
[Unit]
|
||||
Description=Zammad scheduler
|
||||
After=syslog.target
|
||||
After=network.target
|
||||
After=zammad.service
|
||||
Requires=zammad.service
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
EnvironmentFile=/etc/zammad/zammad.env
|
||||
User=zammad
|
||||
Group=zammad
|
||||
Restart=always
|
||||
|
||||
WorkingDirectory={{ zammad_home }}
|
||||
|
||||
ExecStart=/bin/bash -l -c "${BUNDLE_BINARY} exec script/scheduler.rb start"
|
||||
|
||||
[Install]
|
||||
WantedBy=zammad.service
|
19
templates/systemd/zammad-websocket.service.j2
Normal file
19
templates/systemd/zammad-websocket.service.j2
Normal file
|
@ -0,0 +1,19 @@
|
|||
[Unit]
|
||||
Description=Zammad websocket
|
||||
After=syslog.target
|
||||
After=network.target
|
||||
After=zammad.service
|
||||
Requires=zammad.service
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=/etc/zammad/zammad.env
|
||||
User=zammad
|
||||
Group=zammad
|
||||
Restart=always
|
||||
|
||||
WorkingDirectory={{ zammad_home }}
|
||||
|
||||
ExecStart=/bin/bash -l -c "${BUNDLE_BINARY} exec script/websocket-server.rb -b ${ZAMMAD_BIND_IP} -p ${ZAMMAD_WEBSOCKET_PORT} start"
|
||||
|
||||
[Install]
|
||||
WantedBy=zammad.service
|
Loading…
Reference in a new issue