diff --git a/Dockerfile b/Dockerfile
index d33c43fc5c5101abcf092e1cb7aa99112fdfb52b..08b4f2b321dfd2eae3e6794ff3c80b6039e53f82 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -29,7 +29,6 @@ ENV DJANGO_SETTINGS_MODULE "majak.settings.production"
 # fake values for required env variables used to run collectstatic during build
 RUN DJANGO_SECRET_KEY=x DATABASE_URL=postgres://x/x DJANGO_ALLOWED_HOSTS=x \
     OIDC_RP_CLIENT_ID=x OIDC_RP_CLIENT_SECRET=x OIDC_RP_REALM_URL=x \
-    CELERY_BROKER_URL=x CELERY_RESULT_BACKEND=x \
     python manage.py collectstatic
 
 EXPOSE 8000
diff --git a/Makefile b/Makefile
index ca0bade03655b184d147c832da08e90dd3b1115e..bd5c9df75a81322ebd64e3453e9b74ae5774e430 100644
--- a/Makefile
+++ b/Makefile
@@ -15,6 +15,7 @@ help:
 	@echo "Application:"
 	@echo "  run            Run the application on port ${PORT}"
 	@echo "  shell          Run Django shell"
+	@echo "  worker         Run Celery worker"
 	@echo ""
 	@echo "Database:"
 	@echo "  migrations     Generate migrations"
@@ -44,6 +45,9 @@ run: venv
 shell: venv
 	${VENV}/bin/python manage.py shell_plus
 
+worker: venv
+	${VENV}/bin/celery -A majak worker --pool solo -E -l INFO
+
 migrations: venv
 	${VENV}/bin/python manage.py makemigrations
 
diff --git a/README.md b/README.md
index 8a340ac5fdbd936c27f5f6e04709faa03f9e91e8..8e1ae0be30b0afa123b1c1888ac1176fbf5f04c3 100644
--- a/README.md
+++ b/README.md
@@ -100,6 +100,7 @@ Appka přidává management command `update_callendars`, který stahuje a updatu
 kalendáře. Je třeba ho pravidelně volat na pozadí (přes CRON).
 
 ### Celery (Import z Jekyllu)
+
 Import z Jekyll GitHub repozitářů pirátských webů je řešen asynchroně přes Celery.
 Celery využívá Redis, který může běžet např. lokálně, typicky 6379:
 V envu pak je pak potřeba mít nastavený Celery broker:
@@ -110,10 +111,15 @@ CELERY_RESULT_BACKEND=redis://localhost:6379/6
 ```
 
 Aby se celery tasky vykonávaly, je potřeba pustit celery v terminálu:
+
 ```
 celery -A majak worker
 ```
 
+Pokud není zadán `CELERY_BROKER_URL`, tak se automaticky nastaví
+`CELERY_TASK_ALWAYS_EAGER = True`, čímž se tasky vykonají synchronně přímo v
+procesu webserveru.
+
 ### Stránka 404
 
 Pokud je třeba vlastní 404 pro web, stačí do kořenové `xxxHomePage` webu
@@ -142,6 +148,8 @@ V produkci musí být navíc nastaveno:
 | --- | --- | --- |
 | `DJANGO_SECRET_KEY` | | tajný šifrovací klíč |
 | `DJANGO_ALLOWED_HOSTS` | | allowed hosts (více hodnot odděleno čárkami) |
+| `CELERY_BROKER_URL` | | URL pro Celery Broker |
+| `CELERY_RESULT_BACKEND` | | URL pro Celery Result Backend |
 
 Různé:
 
diff --git a/majak/settings/base.py b/majak/settings/base.py
index 14e6a7ac57fd8cdf8cabeb1c4b2d3b88d879bf34..8025d23f23948b91325c334bc6205baf7724660b 100644
--- a/majak/settings/base.py
+++ b/majak/settings/base.py
@@ -192,8 +192,10 @@ CACHES["renditions"]["TIMEOUT"] = 60 * 60 * 24
 
 # CELERY
 # ------------------------------------------------------------------------------
-CELERY_BROKER_URL = env.str("CELERY_BROKER_URL")
-CELERY_RESULT_BACKEND = env.str("CELERY_RESULT_BACKEND")
+CELERY_BROKER_URL = env.str("CELERY_BROKER_URL", default="")
+if not CELERY_BROKER_URL:
+    CELERY_TASK_ALWAYS_EAGER = True
+CELERY_RESULT_BACKEND = env.str("CELERY_RESULT_BACKEND", default="")
 CELERY_ACCEPT_CONTENT = ["application/json"]
 CELERY_RESULT_SERIALIZER = "json"
 CELERY_TASK_SERIALIZER = "json"