How to install Postiz on Synology NAS

postiz

Postiz is a self-hosted social media management platform designed for those who value control, privacy, and efficiency. It’s an open-source tool that allows users to manage, schedule, and analyse their social media content across multiple platforms from one centralised dashboard. Built to empower businesses, creators, and teams, Postiz is perfect for anyone looking to streamline their online presence with a powerful yet simple-to-use tool.

Prerequisites

  • Synology NAS
  • Static IP address
  • Portainer

Step 1: Install Portainer on Synology NAS

Portainer is an open-source platform designed to simplify the management of containerized environments. It provides a graphical user interface (GUI) for Docker and Kubernetes, allowing users to manage and deploy containers, images, networks, and volumes without needing to use command-line tools. Portainer is widely used for its ease of use and lightweight design, making it ideal for both beginners and experienced developers managing containerized applications.

Key features of Portainer include:

  • Container Management: Create, monitor, and manage Docker containers.
  • Image Management: Pull, build, or clean Docker images.
  • Kubernetes Management: Simplified control for Kubernetes clusters.
  • User Access Control: Role-based access control for teams.
  • Multi-Cluster Support: Manage multiple environments from a single interface.
  • Resource Monitoring: Monitor resource consumption like CPU, memory, and storage.

Please follow this link to instruction on how to install it on your Synology NAS using Task Scheduler: Synology: 30 Second Portainer Install Using Task Scheduler & Docker – Marius Hosting

It takes around 30 seconds to install, it won’t take long!

Step 2: Cloudflare R2 Setup

At the moment, the only way to upload images is to configure R2. It’s free.

Create account and the bucket

cloudflare r2 add button
  • Click on R2 storage bucket
cloudflare r2 storage bucket
  • R2 Storage bucket is free(limited) but you do need to add your card details so they can charge if you go over the limit. Fill out the details.
cloudflare payment details
  • Click on R2 Object Storage -> Overview to setup the R2 object
cloudflare r2 object
  • Click +Create Bucket
cloudflare +create bucket
  • Give the bucket name. Selection Location to Automatic and Default storage class as Standard
cloudflare postiz tutorial  bucket
  • Once the bucket is created, click on Settings
cloudflare bucket settings
  • Scroll down until you see Public Access
  • You can connect custom domain if you have one. But we will just use a free one that is provided with R2.
  • Click on allow access
cloudflare r2.dev subdomain
  • Click on View R2.dev bucket URL
cloudflare r2 link
  • Copy the URL as you will need to enter it in the “CLOUDFLARE_BUCKET_URL” in Step 3.

Add the CORS headers

  • Click Add CORS policy. You can find it right under the R2.dev Subdomain box
cloudflare CORS headers
  • Edit the script below, in AllowedOrigins add your domain. Remove the https://postiz.yourdomain.lan and replace it with your own domain that you will use in Step 3. You can always change and edit this if you need to.
[
  {
    "AllowedOrigins": [
      "http://localhost:4200",
      "https://postiz.yourdomain.lan"
    ],
    "AllowedMethods": [
      "GET",
      "POST",
      "HEAD",
      "PUT",
      "DELETE"
    ],
    "AllowedHeaders": [
      "Authorization",
      "x-amz-date",
      "x-amz-content-sha256",
      "content-type"
    ],
    "ExposeHeaders": [
      "ETag",
      "Location"
    ],
    "MaxAgeSeconds": 3600
  }
]
  • Save the CORS Policy
cloudflare CORS policy
  • Make sure it looks like this:
cloudflare CORS example

Generate the API Keys

  • Go back to the R2 Object Storage -> Overview
  • Click on API and Then on Manage API Keys
cloudflare API key
  • Click on Create API Token
cloudflare Create API Token
  • Set the API token to Object Read & Write
  • Apply to bucket you want to use it on.
cloudflare api object
  • Then click Create API Token
  • On next page you will have Access Key ID and Secret Access Key. Make sure you copy them.
cloudflare access key id
  • You will need to enter the access key id and secret access key in step 3 under:
CLOUDFLARE_ACCESS_KEY: "enter your API access key"
CLOUDFLARE_SECRET_ACCESS_KEY: "enter your secret key"

Get the Account ID from CloudFlare

  • Go to Compute(Workers) -> Workers & Pages
  • Copy the Account ID
  • You will need to paste the Account ID in Step 3 under:
CLOUDFLARE_ACCOUNT_ID: "enter your account ID"
cloudflare workers account id

Step 3: Install Postiz using Portainer on Synology NAS

