Spaces:
Runtime error
Runtime error
| title: n8n | |
| emoji: 🤖 | |
| colorFrom: pink | |
| colorTo: indigo | |
| sdk: docker | |
| pinned: false | |
| license: mit | |
| app_port: 5678 | |
| short_description: n8n hosting using huggingface | |
| # Hosting n8n using huggingface space | |
| If you don't have a cloud instance or domain, self hosting n8n may be a bit difficult. | |
| This repository is a template for hosting n8n using huggingface space. | |
| ## Using Supabase for database | |
| According to [huggingface space documentation](https://huggingface.co/docs/hub/en/spaces-overview#lifecycle-management), | |
| Space will "go to sleep" and stop executing after a period of time if unused. | |
| To avoid this, we can use [Supabase](https://supabase.com/) for the database. | |
| 1. Sign up for a free account at <https://supabase.com/dashboard/sign-up> | |
| 2. Create a new project and fill the form. Save the database password for later use. | |
|  | |
|  | |
| 3. View the database connection info by click the **Connect** button on the top left nav bar. | |
|  | |
| 4. Select **SQLAlchemy** as Connection String and find the **Transaction pooler** section. | |
|  | |
|  | |
| 5. Save the connection info for later use: host, port, user, dbname. | |
| ## Deploying n8n using huggingface space | |
| Huggingface space provide a free tier with 16GB RAM, 2 CPU cores and 50GB of | |
| (not persistent) disk space. This is enough for hosting n8n. | |
| | **Hardware** | **GPU Memory** | **CPU** | **Memory** | **Disk** | **Hourly Price** | | |
| | ------------ | -------------- | ------- | ---------- | -------- | ---------------- | | |
| | CPU Basic | - | 2 vCPU | 16 GB | 50 GB | Free! | | |
| Using this space to duplicate and deploy n8n in the easy way. | |
| 1. Sign up for a free account at <https://huggingface.co/join> and pick a profile name. | |
| `tomowang` is the profile in <https://huggingface.co/tomowang> as an example. | |
| Remember the profile name for later use. | |
| 2. Access <https://huggingface.co/spaces/tomowang/n8n> and click the menu drop | |
| down in top right corner and select **Duplicate this space**. | |
|  | |
| 3. Fill or change the variable and secrets in pop-up form and click **Duplicate**. | |
|  | |
| | **Variable** | **Value** | | |
| | ------------------------ | -------------------------------------------------------- | | |
| | `DB_POSTGRESDB_PASSWORD` | supabase db password | | |
| | `DB_POSTGRESDB_USER` | supabase db connection `user` | | |
| | `DB_POSTGRESDB_HOST` | supabase db connection `host` | | |
| | `DB_POSTGRESDB_PORT` | 6543 | | |
| | `N8N_ENCRYPTION_KEY` | Random string. Use `openssl rand -base64 32` to generate | | |
| | `WEBHOOK_URL` | Example `https://<profile>-n8n.hf.space/` | | |
| | `N8N_EDITOR_BASE_URL` | Example `https://<profile>-n8n.hf.space/` | | |
| | `GENERIC_TIMEZONE` | Config by requirement | | |
| | `TZ` | Config by requirement | | |
| 4. Click **Duplicate Space** and wait for the deployment to finish. You can | |
| find the logs as following | |
|  | |
| 5. Once the deployment is finished, you can find the URL as configured in the | |
| `N8N_EDITOR_BASE_URL` variable. | |
|  | |
| Now you can access n8n using the URL. | |
| > n8n use [helmet](https://github.com/helmetjs/helmet) for security headers. | |
| > In production mode, it will set `X-Frame-Options` to `sameorigin`, which causes | |
| > the n8n site to be blocked by the iframe in the Huggingface Space | |
| > (code <https://github.com/n8n-io/n8n/blob/master/packages/cli/src/server.ts#L401-L402>). | |