diff --git a/.env.example b/.env.example
index d06208b6..7528cf44 100644
--- a/.env.example
+++ b/.env.example
@@ -1,38 +1,44 @@
-DATABASE_URL=""
-REDIS_URL=""
-UPLOAD_DIRECTORY=""
-NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY=""
-STRIPE_PUBLISHABLE_KEY=""
-STRIPE_SECRET_KEY=""
-STRIPE_SIGNING_KEY=""
-JWT_SECRET=""
-FRONTEND_URL=""
-MAIN_URL=""
-NEXT_PUBLIC_BACKEND_URL=""
-BACKEND_INTERNAL_URL=""
-X_API_KEY=""
-X_API_SECRET=""
-X_CLIENT=""
-X_SECRET=""
-LINKEDIN_CLIENT_ID=""
-LINKEDIN_CLIENT_SECRET=""
-REDDIT_CLIENT_ID=""
-REDDIT_CLIENT_SECRET=""
-GITHUB_CLIENT_ID=""
-GITHUB_CLIENT_SECRET=""
-RESEND_API_KEY=""
+# Required Settings
+DATABASE_URL="postgresql://postiz-user:postiz-password@localhost:5432/postiz-db-local"
+REDIS_URL="redis://localhost:6379"
+JWT_SECRET="random string for your JWT secret, make it long"
+FRONTEND_URL="http://localhost:4200"
+NEXT_PUBLIC_BACKEND_URL="http://localhost:3000"
+BACKEND_INTERNAL_URL="http://localhost:3000"
+
+# Optional. Your upload directory path if you host your files locally.
+UPLOAD_DIRECTORY="/opt/postiz/uploads/"
+
+# Optional: your upload directory slug if you host your files locally.
+NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY="/opt/postiz/uploads/"
+
+## This is a dummy key, you must create your own from Resend.
+## If this variable exists, user activation is required.
+## If it is commented out, users are activated automatically.
+#RESEND_API_KEY="RzeTwHijvxvPUerScFcenUZUALuQJzSaGSMJ"
+#EMAIL_FROM_ADDRESS=""
+#EMAIL_FROM_NAME=""
+
+## These are dummy values, you must create your own from Cloudflare.
+## Remember to set your public internet IP address in the allow-list for the API token.
+CLOUDFLARE_ACCOUNT_ID="QhcMSXQyPuMCRpSQcSYdEuTYgHeCXHbu"
+CLOUDFLARE_ACCESS_KEY="dcfCMSuFEeCNfvByUureMZEfxWJmDqZe"
+CLOUDFLARE_SECRET_ACCESS_KEY="zTTMXBmtyLPwHEdpACGHgDgzRTNpTJewiNriLnUS"
+CLOUDFLARE_BUCKETNAME="postiz"
+CLOUDFLARE_BUCKET_URL="https://QhcMSXQyPuMCRpSQcSYdEuTYgHeCXHbu.r2.cloudflarestorage.com/"
+CLOUDFLARE_REGION="auto"
+
+# Social Media API Settings
+X_API_KEY="Twitter API key for normal oAuth not oAuth2"
+X_API_SECRET="Twitter API secret for normal oAuth not oAuth2"
+LINKEDIN_CLIENT_ID="Linkedin Client ID"
+LINKEDIN_CLIENT_SECRET="Linkedin Client Secret"
+REDDIT_CLIENT_ID="Reddit Client ID"
+REDDIT_CLIENT_SECRET="Linkedin Client Secret"
+GITHUB_CLIENT_ID="GitHub Client ID"
+GITHUB_CLIENT_SECRET="GitHub Client Secret"
BEEHIIVE_API_KEY=""
BEEHIIVE_PUBLICATION_ID=""
-NX_ADD_PLUGINS=false
-CLOUDFLARE_ACCOUNT_ID=""
-CLOUDFLARE_ACCESS_KEY=""
-CLOUDFLARE_SECRET_ACCESS_KEY=""
-CLOUDFLARE_BUCKETNAME=""
-CLOUDFLARE_BUCKET_URL=""
-CLOUDFLARE_REGION=""
-FEE_AMOUNT=0.05
-OPENAI_API_KEY=""
-NEXT_PUBLIC_DISCORD_SUPPORT=""
THREADS_APP_ID=""
THREADS_APP_SECRET=""
FACEBOOK_APP_ID=""
@@ -45,7 +51,19 @@ PINTEREST_CLIENT_ID=""
PINTEREST_CLIENT_SECRET=""
DRIBBBLE_CLIENT_ID=""
DRIBBBLE_CLIENT_SECRET=""
-IS_GENERAL="true"
-EMAIL_FROM_ADDRESS=""
-EMAIL_FROM_NAME=""
+
+
+# Misc Settings
+OPENAI_API_KEY=""
+NEXT_PUBLIC_DISCORD_SUPPORT=""
NEXT_PUBLIC_POLOTNO="Polotno key for the gallery"
+
+# Payment settings
+FEE_AMOUNT=0.05
+STRIPE_PUBLISHABLE_KEY=""
+STRIPE_SECRET_KEY=""
+STRIPE_SIGNING_KEY=""
+
+# Developer Settings
+NX_ADD_PLUGINS=false
+IS_GENERAL="true" # required for now
diff --git a/apps/docs/installation/docker-compose.mdx b/apps/docs/installation/docker-compose.mdx
index 21b01799..d4e009b7 100644
--- a/apps/docs/installation/docker-compose.mdx
+++ b/apps/docs/installation/docker-compose.mdx
@@ -3,11 +3,9 @@ title: Docker Compose
---
import EarlyDoc from '/snippets/earlydoc.mdx';
-import DockerDatabase from '/snippets/docker-database.mdx';
import DockerEnvvarApps from '/snippets/docker-envvar-apps.mdx';
-
# Example `docker-compose.yml` file
diff --git a/apps/docs/installation/docker.mdx b/apps/docs/installation/docker.mdx
index 2c9484ac..154cdea6 100644
--- a/apps/docs/installation/docker.mdx
+++ b/apps/docs/installation/docker.mdx
@@ -3,18 +3,25 @@ title: Docker
---
import EarlyDoc from '/snippets/earlydoc.mdx';
-import DockerDatabase from '/snippets/docker-database.mdx';
import DockerEnvvarApps from '/snippets/docker-envvar-apps.mdx';
-
+# Set environment variables
+Postiz configuration is entirely via environment variables for now. You might be used to setting environment variables when starting containers,
+however postiz needs a LOT of environment variables, so setting these on command line or in a docker-compose is probably not practical for long
+term maintainability.
+
+It is recommended to use a `.env` file, which the Postiz containers look for in /config. Docker will automatically create this file for you on a
+docker volume the first time you start up Postiz.
+
+The default .env file can be found here; [example .env file](https://raw.githubusercontent.com/gitroomhq/postiz-app/main/.env.example)
# Create the container on command line
```bash
-docker create --name postiz -v ./config:/config -p 4200:4200 -p 3000:3000 ghcr.io/postiz/postiz-app:latest
+docker create --name postiz -v ./config:/config -p 4200:4200 -p 3000:3000 ghcr.io/gitroomhq/postiz-app:latest
```
diff --git a/apps/docs/snippets/docker-database.mdx b/apps/docs/snippets/docker-database.mdx
deleted file mode 100644
index babd2cf5..00000000
--- a/apps/docs/snippets/docker-database.mdx
+++ /dev/null
@@ -1,6 +0,0 @@
-
-The container images do not yet provide automatic database "installation"
-(migrations). This must be done manually outside of the docker containers for now.
-
-This is being worked on with a high priority.
-
diff --git a/var/docker/entrypoint.sh b/var/docker/entrypoint.sh
index 2e98950e..f896d960 100755
--- a/var/docker/entrypoint.sh
+++ b/var/docker/entrypoint.sh
@@ -15,6 +15,9 @@ if [[ "$POSTIZ_APPS" -eq "" ]]; then
POSTIZ_APPS="frontend workers cron backend"
fi
+echo "Running database migrations"
+npm run prisma-db-push
+
mkdir -p /etc/supervisor.d/
if [[ "$POSTIZ_APPS" == *"frontend"* ]]; then