Self-host multi-user N8N on AWS Free Tier in 20 minutes
One-time €5 installer: domain, SSL, backups, updates. Perfect for a company
No subscriptionBackups to your computerPublicly available N8N 24/7
Step-by-step guide to deploy N8N on AWS Free Tier. No special knowledge required. This is how the result looks like:
Login: test@isd-group.com, password: NNNN8888
I propose to use AWS EC2 instance, which is free for 6 months (according to AWS documentation). This manual is based on the official docs & production tweaks.
Basic setup: t3.micro instance, 30 Gb storage, publicly available custom subdomain with letsencrypt SSL (https), basic server security, nginx, docker.
Requirements
- Gmail account
- A credit/debit card with 1 euro on account (AWS will return it right away)
- A domain and access to it's DNS settings. If you don't have one, please register any free domain, like pp.ua from nic.ua registrator (Don't want to bother? Continue reading, we've got a solution)
- Google Calendar to set a reminder to cancel the plan in 6 months OR see options below
Choose main menu -> all services -> compute -> EC2 (or put “ec2” into search field)
Click “Launch instance” button
Name = n8n (or your company's name, no spaces, please)
Application and OS Images = Debian
Key pair (login) - click “Create new key pair”
Key pair name = n8n
Leave RSA and .pem selected by default
Click “Create key pair” - this will download .pem file to your computer's Downloads folder
Mark checkbox “Allow HTTPS traffic from the internet”
Mark checkbox “Allow HTTP traffic from the internet” (required to get Let's Encrypt SSL certificate)
Configure storage: correct 8 to 30 GiB (this will give you 30 Gb space on your hard disk)
Click “Launch instance”
Open your newly created instance
Click on instance ID in this message — “Successfully initiated launch of instance (i-absndhfjeu39saiuy)”
Find section “Public IPv4 address” and copy IP address (it looks like 92.80.123.115)
Open your domain registration website (like, godaddy.com or nic.ua)
If you don't have a domain and don't want to bother, please, contact Andrew and send him "Public IPv4 address", you've just copied. He'll create you a random subdomain for you.
Open your domain DNS settings.
Create A record for your domain with name = n8n and value = [IP address] you’ve just copied
Wait 5 minutes
Before continue, please, input n8n subdomain you're planning to use (no www, no https), something like "n8n.mycompany.com" — this affects the scripts below:
Open terminal on Mac or PowerShell on Windows (command line tool)
Check that you have ssh installed, copy and paste this line and press enter: ssh -V
If you see “command not found” message, please install ssh first (google “install ssh on mac/windows”)
Open the folder where you downloaded .pem file (should be “Downloads”) - copy/paste this and press enter: cd ~/Downloads
ONLY ON MAC: Copy/paste this and press enter: chmod 600 ./n8n.pem
Copy/paste this and press enter: ssh -i ./n8n.pem admin@n8n.mycompany.com
Type “yes” and press enter. You are logged in to the server now.
Server setup & installing N8N
This final line of script will:
- harden your server's security
- install & setup nginx to make your n8n publicly available
- install n8n through docker
- obtains SSL certificate.
Please, see screen recording demo of how the script works:
Copy/paste this and press enter:
curl -sSL "https://andy.isd-group.com/n8n-free/?domain=n8n.mycompany.com&install=*CODE*" | bash
Set up owner account and answer some marketing questions.
Skip sending free license key, you don't need it.
You're done, enjoy! It's up and running 24/7. You can invite your co-workers. For more see "Protection, ..." section.
Set a reminder in your Google Calendar (6 month – 1 week = Feb 26, 2026)
Here are the options what to do in 6 months:
Delete your EC2 instance and 30 Gb volume. Close your AWS account. You're not paying anything.
Start paying AWS: it's approx. $13 / month for this setup (t3.micro instance, 30Gb storage, public IP).
Backup your data and migrate to another hosting.
Don't know which hosting to choose? Contact Andrew, he'll propose you some options.
Congrats, that's it! 🎉 🎉 🎉
Troubleshooting
Could not resolve hostname error — wait 5 minutes after you created the A record. Check IP address, wait and try again.
Can't log in to server (Identity file ./n8n.pem not accessible: No such file or directory):a) don't forget to do cd ~/Downloads; b) check your .pem file is there.
Any other issues? Contact Andrew (scroll down to the bottom of the page).
Protect your server. When you're done with setup and users invitations, open AWS EC2, select Security Groups -> enter "launch-wizard-1" group -> Edit inbound rules -> Remove rule with Type = SSH. This will disable SSH access to your server. When you need it later, just add it again.
Update n8n version periodically, if you need access to the new features. Please, remember to backup first. Here's the line to update:
ssh -i ./n8n.pem admin@n8n.mycompany.com "cd /var/www/default && sudo docker compose stop && sudo docker pull docker.n8n.io/n8nio/n8n:latest && sudo docker compose up -d"
Backup "the easy way": open you workflow, click on "...", select "Download". This will download your workflow as a .json file. You can upload it back to any other N8N later. Note: this won't backup your credentials, you need to backup them separately.
TIP: In order to quickly restore credentials, just create the credential again and click on each node in the workflow that uses it. Then just click "Back". Repeat for each workflow, each node.
Backup "the pro way": this will create n8n_data_backup.tar.gz file with all your N8N data (including sqlite database):
ssh -i ./n8n.pem admin@n8n.mycompany.com "sudo tar -czf - -C /var/lib/docker/volumes/n8n_data/_data ." > ~/Downloads/n8n_data_backup.tar.gz
For multi-user access, invite users to your n8n. You can do it in "Settings" -> "Users" -> "Invite user". Wait till they accept the invitations. Then run this command from your terminal:
ssh -i ./n8n.pem admin@n8n.mycompany.com "cd /var/www/default && sudo docker compose stop && sudo sqlite3 /var/lib/docker/volumes/n8n_data/_data/database.sqlite \"UPDATE user SET role = 'global:owner';\" && sudo docker compose up -d"
[optional] Transferring your data to the new server
If you have "the pro way" backup file in your Downloads folder, just execute this to restore all your data (WARNING: this will erase all the existing data in the new server):
cat ~/Downloads/n8n_data_backup.tar.gz | ssh -i ./n8n.pem admin@n8n.mycompany.com 'cd /var/www/default && docker compose stop && sudo tar -xzvf - -C /var/lib/docker/volumes/n8n_data/_data && docker compose up -d'
Unlock the final script
You will receive unlock code to your email.
×
Contact
For questions or consultations, don't hesitate to contact me. I can setup a domain for you or the whole server (you have to send me .pem file and IP address).