顯示具有 電腦-Linux-Server-Docker 標籤的文章。 顯示所有文章
顯示具有 電腦-Linux-Server-Docker 標籤的文章。 顯示所有文章

2025年11月10日 星期一

n8n install local with docker compose ( PostgreSQL)

n8n install local with docker compose ( PostgreSQL )

前篇n8n平台使用SQLite 存放憑證、歷史執行紀錄和工作流程的database。參考官網也可以使用PostgreSQL使用database,根據官方githubPostgreSQL資料修改為個人環境使用。

主機環境

Ubuntu 24.04.3 LTS Docker version v28.5.1 Docker compose version v2.40.3 n8n Community Edition version 1.116.2 (1.118.1) (n8nio/n8n) PostgreSQL version 17 (PostgreSQL Docker Community)

安裝過程

1.使用者目錄建立n8n-postgres、n8n_data目錄及.env設定檔

將n8n_data目錄掛載到/home/node/.n8n目錄,當container重啟動後資料可以保留。 mkdir n8n-postgres/n8n_data/ -p 新建.env設定檔存放相關參數 (PostgreSQL user and password ),執行docker compose會自動帶入。 vim n8n-postgres/.env --- POSTGRES_USER=changeUser POSTGRES_PASSWORD=changePassword POSTGRES_DB=n8n POSTGRES_NON_ROOT_USER=changeUser POSTGRES_NON_ROOT_PASSWORD=changePassword ---
postgres-env

建立docker-compose.yml cd n8n-postgres vim docker-compose.yml --- services: n8n: image: n8nio/n8n:1.116.2 container_name: n8n ports: - "5678:5678" environment: - GENERIC_TIMEZONE=Asia/Taipei - TZ=Asia/Taipei - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true - N8N_RUNNERS_ENABLED=true - N8N_SECURE_COOKIE=false - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=${POSTGRES_DB} - DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER} - DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD} links: - postgres volumes: - ./n8n_data:/home/node/.n8n depends_on: postgres: condition: service_healthy postgres: image: postgres:17 container_name: postgres environment: - POSTGRES_USER - POSTGRES_PASSWORD - POSTGRES_DB - POSTGRES_NON_ROOT_USER - POSTGRES_NON_ROOT_PASSWORD volumes: - ./db_data:/var/lib/postgresql/data - ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh healthcheck: test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}'] interval: 5s timeout: 5s retries: 10 volumes: n8n_data: db_data: ---
postgres-yml

init-data.sh放在同一目錄,啟動才不會出錯。

2.啟動服務

啟動n8n、PostgreSQL服務 sudo docker compose up -d 啟動過程會依n8n、PostgreSQL啟動 檢查n8n、PostgreSQL服務 sudo docker compose ps -a ls -la
ss -ntlp
postgres-up

3.問題解決

原本使用n8n最新版本1.118.1,出現Connection lost無法連線PostgreSQL的訊息 You have a connection issue or the server is down. n8n should reconnect automatically once the issue is resolved. 查詢網站無法有效解決。後來發現n8n 版本1.116.2可以正常使用,先用此版本進行測試。

20251107 經過測試發現是browser問題,將browser (chrom/firefox)更新到最新版,在頁面操作都可以正常顯示。

後續事項

20251127 

新增環境變數
---
# Reduce saved data
# Save executions ending in errors
- EXECUTIONS_DATA_SAVE_ON_ERROR=all
# Don't save successful executions
- EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
# Don't save node progress for each execution
- EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
# Don't save manually launched executions
- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false

# Enable executions pruning,clear executions_data
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=96
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000
---

2025年11月4日 星期二

n8n install local with docker compose (SQLITE)

n8n install local with docker compose (SQLITE)

本地主機搭建n8n測試環境,參考官網文件將原來的docker指令修改為docker compse啟動服務

docker volume create n8n_data

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e GENERIC_TIMEZONE="<YOUR_TIMEZONE>" \
 -e TZ="<YOUR_TIMEZONE>" \
 -e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
 -e N8N_RUNNERS_ENABLED=true \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n

主機環境

