Merge branch 'main' into configuration-checking
This commit is contained in:
commit
b270259565
82
.env.example
82
.env.example
|
|
@ -1,15 +1,42 @@
|
|||
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=""
|
||||
# Configuration reference: http://docs.postiz.com/configuration/reference
|
||||
|
||||
# === 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"
|
||||
|
||||
## 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 is currently required to save things like social media avatars for accounts.
|
||||
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"
|
||||
|
||||
|
||||
# === Common optional Settings
|
||||
|
||||
## 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=""
|
||||
|
||||
# Your upload directory path if you host your files locally, otherwise Cloudflare will be used.
|
||||
#UPLOAD_DIRECTORY="/opt/postiz/uploads/"
|
||||
|
||||
# Your upload directory path if you host your files locally, otherwise Cloudflare will be used.
|
||||
#NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY="/opt/postiz/uploads/"
|
||||
|
||||
|
||||
# Social Media API Settings
|
||||
X_API_KEY=""
|
||||
X_API_SECRET=""
|
||||
X_CLIENT=""
|
||||
|
|
@ -20,19 +47,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 +61,19 @@ PINTEREST_CLIENT_ID=""
|
|||
PINTEREST_CLIENT_SECRET=""
|
||||
DRIBBBLE_CLIENT_ID=""
|
||||
DRIBBBLE_CLIENT_SECRET=""
|
||||
IS_GENERAL="true"
|
||||
EMAIL_FROM_ADDRESS=""
|
||||
EMAIL_FROM_NAME=""
|
||||
NEXT_PUBLIC_POLOTNO="Polotno key for the gallery"
|
||||
|
||||
# Misc Settings
|
||||
OPENAI_API_KEY=""
|
||||
NEXT_PUBLIC_DISCORD_SUPPORT=""
|
||||
NEXT_PUBLIC_POLOTNO=""
|
||||
|
||||
# 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
|
||||
|
|
|
|||
|
|
@ -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)"
|
||||
|
|
|
|||
|
|
@ -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+)
|
||||
|
|
@ -69,6 +72,10 @@ git clone https://github.com/gitroomhq/gitroom
|
|||
<Step title="Set environment variables">
|
||||
Copy the `.env.example` file to `.env` and fill in the values
|
||||
|
||||
An example file of the most used configuration settings can be found here; [example postiz.env file](https://raw.githubusercontent.com/gitroomhq/postiz-app/main/.env.example)
|
||||
|
||||
There is also a [configuration reference](/configuration/reference) page that goes into more detail.
|
||||
|
||||
```bash .env
|
||||
# Required Settings
|
||||
DATABASE_URL="postgresql://postiz-user:postiz-password@localhost:5432/postiz-db-local"
|
||||
|
|
@ -78,6 +85,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 +114,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
|
||||
|
|
|
|||
|
|
@ -3,11 +3,14 @@ title: Docker Compose
|
|||
---
|
||||
|
||||
import EarlyDoc from '/snippets/earlydoc.mdx';
|
||||
import DockerDatabase from '/snippets/docker-database.mdx';
|
||||
import DockerEnvvarApps from '/snippets/docker-envvar-apps.mdx';
|
||||
import DockerEnvvarGeneral from '/snippets/docker-envvar-general.mdx';
|
||||
|
||||
<EarlyDoc />
|
||||
<DockerDatabase />
|
||||
|
||||
<DockerEnvvarGeneral />
|
||||
|
||||
The container images will copy a file called `/config/postiz.env` to `/apps/.env` on startup.
|
||||
|
||||
# Example `docker-compose.yml` file
|
||||
|
||||
|
|
@ -17,8 +20,15 @@ services:
|
|||
image: ghcr.io/gitroomhq/postiz-app:latest
|
||||
container_name: postiz
|
||||
restart: always
|
||||
environment: # If you want to specify the variables in your compose file.
|
||||
- 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"
|
||||
volumes:
|
||||
- ./config:/config/ # Should contain your .env file
|
||||
- ./config:/config/ # If you want to specify the variables in your `postiz.env` file.
|
||||
ports:
|
||||
- 4200:4200
|
||||
- 3000:3000
|
||||
|
|
|
|||
|
|
@ -3,18 +3,37 @@ title: Docker
|
|||
---
|
||||
|
||||
import EarlyDoc from '/snippets/earlydoc.mdx';
|
||||
import DockerDatabase from '/snippets/docker-database.mdx';
|
||||
import DockerEnvvarApps from '/snippets/docker-envvar-apps.mdx';
|
||||
import DockerEnvvarGeneral from '/snippets/docker-envvar-general.mdx';
|
||||
|
||||
<EarlyDoc />
|
||||
|
||||
<DockerDatabase />
|
||||
<DockerEnvvarGeneral />
|
||||
|
||||
The container images will copy a file called `/config/postiz.env` to `/apps/.env` on startup.
|
||||
|
||||
# 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
|
||||
It is recommended to have a local directory where you save your `postiz.env` file, such as `/myContainers/postiz/config`, which is mounted as a volume.
|
||||
|
||||
```bash Using a configuration volume
|
||||
docker create --name postiz -v /myContainers/postiz/config:/config -p 4200:4200 -p 3000:3000 ghcr.io/gitroomhq/postiz-app:latest
|
||||
```
|
||||
|
||||
Alternatively, you can specify the variables one by one at creation time. This approach is not recommended
|
||||
simply because it's a pain to manage, and sensitive keys get stored with the container definition, which is bad practice.
|
||||
|
||||
```bash At creation-time (not recommended)
|
||||
docker create --name postiz \
|
||||
-e DATABASE_URL=postgres://... \
|
||||
-e REDIS_URL=redis:// \
|
||||
-e JWT_SECRET \
|
||||
... \
|
||||
-p 4200:4200 \
|
||||
-p 3000:3000 \
|
||||
ghcr.io/gitroomhq/postiz-app:latest
|
||||
```
|
||||
|
||||
|
||||
|
||||
<DockerEnvvarApps />
|
||||
|
|
|
|||
|
|
@ -70,6 +70,12 @@
|
|||
"installation/kubernetes-helm"
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Configuration",
|
||||
"pages": [
|
||||
"configuration/reference"
|
||||
]
|
||||
},
|
||||
"howitworks",
|
||||
"emails",
|
||||
"github",
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
<Warning>
|
||||
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.
|
||||
</Warning>
|
||||
|
|
@ -1,7 +1,10 @@
|
|||
## Controlling container services
|
||||
The environment variable POSTIZ_APPS defaults to "", which means that all
|
||||
services will be started in a single container. However, you can only start
|
||||
specific services within the docker container by changing this environement variable.
|
||||
When the environment variable `POSTIZ_APPS` is not set, or is set to an empty string, all
|
||||
services will be started in a single container. This is normally fine for small, personal deployments.
|
||||
|
||||
For most deployments, starting all services is fine. To scale out, you might want
|
||||
to start individual containers for "frontend", "backend", "worker" and "cron".
|
||||
However, you can only start specific services within the docker container by changing this environement variable.
|
||||
|
||||
If you need to scale, you can experiement with having multiple containers defined like;
|
||||
- Frontend only: `POSTIZ_APPS="frontend"`
|
||||
- Backend only: `POSTIZ_APPS="backend"`
|
||||
- Worker and Cron only: `POSTIZ_APPS="worker cron"`
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
# Set environment variables
|
||||
|
||||
Postiz configuration is entirely via environment variables.
|
||||
|
||||
When using Postiz container images, you can specify the environment variables when you create the container (`docker create -e DATABASE_URL=...`), but this might be
|
||||
a bit tedious, as Postiz requires quite a few variables set to startup.
|
||||
|
||||
It is recommended to use a `postiz.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 container images will copy the `/config/postiz.env` to `/apps/.env` on startup. Like with
|
||||
any environment variables, if you change them, you must restart the application for the changes to take effect.
|
||||
|
||||
An example file of the most used configuration settings can be found here; [example postiz.env file](https://raw.githubusercontent.com/gitroomhq/postiz-app/main/.env.example)
|
||||
|
||||
There is also a [configuration reference](/configuration/reference) page that goes into more detail.
|
||||
|
||||
|
|
@ -10,6 +10,10 @@
|
|||
"dev:stripe": "npx concurrently \"stripe listen --forward-to localhost:3000/stripe\" \"npm run dev\"",
|
||||
"build": "npx nx run-many --target=build --projects=frontend,backend,workers,cron",
|
||||
"build:frontend": "npx nx run frontend:build:production",
|
||||
"dev:frontend": "npx nx run frontend:serve:development",
|
||||
"dev:backend": "npx nx run backend:serve:development",
|
||||
"dev:workers": "npx nx run workers:serve:development",
|
||||
"dev:cron": "npx nx run cron:serve:development",
|
||||
"start:prod": "node dist/apps/backend/main.js",
|
||||
"start:prod:frontend": "nx run frontend:serve:production",
|
||||
"start:prod:workers": "node dist/apps/workers/main.js",
|
||||
|
|
|
|||
|
|
@ -1,20 +1,25 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -o xtrace
|
||||
|
||||
if [[ "$SKIP_CONFIG_CHECK" != "true" ]]; then
|
||||
echo "symlinking /config/.env into /app/.env"
|
||||
echo "Entrypoint: Copying /config/postiz.env into /app/.env"
|
||||
|
||||
if [ ! -f /config/.env ]; then
|
||||
echo "ERROR: No .env file found in /config/.env"
|
||||
echo "Entrypoint: WARNING: No .env file found in /config/postiz.env"
|
||||
fi
|
||||
|
||||
ln -sf /config/.env /app/.env
|
||||
cp -vf /config/postiz.env /app/.env
|
||||
fi
|
||||
|
||||
if [[ "$POSTIZ_APPS" -eq "" ]]; then
|
||||
echo "POSTIZ_APPS is not set, starting everything!"
|
||||
echo "Entrypoint: POSTIZ_APPS is not set, starting everything!"
|
||||
POSTIZ_APPS="frontend workers cron backend"
|
||||
fi
|
||||
|
||||
echo "Entrypoint: Running database migrations"
|
||||
npm run prisma-db-push
|
||||
|
||||
mkdir -p /etc/supervisor.d/
|
||||
|
||||
if [[ "$POSTIZ_APPS" == *"frontend"* ]]; then
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue