← Andrew Sergeyev | CTO of ISD Group | Creative Digital Agency

Ukrainian | English

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 subscription Backups to your computer Publicly 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

Registration

  1. Create a free gmail account or use your own @gmail.com address
  2. Create a free AWS account
  3. Look into SPAM for confirmation email and click the link
  4. Create a strong password (letters, numbers, special symbols)
  5. Choose Free plan
  6. Choose “Personal - for your own projects
  7. Input billing information (your card number, expiration date, cvv code and billing address)

Inside AWS console

  1. Open AWS console
  2. Choose region (at the top right dropdown menu) = Europe (Stockholm)
  3. Choose main menu -> all services -> compute -> EC2 (or put “ec2” into search field)
  4. Click “Launch instance” button
  5. Name = n8n (or your company's name, no spaces, please)
  6. Application and OS Images = Debian
  7. Key pair (login) - click “Create new key pair
  8. Key pair name = n8n
  9. Leave RSA and .pem selected by default
  10. Click “Create key pair” - this will download .pem file to your computer's Downloads folder
  11. Mark checkbox “Allow HTTPS traffic from the internet
  12. Mark checkbox “Allow HTTP traffic from the internet” (required to get Let's Encrypt SSL certificate)
  13. Configure storage: correct 8 to 30 GiB (this will give you 30 Gb space on your hard disk)
  14. Click “Launch instance

Open your newly created instance

  1. Click on instance ID in this message — “Successfully initiated launch of instance (i-absndhfjeu39saiuy)”
  2. 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.

  1. Open your domain DNS settings.
  2. Create A record for your domain with name = n8n and value = [IP address] you’ve just copied
  3. 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)

  1. Check that you have ssh installed, copy and paste this line and press enter: ssh -V
  2. If you see “command not found” message, please install ssh first (google “install ssh on mac/windows”)
  3. Open the folder where you downloaded .pem file (should be “Downloads”) - copy/paste this and press enter: cd ~/Downloads
  4. ONLY ON MAC: Copy/paste this and press enter: chmod 600 ./n8n.pem
  5. Copy/paste this and press enter: ssh -i ./n8n.pem admin@n8n.mycompany.com
  6. 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:

  1. Copy/paste this and press enter: curl -sSL "https://andy.isd-group.com/n8n-free/?domain=n8n.mycompany.com&install=*CODE*" | bash
  2. The process will take up to 4 minutes
  3. Hit Cmd+D or Ctrl+D to log out from server.

Log in to your N8N

  1. Open n8n.mycompany.com (this link is not active because you haven't input subdomain earlier).
  2. Set up owner account and answer some marketing questions.
  3. Skip sending free license key, you don't need it.
  4. 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:

  1. Delete your EC2 instance and 30 Gb volume. Close your AWS account. You're not paying anything.
  2. Start paying AWS: it's approx. $13 / month for this setup (t3.micro instance, 30Gb storage, public IP).
  3. Backup your data and migrate to another hosting.
  4. Don't know which hosting to choose? Contact Andrew, he'll propose you some options.
Congrats, that's it!
🎉   🎉   🎉

Troubleshooting

  1. Could not resolve hostname error — wait 5 minutes after you created the A record. Check IP address, wait and try again.
  2. 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.
  3. Any other issues? Contact Andrew (scroll down to the bottom of the page).

[optional] Protection, update, backup, multi-user access

  1. 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.
  2. 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"
  3. 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.
  4. 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.
  5. 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
  6. 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

  1. 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).

Threads: @andrewsergeyev
Email: andy@isd-group.com
Signal: andyjam.27
LinkedIn: andrew-sergyeyev
Youtube: @andrewsergeyev