Ubuntu 24.04.3 LTS
Docker version v28.5.1
Docker compose version v2.40.3
n8n Community Edition version 1.118.1 (n8nio/n8n)

安裝過程

1.使用者目錄建立n8n及n8n_data目錄

預計將n8n_data目錄掛載到/home/node/.n8n目錄,當container重啟動後資料可以保留。
mkdir n8n/n8n_data/ -p

建立docker-compose.yml
cd n8n
vim docker-compose.yml
---
services:
  n8n:
    image: n8nio/n8n
    container_name: n8n
    ports:
      - "5678:5678"
    environment:
      - GENERIC_TIMEZONE=Asia/Taipei
      - TZ=Asia/Taipei
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
      - N8N_RUNNERS_ENABLED=true
    volumes:
      - ./n8n_data:/home/node/.n8n 
volumes:
  n8n_data:
---

2.環境變數說明

GENERIC_TIMEZONE=Asia/Taipei
GENERIC_TIMEZONE環境變數為面向調度的節點(如 Schedule Trigger node)設定正確的時區
TZ=Asia/Taipei
TZ環境變數設定系統時區,以控制date等腳本和指令回傳的內容
N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
對n8n設定檔強制執行安全文件權限
N8N_RUNNERS_ENABLED=true
啟用任務運行器,在n8n中執行任務的建議方式

3.啟動n8n服務

sudo docker compose up -d
local-install-05
檢查n8n服務
sudo docker compose ps -a
ss -ntlp
ls -l n8n_data/
local-install-06
local-install-07
過程已直接安裝Sqlite資料庫,資料庫位置在container的 ~/.n8n/database.sqlite

4.進入登入頁面

登入時如果出現此畫面是本機沒有申請ssl方式連線,需增加N8N_SECURE_COOKIE=false參數,方便測試使用
local-install-08
修改docker-compose.yml
重新啟動n8n服務
sudo docker compose down
sudo docker compose up -d
local-install-09

成功看到註冊面,直接設定帳號資料,密碼要8位數以上,要有數字和大寫字母。
local-install-10
如果要使用Community Edition 功能,請輸入正確的email方便收到註冊碼。

5.登入畫面

此畫面可以直接按get started跳過。
local-install-11
申請Community Edition License key,填入email就可以收到
local-install-12
n8n free license key mail
local-install-14
未輸入 license key
local-install-15
輸入 license key啟動後
local-install-16


註冊後即可解鎖社群版(Community Edition) 的以下功能:
Folders: Organize your workflows into tidy folders
資料夾 :將您的工作流程整理到整齊的資料夾中
Debug in editor: Copy and pin execution data when working on a workflow
在編輯器中偵錯 :在處理工作流程時複製並固定執行數據
Custom execution data: Save, find, and annotate execution metadata
自訂執行資料 :儲存、尋找和註解執行元數據

6.影片



後續事項

20251127 

新增環境變數
---
# Reduce saved data
# Save executions ending in errors
- EXECUTIONS_DATA_SAVE_ON_ERROR=all
# Don't save successful executions
- EXECUTIONS_DATA_SAVE_ON_SUCCESS=none
# Don't save node progress for each execution
- EXECUTIONS_DATA_SAVE_ON_PROGRESS=true
# Don't save manually launched executions
- EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=false

# Enable executions pruning,clear executions_data
- EXECUTIONS_DATA_PRUNE=true
- EXECUTIONS_DATA_MAX_AGE=96
- EXECUTIONS_DATA_PRUNE_MAX_COUNT=5000

# Clear SQLITE database
- DB_SQLITE_VACUUM_ON_STARTUP=true
---

20251201

啟動過程出現以下訊息
There is a deprecation related to your environment variables. Please take the recommended actions to update your configuration:
 - DB_SQLITE_POOL_SIZE -> Running SQLite without a pool of read connections is deprecated. Please set `DB_SQLITE_POOL_SIZE` to a value higher than zero. See: https://docs.n8n.io/hosting/configuration/environment-variables/database/#sqlite

20251201-1-sqlite-error

您的環境變數有棄用風險。請依照以下建議更新您的配置:
- DB_SQLITE_POOL_SIZE -> 在沒有讀取連線池的情況下執行 SQLite 已被棄用。請將 `DB_SQLITE_POOL_SIZE` 設定為大於零的值。

