# n8n

Running **n8n** workflow automation tool in `docker-compose` with [OrbStack](https://docs.orbstack.dev/docker/domains)

Refer [agentic github repo](https://github.com/xmlking/agentic.git) for full setup instructions and `compose.yml` file

## Install

*Optically* install n8n cli

```shell
# install CLI (one-time)
pnpm add -g n8n@next
# to update to latest version
pnpm update -g n8n@next  
```

## Start

To start **n8n** with **PostgreSQL** simply start `docker-compose` by executing the following command in the current folder.

> \[!IMPORTANT]\
> But before you do, copy [`.env.example`](https://github.com/xmlking/macbooksetup/blob/main/docs/apps/.env.example) as `.env` in the project root directory, then change the default postgres `username` and `password` in the [`.env`](https://github.com/xmlking/macbooksetup/blob/main/docs/apps/.env/README.md) file, if you prefer.

```shell
# for first time
docker compose --profile first-time-only up
# for next time
docker compose up
# if you want to ssh to n8n container 
docker compose exec -it n8n sh
```

Access n8n dashboard at:

```shell
open https://n8n.agentic.orb.local
```

Access qdrant dashboard at:

```shell
open https://qdrant.agentic.orb.local/dashboard#/welcome
```

> \[!NOTE]\
> First time when you access, you will see: `Set up owner account` page. Enter some fake data, then you will be redirected to Dashboard

### To Stop

```shell
docker compose down
# DANGER: if you want stop and also want to remove all data, to reset database:
docker compose down -v
```

## Configuration

The default name of the database, user and password for PostgreSQL can be changed in the [`.env`](https://github.com/xmlking/macbooksetup/blob/main/docs/apps/.env/README.md) file in the current directory.

### For Mac users running OLLAMA locally

If you're running [Ollama locally](https://github.com/xmlking/macbooksetup/blob/main/docs/apps/ollama.md) on your Mac (not in Docker), make sure `OLLAMA_HOST` environment variable set to `host.docker.internal:11434` in the n8n service configuration in [compose.yaml](https://github.com/xmlking/macbooksetup/blob/main/docs/compose.yml) .

Additionally, verify ollama base URL is set to <http://host.docker.internal:11434> :

Head to <https://n8n.agentic.orb.local/home/credentials>\
Click on "Local Ollama service"\
Change the base URL to <http://host.docker.internal:11434>

> \[!NOTE]\
> If you are using [LM Studio](https://github.com/xmlking/macbooksetup/blob/main/docs/apps/lm-studio.md), use [OpenAI Model integration](https://n8n.io/integrations/?q=openai) and use lms url: <http://host.docker.internal:1234/v1> URL instead of ollama url: <http://host.docker.internal:11434>

> \[!IMPORTANT]\
> If you are using **OpenAi** models, also verify `OpenAi account` credentials are set properly.

## Usage

Quick start and usage

* Open <http://n8n.agentic.orb.local> in your browser to set up n8n. You’ll only have to do this once.
* Open the included workflow: <http://n8n.agentic.orb.loca/workflow/srOnR8PAY3u4RSwb>
* Select **Test workflow** to start running the workflow.
* If this is the first time you’re running the workflow, you may need to wait until `Ollama` finishes downloading `Llama3.2`.

## n8n cli

use [n8n-cli](https://docs.n8n.io/hosting/cli-commands/) to manage n8n server metadata

default location of n8n CLI config file: `~/.n8n/config`

```shell
# First export env. NOTE: adjust db username/password as needed 
export DB_TYPE=postgresdb DB_POSTGRESDB_HOST=localhost DB_POSTGRESDB_PORT=5432 DB_POSTGRESDB_DATABASE=n8n DB_POSTGRESDB_USER=user_postgres DB_POSTGRESDB_PASSWORD=user_password
```

### credentials

```shell
# Export all the credentials to a specific directory using the --backup flag (details above):
n8n export:credentials --backup --output=config/n8n/credentials/
# Export all the credentials in plain text format.
n8n export:credentials --backup --decrypted --output=config/n8n/credentials/
# Import all the credentials files as JSON from the specified directory:
n8n import:credentials --separate --input=config/n8n/credentials/
```

### workflow

```shell
# Export all your workflows to the standard output (terminal):
n8n export:workflow --all
# Export all the workflows to a specific directory using the --backup flag (details above):
n8n export:workflow --backup --output=config/n8n/workflows/
# Import all the workflow files as JSON from the specified directory:
n8n import:workflow --separate --input=config/n8n/workflows/
```

### security audit

```shell
n8n audit
```

## Reference

* [Self-hosted AI starter kit](https://github.com/coleam00/ai-agents-masterclass/tree/main/local-ai-packaged), [video](https://www.youtube.com/watch?v=V_0dNE-H2gw)
* [Deploy n8n with Docker Compose for Automating AI Workflows](https://autoize.com/deploy-n8n-with-docker-compose-for-automating-ai-workflows/)
* [Install n8n The Right Way for You](https://www.youtube.com/watch?v=OWa9Qse3ow0)
* Local AI with Docker, n8n, Qdrant, and Ollama - [Video](https://www.datacamp.com/tutorial/local-ai)
* [Extract personal data with self-hosted LLM Mistral NeMo](https://n8n.io/workflows/2766-extract-personal-data-with-self-hosted-llm-mistral-nemo/)
* [Building RAG Chatbot for Movie Recommendations with Qdrant and Open AI](https://n8n.io/workflows/2440-building-rag-chatbot-for-movie-recommendations-with-qdrant-and-open-ai/)
* [Build a custom knowledge RAG chatbot using n8n](https://blog.n8n.io/rag-chatbot/)
* [Scaling n8n](https://docs.n8n.io/hosting/scaling/overview/), [video](https://www.youtube.com/watch?v=PnoE0xV8BX8)
* [Auth with n8n webhooks](https://please-open.it/blog/n8n-openid-client/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://xmlking.gitbook.io/macos-setup/applications/n8n.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
