This is currently the recommended option to install Postiz in a supportable configuration. The docker images are in active and heavy development for now.
Tested configurations
- MacOS
- Linux (Fedora 40)
Naturally you can use these instructions to setup a development environment on any platform, but there may not be much experience in the community to help you with any issues you may encounter.
Prerequisites
This guide will ask you to install & configure several services exaplained below.
Prerequisite Cloud Services
- Cloudflare R2 (opens in a new tab) - 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 (opens in a new tab) - for user activation and email notifications.
Prerequisite Local Services
- Node.js - for running the code! (version 18+)
- PostgreSQL - or any other SQL database (instructions beleow suggest Docker)
- Redis - for handling worker queues (instructions below suggest Docker)
We have some messages from users who are using Windows, which should work, but they are not tested well yet.
Installation Instructions
NodeJS (version 18+)
A complete guide of how to install NodeJS can be found here (opens in a new tab).
PostgreSQL (or any other SQL database) & Redis
You can choose Option A to Option B to install the database.
Option A) Postgres and Redis as Single containers
You can install Docker (opens in a new tab) and run:
docker run -e POSTGRES_USER=root -e POSTGRES_PASSWORD=your_password --name postgres -p 5432:5432 -d postgres
docker run --name redis -p 6379:6379 -d redis
Option B) Postgres and Redis as docker-compose
Download the docker-compose.yaml file here (opens in a new tab), or grab it from the repository in the next step.
docker compose -f "docker-compose.dev.yaml" up
Build Postiz
Clone the repository
git clone https://github.com/gitroomhq/gitroom
Set environment variables
Copy the .env.example
file to .env
and fill in the values
# 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=""
## 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"
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"
# AI
OPENAI_API_KEY="OpenAI API key"
# Developer Settings
NX_ADD_PLUGINS=false
IS_GENERAL="true" # required for now
Install the dependencies
npm install
Generate the prisma client and run the migrations
npm run prisma-db-push
Run the project
npm run dev
If everything is running successfully, open http://localhost:4200 (opens in a new tab) in your browser!
If everything is not running - you had errors in the steps above, please head over to our support page.