Skip to content

Self-hosting

Self-host it, or let us run it

Run the open-source core on your own server. You'll need Docker for Postgres, Redis and Temporal, Node.js for the apps, and PM2 to keep them running. Here's the short version.

What you need

  • A Linux server with 2 vCPU and 4 GB RAM or more
  • Docker and Docker Compose
  • Node.js 22+ and pnpm
  • A domain with HTTPS (a reverse proxy like Caddy or Nginx)
  • Developer apps for each network you want to post to

Deploy in six steps

A summary of the deploy guide. Read the repository docs for every environment variable.

  1. 1

    Clone the repository

    Get the source and install dependencies with pnpm.

    Clone the repository
    git clone https://github.com/postoni/postoni.git
    cd postoni
    pnpm install
  2. 2

    Start the infrastructure

    Run Postgres, Redis and Temporal with Docker Compose. Temporal runs the scheduled-post workflows.

    Start the infrastructure
    docker compose up -d postgres redis temporal
  3. 3

    Configure your environment

    Copy the example env file and set your domain, database URL, Redis URL, Temporal address and a long random secret.

    Configure your environment
    cp .env.example .env
    # set APP_URL, DATABASE_URL, REDIS_URL,
    # TEMPORAL_ADDRESS and JWT_SECRET
  4. 4

    Migrate and build

    Push the Prisma schema to Postgres, then build the web app, the API and the orchestrator.

    Migrate and build
    pnpm db:push
    pnpm build
  5. 5

    Run with PM2

    Start the web app, API and orchestrator under PM2 so they restart on crashes and reboots.

    Run with PM2
    pnpm pm2:start
    pnpm pm2:startup
  6. 6

    Connect your networks

    Create a developer app on each network, add its keys to the env file and restart. Then connect channels in the app.

    Connect your networks
    # add X_API_KEY, LINKEDIN_CLIENT_ID, …
    pnpm pm2:reload

Before you start

  • Network app reviews take time

    Meta, TikTok, LinkedIn and Google review apps before they allow posting for everyone. Plan days or weeks, not minutes.

  • AGPL-3.0 applies

    If you modify the code and offer it as a service to others, you must share your changes under the same license.

  • Back up Postgres

    Your posts, channels and tokens live in Postgres. Schedule regular backups and test a restore.

Rather not run servers?

Postoni cloud runs the same core with every network app approved, updates and backups handled, and humans on support. From $29/month, free for 7 days.

Self-hosting FAQ

Is self-hosting really free?

Yes. The core is open source under AGPL-3.0. You pay only for your server and any third-party services you choose to use.

Do I get all the channels?

The open-source core includes the same 30+ network integrations. Each one needs its own developer app and keys, which you set up yourself.

Why is Temporal required?

Temporal runs the background workflows that publish posts at the right time, retry failures and refresh tokens. It's what makes scheduling reliable.

Can I move from self-hosted to Postoni cloud later?

Yes. Create a Postoni account, reconnect your channels and recreate your queue. Your self-hosted instance keeps working until you turn it off.

Read the code, or let us run it.

Either way, you get the same scheduler. Try the hosted version free for 7 days.