diff --git a/zammad/readme.md b/zammad/readme.md index ca1684d..4b44aa6 100644 --- a/zammad/readme.md +++ b/zammad/readme.md @@ -8,13 +8,12 @@ Ticketing system. -* [Official site](https://zammad.org/) +* [Official site](https://zammad.org/screenshots) * [Github](https://github.com/zammad/zammad) * [DockerHub](https://hub.docker.com/r/zammad/zammad-docker-compose) Zammad is a modern, open source, good looking web base -helpdesk/customer support system. - +helpdesk/customer support system.
Written in Ruby. This deployment uses PostgreSQL for database powered by elasticsearch, with nginx for web server. @@ -69,10 +68,11 @@ This brings a lot of files and folders and everything is pre-prepared.
We are not touching the compose file.
Changes are done only to the `docker-compose.override.yml` and the `.env` file. -In this case we override port, network and backup locations.
-I prefer backups as bind mounts rather than volumes, -which can get destroyed by simple `docker-compose down -v` -that can popup in terminal history, if used before, and be run by accident. +I prefer to store backups as bind mounts rather than volumes, +as volumes can get destroyed by a simple `docker-compose down -v` +that can popup in terminal history if used before, and be run by accident. + +So here we override backup locations and join it to reverse proxy network.
`docker-compose.override.yml` ```yml @@ -132,11 +132,11 @@ ticket.{$MY_DOMAIN} { * Setup admin email and password. * Organization name and domain - System URL. * Email notifications, using smpt. It needs domain set, - wont work with just localhost -* Setup email channel. + wont work with just localhost. +* Setup email channel.
This should be an email address where any email received will create an unassgnied ticket in zammad and sender will be added to users.
- But even if it is not planned to use, + But even if it is not planned to be in use, it is [required](https://github.com/zammad/zammad/issues/2352) for sending email notifications using triggers. @@ -158,19 +158,20 @@ Basic setup and use # Update While [Watchtower](https://github.com/DoTheEvo/selfhosted-apps-docker/tree/master/watchtower) -might work for containers fine. -I might prefer manual update, where it's basicly delete all, git clone new, and restore backups. +might work for containers of the stack, +might be prefered to just do backup and restore in a new git clone. # Backup and restore #### Backup Out of the box a container doing daily backups is running. +Creating two files - backup of the database, and backup of the zammad files. By default these are saved to a docker volume, but in override it has been changed -to bind mount in the zammad directory. +to a bind mount in the zammad-docker-compose directory. So using [borg](https://github.com/DoTheEvo/selfhosted-apps-docker/tree/master/borg_backup) -that makes daily snapshot of the entire directory will keep backups safe.
+that makes daily snapshot of the entire \~/docker directory will keep backups safe.
#### Restore @@ -178,43 +179,45 @@ that makes daily snapshot of the entire directory will keep backups safe.
* shutdown the stack and remove all named volumes `docker-compose down -v` Warning, by default the backups are in one of these volumes - be sure you cope them somewhere else before using `-v` -* delete entire zammad directory containing the compose file and shit + be sure you copy them somewhere else before using `-v` +* delete entire `zammad-docker-compose` directory containing the compose file and shit * git clone the repo for new installation * start it up, - `docker-compose up -d` - wait few minutes till everything finishes, - ctop, select nginx container, arrow left shows the log, - should be at - 'starting nginx...' + `docker-compose up -d` and wait few minutes till everything finishes,
+ ctop, select nginx container, arrow left shows the log,
+ should be at - "starting nginx..." * stop it all - `docker-compose down` -* extract the database backup from `20210515183647_zammad_db.psql.gz`, - `gzip -dk 20210605053326_zammad_db.psql.gz` - rename it to something shorter like backup_db.psql - place it in to `/var/lib/docker/volumes/zammad-docker-compose_zammad-postgresql-data/_data/` +* extract the database backup
+ `gzip -dk 20210605053326_zammad_db.psql.gz`
+ rename it to something shorter like backup_db.psql
+ place it in to `/var/lib/docker/volumes/zammad-docker-compose_zammad-postgresql-data/_data/`
+ I use nnn file manager as root. * start zammad-postgresql container `docker-compose up -d zammad-postgresql` -* exec in to it `docker exec -it zammad-docker-compose_zammad-postgresql_1 bash` -* test you can connect to the database `psql -U zammad` - quit `\q` -* back in bash, drop the existing database `dropdb zammad_production -U zammad` -* create new empty database `createdb zammad_production -U zammad` -* restore data from backup in to it - `psql zammad_production < /var/lib/postgresql/data/backup_db.psql -U zammad` +* exec in to it `docker exec -it zammad-docker-compose_zammad-postgresql_1 bash`
+ test you can connect to the database `psql -U zammad`
+ quit `\q`
+ back in bash, drop the existing database `dropdb zammad_production -U zammad`
+ create a new empty database `createdb zammad_production -U zammad`
+ restore data from backup in to it
+ `psql zammad_production < /var/lib/postgresql/data/backup_db.psql -U zammad`
if you get some errors about already existing, you forgot to drop the database * exit and down the container `docker-compose down` * on docker host navigate to `/var/lib/docker/volumes/zammad-docker-compose_zammad-data/_data/` and delete everything there -* extract 20210515183647_zammad_files.tar somewhere - `tar -xvpf 20210605053326_zammad_files.tar.gz` - copy content of opt/zammad/ containing - app, bin, config,... - in to /var/lib/... where you previously deleted this stuff -* start everything +* extract zammad data somewhere
+ `tar -xvpf 20210605053326_zammad_files.tar.gz`
+ copy content of opt/zammad/ containing directories - app, bin, config,...
+ in to /var/lib/... where you previously deleted this stuff
+ again, I use nnn file manager as root. +* start everything
+ `docker-compose up -d` * exec to rake container and run `rake searchindex:rebuild` to fix searching -in case something is not working righ, check nginx logs, -depending on how you copied the stuff, there could be ownership issue -so in nginx check /opt/zammad and its content with `ls -al` +In case something is not working right, check nginx logs. +Depending on how you copied the stuff, there could be ownership issue +so in nginx check /opt/zammad and its content with `ls -al`, if its owned by zammad user. if its root use `chown -R zammad:zammad /opt/zammad`