doc: Docker, and various doc cleanup

This commit is contained in:
jamesread 2024-09-10 19:40:29 +01:00
parent db2732e180
commit 42e4468ef1
12 changed files with 327 additions and 111 deletions

View File

@ -169,4 +169,4 @@ You can look at the other integration to understand what data to put inside.
And add the new provider to the list.
```typescript show.all.providers.tsx
{identifier: 'providerName', component: DefaultImportFromHighOrderProvider},
```
```

View File

@ -0,0 +1,144 @@
---
title: Development Environment
---
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
- **[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.
- **Social Media API details** - various API keys and secrets (more details later) for services you want to use; reddit, X, Instagram, etc..
### 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](https://nodejs.org/en/download/).
### 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](https://www.docker.com/products/docker-desktop) and run:
```bash Terminal
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](https://raw.githubusercontent.com/gitroomhq/postiz-app/main/docker-compose.dev.yaml),
or grab it from the repository in the next step.
```bash Terminal
docker compose -f "docker-compose.dev.yaml" up
```
## Build Postiz
<Steps>
<Step title="Clone the repository">
```bash Terminal
git clone https://github.com/gitroomhq/gitroom
```
</Step>
<Step title="Set environment variables">
Copy the `.env.example` file to `.env` and fill in the values
```bash .env
# 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"
# 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"
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
IS_GENERAL="true" # required for now
```
</Step>
<Step title="Install the dependencies">
```bash Terminal
npm install
```
</Step>
<Step title="Generate the prisma client and run the migrations">
```bash Terminal
npm run prisma-db-push
```
</Step>
<Step title="Run the project">
```bash Terminal
npm run dev
```
</Step>
</Steps>
If everything is running successfully, open http://localhost:4200 in your browser!
If everything is not running - you had errors in the steps above, please head over to our [support](/support) page.
## Next Steps
<CardGroup cols={2}>
<Card title="How it works" icon="screwdriver-wrench" href="/howitworks">
Learn the architecture of the project
</Card>
<Card title="Email notifications" icon="envelope" href="/emails">
Set up email for notifications
</Card>
<Card title="GitHub" icon="code-branch" href="/github">
Set up github for authentication and sync
</Card>
<Card title="Providers" icon="linkedin" href="/providers/x/x">
Set up providers such as Linkedin, X and Reddit
</Card>
</CardGroup>

View File

@ -0,0 +1,69 @@
---
title: Docker Compose
---
import EarlyDoc from '/snippets/earlydoc.mdx';
import DockerDatabase from '/snippets/docker-database.mdx';
import DockerEnvvarApps from '/snippets/docker-envvar-apps.mdx';
<EarlyDoc />
<DockerDatabase />
# Example `docker-compose.yml` file
```yaml
services:
postiz:
image: ghcr.io/gitroomhq/postiz-app:latest
container_name: postiz
restart: always
volumes:
- ./config:/config/ # Should contain your .env file
ports:
- 4200:4200
- 3000:3000
networks:
- postiz-network
postiz-postgres:
image: postgres:14.5
container_name: postiz-postgres
restart: always
environment:
POSTGRES_PASSWORD: postiz-local-pwd
POSTGRES_USER: postiz-local
POSTGRES_DB: postiz-db-local
volumes:
- postgres-volume:/var/lib/postgresql/data
ports:
- 5432:5432
networks:
- postiz-network
postiz-pg-admin:
image: dpage/pgadmin4
container_name: postiz-pg-admin
restart: always
ports:
- 8081:80
environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com
PGADMIN_DEFAULT_PASSWORD: admin
networks:
- postiz-network
postiz-redis:
image: redis:7.2
container_name: postiz-redis
restart: always
ports:
- 6379:6379
volumes:
postgres-volume:
external: false
networks:
postiz-network:
external: false
```
<DockerEnvvarApps />

View File

@ -0,0 +1,20 @@
---
title: Docker
---
import EarlyDoc from '/snippets/earlydoc.mdx';
import DockerDatabase from '/snippets/docker-database.mdx';
import DockerEnvvarApps from '/snippets/docker-envvar-apps.mdx';
<EarlyDoc />
<DockerDatabase />
# 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
```
<DockerEnvvarApps />

View File

@ -0,0 +1,13 @@
---
title: Helm
---
import EarlyDoc from '/snippets/earlydoc.mdx';
import DockerDatabase from '/snippets/docker-database.mdx';
<EarlyDoc />
<DockerDatabase />
Postiz has a helm chart that is in very active development. You can find it here;
https://github.com/gitroomhq/postiz-helmchart

View File

@ -61,6 +61,15 @@
"pages": [
"introduction",
"quickstart",
{
"group": "Install",
"pages": [
"installation/development",
"installation/docker",
"installation/docker-compose",
"installation/kubernetes-helm"
]
},
"howitworks",
"emails",
"github",
@ -73,9 +82,15 @@
"providers/articles"
]
},
"providers/how-to-add-provider"
"support"
]
}
},
{
"group": "Developer Guide",
"pages": [
"developer-guide/how-to-add-provider"
]
}
],
"footerSocials": {
"twitter": "https://twitter.com/nevodavid",

View File

@ -6,115 +6,13 @@ At the moment it is necessary to build the project locally - some dependencies
like redis and postgres can run as docker containers, but there is no docker
container for Postiz just yet.
## Prerequisites
## Self Hosted installation options
To run the project you need to have multiple things:
You can choose between the following installation options;
- Node.js (version 18+)
- PostgreSQL (or any other SQL database)
- Redis
- Resend account
- Cloudflare R2 for uploads (optional, can use local machine)
- Social Media Client and Secret (more details later)
* [Development](/installation/development) - The only installation option that is offically supported at the moment.
* [Docker (standalone)](/installation/docker) - Run from the command line with Docker.
* [Docker Compose](/installation/docker-compose) - Run with Docker Compose.
* [Helm](/installation/kubernetes-helm) - Run with Kubernetes + Helm.
### NodeJS (version 18+)
A complete guide of how to install NodeJS can be found [here](https://nodejs.org/en/download/).
### PostgreSQL (or any other SQL database) & Redis
Make sure you have PostgreSQL installed on your machine.
#### Option A) Postgres and Redis as Single containers
You can install [Docker](https://www.docker.com/products/docker-desktop) and run:
```bash Terminal
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](https://raw.githubusercontent.com/gitroomhq/postiz-app/main/docker-compose.dev.yaml),
or grab it from the repository in the next step.
```bash Terminal
docker compose -f "docker-compose.dev.yaml" up
```
## Build Postiz
<Steps>
<Step title="Clone the repository">
```bash Terminal
git clone https://github.com/gitroomhq/gitroom
```
</Step>
<Step title="Set environment variables">
Copy the `.env.example` file to `.env` and fill in the values
```bash .env
DATABASE_URL="postgres database URL i.g. postgresql://postiz-local:postiz-local-pwd@0.0.0.0:5432/postiz-db-local"
REDIS_URL="redis database URL"
JWT_SECRET="random string for your JWT secret, make it long"
FRONTEND_URL="By default: http://localhost:4200"
NEXT_PUBLIC_BACKEND_URL="By default: http://localhost:3000"
BACKEND_INTERNAL_URL="If you use docker, you might want something like: http://backend:3000"
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"
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"
NX_ADD_PLUGINS=false
IS_GENERAL="true" # required for now
```
</Step>
<Step title="Install the dependencies">
```bash Terminal
npm install
```
</Step>
<Step title="Generate the prisma client and run the migrations">
```bash Terminal
npm run prisma-db-push
```
</Step>
<Step title="Run the project">
```bash Terminal
npm run dev
```
</Step>
</Steps>
You have to follow all the tabs in the "Developers" menu to install Gitroom
<CardGroup cols={2}>
<Card title="How it works" icon="screwdriver-wrench" href="/howitworks">
Learn the architecture of the project
</Card>
<Card title="Email notifications" icon="envelope" href="/emails">
Set up email for notifications
</Card>
<Card title="GitHub" icon="code-branch" href="/github">
Set up github for authentication and sync
</Card>
<Card title="Providers" icon="linkedin" href="/providers/x/x">
Set up providers such as Linkedin, X and Reddit
</Card>
</CardGroup>

View File

@ -0,0 +1,6 @@
<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>

View File

@ -0,0 +1,7 @@
## 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.
For most deployments, starting all services is fine. To scale out, you might want
to start individual containers for "frontend", "backend", "worker" and "cron".

View File

@ -0,0 +1,6 @@
<Info>
**NOTE:** This page is marked "earlydoc", or "early documentation", which means it might
be brief, or contain information about parts of the app that are under heavy development.
If you encounter issues with instructions found here, please check out the [support](/support)
page for options.
</Info>

View File

@ -0,0 +1,3 @@
## My Snippet
<Info>This is an example of a reusable snippet</Info>

35
apps/docs/support.mdx Normal file
View File

@ -0,0 +1,35 @@
---
title: Support
---
Sometimes, things can go wrong, or you need some help!
Note that the Self Hosted version of Postiz is supported by the community in their
free time, on a best-efforts basis. Please post your question and be patient.
- [Discord](https://discord.com/invite/sf7QjTcX37) - Flexible chat, with screenshots and screen sharing, probably the best option for support.
- [GitHub issue](https://github.com/gitroomhq/postiz-app/issues/new/choose) - backup option if you are unable to use Discord.
## How to effectively ask for support
Try to follow this guide when asking for support, in this order; **Goal, Environment, Changes, Results**.
- **Goal:** Start off by explaining what you were trying to do
- _I want to schedule a post on Reddit at 6pm_
- _I want to run in a Linux container on a Raspberry Pi_
- _I want to use a custom domain name_
- **Environment:** - Share the relevant parts about your environment. Web App issues; Are you using Firefox, Chrome, etc? Installation/Other issues; a Mac, Linux, Windows, how did you install?
- _I'm using Firefox on Windows 10_
- _I'm using a Raspberry Pi 4 with Ubuntu 20.04, and Node version 18_
- _This is a new installation on a Mac_
- **Changed:** - Most likely something has changed, what is it?
- _I updated my browser to the latest version and now ..._
- _I found a change in the latest version and now ..._
- _I think this used to work, but now..._
- **Results:** - What happened? What did you expect to happen?
- _I see a blank screen_
- _I see an error message_
- _I see a 404 page_