Deploy Postiz docker on Portainer

  • In Portioner click + ADD STACK
postiz add stack on portainer
  • Select “Web Editor” and give the container a meaningful name.
postiz portainer name
  • Paste this into the web editor:
services:
  postiz:
    image: ghcr.io/gitroomhq/postiz-app:latest
    container_name: postiz
    restart: always
    environment:
      # You must change these. Replace `postiz.your-server.com` with your DNS name - what your web browser sees.
      MAIN_URL: "https://postiz.your-server.com"
      FRONTEND_URL: "https://postiz.your-server.com"
      NEXT_PUBLIC_BACKEND_URL: "https://postiz.your-server.com/api"
      JWT_SECRET: "xxx5189sadhnjkdsakn123" #Random Letters and numebers
      # These defaults are probably fine, but if you change your user/password, update it in the
      # postiz-postgres or postiz-redis services below.
      DATABASE_URL: "postgresql://postiz-user:postiz-password@postiz-postgres:5432/postiz-db-local"
      REDIS_URL: "redis://postiz-redis:6379"
      BACKEND_INTERNAL_URL: "http://localhost:3000"
      IS_GENERAL: "true" # Required for self-hosting.
      CLOUDFLARE_ACCOUNT_ID: "enter your account ID"
      CLOUDFLARE_ACCESS_KEY: "enter your API access key"
      CLOUDFLARE_SECRET_ACCESS_KEY: "enter your secret key"
      CLOUDFLARE_BUCKETNAME: "enter the bucket name"
      CLOUDFLARE_BUCKET_URL: "enter your bucket ID"
      CLOUDFLARE_REGION: "enter your region"
      STORAGE_PROVIDER: "cloudflare" #Can be cloudflare or local - local currently doesn't work well on localhost so R2 is recommended.
      NEXT_PUBLIC_UPLOAD_STATIC_DIRECTORY: "/uploads"
      PLOAD_DIRECTORY: "/uploads"
      #DISABLE_REGISTRATION: "True"
      # Uncomment the API you need, make sure you generate the keys on vendors websites.
      #X_API_KEY: "your_client_id"
      #X_API_SECRET: "your_client_secret "
      #FACEBOOK_APP_ID: "your_client_id"
      #FACEBOOK_APP_SECRET: "your_client_secret"
      #MASTODON_CLIENT_ID: "your_client_id"
      #MASTODON_CLIENT_SECRET: "your_client_secret"
      #DISCORD_CLIENT_ID: "your_client_id"
      #DISCORD_CLIENT_SECRET: "your_client_secret"
      #DRIBBLE_CLIENT_ID: "your_client_id"
      #DRIBBLE_CLIENT_SECRET: "your_client_secret"
      #LINKEDIN_CLIENT_ID: "your_client_id"
      #LINKEDIN_CLIENT_SECRET: "your_client_secret"
      #PINTEREST_CLIENT_ID: "your_client_id"
      #PINTEREST_CLIENT_SECRET: "your_client_secret"
      #REDDIT_CLIENT_ID: "your_client_id"
      #REDDIT_CLIENT_SECRET: "your_client_secret"
      #SLACK_ID="your_client_id"
      #SLACK_SECRET="your_client_secret"
      #TIKTOK_CLIENT_ID: "your_client_id"
      #TIKTOK_CLIENT_SECRET: "your_client_secret"
      #YOUTUBE_CLIENT_ID: "your_client_id"
      #YOUTUBE_CLIENT_SECRET: "your_client_secret"

    volumes:
      - postiz-config:/config/
      - postiz-uploads:/uploads/
    ports:
      - 5000:5000
    networks:
      - postiz-network
    depends_on:
      postiz-postgres:
        condition: service_healthy
      postiz-redis:
        condition: service_healthy
 
  postiz-postgres:
    image: postgres:17-alpine
    container_name: postiz-postgres
    restart: always
    environment:
      POSTGRES_PASSWORD: postiz-password
      POSTGRES_USER: postiz-user
      POSTGRES_DB: postiz-db-local
    volumes:
      - postgres-volume:/var/lib/postgresql/data
    networks:
      - postiz-network
    healthcheck:
      test: pg_isready -U postiz-user -d postiz-db-local
      interval: 10s
      timeout: 3s
      retries: 3
  postiz-redis:
    image: redis:7.2
    container_name: postiz-redis
    restart: always
    healthcheck:
      test: redis-cli ping
      interval: 10s
      timeout: 3s
      retries: 3
    volumes:
      - postiz-redis-data:/data
    networks:
      - postiz-network
 
 