依官方說明環境變數增加以下設定。
---
- DB_SQLITE_POOL_SIZE=1
---

2023年9月23日 星期六

Zabbix monitor Docker Service

Zabbix monitor Docker Service

在Zabbix agent2安裝過程會加裝各種plugin,將使用Docker plugin來監控Docker service。
Zabbix agent2 plugin的安裝目錄為/etc/zabbix/zabbix_agent2.d/plugins.d/。使用設定檔為Docker.conf,預設是連結 unix://var/run/docker.sock。
04-zabbix-agent2 plugins

設備環境

Debian Linux 11
Docker version 20.10.23
Zabbix Agent 2 6.0.21

Docker設定

開啟Docker API

在監控主機修改docker.service設定檔。
nano /usr/lib/systemd/system/docker.service
---
修改前
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

修改後
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd -H unix://var/run/docker.sock
---
05-edit docker api

重新啟動docker.service
# systemctl daemon-reload
# systemctl restart docker
# systemctl status docker

API測試

在Zabbix Server主機使用zabbix-get對監控主機進行測試。
先安裝zabbix-get
# sudo apt install zabbix-get
# zabbix_get -s 192.168.203.162 -k docker.info
06-check docker api

增加Zabbix agent2權限

在監控主機將zabbix加入docer群組。
# usermod -aG docker zabbix
07-fix zabbix agent2 user



Zabbix WEB設定

預計使用Zabbix Server內建Templates/Applications  的Docker by Zabbix agent 2 進行監控。

https://www.zabbix.com/integrations/docker

官方連結說明翻譯:
Zabbix 監控 Docker 引擎的模板,無需任何外部腳本即可運作。由於 Zabbix 批量資料收集,大部分指標都是一次性收集的。
模板Docker by Zabbix agent 2— 透過輪詢 zabbix-agent2 收集指標。

新增頁面設定如下:
08-add host


依官網說明在Maros頁面新增7組參數,並填入對應的值。
{$DOCKER.LLD.FILTER.CONTAINER.MATCHES}
.*
{$DOCKER.LLD.FILTER.CONTAINER.NOT_MATCHES}
CHANGE_IF_NEEDED
{$DOCKER.LLD.FILTER.IMAGE.MATCHES}
.*
{$DOCKER.LLD.FILTER.IMAGE.NOT_MATCHES}
CHANGE_IF_NEEDED
09-add host marcos

在Configuration > Host中新增Host。
10-host

在Monitoring > Host查看資料,有Problems。
11-data

在Monitoring > Problems,container停止有異常。
12-problem

Zabbix使用Zabbix agent2監控Docker Service,是由Zabbix Server透過監控主機的Zabbix agent2捉取資料,屬於被動模式。

2023年9月16日 星期六

Linux install Docker

Linux install Docker 

參考原廠網站整理

https://docs.docker.com/engine/install/debian/


環境準備

OS使用Debian Bullseye 11
在安裝官方 Docker Engine  前,如果有安裝其它版本請先卸載。
要卸載的非官方套件有:
docker.io
docker-compose
docker-doc
podman-docker
此外,Docker Engine 依賴於containerd和runc,Docker Engine 將整合為一個套件包:containerd.io 。
如果之前安裝過containerd或runc,請卸載它們以避免與 Docker Engine 整合的版本衝突。
運行以下命令卸載所有衝突的包:
# sudo for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done


使用 APT repository安裝

在主機安裝官方 Docker Engine ,需要設置 Docker APT repository。

可以直接使用apt install 安裝和更新 Docker。

1-1.設置 Docker 的 Apt repository

新增 Docker's official GPG key:
# sudo apt-get update
# sudo apt-get install ca-certificates curl gnupg
# sudo install -m 0755 -d /etc/apt/keyrings
# curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# sudo chmod a+r /etc/apt/keyrings/docker.gpg

1-2.新增 dokcer repository 在 sources

# echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# sudo apt-get update

1-3.安裝 Docker 套件

