# Self-Hosted n8n Hosting in Germany from €15/mo

> n8n with its own PostgreSQL, deployed in one click. Webhooks on your domain, no execution limits, servers in Germany. About €15 a month, billed by the hour.

[Templates](/templates) n8n

# One-click n8n hostingSelf-hosted n8n with PostgreSQL

Your own n8n in your Runsite account. One click creates the web service and the database, connects them and generates the key that encrypts your credentials. Webhook and OAuth links point at your URL from the first start, not at localhost. No cap on workflows or executions; you pay for the server, about €15 a month.

[ Deploy on Runsite](https://dashboard.runsite.app/templates)[ View on GitHub](https://github.com/runsite-platform/runsite-n8n-template)

n8n needs a plan with 1 GB of memory, which the €5 starting credit does not cover. Top up €5 or more before the deploy.

automations.yourcompany.com/workflows 

The template

€0

MIT, a thin layer over the official image

Running it

€15/mo

Standard web service and Nano PostgreSQL

Where it runs

Germany

Workflows and credentials in your own database

## What one click sets up

A repository, a web service and a database, already connected. n8n keeps everything in PostgreSQL, so there is no disk to size or back up separately.

* Your own GitHub repository  
A copy of the template in your account. It pins the n8n version, so an update is a one-line commit.  
€0  
Stays yours if you leave Runsite
* [Web service](/services/web-services)  
Runs the official n8n image behind HTTPS on its own URL. Needs no disk.  
Variables it fills in

  * `PUBLIC_URL`
  * `N8N_ENCRYPTION_KEY`
  * `GENERIC_TIMEZONE`  
€12/mo  
Standard plan: 1 vCPU, 1 GB, always on
* [PostgreSQL](/services/postgresql)  
Workflows, credentials, users and execution history.  
Variables it fills in

  * `DATABASE_URL`  
from €3/mo  
Nano plan with daily backups

Billed by the hour at the normal Runsite rates.

about €15 a month

Every plan is on the [pricing page](/pricing).

## A plan with 1 GB that stays awake

n8n takes 400 to 600 MB doing nothing. Every workflow run needs room on top of that, more so with big JSON payloads or a Code node. And a sleeping service misses its schedules, because nothing is running to fire them.

Nano

256 MB, €3

Too small, and it sleeps after 14 quiet days

Starter

512 MB, €5

Inside the idle range, no room for a run

Standard

1 GB, €12

Recommended. Room for everyday workflows

Pro

2 GB, €25

Heavy workflows and large files

 What n8n uses while idle, 400 to 600 MB, before any workflow runs.

## Copy the encryption key somewhere safe

n8n encrypts every saved credential with `N8N_ENCRYPTION_KEY`: API keys, OAuth tokens and the rest. The deploy generates it once. If it changes, n8n can no longer read any of them, and you enter them all again by hand.

* ### Never change or delete it after the first start  
It sits in the web service environment. Leave it there.
* ### Keep a copy outside Runsite  
A database backup is useless without it. Put it in your password manager the day you deploy.
* ### Moving n8n? Bring the key first  
Set the same value on the new service before it starts for the first time.

N8N\_ENCRYPTION\_KEY

••••••••••••••••••••••••••••••••

48 characters

* Telegram bot tokenencrypted
* Google Sheets OAuthencrypted
* Stripe secret keyencrypted
* Postgres passwordencrypted

Without the key the service refuses to start and says why, instead of quietly making a new key that the next redeploy would lose.

## Webhooks on your own domain

Webhook nodes show URLs built from PUBLIC\_URL. Google, Slack and other OAuth apps call back to the same domain, so connecting an account does not end on a localhost redirect.

https://automations.example.comPUBLIC\_URL/webhook/productionorder-paidpath from the node

https://automations.example.com/webhook-test/order-paid

The test URL, which listens only while you click Listen for test event in the editor.

Attached a custom domain? Set `PUBLIC_URL` to it in the web service environment. Saving redeploys n8n with the new links.

## What runs before n8n starts

A short entrypoint script translates the Runsite environment into the settings n8n expects, in this order.

1. ### Checks the encryption key  
No N8N\_ENCRYPTION\_KEY, no start. Otherwise n8n would invent a key that the next redeploy throws away.
2. ### Splits DATABASE\_URL  
Turns the one connection string into the DB\_POSTGRESDB\_\* variables n8n reads, decoding passwords with @, : or / in them. sslmode=require switches on TLS.
3. ### Points n8n at its public URL  
Sets the webhook URL, editor URL, host and protocol from PUBLIC\_URL, so links in the editor and OAuth callbacks use your domain.
4. ### Waits for PostgreSQL  
On the first deploy the database may still be booting. The script retries for up to 180 seconds before it gives up with a clear error.

### Defaults in the Dockerfile

Any of them can be overridden in the web service environment, along with the rest of the [n8n environment variables](https://docs.n8n.io/hosting/configuration/environment-variables/).

N8N\_PROXY\_HOPS

1

n8n trusts the one proxy in front of it

GENERIC\_TIMEZONE

Europe/Kyiv

Time zone for schedule triggers

N8N\_DIAGNOSTICS\_ENABLED

false

No usage telemetry to n8n

N8N\_RUNNERS\_TASK\_TIMEOUT

300

Seconds a Code node may run

N8N\_UNVERIFIED\_PACKAGES\_ENABLED

true

Community nodes can be installed

## From click to first workflow

No configuration before the deploy. Everything n8n needs is filled in for you.

1. ### Top up and click Deploy  
The €5 starting credit covers only the Nano and Starter plans, and n8n needs Standard. A top-up of €5 or more lifts that limit.
2. ### Name the project and the repository  
Runsite copies the template into your GitHub account, creates the web service and the database and starts the first build.
3. ### Choose Standard for the web service  
1 GB of memory, always on. Schedules fire on time and webhooks answer at night too.
4. ### Open the URL and create the owner account  
n8n asks for it on the first visit. There is no default password to change.

## Updating n8n

The version is pinned in the Dockerfile. Change the number, commit and push; Runsite rebuilds and n8n migrates the database on start.

# Dockerfile
ARG N8N_VERSION=2.44.6

Take a database backup first. Migrations are not undone if you go back to an older version.

## The same setup in Docker

The repository ships a docker-compose.yml with PostgreSQL, so you can try a change on your laptop before you push it.

$ docker compose up --build
# open http://localhost:5678

The local database password contains @, :, / and #, so the run also proves that encoded passwords survive the trip.

## What this template does not do

### JavaScript only in the Code node

The official image ships without Python, so Python mode in the Code node does not run.

### One instance

n8n runs in regular mode. There are no queue mode workers and no Redis. When one process stops keeping up, move to a bigger plan first.

### Nothing fires while the service sleeps

Only the Nano plan sleeps. If you put n8n on it anyway, schedule triggers and polling nodes stay silent until someone opens the editor.

### About the license

The files in the template repository are MIT. n8n itself is fair-code software by n8n GmbH under the [Sustainable Use License](https://github.com/n8n-io/n8n/blob/master/LICENSE.md). It lets you run n8n for your own internal business. Read it before you offer n8n to other people as a hosted service.

## Questions

How much does it cost to self-host n8n on Runsite? 

About €15 a month: €12 for a Standard web service with 1 GB of memory and €3 for a Nano PostgreSQL database. The template itself is free. Billing is hourly, so a service you delete after a week costs a week.

Is n8n free to self-host? 

Yes, the community edition costs nothing and has no execution limit. You pay for the server under it, about €15 a month here. Features n8n keeps for its paid plans, such as SSO and environments, need a license key whether you self-host or not.

Is there a limit on workflows or executions? 

No. Self-hosted n8n has no execution quota. The limits are the CPU and memory of your plan; if heavy workflows start to crawl, move the web service to Pro.

How is this different from n8n Cloud? 

n8n Cloud is run by n8n GmbH, priced by executions per month, and they update it for you. Here you run the community edition yourself: no execution cap, the data sits in your own PostgreSQL, and you decide when to upgrade. Features n8n keeps for its paid plans, such as SSO and environments, still need a license key from n8n.

Can I use my own domain for webhooks? 

Yes. Attach the domain to the web service, then set PUBLIC\_URL to it, for example https://automations.example.com. Saving redeploys n8n, and from then on the editor shows webhook and OAuth callback URLs on that domain. Update the URLs in any service that already calls your webhooks.

What happens if the encryption key changes? 

Workflows keep working until they touch a saved credential, then fail because n8n can no longer decrypt it. You would have to enter every API key and reconnect every OAuth account. Put the key back to the old value and the credentials work again.

Can I move an existing n8n here? 

If the old instance uses PostgreSQL, restore its dump into the new database and set N8N\_ENCRYPTION\_KEY to the old key before the first start. If it uses SQLite, export workflows and credentials with the n8n CLI (export:workflow and export:credentials) and import them into the new instance.

Which time zone do schedules use? 

Europe/Kyiv until you change it. Set GENERIC\_TIMEZONE in the web service environment to your zone, for example Europe/Berlin. Single workflows can still override it in their settings.

Can I run n8n with Docker somewhere else? 

Yes. The repository is a thin layer over the official n8nio/n8n image and ships a docker-compose.yml with PostgreSQL. docker compose up --build starts the same setup on your laptop or any server.

## Your app deserves to be online

€5 of credit on signup. Deploy in under a minute. No credit card needed.

[Start deploying](https://dashboard.runsite.app/login)[View documentation](https://docs.runsite.app)

---

Source: https://runsite.app/templates/n8n
