Self-hosting n8n for production AI automations without babysitting a server A developer outlined a production checklist for self-hosting n8n AI automation workflows, covering a stable HTTPS webhook URL, a reverse proxy with auto-renewing certificates, Postgres instead of SQLite, a fixed N8N_ENCRYPTION_KEY, execution-data pruning, tested backups, planned updates and monitoring. The writeup stresses that AI workflows differ from simple cron jobs because they are triggered externally via webhooks, hold valuable API credentials and are user-facing, so an outage is immediately visible to customers. You built an n8n workflow that matters. Maybe it is an AI agent that answers customers on Telegram, a pipeline that summarizes every support ticket with Claude, or an automation that turns new leads into enriched CRM records. It works beautifully on your laptop. Then someone asks the obvious question: "Can we turn it on for real?" That is the moment n8n stops being a tool and becomes a service. Services have to be up at 3 AM, reachable from the internet, backed up, patched and watched. This article walks through what production n8n actually needs, then shows the fastest way to get all of it running without turning one engineer into a part time sysadmin. A classic n8n workflow that copies rows between two apps once an hour is forgiving. If it misses a run, it catches up. AI workflows are different in three ways. They are triggered from outside. A Telegram bot, a Slack app, a form or a payment provider calls your n8n through a webhook. That means n8n needs a public HTTPS address that is always reachable. Telegram, for example, only delivers updates to HTTPS endpoints. They hold valuable credentials. Your Anthropic or OpenAI key, your CRM token, your database password. n8n encrypts stored credentials with an encryption key, and anyone with the database and that key can use every one of them. They are user facing. When an AI agent answers customers, a five minute outage is a customer waiting for a reply that never comes. So production n8n is less about n8n and more about everything around it. Webhooks need a stable HTTPS URL, and n8n needs to know that URL so it can register webhooks correctly. You set it with the WEBHOOK URL environment variable: WEBHOOK URL=https://n8n.yourcompany.com/ Behind that you need a reverse proxy, a certificate, and automatic renewal. An expired certificate silently breaks every webhook at once. Out of the box n8n stores everything in SQLite, which is perfect on a laptop. For production, the n8n docs recommend Postgres, so the database can handle concurrent executions and be backed up and restored properly: DB TYPE=postgresdb DB POSTGRESDB HOST=postgres DB POSTGRESDB DATABASE=n8n DB POSTGRESDB USER=n8n DB POSTGRESDB PASSWORD=