Das Tutorial https://community.netcup.com/en/tutorials/w…tcup-webhosting ist definitiv veraltet und funktioniert so nicht mehr. Wie kann Netcup zurückmelden, dass das nicht mehr funktioniert?
So hats jetzt bei mir funktioniert. Ausgehende vom ursprünglichen Tutorial:
Datei package.json mit folgendem Inhalt angelegt:
{
"name": "n8n-netcup",
"version": "1.0.0",
"description": "n8n installation for netcup webhosting",
"main": "index.js",
"license": "MIT",
"dependencies": {
"n8n": "^1.70.0",
"sqlite3": "^5.1.7",
"winston": "^3.11.0",
"winston-daily-rotate-file": "^4.7.1"
},
"scripts": {
"start": "node index.js",
"dev": "NODE_ENV=development node index.js"
}
}
Alles anzeigen
Die Datei .npmrc mit folgendem Inhalt angelegt:
scripts-prepend-node-path=true
audit=false
fund=false
index.js mit folgendem Inhalt angelegt:
const winston = require('winston');
const DailyRotateFile = require('winston-daily-rotate-file');
const path = require('path');
// Log-Verzeichnis erstellen
const logDir = path.join(__dirname, 'logs');
// Winston Logger konfigurieren
const logger = winston.createLogger({
level: process.env.LOG_LEVEL || 'info',
format: winston.format.combine(
winston.format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
winston.format.errors({ stack: true }),
winston.format.printf(({ timestamp, level, message, stack }) => {
return `${timestamp} [${level.toUpperCase()}]: ${message}${stack ? '\n' + stack : ''}`;
})
),
transports: [
// Tägliche Log-Dateien mit Rotation
new DailyRotateFile({
filename: path.join(logDir, 'n8n-%DATE%.log'),
datePattern: 'YYYY-MM-DD',
maxSize: '20m',
maxFiles: '14d',
level: 'info'
}),
// Error-spezifische Log-Datei
new DailyRotateFile({
filename: path.join(logDir, 'n8n-error-%DATE%.log'),
datePattern: 'YYYY-MM-DD',
maxSize: '20m',
maxFiles: '30d',
level: 'error'
}),
// Console-Output für Development
new winston.transports.Console({
format: winston.format.combine(
winston.format.colorize(),
winston.format.simple()
)
})
]
});
// n8n Startup-Logging
logger.info('Starting n8n on netcup webhosting...');
logger.info(`Node.js Version: ${process.version}`);
logger.info(`Environment: ${process.env.NODE_ENV || 'production'}`);
logger.info(`n8n Host: ${process.env.N8N_HOST || 'localhost'}`);
// Error Handling
process.on('uncaughtException', (error) => {
logger.error('Uncaught Exception:', error);
process.exit(1);
});
process.on('unhandledRejection', (reason, promise) => {
logger.error('Unhandled Rejection at:', promise, 'reason:', reason);
});
// n8n starten
try {
require('n8n/bin/n8n');
logger.info('n8n started successfully');
} catch (error) {
logger.error('Failed to start n8n:', error);
process.exit(1);
}
Alles anzeigen
.gitignore mit folgendem Inhalt angelegt
node_modules/
logs/
.env
*.log
Node.js Version ausgewählt 20.19.4
Anwendungsstartdatei: index.js
Umgebungsvariabeln wie folgt gesetzt:
- N8N_BASIC_AUTH_ACTIVE: true
- N8N_BASIC_AUTH_USER: username_eintragen
- N8N_BASIC_AUTH_PASSWORD: dein_passwort_eintragen
- N8N_HOST: n8n.deinedomain.de
- N8N_PROTOCOL: https
- VUE_APP_URL_BASE_API: https://n8n.deinedomain.de
- WEBHOOK_TUNNEL_URL: n8n.deinedomain.de
- N8N_PORT: 5678
- N8N_PUSH_BACKEND: websocket
- EXECUTIONS_MODE: regular
- GENERIC_TIMEZONE: Europe/Berlin
- N8N_PERSONALIZATION_ENABLED: false
- N8N_LOG_LEVEL: info
- N8N_LOG_OUTPUT: file
- NODE_ENV: production
- DB_TYPE: sqlite
- DB_SQLITE_DATABASE: database.sqlite
- N8N_METRICS: true
- N8N_DIAGNOSTICS_ENABLED: false
- N8N_VERSION_NOTIFICATIONS_ENABLED: false
- N8N_TEMPLATES_ENABLED: true
- N8N_ONBOARDING_FLOW_DISABLED: true
Danach auf "App neu starten", einen Moment warten und die Homepage aufrufen.