Table of Contents
히스토리
- 그래 노트북에 다 설치해서 아주 기본 동작은 다 확인 할 수 있다. 그 정도 환경은 되니까. 아하!
관련메타
BIBLIOGRAPHY
도커 컴포즈 로컬 노트북
- zammad 설치
- n8n 설치 - 오버라이드로 설치하면 설정 값을 서버와 동일하게 유지 할 수 있다.
n8n
https://docs.n8n.io/hosting/installation/docker/#prerequisites
yml
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: unless-stopped
ports:
- "5678:5678"
volumes:
- /disk-A/data/helpdesk/n8n/data:/home/node/.n8n
environment:
- N8N_HOST=localhost
- WEBHOOK_URL=http://localhost:5678/ # <--- 위 N8N_HOST와 동일하게 변경하세요.
- N8N_SECURE_COOKIE=false # <--- 이 줄이 추가되었습니다.
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
- N8N_RUNNERS_ENABLED=true설치 - 스토리지
# sudo mkdir -p /disk-A/data/helpdesk/n8n
# sudo chown -R 1000:1000 /disk-A/data/helpdesk/n8n
sudo docker compose ps
sudo docker compose up -d로그
…/sync/office/dev/helpdesk/n8n master !2 ?23
➜ ls
'Channel.io Integration-v1.json' docker-restart.sh
code-template.json http-request-channelio-get-v5-user-chats-import.json
docker-compose.override.yml http-request-channelio-get-v5-user-chats.json
docker-compose.yml http-request-template.json
…/sync/office/dev/helpdesk/n8n master !2 ?23
➜ sudo docker compose up -d
[+] Running 14/14
✔ n8n Pulled 39.6s ✔ fe07684b16b8 Pull complete 2.0s ✔ 49b72e7e39fe Pull complete 16.1s ✔ c1ab3b052759 Pull complete 16.1s ✔ 845179b1d451 Pull complete 16.2s ✔ ad03744990d9 Pull complete 20.5s ✔ 4f4fb700ef54 Pull complete 20.5s ✔ bfdece05f48d Pull complete 34.1s ✔ 8b4638fd27f8 Pull complete 34.1s ✔ a74496b54e34 Pull complete 34.2s ✔ a626ce764b76 Pull complete 34.2s ✔ f42131b32d27 Pull complete 34.3s ✔ 4ef26991ce21 Pull complete 34.6s ✔ 889bf67856df Pull complete 34.7s [+] Running 2/2
✔ Network n8n_default Created 0.0s ✔ Container n8n-n8n-1 Started 1.2s …/sync/office/dev/helpdesk/n8n master !2 ?23zammad
- 포트 8085 변경 - 사내 서버와 동일하게
yml
---
version: "3.8"
x-shared:
zammad-service: &zammad-service
environment: &zammad-environment
MEMCACHE_SERVERS: ${MEMCACHE_SERVERS:-zammad-memcached:11211}
POSTGRESQL_DB: ${POSTGRES_DB:-zammad_production}
POSTGRESQL_HOST: ${POSTGRES_HOST:-zammad-postgresql}
POSTGRESQL_USER: ${POSTGRES_USER:-zammad}
POSTGRESQL_PASS: ${POSTGRES_PASS:-zammad}
POSTGRESQL_PORT: ${POSTGRES_PORT:-5432}
POSTGRESQL_OPTIONS: ${POSTGRESQL_OPTIONS:-?pool=50}
POSTGRESQL_DB_CREATE:
REDIS_URL: ${REDIS_URL:-redis://zammad-redis:6379}
S3_URL:
# Backup settings
BACKUP_DIR: "${BACKUP_DIR:-/var/tmp/zammad}"
BACKUP_TIME: "${BACKUP_TIME:-03:00}"
HOLD_DAYS: "${HOLD_DAYS:-10}"
TZ: "${TZ:-Europe/Berlin}"
# Allow passing in these variables via .env:
AUTOWIZARD_JSON:
AUTOWIZARD_RELATIVE_PATH:
ELASTICSEARCH_ENABLED:
ELASTICSEARCH_SCHEMA:
ELASTICSEARCH_HOST:
ELASTICSEARCH_PORT:
ELASTICSEARCH_USER: ${ELASTICSEARCH_USER:-elastic}
ELASTICSEARCH_PASS: ${ELASTICSEARCH_PASS:-zammad}
ELASTICSEARCH_NAMESPACE:
ELASTICSEARCH_REINDEX:
NGINX_PORT:
NGINX_CLIENT_MAX_BODY_SIZE:
NGINX_SERVER_NAME:
NGINX_SERVER_SCHEME:
RAILS_TRUSTED_PROXIES:
ZAMMAD_HTTP_TYPE:
ZAMMAD_FQDN:
ZAMMAD_WEB_CONCURRENCY:
ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS:
ZAMMAD_PROCESS_SCHEDULED_JOBS_WORKERS:
ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS:
# ZAMMAD_SESSION_JOBS_CONCURRENT is deprecated, please use ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS instead.
ZAMMAD_SESSION_JOBS_CONCURRENT:
# Variables used by ngingx-proxy container for reverse proxy creations
# for docs refer to https://github.com/nginx-proxy/nginx-proxy
VIRTUAL_HOST:
VIRTUAL_PORT:
# Variables used by acme-companion for retrieval of LetsEncrypt certificate
# for docs refer to https://github.com/nginx-proxy/acme-companion
LETSENCRYPT_HOST:
LETSENCRYPT_EMAIL:
image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.5.0-101}
restart: ${RESTART:-always}
volumes:
- /disk-A/data/helpdesk/zammad/storage-data:/opt/zammad/storage
depends_on:
- zammad-memcached
- zammad-postgresql
- zammad-redis
services:
zammad-backup:
<<: *zammad-service
command: ["zammad-backup"]
volumes:
- /disk-A/data/helpdesk/zammad/backup-data:/var/tmp/zammad
- /disk-A/data/helpdesk/zammad/storage-data:/opt/zammad/storage:ro
user: 0:0
zammad-elasticsearch:
image: bitnami/elasticsearch:${ELASTICSEARCH_VERSION:-8.18.0}
restart: ${RESTART:-always}
volumes:
- /disk-A/data/helpdesk/zammad/elasticsearch-data:/bitnami/elasticsearch/data
environment:
# See https://github.com/bitnami/containers/tree/main/bitnami/elasticsearch#environment-variables
#
# Enable authorization without HTTPS. For external access with
# SSL termination, use solutions like nginx-proxy-manager.
ELASTICSEARCH_ENABLE_SECURITY: 'true'
ELASTICSEARCH_SKIP_TRANSPORT_TLS: 'true'
ELASTICSEARCH_ENABLE_REST_TLS: 'false'
# ELASTICSEARCH_USER is hardcoded to 'elastic' in the container.
ELASTICSEARCH_PASSWORD: ${ELASTICSEARCH_PASS:-zammad}
# Resource settings
ELASTICSEARCH_HEAP_SIZE:
ELASTICSEARCH_MAX_ALLOWED_MEMORY_PERCENTAGE:
ELASTICSEARCH_MAX_ALLOWED_MEMORY:
ELASTICSEARCH_MAX_TIMEOUT:
ELASTICSEARCH_LOCK_ALL_MEMORY:
zammad-init:
<<: *zammad-service
command: ["zammad-init"]
depends_on:
- zammad-postgresql
restart: on-failure
user: 0:0
zammad-memcached:
command: memcached -m 256M
image: memcached:${MEMCACHE_VERSION:-1.6.38-alpine}
restart: ${RESTART:-always}
zammad-nginx:
<<: *zammad-service
command: ["zammad-nginx"]
expose:
- "${NGINX_PORT:-8080}"
ports:
- "${NGINX_EXPOSE_PORT:-8080}:${NGINX_PORT:-8080}"
depends_on:
- zammad-railsserver
zammad-postgresql:
environment:
POSTGRES_DB: ${POSTGRES_DB:-zammad_production}
POSTGRES_USER: ${POSTGRES_USER:-zammad}
POSTGRES_PASSWORD: ${POSTGRES_PASS:-zammad}
image: postgres:${POSTGRES_VERSION:-17.5-alpine}
restart: ${RESTART:-always}
volumes:
- /disk-A/data/helpdesk/zammad/postgresql-data:/var/lib/postgresql/data
zammad-railsserver:
<<: *zammad-service
command: ["zammad-railsserver"]
zammad-redis:
image: redis:${REDIS_VERSION:-7.4.4-alpine}
restart: ${RESTART:-always}
volumes:
- /disk-A/data/helpdesk/zammad/redis-data:/data
zammad-scheduler:
<<: *zammad-service
command: ["zammad-scheduler"]
zammad-websocket:
<<: *zammad-service
command: ["zammad-websocket"]
env
#############################################
# Zammad Docker Environment Configuration
#############################################
# 기본 서비스 설정
RESTART=always
# Zammad 버전 (안정적인 고정 버전 사용 권장)
VERSION=6.5.0-101
IMAGE_REPO=ghcr.io/zammad/zammad
# 데이터베이스 설정 (보안을 위해 기본 패스워드 변경)
POSTGRES_DB=zammad_production
POSTGRES_USER=zammad
POSTGRES_PASS=goquaL1! # 기본값 'zammad'에서 변경
POSTGRES_HOST=zammad-postgresql
POSTGRES_PORT=5432
POSTGRESQL_OPTIONS=?pool=50
# Elasticsearch 설정
ELASTICSEARCH_SCHEMA=http
ELASTICSEARCH_HOST=zammad-elasticsearch
ELASTICSEARCH_PORT=9200
ELASTICSEARCH_USER=elastic
ELASTICSEARCH_PASS=goquaL1! # 기본값 'zammad'에서 변경
ELASTICSEARCH_NAMESPACE=zammad
ELASTICSEARCH_REINDEX=true
ELASTICSEARCH_VERSION=8.18.0
# 웹 서버 설정
NGINX_PORT=8085
NGINX_EXPOSE_PORT=8085
NGINX_CLIENT_MAX_BODY_SIZE=50M
# 캐시 및 세션 설정
MEMCACHE_SERVERS=zammad-memcached:11211
MEMCACHE_VERSION=1.6.38-alpine
REDIS_URL=redis://zammad-redis:6379
REDIS_VERSION=7.4.4-alpine
# PostgreSQL 버전
POSTGRES_VERSION=17.5-alpine
# 타임존 설정
TZ=Asia/Seoul
# 백업 설정
BACKUP_DIR=/var/tmp/zammad
BACKUP_TIME=03:00
HOLD_DAYS=10
mkdir.sh
# 디렉토리 재생성
sudo mkdir -p /disk-A/data/helpdesk/zammad/elasticsearch-data
sudo mkdir -p /disk-A/data/helpdesk/zammad/postgresql-data
sudo mkdir -p /disk-A/data/helpdesk/zammad/redis-data
sudo mkdir -p /disk-A/data/helpdesk/zammad/backup-data
sudo mkdir -p /disk-A/data/helpdesk/zammad/storage-data
# ACL 권한 재설정
sudo setfacl -R -m u:1001:rwx /disk-A/data/helpdesk/zammad/elasticsearch-data
sudo setfacl -R -d -m u:1001:rwx /disk-A/data/helpdesk/zammad/elasticsearch-data
sudo setfacl -R -m u:999:rwx /disk-A/data/helpdesk/zammad/postgresql-data
sudo setfacl -R -d -m u:999:rwx /disk-A/data/helpdesk/zammad/postgresql-data
sudo setfacl -R -m u:1000:rwx /disk-A/data/helpdesk/zammad/redis-data /disk-A/data/helpdesk/zammad/backup-data /disk-A/data/helpdesk/zammad/storage-data
sudo setfacl -R -d -m u:1000:rwx /disk-A/data/helpdesk/zammad/redis-data /disk-A/data/helpdesk/zammad/backup-data /disk-A/data/helpdesk/zammad/storage-data
Comments