diff --git a/.env.example b/.env.example
index d06208b6..7ef00fa5 100644
--- a/.env.example
+++ b/.env.example
@@ -1,15 +1,34 @@
-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=""
+# 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=""
X_API_SECRET=""
X_CLIENT=""
@@ -20,19 +39,8 @@ REDDIT_CLIENT_ID=""
REDDIT_CLIENT_SECRET=""
GITHUB_CLIENT_ID=""
GITHUB_CLIENT_SECRET=""
-RESEND_API_KEY=""
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 +53,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=""
+STRIPE_SIGNING_KEY_CONNECT=""
+
+# Developer Settings
+NX_ADD_PLUGINS=false
+IS_GENERAL="true" # required for now
diff --git a/Dockerfile.dev b/Dockerfile.dev
index fc85c023..d43b45af 100644
--- a/Dockerfile.dev
+++ b/Dockerfile.dev
@@ -15,14 +15,7 @@ ENV NEXT_TELEMETRY_DISABLED=1
RUN apk add --no-cache \
bash=5.2.21-r0 \
- supervisor=4.2.5-r4 \
- pkgconfig \
- gcc \
- pixman-dev \
- cairo-dev \
- pango-dev \
- make \
- build-base
+ supervisor=4.2.5-r4
WORKDIR /app
@@ -32,7 +25,7 @@ EXPOSE 3000
COPY var/docker/entrypoint.sh /app/entrypoint.sh
COPY var/docker/supervisord.conf /etc/supervisord.conf
COPY var/docker/supervisord /app/supervisord_available_configs/
-COPY .env.example /config/.env
+COPY .env.example /config/postiz.env
VOLUME /config
@@ -43,12 +36,23 @@ ENTRYPOINT ["/app/entrypoint.sh"]
# Builder image
FROM base AS devcontainer
+RUN apk add --no-cache \
+ pkgconfig \
+ gcc \
+ pixman-dev \
+ cairo-dev \
+ pango-dev \
+ make \
+ build-base
+
COPY nx.json tsconfig.base.json package.json package-lock.json /app/
COPY apps /app/apps/
COPY libraries /app/libraries/
RUN npm ci --no-fund && npx nx run-many --target=build --projects=frontend,backend,workers,cron
+VOLUME /config
+
LABEL org.opencontainers.image.title="Postiz App (DevContainer)"
# Output image
@@ -59,5 +63,7 @@ COPY --from=devcontainer /app/dist/ /app/dist/
COPY package.json nx.json /app/
+VOLUME /config
+
## Labels at the bottom, because CI will eventually add dates, commit hashes, etc.
LABEL org.opencontainers.image.title="Postiz App (Production)"
diff --git a/apps/docs/installation/development.mdx b/apps/docs/installation/development.mdx
index c6e5f932..a5b2dc62 100644
--- a/apps/docs/installation/development.mdx
+++ b/apps/docs/installation/development.mdx
@@ -17,10 +17,13 @@ This guide will ask you to install & configure several services exaplained below
### Prerequisite Cloud Services
-- **[Resend account](https://resend.com)** - for user activation and email notifications.
-- **[Cloudflare R2](https://cloudfalre.com)** - for uploads (optional, can use local machine), and storing account data.
+- **[Cloudflare R2](https://cloudflare.com)** - for uploads (optional, can use local machine).
- **Social Media API details** - various API keys and secrets (more details later) for services you want to use; reddit, X, Instagram, etc..
+### Optional Cloud Services
+
+- **[Resend account](https://resend.com)** - for user activation and email notifications.
+
### Prerequisite Local Services
- **Node.js** - for running the code! (version 18+)
@@ -78,6 +81,26 @@ 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=""
+
+## 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"
+
+## 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"
@@ -87,14 +110,7 @@ REDDIT_CLIENT_ID="Reddit Client ID"
REDDIT_CLIENT_SECRET="Linkedin Client Secret"
GITHUB_CLIENT_ID="GitHub Client ID"
GITHUB_CLIENT_SECRET="GitHub Client Secret"
-RESEND_API_KEY="Resend API KEY"
-UPLOAD_DIRECTORY="optional: your upload directory path if you host your files locally"
-NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY="optional: your upload directory slug if you host your files locally"
-CLOUDFLARE_ACCOUNT_ID="Cloudflare R2 Account ID"
-CLOUDFLARE_ACCESS_KEY="Cloudflare R2 Access Key"
-CLOUDFLARE_SECRET_ACCESS_KEY="Cloudflare R2 Secret Access Key"
-CLOUDFLARE_BUCKETNAME="Cloudflare R2 Bucket Name"
-CLOUDFLARE_BUCKET_URL="Cloudflare R2 Backet URL"
+
# Developer Settings
NX_ADD_PLUGINS=false
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 487bf23c..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: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..f79c8f42 100755
--- a/var/docker/entrypoint.sh
+++ b/var/docker/entrypoint.sh
@@ -7,7 +7,7 @@ if [[ "$SKIP_CONFIG_CHECK" != "true" ]]; then
echo "ERROR: No .env file found in /config/.env"
fi
- ln -sf /config/.env /app/.env
+ ln -sf /config/postiz.env /app/.env
fi
if [[ "$POSTIZ_APPS" -eq "" ]]; then
@@ -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
diff --git a/var/docker/supervisord/frontend.conf b/var/docker/supervisord/frontend.conf
index c157a205..53c03a6f 100644
--- a/var/docker/supervisord/frontend.conf
+++ b/var/docker/supervisord/frontend.conf
@@ -1,6 +1,6 @@
[program:frontend]
-directory=/app
-command=npm run start:prod:frontend
+directory=/app/dist/apps/frontend
+command=npx next start
autostart=true
autorestart=false
redirect_stderr=true