Update README.md
Browse files
README.md
CHANGED
@@ -1,10 +1,144 @@
|
|
1 |
---
|
2 |
title: N8n
|
3 |
-
emoji:
|
4 |
colorFrom: green
|
5 |
colorTo: indigo
|
6 |
sdk: docker
|
7 |
pinned: false
|
8 |
---
|
9 |
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
---
|
2 |
title: N8n
|
3 |
+
emoji: 💡🌀✨
|
4 |
colorFrom: green
|
5 |
colorTo: indigo
|
6 |
sdk: docker
|
7 |
pinned: false
|
8 |
---
|
9 |
|
10 |
+
# Project: Dockerized PostgreSQL with WebDAV Backup and Node.js Integration
|
11 |
+
|
12 |
+
This Docker image is built on top of **PostgreSQL 15** and provides an integrated environment for running PostgreSQL, performing automated database backups via WebDAV, and executing custom scripts written in **Node.js** and **Python**. This image is tailored for use with **n8n**, an open-source workflow automation tool, and it supports automatic backup management and webhook communication.
|
13 |
+
|
14 |
+
## Features
|
15 |
+
|
16 |
+
- **PostgreSQL Database**: Provides a fully functional PostgreSQL 15 database instance.
|
17 |
+
- **Automated Backups**: Includes automated backup functionality to a WebDAV server using custom scripts.
|
18 |
+
- **Node.js Environment**: Installs Node.js (default version 20) to allow running workflows or services that depend on Node.js.
|
19 |
+
- **Python Integration**: Python 3 is pre-installed, and Python packages can be managed through a virtual environment (`venv`).
|
20 |
+
- **Webhook Integration**: Allows interaction with external services via a webhook URL.
|
21 |
+
- **Configurable Environment**: Fully customizable through build-time arguments and environment variables.
|
22 |
+
- **WebDAV Support**: Automatic interaction with a WebDAV server for file backup and retrieval.
|
23 |
+
- **Custom Script Support**: Ships with custom shell scripts to manage database backups and data imports.
|
24 |
+
|
25 |
+
## Environment Variables
|
26 |
+
|
27 |
+
The Docker image uses the following environment variables for configuration. You can modify these variables at runtime to customize behavior:
|
28 |
+
|
29 |
+
| Variable | Default Value | Description |
|
30 |
+
|-----------------------|---------------------------------------|-------------|
|
31 |
+
| `POSTGRES_USER` | `n8n` | PostgreSQL user. |
|
32 |
+
| `POSTGRES_PASSWORD` | `n8n` | PostgreSQL password. |
|
33 |
+
| `POSTGRES_DB` | `n8n` | PostgreSQL database name. |
|
34 |
+
| `WEBHOOK_URL` | `https://aigenai-db.hf.space/` | Webhook URL for external communication. |
|
35 |
+
| `DB_IMPORT` | `yes` | If set to `yes`, imports the database on startup. |
|
36 |
+
| `NODEJS_VER` | `20` | Version of Node.js to install. |
|
37 |
+
| `WEBDAV_URL` | `https://cfr2.n8n.us.kg/` | URL of the WebDAV server for backups. |
|
38 |
+
| `WEBDAV_USER` | `your_username` | WebDAV username for authentication. |
|
39 |
+
| `WEBDAV_PASSWORD` | `your_password` | WebDAV password for authentication. |
|
40 |
+
| `N8N_PORT` | `7860` | Port on which n8n will be accessible. |
|
41 |
+
| `GENERIC_TIMEZONE` | `Asia/Shanghai` | Timezone for the Docker container. |
|
42 |
+
| `DB_TYPE` | `postgresdb` | Specifies the database type. |
|
43 |
+
| `DB_POSTGRESDB_HOST` | `localhost` | Hostname for the PostgreSQL database. |
|
44 |
+
| `DB_POSTGRESDB_PORT` | `5432` | Port for PostgreSQL. |
|
45 |
+
| `VIRTUAL_ENV` | `/app/venv` | Location of the Python virtual environment. |
|
46 |
+
|
47 |
+
## Build-Time Arguments
|
48 |
+
|
49 |
+
These build-time arguments can be provided during the image build to customize the resulting Docker image:
|
50 |
+
|
51 |
+
| Argument | Default Value | Description |
|
52 |
+
|--------------------|-----------------------------------------|-------------|
|
53 |
+
| `DUMP_URL` | `""` | URL for the initial database dump (optional). |
|
54 |
+
| `DUMP_PASSWORD` | `""` | Password for accessing the database dump (if necessary). |
|
55 |
+
| `POSTGRES_USER` | `n8n` | PostgreSQL user. |
|
56 |
+
| `POSTGRES_PASSWORD`| `n8n` | PostgreSQL password. |
|
57 |
+
| `POSTGRES_DB` | `n8n` | PostgreSQL database name. |
|
58 |
+
| `WEBHOOK_URL` | `https://aigenai-db.hf.space/` | Webhook URL for external services. |
|
59 |
+
| `NODEJS_VER` | `20` | Node.js version to install. |
|
60 |
+
| `WEBDAV_URL` | `https://cfr2.n8n.us.kg/` | WebDAV URL for backups. |
|
61 |
+
| `WEBDAV_USER` | `your_username` | WebDAV user. |
|
62 |
+
| `WEBDAV_PASSWORD` | `your_password` | WebDAV password. |
|
63 |
+
|
64 |
+
## Usage
|
65 |
+
|
66 |
+
### Build the Docker Image
|
67 |
+
|
68 |
+
To build the Docker image, use the following command, passing in any custom arguments as needed:
|
69 |
+
|
70 |
+
```bash
|
71 |
+
docker build --build-arg POSTGRES_USER=myuser \
|
72 |
+
--build-arg POSTGRES_PASSWORD=mypassword \
|
73 |
+
--build-arg WEBDAV_URL=https://mywebdavserver.com \
|
74 |
+
--build-arg WEBDAV_USER=mywebdavuser \
|
75 |
+
--build-arg WEBDAV_PASSWORD=mywebdavpassword \
|
76 |
+
-t custom-postgres-n8n:latest .
|
77 |
+
```
|
78 |
+
|
79 |
+
### Run the Docker Container
|
80 |
+
|
81 |
+
To run the container with customized environment variables:
|
82 |
+
|
83 |
+
```bash
|
84 |
+
docker run -d \
|
85 |
+
-e POSTGRES_USER=n8n \
|
86 |
+
-e POSTGRES_PASSWORD=n8n \
|
87 |
+
-e POSTGRES_DB=n8n \
|
88 |
+
-e WEBHOOK_URL=https://your-webhook.url/ \
|
89 |
+
-e WEBDAV_URL=https://your-webdav.url/ \
|
90 |
+
-e WEBDAV_USER=your_username \
|
91 |
+
-e WEBDAV_PASSWORD=your_password \
|
92 |
+
-p 7860:7860 \
|
93 |
+
custom-postgres-n8n:latest
|
94 |
+
```
|
95 |
+
|
96 |
+
### Backup and Restore
|
97 |
+
|
98 |
+
The image includes scripts for backing up and restoring the PostgreSQL database to and from a WebDAV server:
|
99 |
+
|
100 |
+
- **Backup**: The `backup.sh` script uploads a PostgreSQL database dump to the WebDAV server.
|
101 |
+
- **Import**: The `import-db.sh` script retrieves the latest database dump from the WebDAV server and imports it into PostgreSQL.
|
102 |
+
|
103 |
+
To manually trigger a backup or import, connect to the running container:
|
104 |
+
|
105 |
+
```bash
|
106 |
+
docker exec -it <container_id> bash
|
107 |
+
```
|
108 |
+
|
109 |
+
Then run:
|
110 |
+
|
111 |
+
```bash
|
112 |
+
# Backup the database
|
113 |
+
./backup.sh
|
114 |
+
|
115 |
+
# Import the database
|
116 |
+
./import-db.sh
|
117 |
+
```
|
118 |
+
|
119 |
+
### Webhook Integration
|
120 |
+
|
121 |
+
The `WEBHOOK_URL` can be configured to send and receive webhooks. This can be useful for triggering automated workflows or notifying external systems about database changes.
|
122 |
+
|
123 |
+
### Python and Node.js Environment
|
124 |
+
|
125 |
+
This image includes both **Python** and **Node.js**. Python packages are managed through a `requirements.txt` file, and Node.js packages through `package.txt`. You can install and run additional scripts using either Python or Node.js.
|
126 |
+
|
127 |
+
### Exposed Port
|
128 |
+
|
129 |
+
- **n8n**: Accessible on port `7860` by default.
|
130 |
+
|
131 |
+
## Custom Scripts
|
132 |
+
|
133 |
+
Three key scripts are provided:
|
134 |
+
- `run.sh`: Main entry point script.
|
135 |
+
- `import-db.sh`: Handles database imports from WebDAV.
|
136 |
+
- `backup.sh`: Manages automated backups to WebDAV.
|
137 |
+
|
138 |
+
## License
|
139 |
+
|
140 |
+
This project is licensed under the MIT License. See the LICENSE file for details.
|
141 |
+
|
142 |
+
---
|
143 |
+
|
144 |
+
This setup is ideal for environments where database management, automation, and cloud backups are required. It is especially suited for **n8n** users who want a robust and flexible system for managing their PostgreSQL database in conjunction with other automation workflows.
|