diff --git a/Makefile b/Makefile index 117e6cc..06b85bd 100644 --- a/Makefile +++ b/Makefile @@ -215,3 +215,9 @@ run-task-decomposer-agent: ## run task decomposer agent --name task_decomposer_agent \ --question "KABUTOにログインできない。パスワードは合ってるはずなのに…若手社員である山田太郎は、Windows 11 を立ち上げ、日課のように自社の業務システムKABUTOのログイン画面を開きます。しかし、そこには、意味をなさない「虚無」という文字だけがただひっそりと表示されていたのです。これは質問でもあり不具合の報告でもあります。岡本太郎さんに本件調査依頼します。" \ --verbose + +.PHONY: n8n +n8n: ## run n8n + docker compose \ + --env-file n8n.env \ + --file n8n.docker-compose.yml up diff --git a/docs/references.md b/docs/references.md index 5f0212d..c15fda4 100644 --- a/docs/references.md +++ b/docs/references.md @@ -50,3 +50,7 @@ - [Jaeger](https://www.jaegertracing.io/) - [Jaeger / Minimal deployment example (Elasticsearch backend)](https://www.jaegertracing.io/docs/1.72/deployment/#minimal-deployment-example-elasticsearch-backend) - [OpenTelemetry Collector / Quick Start](https://opentelemetry.io/docs/collector/quick-start/) + +### n8n + +- [Hosting n8n / Installation / Server setups / Docker-Compose](https://docs.n8n.io/hosting/installation/server-setups/docker-compose/) diff --git a/n8n.docker-compose.yml b/n8n.docker-compose.yml new file mode 100644 index 0000000..9352ac1 --- /dev/null +++ b/n8n.docker-compose.yml @@ -0,0 +1,59 @@ +services: + traefik: + image: "traefik" + restart: always + command: + - "--api.insecure=true" + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--entrypoints.web.address=:80" + - "--entrypoints.web.http.redirections.entryPoint.to=websecure" + - "--entrypoints.web.http.redirections.entrypoint.scheme=https" + - "--entrypoints.websecure.address=:443" + - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true" + - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}" + - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json" + ports: + - "80:80" + - "443:443" + volumes: + - traefik_data:/letsencrypt + - /var/run/docker.sock:/var/run/docker.sock:ro + + n8n: + image: docker.n8n.io/n8nio/n8n + restart: always + ports: + - "127.0.0.1:5678:5678" # access to n8n + labels: + - traefik.enable=true + - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`) + - traefik.http.routers.n8n.tls=true + - traefik.http.routers.n8n.entrypoints=web,websecure + - traefik.http.routers.n8n.tls.certresolver=mytlschallenge + - traefik.http.middlewares.n8n.headers.SSLRedirect=true + - traefik.http.middlewares.n8n.headers.STSSeconds=315360000 + - traefik.http.middlewares.n8n.headers.browserXSSFilter=true + - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true + - traefik.http.middlewares.n8n.headers.forceSTSHeader=true + - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME} + - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true + - traefik.http.middlewares.n8n.headers.STSPreload=true + - traefik.http.routers.n8n.middlewares=n8n@docker + environment: + - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true + - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME} + - N8N_PORT=5678 + - N8N_PROTOCOL=https + - N8N_RUNNERS_ENABLED=true + - NODE_ENV=production + - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ + - GENERIC_TIMEZONE=${GENERIC_TIMEZONE} + - TZ=${GENERIC_TIMEZONE} + volumes: + - n8n_data:/home/node/.n8n + - ./local-files:/files + +volumes: + n8n_data: + traefik_data: diff --git a/n8n.env.template b/n8n.env.template new file mode 100644 index 0000000..4e77a03 --- /dev/null +++ b/n8n.env.template @@ -0,0 +1,4 @@ +DOMAIN_NAME=ks6088ts.com +SUBDOMAIN=n8n +GENERIC_TIMEZONE=Asia/Tokyo +SSL_EMAIL=admin@ks6088ts.com