# n8n with Tailscale Integration ![n8n with Tailscale](data:image/png;base64,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) This project sets up a n8n instance with Tailscale VPN integration using Docker Compose. It creates a secure, private network connection for your n8n instance using Tailscale. ## Prerequisites - Docker and Docker Compose installed on your system - A Tailscale account and auth key (get one from https://login.tailscale.com/admin/authkeys) - Basic understanding of Docker and networking concepts ## Project Structure ``` ts-n8n/ ├── docker-compose.yml ├── tailscale/ │ ├── tailscale-data/ # Persistent Tailscale state │ └── config/ # Tailscale configuration files └── n8n/ └── config/ # n8n configuration files ``` ## Setup Instructions 1. **Clone the Repository** ```bash git clone https://gitea.damconsulting.llc/DAM/ts-n8n cd ts-n8n ``` 2. Create Required Directories ```bash mkdir -p tailscale/tailscale-data mkdir -p n8n_data ``` 3. Configure Tailscale - Replace `{{YOUR_TAILSCALE_AUTHKEY}}` in the docker-compose.yml with your actual Tailscale auth key - Optionally, update the file in `tailscale/config/serve.json` if you need specific Tailscale serve configurations - CAUTION: Changing `"${TS_CERT_DOMAIN}:443": false` to `true` will expose the service to the internet 4. Configure n8n - See the [documentation](https://docs.n8n.io/?_gl=1*19afx3*_gcl_au*MjAxNDcxMjcxMi4xNzUwNzI3OTUy*_ga*NTQxOTAxNzE1LjE3NTA3Mjc5NTI.*_ga_0SC4FF2FH9*czE3NTA5MDQ5MzAkbzIkZzEkdDE3NTA5MDU0OTIkajMwJGwwJGgw) for configuration options 5. Start the Services ```bash docker compose up -d ``` 6. Wait for Certificate to propagate [~2m] 7. Login - After starting the services your service should be available via tailnet at https://n8n.{{YOUR_TAILNET_DOMAIN}}.ts.net ie https://n8n.tail12345.ts.net/ ## Services ### n8n-ts (Tailscale) - Runs Tailscale VPN client - Image: tailscale/tailscale:latest - Container name: n8n-ts - Hostname: n8n - Requires NET_ADMIN and SYS_MODULE capabilities - Persists state in ./tailscale/tailscale-data - Uses configuration from ./tailscale/config ### n8n - Depends on n8n-ts service ## Usage - After starting the services your service should be available via tailnet at `https://n8n.{{YOUR_TAILNET_DOMAIN}}.ts.net` ie `https://n8n.tail12345.ts.net/` - To manually get the Tailscale IP/hostname of your container: ```bash docker logs n8n-ts ``` Look for the Tailscale IP address in the logs. ## Optional Features - Uncomment and adjust the ports mapping if you need direct access (without Tailscale): ```yaml ports: - 3000:3000 ``` - Stopping the Services ```bash docker compose down ``` ## Troubleshooting - Check container logs: ```bash docker logs n8n-ts docker logs n8n ``` - Ensure your Tailscale auth key is valid and not expired - Verify the configuration files have proper permissions - Make sure required directories exist before starting ## Notes - The n8n service uses the Tailscale service's network stack via `network_mode: service:n8n-ts` - Direct port mapping is disabled by default as Tailscale handles the networking - Services restart automatically unless explicitly stopped - For more information: - Tailscale documentation: https://tailscale.com/kb/ - n8n [documentation](https://docs.n8n.io/?_gl=1*19afx3*_gcl_au*MjAxNDcxMjcxMi4xNzUwNzI3OTUy*_ga*NTQxOTAxNzE1LjE3NTA3Mjc5NTI.*_ga_0SC4FF2FH9*czE3NTA5MDQ5MzAkbzIkZzEkdDE3NTA5MDU0OTIkajMwJGwwJGgw) - n8n [repository](https://github.com/n8n-io/n8n)