volumes:
  postgres-volume:
    external: false
 
  postiz-redis-data:
    external: false
 
  postiz-config:
    external: false
 
  postiz-uploads:
    external: false
 
networks:
  postiz-network:
    external: false
  • Deploy the stack:
postiz deploy the stack
  • The deployment process might take few minutes. Once its done verify that the containers are showing as HEALTHY(GREEN). If its not showing green, double check your docker file to see if there’s any typos.
portainer stack

Setup the reverse proxy for Postiz on Synology NAS

  • Go to Settings -> Login Portal
synology postiz reverse proxy
  • Click Advanced -> Reverse Proxy
synology nas reverse proxy advanced
  • Create a new reverse proxy and set the following settings:

Source:

  • Protocol: HTTPS
  • Hostname: postiz.whateverdomain.lan (the domain you used in the file above, its important to use the exactly the same domain name)
  • port: 443

Destination:

  • Protocol: HTTP
  • Hostname: localhost
  • Port: 5000

Example of my postiz reverse proxy:

postiz synology nas reverse proxy pixlodo
  • click SAVE

Your postiz is successfully installed now but it won’t be accessible yet. That is because you need to point the DNS records to your NAS IP address so you can use the url to access it.

If you got a DNS server, use your DNS server to point A record to the synology NAS.

Step 4 (Optional): Configure your Windows Host file (DNS) to point to the postiz domain

  • Run Notepad as Administrator
  • Click on File -> Open
  • Open the hosts file which is located in C:\Windows\System32\drivers\etc
windows host file
  • Under #localhost name resolution is handled within DNS itself add the following:

0.0.0.0 postiz.whateverdomain.lan

Replace 0.0.0.0 with your synology ip and the domain with your postiz domain that was step in step 3.

windows host file
  • You should be able to enter the URL in your web browser now and access Postiz.
postiz working

Generate Social Media API Keys for Postiz

To connect social media accounts you need to configure the APIs for each social media then add the keys and secrets to the composer file we made in step 3. Just uncomment the social media you need and add the id and keys.

Remember to redeploy the stack in Portainer and pull the new image

      #X_API_KEY: "your_client_id"
      #X_API_SECRET: "your_client_secret "
      #FACEBOOK_APP_ID: "your_client_id"
      #FACEBOOK_APP_SECRET: "your_client_secret"
      #MASTODON_CLIENT_ID: "your_client_id"
      #MASTODON_CLIENT_SECRET: "your_client_secret"
      #DISCORD_CLIENT_ID: "your_client_id"
      #DISCORD_CLIENT_SECRET: "your_client_secret"
      #DRIBBLE_CLIENT_ID: "your_client_id"
      #DRIBBLE_CLIENT_SECRET: "your_client_secret"
      #LINKEDIN_CLIENT_ID: "your_client_id"
      #LINKEDIN_CLIENT_SECRET: "your_client_secret"
      #PINTEREST_CLIENT_ID: "your_client_id"
      #PINTEREST_CLIENT_SECRET: "your_client_secret"
      #REDDIT_CLIENT_ID: "your_client_id"
      #REDDIT_CLIENT_SECRET: "your_client_secret"
      #SLACK_ID="your_client_id"
      #SLACK_SECRET="your_client_secret"
      #TIKTOK_CLIENT_ID: "your_client_id"
      #TIKTOK_CLIENT_SECRET: "your_client_secret"
      #YOUTUBE_CLIENT_ID: "your_client_id"
      #YOUTUBE_CLIENT_SECRET: "your_client_secret"

Follow the links to official documentation that will walk you through the process of adding the channels.

Official Documentation

Support

Postiz Support can be accessed through Discord.

FAQ

  1. Can I install Postiz directly from Synology’s Package Center?

    No, Postiz isn’t natively available in Synology’s Package Center. You’ll need to download the docker container and install it manually.

  2. What is Postiz?

    Postiz is a tool designed for managing social media content workflows, automation, and scheduling, particularly useful for businesses and creators.

  3. Are there specific Synology NAS models required for Postiz?

    Postiz should work on most Synology NAS models that are in support and have 2gb of ram. You will need to run it as docker container. Portainer is recommended for managing the docker containers on Synology.

  4. Is Postiz free to use?

    Postiz offers both free and paid versions. Free version is self hosted and paid is cloud hosted (SaaS).
    Check their website for pricing details and limitations of the free version.

Share this content:

1 comment

Post Comment