CloudLinux.ro
Applications

How to install Postiz on a Cloud VPS

Updated 7/18/2026

Postiz is an open-source social media scheduling platform (a Buffer/Hootsuite alternative) supporting all major networks, with AI assistance.

The self-hosted version removes per-user subscriptions: you pay only for the server, no matter how many teammates use the app.

One-click install on cloudlinux.ro

The fastest way: Postiz installs automatically at the first boot of a new server.

  1. Create a Cloud VPS from the control panel.
  2. In the configuration step, pick Postiz from the app catalog.
  3. Start the server. The install runs in the background for a few minutes and its status shows on the server page.
  4. Access details and generated passwords are saved on the server in /root/app-credentials.txt. The app will be available on port 5000.

Manual install on any Ubuntu server

If you prefer doing it yourself, below is the exact script our automatic install runs. Execute it as root on a fresh Ubuntu server (24.04 recommended). It stops at the first error, and when it finishes you will find the access details in /root/app-credentials.txt.

export DEBIAN_FRONTEND=noninteractive
curl -fsSL https://get.docker.com | sh
IP=$(hostname -I | awk '{print $1}')
DB_PASS=$(openssl rand -base64 24 | tr -dc 'A-Za-z0-9' | cut -c1-20)
JWT_SECRET=$(openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | cut -c1-40)
mkdir -p /opt/postiz && cd /opt/postiz
cat > docker-compose.yml <<EOF
services:
  postiz:
    image: ghcr.io/gitroomhq/postiz-app:latest
    restart: always
    ports:
      - '5000:5000'
    environment:
      MAIN_URL: "http://${IP}:5000"
      FRONTEND_URL: "http://${IP}:5000"
      NEXT_PUBLIC_BACKEND_URL: "http://${IP}:5000/api"
      JWT_SECRET: "${JWT_SECRET}"
      DATABASE_URL: "postgresql://postiz:${DB_PASS}@postiz-postgres:5432/postiz"
      REDIS_URL: "redis://postiz-redis:6379"
      BACKEND_INTERNAL_URL: "http://localhost:3000"
      IS_GENERAL: "true"
      DISABLE_REGISTRATION: "false"
      STORAGE_PROVIDER: "local"
      UPLOAD_DIRECTORY: "/uploads"
      NEXT_PUBLIC_UPLOAD_DIRECTORY: "/uploads"
    volumes:
      - postiz_config:/config/
      - postiz_uploads:/uploads/
    depends_on:
      postiz-postgres:
        condition: service_healthy
      postiz-redis:
        condition: service_healthy
  postiz-postgres:
    image: postgres:17-alpine
    restart: always
    environment:
      POSTGRES_PASSWORD: "${DB_PASS}"
      POSTGRES_USER: postiz
      POSTGRES_DB: postiz
    volumes:
      - postiz_pg:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postiz -d postiz"]
      interval: 10s
      timeout: 3s
      retries: 5
  postiz-redis:
    image: redis:7.2
    restart: always
    volumes:
      - postiz_redis:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 10s
      timeout: 3s
      retries: 5
volumes:
  postiz_config:
  postiz_uploads:
  postiz_pg:
  postiz_redis:
EOF
docker compose up -d
printf 'Postiz: http://%s:5000\nCreeaza contul la prima accesare, primul cont inregistrat devine administrator.\nPornirea completa dureaza 1-2 minute.\n' "$IP" > /root/app-credentials.txt

You can also save this script as a recipe in your account and reuse it on any new server.

Put this guide into practice on your own VPS

EU cloud servers, billed hourly, ready in minutes, with one-click installs for dozens of apps.

See pricing

Related tutorials