R1000 commited on
Commit
7b9ff96
·
verified ·
1 Parent(s): f26167c

Upload 5 files

Browse files
Files changed (5) hide show
  1. Dockerfile +61 -0
  2. Dockerfile_bak2 +114 -0
  3. Dockerfile_ubutu +52 -0
  4. README.md +11 -10
  5. run.sh +252 -0
Dockerfile ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM node:22-bullseye
2
+
3
+ User root
4
+
5
+ WORKDIR /app
6
+
7
+ # +-- Install system tools including chromium (required by Playwright) and ffmpeg
8
+ RUN apt-get update \
9
+ && apt-get install -y --no-install-recommends \
10
+ python3 python3-pip curl git wget make g++ \
11
+ chromium ffmpeg tini \
12
+ libgtk-3-0 libxtst6 libxcomposite1 libxrandr2 \
13
+ libnss3 libatk-bridge2.0-0 libgbm1 libasound2 libxss1 \
14
+ ca-certificates fonts-liberation \
15
+ libatk1.0-0 \
16
+ #libatk-1.0 \
17
+ libatk1.0-0 \
18
+ libxshmfence1 libxcursor1 \
19
+ libxdamage1 \
20
+ #ttf-freefont \
21
+ && rm -rf /var/lib/apt/lists/*
22
+
23
+ # Update npm and globally install n8n (your original setup)
24
+ RUN npm install -g npm@latest && npm install -g n8n@latest
25
+ RUN npm install -g puppeteer
26
+
27
+ # Add Playwright package and install all browsers + their native deps
28
+ RUN npm install playwright && npx playwright install --with-deps
29
+
30
+ # If you only need specific browsers (saves size), you can do:
31
+ #RUN npx playwright install chromium
32
+
33
+ #RUN cd /usr/local/lib/node_modules/n8n && npm install n8n-nodes-puppeteer && npm install n8n-nodes-playwright
34
+
35
+ EXPOSE 7860
36
+
37
+ ENV PORT=7860 \
38
+ N8N_HOST=0.0.0.0 \
39
+ N8N_PORT=7860 \
40
+ N8N_LISTEN_ADDRESS=0.0.0.0 \
41
+ N8N_PROTOCOL=https \
42
+ N8N_EDITOR_BASE_URL=https://r1000-nnn.hf.space \
43
+ WEBHOOK_URL=https://r1000-nnn.hf.space \
44
+ N8N_DISABLE_UI=false \
45
+ N8N_BASIC_AUTH_ACTIVE=false \
46
+ N8N_METRICS=false \
47
+ N8N_DIAGNOSTICS_ENABLED=false \
48
+ NODE_ENV=production \
49
+ N8N_RUNNERS_ENABLED=true \
50
+ PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
51
+ PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium \
52
+ NODE_FUNCTION_ALLOW_EXTERNAL=puppeteer \
53
+ NODE_FUNCTION_ALLOW_BUILTIN=* \
54
+ N8N_RUNNERS_ALLOW_PROTOTYPE_MUTATION=true
55
+
56
+ # keep your health-check or "keep-alive" cron alive (optional)
57
+ RUN echo '#!/bin/sh\nwhile true; do curl -s https://r1000-nnn.hf.space/; sleep 43200; done &' > /periodic.sh \
58
+ && chmod +x /periodic.sh
59
+
60
+ ENTRYPOINT ["tini", "--"]
61
+ CMD ["/bin/sh", "-c", "/periodic.sh & exec n8n"]
Dockerfile_bak2 ADDED
@@ -0,0 +1,114 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ใช้ PostgreSQL เป็น base image
2
+ FROM nikolaik/python-nodejs:python3.12-nodejs20
3
+
4
+ # ตัวแปรสำหรับใช้ bust cache เพื่อไม่ใช้ cache ก่อนหน้านี้ และจะรันขั้นตอนทั้งหมดใหม่
5
+ ARG CACHEBUST=222
6
+
7
+ # กำหนด Environment Variables พื้นฐาน
8
+ ENV WEBHOOK_URL=https://r1000-nnn.hf.space \
9
+ N8N_HOST=0.0.0.0 \
10
+ N8N_PORT=7860 \
11
+ N8N_PROTOCOL=https \
12
+ GENERIC_TIMEZONE=Asia/Bangkok \
13
+ N8N_METRICS=true \
14
+ QUEUE_HEALTH_CHECK_ACTIVE=true \
15
+ N8N_PAYLOAD_SIZE_MAX=256 \
16
+ VIRTUAL_ENV=/home/pn/venv \
17
+ PATH="/home/pn/venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH" \
18
+ QDRANT_HOST=http://localhost \
19
+ QDRANT_PORT=6333 \
20
+ QDRANT_VERSION=1.12.4 \
21
+ WAIT_TIMEOUT=30 \
22
+ N8N_LOG_LEVEL=info
23
+
24
+ # ติดตั้งแพ็คเกจระบบที่จำเป็น
25
+ RUN apt-get update && apt-get install -y --no-install-recommends \
26
+ curl \
27
+ unzip \
28
+ gnupg \
29
+ build-essential \
30
+ sudo \
31
+ vim \
32
+ git \
33
+ procps \
34
+ lsof \
35
+ libemail-outlook-message-perl \
36
+ net-tools \
37
+ ca-certificates \
38
+ openssl \
39
+ tzdata \
40
+ htop \
41
+ jq \
42
+ netcat-openbsd \
43
+ chromium \
44
+ redis-server \
45
+ && ln -fs /usr/share/zoneinfo/Asia/Bangkok /etc/localtime \
46
+ && dpkg-reconfigure --frontend noninteractive tzdata \
47
+ \
48
+ # ดาวน์โหลดและติดตั้ง Qdrant แบบ precompiled
49
+ && cd /tmp \
50
+ && curl -L https://github.com/qdrant/qdrant/releases/download/v${QDRANT_VERSION}/qdrant-x86_64-unknown-linux-gnu.tar.gz -o qdrant.tar.gz \
51
+ && tar xvf qdrant.tar.gz \
52
+ && mv qdrant /usr/local/bin/ \
53
+ && rm qdrant.tar.gz \
54
+ \
55
+ # สร้างโฟลเดอร์สำหรับ config และข้อมูลของ Qdrant
56
+ && mkdir -p /home/pn/.n8n/qdrant/storage \
57
+ && mkdir -p /home/pn/.n8n/qdrant/config \
58
+ && mkdir -p /home/pn/.n8n/qdrant/snapshots \
59
+ && chown -R pn:pn /home/pn/.n8n/qdrant \
60
+ && chmod -R 755 /home/pn/.n8n/qdrant \
61
+ && mkdir -p /home/pn/.n8n \
62
+ && mkdir -p /home/pn/n8n \
63
+ && mkdir -p $VIRTUAL_ENV \
64
+ && chown -R pn:pn /home/pn/.n8n /home/pn/n8n $VIRTUAL_ENV \
65
+ \
66
+ # ทำความสะอาดเพื่อลดขนาด image
67
+ && apt-get clean \
68
+ && rm -rf /var/lib/apt/lists/* \
69
+ \
70
+ # สร้าง virtual environment และติดตั้ง Python packages ที่จำเป็น
71
+ && python3 -m venv $VIRTUAL_ENV \
72
+ && $VIRTUAL_ENV/bin/pip install --no-cache-dir --upgrade pip requests yt-dlp extract-msg \
73
+ \
74
+ # ติดตั้ง n8n และ pnpm
75
+ && npm install -g n8n@latest pnpm playwright puppeteer \
76
+ && playwright install --with-deps \
77
+ && npm cache clean --force
78
+
79
+ # สำหรับดึง secret จาก Docker secrets)
80
+ # RUN --mount=type=secret,id=POSTGRES_USER,mode=0444,required=true \
81
+ # --mount=type=secret,id=POSTGRES_PASSWORD,mode=0444,required=true \
82
+ # --mount=type=secret,id=POSTGRES_DB,mode=0444,required=true \
83
+ # --mount=type=secret,id=POSTGRESDB_HOST,mode=0444,required=true \
84
+ # echo "export DB_POSTGRESDB_HOST=$(cat /run/secrets/POSTGRESDB_HOST)" >> /home/pn/.env && \
85
+ # echo "export DB_POSTGRESDB_USER=$(cat /run/secrets/POSTGRES_USER)" >> /home/pn/.env && \
86
+ # echo "export DB_POSTGRESDB_PASSWORD=$(cat /run/secrets/POSTGRES_PASSWORD)" >> /home/pn/.env && \
87
+ # echo "export DB_POSTGRESDB_DATABASE=$(cat /run/secrets/POSTGRES_DB)" >> /home/pn/.env && \
88
+ # chown pn:pn /home/pn/.env
89
+
90
+ # ตั้งค่าทำงานในโฟลเดอร์หลัก
91
+ WORKDIR /home/pn/n8n
92
+
93
+ # คัดลอก script และไฟล์ config เข้ามาใน image
94
+ COPY --chown=pn:pn run.sh ./run.sh
95
+ COPY --chown=pn:pn config/n8n_env.sh ./config/n8n_env.sh
96
+
97
+ # ตั้งสิทธิ์ไฟล์ และสร้างโฟลเดอร์ข้อมูลของ n8n
98
+ RUN chmod +x ./run.sh \
99
+ && mkdir -p /home/pn/.n8n \
100
+ && chown -R pn:pn /home/pn/.n8n \
101
+ && chown -R pn:pn /home/pn/n8n
102
+
103
+ # เปิดพอร์ตที่ใช้ให้เข้าถึงได้จากภายนอก
104
+ EXPOSE 7860
105
+
106
+ # เปลี่ยนผู้ใช้จาก root เป็นผู้ใช้ปกติ
107
+ #USER pn
108
+ USER root
109
+
110
+ # กำหนด volume สำหรับเก็บข้อมูลของ n8n
111
+ VOLUME ["/home/pn/.n8n"]
112
+
113
+ # คำสั่งเริ่มต้นเมื่อ container รัน
114
+ CMD ["./run.sh"]
Dockerfile_ubutu ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ใช้ base image ของ Ubuntu 22.04
2
+ FROM ubuntu:22.04
3
+
4
+ # ตั้งค่า Environment Variables
5
+ # DEBIAN_FRONTEND=noninteractive เพื่อให้การติดตั้งแบบไม่ต้องถามตอบ
6
+ # N8N_USER_FOLDER ระบุตำแหน่งเก็บข้อมูลของ n8n อย่างชัดเจน
7
+ ENV DEBIAN_FRONTEND=noninteractive \
8
+ NODE_VERSION=20.x \
9
+ N8N_HOST=0.0.0.0 \
10
+ N8N_PORT=7860 \
11
+ GENERIC_TIMEZONE=Asia/Bangkok \
12
+ N8N_LOG_LEVEL=info \
13
+ N8N_USER_FOLDER=/root/.n8n
14
+
15
+ # รวมขั้นตอนการติดตั้ง Dependencies, Node.js, และ n8n ไว้ในคำสั่ง RUN เดียว
16
+ # เพื่อลดจำนวน Layer และขนาดของ Image
17
+ RUN apt-get update && \
18
+ apt-get install -y --no-install-recommends \
19
+ curl \
20
+ gnupg \
21
+ ca-certificates \
22
+ tzdata \
23
+ tini && \
24
+ # ตั้งค่า Timezone
25
+ ln -sf /usr/share/zoneinfo/${GENERIC_TIMEZONE} /etc/localtime && \
26
+ echo "${GENERIC_TIMEZONE}" > /etc/timezone && \
27
+ # ติดตั้ง Node.js (วิธีที่แนะนำในปัจจุบัน)
28
+ mkdir -p /etc/apt/keyrings && \
29
+ curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg && \
30
+ echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_VERSION} nodistro main" | tee /etc/apt/sources.list.d/nodesource.list && \
31
+ # ติดตั้ง Node.js และ n8n
32
+ apt-get update && \
33
+ apt-get install -y --no-install-recommends nodejs && \
34
+ npm install -g n8n@beta && \
35
+ # สร้าง Directory สำหรับเก็บข้อมูลของ n8n ตามที่ระบุใน ENV
36
+ mkdir -p ${N8N_USER_FOLDER} && \
37
+ # ล้างไฟล์ที่ไม่จำเป็นเพื่อลดขนาด Image [1]
38
+ apt-get clean && \
39
+ npm cache clean --force && \
40
+ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
41
+
42
+ # กำหนดพื้นที่จัดเก็บข้อมูลถาวร (Persistent Storage)
43
+ VOLUME ["/root/.n8n"]
44
+
45
+ # เปิด Port ที่ n8n ใช้งาน
46
+ EXPOSE 7860
47
+
48
+ # ใช้ tini เป็น init process เพื่อจัดการ process และ signal ภายใน container อย่างถูกต้อง [2, 5]
49
+ ENTRYPOINT ["tini", "--"]
50
+
51
+ # คำสั่งเริ่มต้นการทำงานของ n8n (ไม่ต้องมี "start")
52
+ CMD ["n8n"]
README.md CHANGED
@@ -1,10 +1,11 @@
1
- ---
2
- title: Nnn
3
- emoji: 🔥
4
- colorFrom: purple
5
- colorTo: red
6
- sdk: docker
7
- pinned: false
8
- ---
9
-
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
1
+ ---
2
+ title: Nnn
3
+ emoji: 🐢
4
+ colorFrom: purple
5
+ colorTo: pink
6
+ sdk: docker
7
+ add_port: 7860
8
+ pinned: false
9
+ ---
10
+
11
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
run.sh ADDED
@@ -0,0 +1,252 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ set -eo pipefail
3
+
4
+ # Import environment variables
5
+ #source /home/pn/.env
6
+
7
+ # Error handling function
8
+ handle_error() {
9
+ echo "Error Line $1"
10
+ exit 1
11
+ }
12
+ trap 'handle_error $LINENO' ERR
13
+
14
+ # Timeout processing function
15
+ timeout_handler() {
16
+ echo "Timeout"
17
+ exit 1
18
+ }
19
+
20
+ # Generic function to wait for service readiness
21
+ wait_for_service() {
22
+ local service=$1
23
+ local host=$2
24
+ local port=$3
25
+ local timeout=${4:-$WAIT_TIMEOUT}
26
+
27
+ echo "Waiting for $service to be ready..."
28
+ local end=$((SECONDS + timeout))
29
+
30
+ while [ $SECONDS -lt $end ]; do
31
+ if nc -z "$host" "$port" >/dev/null 2>&1; then
32
+ echo "$service is ready"
33
+ return 0
34
+ fi
35
+ echo "Trying to connect to $service at $host:$port..."
36
+ sleep 1
37
+ done
38
+
39
+ echo "$service startup timed out"
40
+ exit 1
41
+ }
42
+
43
+ # Start Qdrant service
44
+ start_qdrant() {
45
+ echo "Starting Qdrant server..."
46
+
47
+ # Ensure directories exist and have correct permissions
48
+ # mkdir -p /home/pn/.n8n/qdrant/storage
49
+ # mkdir -p /home/pn/.n8n/qdrant/config
50
+ # mkdir -p /home/pn/.n8n/qdrant/snapshots
51
+ # mkdir -p /home/pn/.n8n/qdrant/logs
52
+
53
+ # Set correct permissions
54
+ # chmod -R 755 /home/pn/.n8n/qdrant
55
+ # chown -R pn:pn /home/pn/.n8n/qdrant
56
+
57
+ # Create Qdrant config file
58
+ cat > /home/pn/.n8n/qdrant/config/config.yaml <<EOF
59
+ service:
60
+ host: 0.0.0.0
61
+ http_port: 6333
62
+ grpc_port: 6334
63
+ enable_cors: true
64
+ enable_tls: false
65
+ max_request_size_mb: 64
66
+ max_workers: 0
67
+ storage:
68
+ storage_path: /home/pn/.n8n/qdrant/storage
69
+ snapshots_path: /home/pn/.n8n/qdrant/snapshots
70
+ on_disk_payload: true
71
+
72
+ performance:
73
+ max_search_threads: 0
74
+ max_optimization_threads: 0
75
+
76
+ optimizers:
77
+ deleted_threshold: 0.2
78
+ vacuum_min_vector_number: 1000
79
+ default_segment_number: 0
80
+ max_segment_size_kb: null
81
+ indexing_threshold_kb: 20000
82
+ flush_interval_sec: 5
83
+
84
+ hnsw_index:
85
+ m: 16
86
+ ef_construct: 100
87
+ full_scan_threshold_kb: 10000
88
+ max_indexing_threads: 0
89
+ on_disk: false
90
+ logger:
91
+ on_disk:
92
+ enabled: true
93
+ log_file: /home/pn/.n8n/qdrant/logs/qdrant.log
94
+ log_level: INFO
95
+ telemetry_disabled: true
96
+ EOF
97
+
98
+ # Ensure config file has correct permissions
99
+ chmod 644 /home/pn/.n8n/qdrant/config/config.yaml
100
+
101
+ # Start Qdrant with the config file
102
+ qdrant --config-path /home/pn/.n8n/qdrant/config/config.yaml > /home/pn/.n8n/qdrant/logs/startup.log 2>&1 &
103
+
104
+ # Wait for Qdrant to start
105
+ local timeout=30
106
+ local end=$((SECONDS + timeout))
107
+
108
+ while [ $SECONDS -lt $end ]; do
109
+ if curl -s http://localhost:6333/health >/dev/null; then
110
+ echo "Qdrant server started successfully"
111
+
112
+ # Create default collections
113
+ echo "Creating default collections..."
114
+
115
+ # Create text vector collection (768 dimensions, suitable for most text embedding models)
116
+ curl -X PUT 'http://localhost:6333/collections/text_vectors' \
117
+ -H 'Content-Type: application/json' \
118
+ -d '{
119
+ "vectors": {
120
+ "size": 1024,
121
+ "distance": "Cosine",
122
+ "on_disk": true
123
+ },
124
+ "optimizers_config": {
125
+ "default_segment_number": 2,
126
+ "indexing_threshold": 20000,
127
+ "memmap_threshold": 10000
128
+ },
129
+ "hnsw_config": {
130
+ "m": 16,
131
+ "ef_construct": 100,
132
+ "full_scan_threshold": 10000,
133
+ "max_indexing_threads": 0,
134
+ "on_disk": true
135
+ }
136
+ }'
137
+
138
+ # Create image vector collection (512 dimensions, suitable for most image embedding models)
139
+ curl -X PUT 'http://localhost:6333/collections/image_vectors' \
140
+ -H 'Content-Type: application/json' \
141
+ -d '{
142
+ "vectors": {
143
+ "size": 512,
144
+ "distance": "Cosine"
145
+ },
146
+ "optimizers_config": {
147
+ "default_segment_number": 2,
148
+ "indexing_threshold": 20000
149
+ },
150
+ "hnsw_config": {
151
+ "m": 16,
152
+ "ef_construct": 100,
153
+ "full_scan_threshold": 10000
154
+ }
155
+ }'
156
+
157
+ # Create generic vector collection (1536 dimensions, suitable for OpenAI embedding models)
158
+ curl -X PUT 'http://localhost:6333/collections/openai_vectors' \
159
+ -H 'Content-Type: application/json' \
160
+ -d '{
161
+ "vectors": {
162
+ "size": 1536,
163
+ "distance": "Cosine"
164
+ },
165
+ "optimizers_config": {
166
+ "default_segment_number": 2,
167
+ "indexing_threshold": 20000
168
+ },
169
+ "hnsw_config": {
170
+ "m": 16,
171
+ "ef_construct": 100,
172
+ "full_scan_threshold": 10000
173
+ }
174
+ }'
175
+
176
+ # Verify collection creation status and output details
177
+ echo -e "\nVerifying collections:"
178
+ curl -s 'http://localhost:6333/collections' | jq '.'
179
+
180
+ # Test connection
181
+ echo -e "\nTesting Qdrant connection:"
182
+ curl -v http://localhost:6333/health
183
+
184
+ return 0
185
+ fi
186
+ echo "Waiting for Qdrant to start..."
187
+ sleep 1
188
+
189
+ # Check for error logs
190
+ if grep -i "error" /home/pn/.n8n/qdrant/logs/startup.log >/dev/null 2>&1; then
191
+ echo "Error found in Qdrant logs:"
192
+ tail -n 10 /home/pn/.n8n/qdrant/logs/startup.log
193
+ fi
194
+ done
195
+
196
+ echo "Failed to start Qdrant server"
197
+ echo "Last 10 lines of Qdrant log:"
198
+ tail -n 10 /home/pn/.n8n/qdrant/logs/startup.log
199
+ exit 1
200
+ }
201
+
202
+ # Check service status
203
+ check_services() {
204
+ echo "Checking service status..."
205
+
206
+ # Check Qdrant
207
+ echo "Qdrant status:"
208
+ if curl -s http://localhost:6333/metrics >/dev/null; then
209
+ echo "Qdrant is running normally"
210
+ curl -s http://localhost:6333/metrics
211
+
212
+ # Display collection information
213
+ echo "Qdrant collection list:"
214
+ curl -s http://localhost:6333/collections
215
+ else
216
+ echo "Qdrant service is abnormal"
217
+ tail -n 10 /home/pn/.n8n/qdrant/qdrant.log
218
+ fi
219
+ }
220
+
221
+ # Main process
222
+ main() {
223
+ current_time=$(date +"%Y-%m-%d %H:%M:%S")
224
+ echo "Starting services at $current_time"
225
+
226
+ # Output configuration information
227
+ # echo "Database Configuration:"
228
+ # echo "Host: ${DB_POSTGRESDB_HOST}"
229
+ # echo "Port: ${DB_POSTGRESDB_PORT}"
230
+ # echo "User: ${DB_POSTGRESDB_USER}"
231
+ # echo "Database: ${DB_POSTGRESDB_DATABASE}"
232
+ # echo "Type: ${DB_TYPE}"
233
+
234
+ # Start service
235
+ # wait_for_service "PostgreSQL" "${DB_POSTGRESDB_HOST}" "${DB_POSTGRESDB_PORT}"
236
+ # echo ""
237
+ # start_redis
238
+ # echo ""
239
+ start_qdrant
240
+ echo ""
241
+ check_services
242
+
243
+ # Set N8N environment variables
244
+ source /home/pn/n8n/config/n8n_env.sh
245
+
246
+ echo ""
247
+ echo "Starting n8n..."
248
+ exec n8n start
249
+ }
250
+
251
+ # Execute the main process
252
+ main "$@"