Framework Frankfurt, Deutschland
Nodion erkennt Django an manage.py und Django in deinen Dependencies. Das Python-Buildpack installiert sie, führt collectstatic aus und startet Gunicorn auf dem WSGI-Modul deines Projekts. Mit einer release:-Zeile in der Procfile laufen Migrationen, bevor eine neue Version live geht, und App und PostgreSQL-Datenbank laufen in Frankfurt.
manage.py und Django in den Dependenciesgunicorn <projekt>.wsgi, 3 Workercollectstatic schreibt. Pinne die Python-Version in .python-version, denn ein Bereich wie requires-python = ">=3.10" nimmt das neueste Release. requirements.txt Django>=5.2
gunicorn
whitenoise
dj-database-url
psycopg[binary] collectstatic läuft im Build, dort gibt es nur Variablen mit dem Häkchen Build, die Settings müssen sich also ohne Laufzeit-Secrets importieren lassen. Django prüft SECRET_KEY erst, wenn er gebraucht wird. WhiteNoise kommt direkt hinter SecurityMiddleware. settings.py import os
import dj_database_url
SECRET_KEY = os.environ.get("DJANGO_SECRET_KEY", "")
DEBUG = os.environ.get("DJANGO_DEBUG") == "1"
ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS", "").split(",")
CSRF_TRUSTED_ORIGINS = [f"https://{h}" for h in ALLOWED_HOSTS if h]
DATABASES = {"default": dj_database_url.config(conn_max_age=600)}
STATIC_ROOT = BASE_DIR / "staticfiles"
# MIDDLEWARE: "whitenoise.middleware.WhiteNoiseMiddleware"
# right after "django.middleware.security.SecurityMiddleware" ALLOWED_HOSTS steht; Django würde mit 400 antworten, und das Release ginge nie live. Setz eine kleine Middleware an die erste Stelle von MIDDLEWARE und trag in den App-Einstellungen /healthz als Health-Check-Pfad ein. health.py from django.http import HttpResponse
class HealthCheckMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
if request.path == "/healthz":
return HttpResponse("ok")
return self.get_response(request) release:-Zeile in einer Procfile läuft bei jedem Build einmal, nach dem Build und bevor die neue Version startet. Scheitert sie, stoppt der Deploy und die laufende Version bleibt live. Procfile release: python manage.py migrate --noinput DATABASE_URL an. Setz DJANGO_SECRET_KEY als Secret und DJANGO_ALLOWED_HOSTS auf den Hostnamen der App und deine eigenen Domains, dann pushen. worker: celery -A myproject worker und eine ausdrückliche Zeile web: gunicorn myproject.wsgi --bind 0.0.0.0:$PORT; ohne web:-Zeile wird der erste Procfile-Eintrag außer release: zum Standardbefehl. Dann legst du auf dem Tab Processes einen Prozess worker ohne Port an. Valkey in derselben Region liefert dir REDIS_URL als Broker.web:-Zeile, etwa mit Uvicorn-Workern, und bindest sie an 0.0.0.0:$PORT.requirements.txt, poetry.lock und Pipfile.lock werden so installiert, wie sie sind. Eine Pipfile ohne Lock-Datei installiert nichts.DATABASE_URL, REDIS_URL oder CLICKHOUSE_URL in die App. release:-Zeile in der Procfile bei jedem neuen Build. Dockerfile-Apps sowie Redeploys und Rollbacks auf ein früheres Image nutzen einen Release Command, der an der App selbst gesetzt ist; er hat auch Vorrang vor der Procfile-Zeile. Bei statischen Sites läuft ein Release-Schritt in einem Image, das nur die gebauten Dateien enthält. Nur wenn du es festlegst: Ergänz eine Procfile um release: python manage.py migrate --noinput. Die Zeile läuft bei jedem Build einmal, bevor die neue Version startet, und ein Fehler stoppt den Deploy.
Meist bekommt der Health Check eine 400 wegen ALLOWED_HOSTS oder eine 404 auf /. Beantworte einen Pfad wie /healthz in einer Middleware vor der Host-Prüfung und trag ihn als Health-Check-Pfad der App ein.
Ja. Mit einer poetry.lock installiert Nodion Poetry und führt poetry install --only main aus. Pipenv funktioniert mit einer Pipfile.lock.
In der Region EU Central in Frankfurt. Build, Registry, die App und ihre Datenbanken, Volumes, Buckets, Logs und Metriken bleiben in dieser Region, API und Control Plane von Nodion werden in Deutschland gehostet. Die Nodion GmbH hat ihren Sitz in Stuttgart.
Nodion schafft die Voraussetzungen dafür: Die Nodion GmbH hat ihren Sitz in Stuttgart, in der Region Frankfurt laufen App, Datenbanken und Volumes in Deutschland, und den Auftragsverarbeitungsvertrag (AVV) nach Art. 28 DSGVO schließt du im Dashboard elektronisch ab. Ob dein Einsatz DSGVO-konform ist, hängt auch davon ab, wie du die App konfigurierst und nutzt.
Eine App-Instanz gibt es ab 1 EUR im Monat. Das Setup im Kostenkasten kostet 3.50 EUR im Monat: App 2 EUR, PostgreSQL 1.50 EUR. Preise sind netto, Abrechnung pro Sekunde, größere Varianten oder mehr Instanzen wählst du jederzeit.
Ja. Jede App bekommt einen Default-Hostnamen mit HTTPS. Deine eigene Domain nimmst du auf dem Tab Domains dazu, das TLS-Zertifikat wird automatisch ausgestellt und erneuert.
Ja. Nodion ist ein deutsches Unternehmen mit Sitz in Stuttgart, der Support antwortet auf Deutsch und auf Englisch.
Bis zu 15 € Guthaben beim Registrieren.
oder per E-Mail
Produktnews, kein Spam. Jederzeit abbestellen.
Erfolgreich eingetragen.