ssh -i yourkey.pem ec2-user@publicip
sudo yum update -y
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker ec2-user
exit
ssh -i yourkey.pem ec2-user@publicip
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo docker run -d --restart unless-stopped -it \
--name n8n \
-p 5678:5678 \
-e N8N_HOST="your-domain-name" \
-e WEBHOOK_TUNNEL_URL="https://your-domain-name/" \
-e WEBHOOK_URL="https://your-domain-name/" \
-v ~/.n8n:/root/.n8n \
n8nio/n8n
sudo dnf install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx
sudo nano /etc/nginx/conf.d/n8n.conf
Add the following content in n8n.conf
:
server {
listen 80;
server_name your-domain-name;
location / {
proxy_pass http://localhost:5678;
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
# Headers for WebSocket support
proxy_set_header Connection 'Upgrade';
proxy_set_header Upgrade $http_upgrade;
# Additional headers for forwarding client info
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Save and exit using:
CTRL+O, ENTER, CTRL+X
sudo nginx -t
sudo systemctl restart nginx
sudo dnf install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain-name
sudo systemctl restart nginx