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:
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:
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:
docker exec -it <container_id> bash
Then run:
# 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.