|
--- |
|
title: N8n |
|
emoji: 💡🌀✨ |
|
colorFrom: green |
|
colorTo: indigo |
|
sdk: docker |
|
pinned: false |
|
--- |
|
|
|
# Project: Dockerized PostgreSQL with WebDAV Backup and Node.js Integration |
|
|
|
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. |
|
|
|
## Features |
|
|
|
- **PostgreSQL Database**: Provides a fully functional PostgreSQL 15 database instance. |
|
- **Automated Backups**: Includes automated backup functionality to a WebDAV server using custom scripts. |
|
- **Node.js Environment**: Installs Node.js (default version 20) to allow running workflows or services that depend on Node.js. |
|
- **Python Integration**: Python 3 is pre-installed, and Python packages can be managed through a virtual environment (`venv`). |
|
- **Webhook Integration**: Allows interaction with external services via a webhook URL. |
|
- **Configurable Environment**: Fully customizable through build-time arguments and environment variables. |
|
- **WebDAV Support**: Automatic interaction with a WebDAV server for file backup and retrieval. |
|
- **Custom Script Support**: Ships with custom shell scripts to manage database backups and data imports. |
|
|
|
## Environment Variables |
|
|
|
The Docker image uses the following environment variables for configuration. You can modify these variables at runtime to customize behavior: |
|
|
|
| Variable | Default Value | Description | |
|
|-----------------------|---------------------------------------|-------------| |
|
| `POSTGRES_USER` | `n8n` | PostgreSQL user. | |
|
| `POSTGRES_PASSWORD` | `n8n` | PostgreSQL password. | |
|
| `POSTGRES_DB` | `n8n` | PostgreSQL database name. | |
|
| `WEBHOOK_URL` | `https://aigenai-db.hf.space/` | Webhook URL for external communication. | |
|
| `DB_IMPORT` | `yes` | If set to `yes`, imports the database on startup. | |
|
| `NODEJS_VER` | `20` | Version of Node.js to install. | |
|
| `WEBDAV_URL` | `https://cfr2.n8n.us.kg/` | URL of the WebDAV server for backups. | |
|
| `WEBDAV_USER` | `your_username` | WebDAV username for authentication. | |
|
| `WEBDAV_PASSWORD` | `your_password` | WebDAV password for authentication. | |
|
| `N8N_PORT` | `7860` | Port on which n8n will be accessible. | |
|
| `GENERIC_TIMEZONE` | `Asia/Shanghai` | Timezone for the Docker container. | |
|
| `DB_TYPE` | `postgresdb` | Specifies the database type. | |
|
| `DB_POSTGRESDB_HOST` | `localhost` | Hostname for the PostgreSQL database. | |
|
| `DB_POSTGRESDB_PORT` | `5432` | Port for PostgreSQL. | |
|
| `VIRTUAL_ENV` | `/app/venv` | Location of the Python virtual environment. | |
|
|
|
## Build-Time Arguments |
|
|
|
These build-time arguments can be provided during the image build to customize the resulting Docker image: |
|
|
|
| Argument | Default Value | Description | |
|
|--------------------|-----------------------------------------|-------------| |
|
| `DUMP_URL` | `""` | URL for the initial database dump (optional). | |
|
| `DUMP_PASSWORD` | `""` | Password for accessing the database dump (if necessary). | |
|
| `POSTGRES_USER` | `n8n` | PostgreSQL user. | |
|
| `POSTGRES_PASSWORD`| `n8n` | PostgreSQL password. | |
|
| `POSTGRES_DB` | `n8n` | PostgreSQL database name. | |
|
| `WEBHOOK_URL` | `https://aigenai-db.hf.space/` | Webhook URL for external services. | |
|
| `NODEJS_VER` | `20` | Node.js version to install. | |
|
| `WEBDAV_URL` | `https://cfr2.n8n.us.kg/` | WebDAV URL for backups. | |
|
| `WEBDAV_USER` | `your_username` | WebDAV user. | |
|
| `WEBDAV_PASSWORD` | `your_password` | WebDAV password. | |
|
|
|
## Usage |
|
|
|
### Build the Docker Image |
|
|
|
To build the Docker image, use the following command, passing in any custom arguments as needed: |
|
|
|
```bash |
|
docker build --build-arg POSTGRES_USER=myuser \ |
|
--build-arg POSTGRES_PASSWORD=mypassword \ |
|
--build-arg WEBDAV_URL=https://mywebdavserver.com \ |
|
--build-arg WEBDAV_USER=mywebdavuser \ |
|
--build-arg WEBDAV_PASSWORD=mywebdavpassword \ |
|
-t custom-postgres-n8n:latest . |
|
``` |
|
|
|
### Run the Docker Container |
|
|
|
To run the container with customized environment variables: |
|
|
|
```bash |
|
docker run -d \ |
|
-e POSTGRES_USER=n8n \ |
|
-e POSTGRES_PASSWORD=n8n \ |
|
-e POSTGRES_DB=n8n \ |
|
-e WEBHOOK_URL=https://your-webhook.url/ \ |
|
-e WEBDAV_URL=https://your-webdav.url/ \ |
|
-e WEBDAV_USER=your_username \ |
|
-e WEBDAV_PASSWORD=your_password \ |
|
-p 7860:7860 \ |
|
custom-postgres-n8n:latest |
|
``` |
|
|
|
### Backup and Restore |
|
|
|
The image includes scripts for backing up and restoring the PostgreSQL database to and from a WebDAV server: |
|
|
|
- **Backup**: The `backup.sh` script uploads a PostgreSQL database dump to the WebDAV server. |
|
- **Import**: The `import-db.sh` script retrieves the latest database dump from the WebDAV server and imports it into PostgreSQL. |
|
|
|
To manually trigger a backup or import, connect to the running container: |
|
|
|
```bash |
|
docker exec -it <container_id> bash |
|
``` |
|
|
|
Then run: |
|
|
|
```bash |
|
# Backup the database |
|
./backup.sh |
|
|
|
# Import the database |
|
./import-db.sh |
|
``` |
|
|
|
### Webhook Integration |
|
|
|
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. |
|
|
|
### Python and Node.js Environment |
|
|
|
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. |
|
|
|
### Exposed Port |
|
|
|
- **n8n**: Accessible on port `7860` by default. |
|
|
|
## Custom Scripts |
|
|
|
Three key scripts are provided: |
|
- `run.sh`: Main entry point script. |
|
- `import-db.sh`: Handles database imports from WebDAV. |
|
- `backup.sh`: Manages automated backups to WebDAV. |
|
|
|
## License |
|
|
|
This project is licensed under the MIT License. See the LICENSE file for details. |
|
|
|
--- |
|
|
|
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. |