安裝最新版本
# sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安裝指定版本
# apt-cache madison docker-ce | awk '{ print $3 }'
# VERSION_STRING=5:24.0.0-1~debian.11~bullseye
# sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin


使用DEB package 安裝

如果無法使用 apt repository 來安裝 Docker Engine。可以直接下載deb package 並手動安裝。如果升級 Docker Engine 時都需要下載最新版本,手動安裝。

下載DEB package

網址 https://download.docker.com/linux/debian/dists/

在列表中選擇您的 Debian 版本。在pool/stable/並選擇適用的架構 (amd64, armhf, arm64, or s390x).
下載 deb package包含 Docker Engine, CLI, containerd, and Docker Compose packages:
containerd.io_<version>_<arch>.deb
docker-ce_<version>_<arch>.deb
docker-ce-cli_<version>_<arch>.deb
docker-buildx-plugin_<version>_<arch>.deb
docker-compose-plugin_<version>_<arch>.deb

安裝 deb package 

# sudo dpkg -i ./containerd.io_<version>_<arch>.deb \
  ./docker-ce_<version>_<arch>.deb \
  ./docker-ce-cli_<version>_<arch>.deb \
  ./docker-buildx-plugin_<version>_<arch>.deb \
  ./docker-compose-plugin_<version>_<arch>.deb

 安裝完成後 Docker daemon 會自動啟動。

  

移除 Docker Engine

移除 Docker Engine、CLI、containerd 和 Docker Compose 套件

# sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

主機上的映像、容器、卷或自定義配置文件不會自動刪除。
手動刪除所有映像、容器和卷及任何編輯的配置文件
# sudo rm -rf /var/lib/docker
# sudo rm -rf /var/lib/containerd


2018年11月29日 星期四

電腦-Linux-Ubuntu 安裝 Docker CE

電腦-Linux-Ubuntu安裝Docker CE

Ubuntu 16.04
Docker CE (18.x)

移除舊版本
apt-get remove docker docker-engine docker.io containerd runc

安裝相關套件
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

安裝Docker GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

安裝Docker Repository
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

安裝Docker-ce
sudo apt-get update
sudo apt-get install docker-ce

檢查Docker服務
sudo systemctl status docker

檢查Docker服務
sudo docker -v
apt-cache madison docker-ce

指定安裝版本
sudo apt-get install docker-ce=<VERSION>

新增一般使用者至dokcer group,指令可不加sudo
sudo usermod -aG docker $(whoami)
檢查使用者group
id -nG

移除Docker CE
sudo apt-get purge docker-ce
移除Docker相關資料
sudo rm -rf /var/lib/docker



參考資料
Get Docker CE for Ubuntu
How To Install and Use Docker on Ubuntu 16.04

2016年10月19日 星期三

電腦-CentOS 安裝 Docker


CentOS 7 安裝 Docker CE

2022/05/25 更新

作業環境:
CentOS 7.x
Docer CE 2x.x

要在 CentOS 上開始使用 Docker Engine,請確認以下條件,

您需要 CentOS 7, CentOS 8 (stream), or CentOS 9 (stream) 的維護版本。

安裝需要使用 centos-extras repository。此存儲庫默認啟用,但如果您已禁用它,則需要重新啟用。

推薦使用 overlay2 storage driver。


增加Docker Repository及相關套件

安裝yum-utils包(提供yum-config-manager 實用程序), 並增加Docker stable repository。

yum install -y yum-utils

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo


Install Docker CE
裝最新版本的 Docker Engine、containerd 和 Docker Compose

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

如果提示 GPG 密鑰,請驗證指紋是否匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35。


啟動Docker
systemctl start docker


安裝特定版本的 Docker Engine
如果要安裝特定版本的 Docker Engine,請在 repo 中列出可用版本,然後選擇並安裝:

yum list docker-ce --showduplicates | sort -r

yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-compose-plugin


卸載舊版本
舊版本的 Docker 被稱為docker或docker-engine. 如果安裝了這些,請卸載它們以及相關的依賴項。

移除舊版本
Uninstall old versions
yum remove docker \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-selinux \
           docker-engine-selinux \
           docker-engine
   

參考資料