VPS Start
₺299.00 / month
- 2 vCPU
- 4 GB RAM
- 80 GB NVMe
- 4 TB Trafik
- 1 IPv4
- Tam root yetkisi
Run your n8n workflows without execution limits and keep the data on your own server: a full-root KVM VPS, Docker and your own domain name.
Quick answer
n8n hosting means renting a VPS server to run n8n, the open-source workflow automation tool, on a virtual server you control (self-hosted). n8n is usually installed with Docker, listens on port 5678 by default and is published behind a reverse proxy with your own domain and SSL certificate. Your workflow data stays on your server, and your usage terms are limited only by the n8n licence.
Monthly starting prices in Turkish lira, excluding VAT. You complete the order on our Turkish store page.
₺299.00 / month
₺549.00 / month
₺949.00 / month
₺1,749.00 / month
| Usage | RAM | vCPU | Disk |
|---|---|---|---|
| Personal use, a few workflows | 2–4 GB | 2 | 40 GB |
| Small team, with PostgreSQL | 4–8 GB | 2–4 | 80 GB |
| Heavy webhooks and large-data workflows | 8–16 GB | 4–6 | 160 GB |
| Queue mode (Redis + several workers) | 16 GB or more | 6 or more | 160 GB or more |
Estimates; actual needs depend on mods, plugins and settings.
Self-hosting n8n makes sense for teams and developers who want to run workflow automation without paying per execution and keep their data on their own server. n8n connects CRM, email, spreadsheets, payments, messaging and AI services through visual nodes. The cloud edition needs no installation; the version you run on your own server gives you full control over the infrastructure.
Self-hosted n8n stands out when you have:
For users who do not want to manage a server and run only a few workflows, n8n’s own cloud service may be simpler. Self-hosting hands you responsibility for updates and backups; this page explains how to carry that responsibility easily.
Self-hosted n8n is also popular with agencies and freelance automation specialists: running a separate n8n instance on a separate VPS for each client isolates client data and simplifies billing. In that scenario, review the licence terms as described in the licence section below.
With n8n you can automate almost any process where an event must trigger an action in another system: a form submission, a payment notification, a new order, a calendar event or a set time starts a workflow, which then transforms the data and passes it to other services. n8n on your own server runs these workflows continuously without worrying about execution counts.
Common examples in businesses:
What these workflows share is that other services reach n8n through webhooks, or n8n polls them on a schedule; both need an always-on server with a fixed address.
n8n needs a VPS because it is a continuously running Node.js application that requires persistent processes, Docker and port management, none of which shared hosting provides. Shared hosting is designed for PHP websites; it cannot reliably run a long-lived background service, scheduled triggers and a webhook listener.
LIONFIN VPS plans use KVM virtualisation. Because KVM gives each virtual server its own kernel, Docker runs without issues; on some container-based virtualisation technologies Docker installation can be restricted. In addition:
A current Ubuntu LTS release is a good starting operating system, as it matches most Docker documentation and community guides.
The resources n8n needs depend on the number of workflows running at once, the size of the data they process and the database you use. The official n8n documentation focuses on installation methods rather than fixed hardware requirements, so the table above is an approximate guide to match against current package values.
The main factors in resource use:
The best approach is to start small and watch real usage with docker stats and htop. When memory runs short you can upgrade your plan from the customer panel.
The recommended way to install n8n on a server is Docker Compose: a single configuration file defines n8n, the database and the persistent data folder together. Install Docker Engine and the Compose plugin first if they are not on the server yet.
A simple starting configuration (docker-compose.yml):
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: unless-stopped
ports:
- "127.0.0.1:5678:5678"
environment:
- N8N_HOST=n8n.yourdomain.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=${WEBHOOK_URL}
- GENERIC_TIMEZONE=Europe/London
- TZ=Europe/London
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:Put the WEBHOOK_URL and N8N_ENCRYPTION_KEY values in an .env file in the same folder: the webhook URL is your domain’s full address starting with https and ending with /; the encryption key is a long random value generated with a command such as openssl rand -hex 32. Then start the service with docker compose up -d. Three things to watch:
127.0.0.1; outside access goes through the reverse proxy./home/node/.n8n folder must live on a persistent volume; the encryption key and configuration are stored there.GENERIC_TIMEZONE makes scheduled triggers run in your own time zone; set it to yours (for example Europe/Istanbul for Türkiye).Check the official n8n documentation for environment variables that may change between versions.
The default SQLite is enough for personal use and a few workflows; choose PostgreSQL for team use, heavy execution loads or if you might move to queue mode later. According to the official n8n documentation the supported databases are SQLite and PostgreSQL; MySQL and MariaDB support was removed in version 1.0.
| Criterion | SQLite | PostgreSQL |
|---|---|---|
| Setup | No extra service needed | Separate container or service |
| Concurrent writes | Limited | Suited to heavy load |
| Queue mode | Not suitable | Required |
| Backup | File copy | Logical backup with pg_dump |
| Best for | Personal, testing | Teams, production |
With PostgreSQL you give n8n DB_TYPE=postgresdb plus the DB_POSTGRESDB_* variables holding the connection details. Adding PostgreSQL to the same Compose file and keeping it reachable only on the internal Docker network is the easiest way to avoid exposing the database port to the internet. Whatever database you choose, keep the .n8n folder persistent; n8n stores the encryption key and some configuration files there.
To publish n8n on your domain with SSL you use a reverse proxy such as Nginx, Caddy or Traefik; the proxy accepts HTTPS on port 443 and forwards requests to n8n on local port 5678. This setup is essential for webhook nodes to be callable from outside.
n8n.yourdomain.com pointing to the server IP.127.0.0.1:5678 using the proxy_pass directive. Because the n8n interface uses WebSocket, the Upgrade and Connection headers must be passed through.WEBHOOK_URL variable to your HTTPS domain. Otherwise n8n shows an address in webhook nodes that cannot be reached from outside.Most payment providers and SaaS services require a valid HTTPS certificate for webhooks.
You secure an n8n server by closing port 5678 to the internet, allowing access only over HTTPS, using a strong owner account with two-factor authentication and restricting SSH to key-based login. n8n stores credentials for every service it connects to; compromising it means compromising all of them.
ports: "5678:5678", the port may be reachable from outside even though UFW shows it as closed. Bind the port to the local address only, as 127.0.0.1:5678:5678.N8N_ENCRYPTION_KEY value somewhere safe; if you lose it, saved credentials cannot be decrypted.On the infrastructure side, the LIONFIN network filters DDoS traffic at network level with the RouteFence firewall; configuration inside the server is your responsibility.
An n8n backup has three parts: the database (workflows, credentials, execution history), the .n8n data folder (including the encryption key) and your Compose and environment configuration. If any of the three is missing, a restore will be incomplete; in particular, credentials in a backup are useless without the encryption key.
Recommended routine:
pg_dump; for SQLite, stop n8n briefly and copy the database file.docker compose exec n8n n8n export:workflow --all --output=/home/node/.n8n/backup/. Keeping these files in a Git repository lets you track workflow changes as versions.docker-compose.yml and .env in an encrypted location.For a full server-level copy, take a VPS snapshot. A snapshot is also ideal as a quick rollback point before a major n8n version upgrade.
n8n installed with Docker is updated by pulling the new image and recreating the container; when load grows it scales out to several workers in queue mode. Update often, because new releases bring both security fixes and new nodes.
Safe update flow:
docker compose pull and recreate the container with docker compose up -d.In production, pinning the image to a specific version tag instead of latest prevents surprise updates.
For scaling, in queue mode the main n8n process handles incoming requests and triggers while executions are distributed to separate worker processes through a Redis queue. This mode requires PostgreSQL and Redis. A single process is enough for most small and medium workloads; moving to queue mode only makes sense once executions start piling up and lagging. When vertical growth on one server is not enough, you can move to a bigger plan or a VDS server with dedicated resources.
n8n is source-available and distributed under the “fair-code” Sustainable Use License, which lets you use n8n free of charge on your own server for your own internal business processes. The Community Edition runs self-hosted within this framework.
Distinctions to know:
Licence terms can change over time, so compare your use case with n8n’s current licence text. LIONFIN does not sell n8n licences; renting a server gives you the infrastructure, and the software licence terms are between you and n8n.
The most common problems are a wrong webhook URL, time zone errors, a disk filled by a growing database and execution failures caused by insufficient memory.
If the WEBHOOK_URL variable is not set, n8n does not know it sits behind a reverse proxy and generates an address that cannot be called from outside. Set the variable to your HTTPS domain and recreate the container.
Check that GENERIC_TIMEZONE and TZ match your time zone and that no different time zone is selected in the workflow settings.
If execution history is not pruned, the database keeps growing. Enable execution data pruning, consider saving only failed executions and clean up unused images with docker system df and Docker’s prune commands.
Large data is being processed in one go. Split the data into batches and consider settings that write binary data to disk instead of memory; add memory if needed. On Linux, a swap file helps as a temporary measure, but the lasting fix is enough RAM.
Choose a VPS plan
Pick a VPS plan that fits your workflow count and data volume, and select a current Ubuntu LTS release as the operating system.
Prepare the server
Connect with an SSH key, update the system and use UFW to open only SSH, 80 and 443.
Install Docker
Install Docker Engine and the Docker Compose plugin from the official repository.
Start n8n
Create a docker-compose.yml with a persistent volume, encryption key, time zone and webhook URL, then start it with docker compose up -d.
Add a domain and SSL
Point your subdomain to the server IP, set up Nginx or Caddy as a reverse proxy and obtain a Let’s Encrypt certificate.
Schedule backups
Set up a cron job that backs up the database and the .n8n folder daily, and copy the backups off the server.
The n8n Community Edition can be used free of charge on your own server for your own internal business processes under the Sustainable Use License. You pay only for the server. Selling n8n to others as a service or using some enterprise features may require a paid licence; check the current licence text.
n8n listens on port 5678 by default. In a production setup, instead of exposing this port to the internet, bind it to the local address only, put a reverse proxy such as Nginx or Caddy in front and publish only over HTTPS on port 443.
The default SQLite is enough for personal use and testing. PostgreSQL is recommended for team use, heavy execution or queue mode. According to the official n8n documentation, MySQL and MariaDB support was removed in version 1.0, so do not choose them for new installations.
Yes, n8n can also be installed directly with Node.js and npm. However, the official documentation recommends Docker Compose: Docker isolates dependencies, reduces updates to a single command and makes moving servers easier. Check the n8n documentation for the required Node.js version.
The most common reason is that the WEBHOOK_URL variable is not set, so n8n generates an address that cannot be reached from outside. Also check that the domain points to the server IP, the reverse proxy is running on port 443 and the SSL certificate is valid.
n8n encrypts saved credentials with this key. If you lose it, the credentials cannot be decrypted even if you have a database backup, and you will need to set up every service connection again. Store the key outside the Compose file as well, in a secure password manager.
Yes. n8n offers AI nodes and agent workflows that connect to large language model services. If you use an external API, a VPS is enough. If you want to run the model on your own server you need a GPU server; see our LLM server hosting options.
Minor updates are usually smooth; major versions can include breaking changes. Read the release notes before updating, take a database backup or snapshot and test critical workflows manually afterwards. Pinning the image to a specific version gives you more control.
Yes. With n8n’s user management you can invite additional users alongside the owner account. Some advanced role and access features may require a paid licence. For team use, a PostgreSQL database and regular backups are especially important.