Self-hosting easypanel and n8n on ubuntu vps
Easy guide for self-hosting easypanel and n8n on ubuntu vps

This article provides an outline for self-hosting Easypanel and n8n on Ubuntu VPS.

What is Easypanel?

Easypanel is a modern, developer-friendly server control panel for hosting and deploying web applications on your own VPS or dedicated server. It provides a graphical interface similar to Plesk or cPanel, but with a focus on simplicity and modern development workflows.

🔧 Key Features

  • Docker-based app management – Each application runs in an isolated Docker container for security and portability.
  • One-click deployments – Quickly deploy apps like WordPress, Laravel, Node.js, Next.js, etc.
  • Automatic SSL certificates – Easypanel integrates with Let’s Encrypt to automatically provision and renew HTTPS.
  • Git integration – Deploy directly from Git repositories (GitHub, GitLab, Bitbucket).
  • Database management – Supports PostgreSQL, MySQL, and Redis with built-in admin tools.
  • Multi-user control panel – You can create projects, manage environments, and add team members.
  • Resource monitoring – Includes dashboards for CPU, RAM, and disk usage.

💡 Use Cases

  • Self-hosting SaaS or web apps.
  • Running a PaaS-like environment on your own infrastructure.
  • Simplifying DevOps for small teams or freelancers.

In short, Easypanel is like a lightweight, self-hosted Heroku or Plesk alternative — giving you modern app deployment and management tools without the complexity of manual Docker and server configuration.

What is n8n?

n8n (pronounced “n-eight-n”) is an open-source workflow automation tool that lets you connect different apps, APIs, and services — much like Zapier or Make (Integromat) — but with full control, flexibility, and the option to self-host.

⚙️ Core Purpose

n8n automates repetitive tasks and data flows by linking services through workflows made of nodes (each node performs an action, like “get new Gmail emails” or “create Trello card”).

🚀 Key Features

  • Visual workflow builder – Drag-and-drop interface to design complex automations.
  • Hundreds of integrations – Connects to apps like Slack, Notion, MySQL, GitHub, Google Sheets, APIs, etc.
  • Custom API connections – You can integrate any REST or GraphQL API using HTTP nodes.
  • Conditional logic and branching – Add if/else paths, loops, and merges for advanced logic.
  • Self-hosted and private – Unlike SaaS tools, you can run n8n on your own server (ideal for data privacy).
  • JavaScript expressions – Customize workflows using code snippets and variable handling.
  • Triggers and schedules – Start workflows automatically (e.g., cron jobs, webhooks, event listeners).

🧠 Example Use Cases

  • Sync CRM contacts between HubSpot and Google Sheets.
  • Send Slack alerts when new GitHub issues are opened.
  • Automate invoice creation when Stripe payments are received.
  • Scrape or enrich data from APIs and push to databases.

🏗️ Deployment Options

  • Self-host via Docker, Easypanel, or manual Node.js install.
  • Cloud version: n8n Cloud (managed by the developers).

In short, n8n is your programmable automation hub — think of it as Zapier + Node-RED + API scripting, all open-source and under your control.

Overview and Assumptions

  • You have a fresh Ubuntu server (VPS) with SSH access.
  • You have at least 2 GB RAM (recommended) and free ports 80, 443, etc.
  • Domain names / DNS (optional, but recommended for SSL).
  • The plan is to install Easypanel first (as a server control panel) and then deploy n8n under it (or alongside).
  • We’ll use Docker, because Easypanel runs on Docker. Easypanel itself will manage Docker services for you (apps, SSL, etc.).
  • For n8n, I’ll show how to deploy it via Docker (or via Docker Compose) and then integrate it behind a domain / SSL.
  • Root-equivalent user access
  • Basic knowledge of command-line

Launch 100% ssd ubuntu vps from $2. 49/mo!

Self-Hosting Easypanel and n8n on Ubuntu VPS

Follow the steps below for self-hosting Easypanel and n8n on Ubuntu VPS:

  1. Install Easypanel (on Ubuntu)

    Easypanel is a lightweight control panel (Docker-based) for deploying apps, managing domains, SSL, etc.

    1. Prepare the server / update packages

      1. SSH into your server:
        ssh youruser@your_server_ip
      2. Update and upgrade:
        sudo apt update sudo apt upgrade -y
      3. (Optional) Install helpful utilities:
        sudo apt install -y curl wget git vim
    2. Install Docker

      Because Easypanel relies on Docker, you need to install Docker first. The official Docker install script works well:

      curl -sSL https://get.docker.com | sh
      

      After installation:

      • Add your user (if not root) to docker group:
        sudo usermod -aG docker $USER
      • Reload your shell (log out/in or newgrp docker) so your user has Docker permissions.
      • Check Docker is working:
        docker version docker run hello-world

        Make sure Docker is active and running on boot:

        sudo systemctl enable docker sudo systemctl status docker
    3. Run Easypanel setup

      With Docker installed, run the Easypanel setup container:

      docker run --rm -it \
      -v /etc/easypanel:/etc/easypanel \
      -v /var/run/docker.sock:/var/run/docker.sock:ro \
      easypanel/easypanel setup
      

      This command:

      • Mounts /etc/easypanel to persist config
      • Mounts the Docker socket so Easypanel can manage Docker
      • Runs the setup script which bootstraps the panel and services

      The setup may install Docker Swarm and other internal services. It’s recommended to use a fresh server (empty system) for Easypanel to avoid conflicts.

    4. Access Easypanel

      Once setup finishes, you can access the panel in your browser:

      http://your_server_ip:3000

      You’ll be prompted to create an admin account (username + password).
      Setup easypanel

      From there, you can use the GUI to deploy applications, configure domains, manage SSL (Let’s Encrypt), etc.
      Easypanel dashboard

    5. (Optional) Update / reset password

      • To manually update Easypanel:
        docker image pull easypanel/easypanel docker service update easypanel --force
      • To reset the admin password via CLI:
        docker run --rm -it \ -v /etc/easypanel:/etc/easypanel \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ easypanel/easypanel reset-password
  2. Deploy n8n

    Now that Easypanel is running, you can deploy n8n either under Easypanel (if it supports Docker apps) or separately. The cleanest method is using Docker Compose or a Docker service, with a reverse proxy to expose it via domain + SSL. Below is a robust method using Docker Compose + reverse proxy (which you can integrate with Easypanel’s reverse proxy features).

    • Option A (preferred): Docker Compose + Reverse Proxy (Let’s Encrypt)

      This approach is well documented.

      1. Prepare firewall / prerequisites
        1. Ensure ports 80 (HTTP) and 443 (HTTPS) are open and accessible.
        2. (Optional but recommended) install UFW and allow these ports:
          sudo apt install -y ufw sudo ufw allow ssh sudo ufw allow http sudo apt allow https sudo ufw enable

          Be cautious: Docker may bypass UFW, so double-check.

      2. Create a directory for n8n
        mkdir ~/n8n cd ~/n8n
      3. Create docker-compose.yml

        Here’s a sample docker-compose.yml:

        version: "3.8"
        services:
        n8n:
        image: n8nio/n8n:latest
        environment:
        - N8N_BASIC_AUTH_ACTIVE=true
        - N8N_BASIC_AUTH_USER=admin
        - N8N_BASIC_AUTH_PASSWORD=yourpassword
        - N8N_RUNNERS_ENABLED=true
        - WEBHOOK_URL=https://n8n.yourdomain.com
        - VUE_APP_URL_BASE_API=https://n8n.yourdomain.com/
        ports:
        - "5678:5678"
        volumes:
        - n8n_data:/home/node/.n8n
        restart: always
        volumes:
        n8n_data:
        

        You’ll want to customize:

        • WEBHOOK_URL to your domain (with https)
        • Enable basic auth or set up more secure auth
        • Use persistent volume for data
      4. Setup reverse proxy and SSL

        You can use Nginx, Caddy, or another reverse proxy to forward domain traffic to n8n’s port 5678.

        Example using Caddy (automatic HTTPS):

        • Install Caddy:
          sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' \ | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' \ | sudo tee /etc/apt/sources.list.d/caddy-stable.list sudo apt update sudo apt install caddy -y
        • Edit /etc/caddy/Caddyfile:
          n8n.yourdomain.com { reverse_proxy localhost:5678 }
        • Restart Caddy:
          sudo systemctl restart caddy

          Caddy will automatically fetch and renew Let’s Encrypt certificates.

        Alternatively, with Nginx + Certbot, you can set up an Nginx site that proxies to localhost:5678, enable HTTPS via Certbot, etc. (common method).

      5. Launch n8n

        Inside your n8n directory:

        docker compose up -d

        Check logs:

        docker compose logs -f

        If all is good, you should be able to browse to:

        https://n8n.yourdomain.com

        You can then login with basic auth (if enabled) or as the owner user.

      6. Backup, security, environment settings

        • Back up the n8n_data volume regularly.
        • Use environment variables to enable authentication, webhook URL, etc. See n8n docs for full list.
        • Consider adding firewall rules, limiting access, rate limiting, etc.
        • Monitor your Docker containers, update n8n image with caution (backup first).
    • Option B: Install n8n via npm / system (less recommended for production)

      You can install n8n globally via npm on Ubuntu, but this requires more manual process management and doesn’t isolate dependencies as cleanly. Many guides cover this.

      High level steps:

      1. Install Node.js / npm
      2. npm install -g n8n
      3. Configure environment variables (e.g. WEBHOOK_URL, N8N_BASIC_AUTH_*, etc.)
      4. Use process manager (pm2, systemd) to run n8n in background
      5. Use Nginx (or another reverse proxy) + SSL to front it

      This method is okay for dev / small use, but Docker gives more reproducibility.

  3. Integrating n8n with Easypanel

    Once both Easypanel and n8n are running, you have a few options:

    • Deploy n8n as a Docker app through the Easypanel interface, if supported. (Check whether Easypanel allows deploying custom Docker containers / custom images.)
    • Or treat n8n as an “external” service and manage DNS / SSL via Easypanel, pointing a subdomain to your n8n reverse proxy.
    • Use Easypanel’s domain / SSL features to manage certificate issuance, then proxy to n8n.

    The exact steps depend on how Easypanel structures app deployment. The general idea:

    1. In Easypanel, create a “project” or application slot for n8n.
    2. Point the domain (e.g. n8n.example.com) or subdomain to your server (A record).
    3. In Easypanel, set up SSL (Let’s Encrypt) for that domain.
    4. Configure Easypanel (or a reverse proxy layer) to forward requests to localhost:5678 (the n8n container).

    If Easypanel doesn’t allow arbitrary Docker apps, you may skip that part and just manage n8n outside via Docker Compose + reverse proxy.

  4. Post-Install Checks & Maintenance

    • Test that https://n8n.yourdomain.com works and loads the n8n UI.
    • Test webhooks / workflows to confirm the URL / domain is set correctly.
    • Update n8n and Easypanel carefully (backup first).
    • Backups: periodically backup your n8n data volume (e.g. docker cp, volume snapshots).
    • Security: restrict access, use strong passwords / basic auth or n8n’s built-in authentication, enable firewall, monitor logs.
    • Monitoring: watch disk usage, container health, certificate expiry.

Launch 100% ssd ubuntu vps from $2. 49/mo!

Conclusion

You now know the process for self-hosting Easypanel and n8n on Ubuntu VPS.

Avatar of editorial staff

Editorial Staff

Rad Web Hosting is a leading provider of web hosting, Cloud VPS, and Dedicated Servers in Dallas, TX.
lg