- Create update-credentials.sh script for easy provider configuration - Support adding/updating YouTube, TikTok, LinkedIn, X, Telegram, Facebook - Automatically reload backend services after credential changes - Add comprehensive documentation and quick-start guide - Eliminate need for manual .env editing for social integrations Usage: /opt/postiz-config/update-credentials.sh list # Show current status /opt/postiz-config/update-credentials.sh youtube ID SECRET # Add YouTube /opt/postiz-config/update-credentials.sh tiktok ID SECRET # Add TikTok /opt/postiz-config/update-credentials.sh linkedin ID SECRET # Add LinkedIn /opt/postiz-config/update-credentials.sh x ID SECRET # Add X/Twitter /opt/postiz-config/update-credentials.sh telegram BOT_NAME TOKEN # Add Telegram 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
148 lines
4.5 KiB
Bash
Executable file
148 lines
4.5 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Postiz Credentials Management Script
|
|
# Usage: ./update-credentials.sh youtube CLIENT_ID CLIENT_SECRET
|
|
# Or: ./update-credentials.sh list
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
ENV_FILE="$SCRIPT_DIR/.env"
|
|
CONTAINER_NAME="postiz"
|
|
|
|
# Color output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Function to update .env
|
|
update_env() {
|
|
local key=$1
|
|
local value=$2
|
|
|
|
if grep -q "^${key}=" "$ENV_FILE"; then
|
|
sed -i.bak "s|^${key}=.*|${key}=${value}|" "$ENV_FILE"
|
|
echo -e "${GREEN}✓${NC} Updated ${key}"
|
|
else
|
|
echo "${key}=${value}" >> "$ENV_FILE"
|
|
echo -e "${GREEN}✓${NC} Added ${key}"
|
|
fi
|
|
}
|
|
|
|
# Function to show current credentials
|
|
show_credentials() {
|
|
echo -e "${BLUE}Current Provider Credentials:${NC}"
|
|
echo ""
|
|
|
|
for provider in FACEBOOK TIKTOK LINKEDIN X YOUTUBE TELEGRAM; do
|
|
client_id_var="${provider}_CLIENT_ID"
|
|
client_secret_var="${provider}_CLIENT_SECRET"
|
|
|
|
if [ "$provider" = "FACEBOOK" ]; then
|
|
client_id_var="FACEBOOK_APP_ID"
|
|
client_secret_var="FACEBOOK_APP_SECRET"
|
|
fi
|
|
|
|
id_val=$(grep "^${client_id_var}=" "$ENV_FILE" 2>/dev/null | cut -d= -f2- || echo "")
|
|
secret_val=$(grep "^${client_secret_var}=" "$ENV_FILE" 2>/dev/null | cut -d= -f2- || echo "")
|
|
|
|
if [ -z "$id_val" ] && [ -z "$secret_val" ]; then
|
|
echo -e "${YELLOW}⚠${NC} $provider: Not configured"
|
|
else
|
|
id_display="${id_val:0:10}..."
|
|
secret_display=$(echo "$secret_val" | cut -c1-10)...
|
|
echo -e "${GREEN}✓${NC} $provider: ID=${id_display} Secret=${secret_display}"
|
|
fi
|
|
done
|
|
echo ""
|
|
}
|
|
|
|
# Function to add/update provider
|
|
add_provider() {
|
|
local provider=$1
|
|
local client_id=$2
|
|
local client_secret=$3
|
|
|
|
case ${provider,,} in
|
|
facebook)
|
|
update_env "FACEBOOK_APP_ID" "$client_id"
|
|
update_env "FACEBOOK_APP_SECRET" "$client_secret"
|
|
;;
|
|
youtube)
|
|
update_env "YOUTUBE_CLIENT_ID" "$client_id"
|
|
update_env "YOUTUBE_CLIENT_SECRET" "$client_secret"
|
|
;;
|
|
tiktok)
|
|
update_env "TIKTOK_CLIENT_ID" "$client_id"
|
|
update_env "TIKTOK_CLIENT_SECRET" "$client_secret"
|
|
;;
|
|
linkedin)
|
|
update_env "LINKEDIN_CLIENT_ID" "$client_id"
|
|
update_env "LINKEDIN_CLIENT_SECRET" "$client_secret"
|
|
;;
|
|
x|twitter)
|
|
update_env "X_API_KEY" "$client_id"
|
|
update_env "X_API_SECRET" "$client_secret"
|
|
;;
|
|
telegram)
|
|
update_env "TELEGRAM_BOT_NAME" "$client_id"
|
|
update_env "TELEGRAM_BOT_TOKEN" "$client_secret"
|
|
;;
|
|
*)
|
|
echo -e "${RED}✗${NC} Unknown provider: $provider"
|
|
echo "Supported providers: facebook, youtube, tiktok, linkedin, x, telegram"
|
|
exit 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Main logic
|
|
if [ $# -eq 0 ]; then
|
|
show_credentials
|
|
exit 0
|
|
fi
|
|
|
|
case ${1,,} in
|
|
list)
|
|
show_credentials
|
|
;;
|
|
facebook|youtube|tiktok|linkedin|x|twitter|telegram)
|
|
if [ $# -lt 3 ]; then
|
|
echo -e "${RED}✗${NC} Usage: $0 $1 CLIENT_ID CLIENT_SECRET"
|
|
echo ""
|
|
echo "Example for YouTube:"
|
|
echo " $0 youtube 'YOUR_CLIENT_ID' 'YOUR_CLIENT_SECRET'"
|
|
exit 1
|
|
fi
|
|
|
|
provider=$1
|
|
client_id=$2
|
|
client_secret=$3
|
|
|
|
echo -e "${BLUE}Updating $provider credentials...${NC}"
|
|
add_provider "$provider" "$client_id" "$client_secret"
|
|
|
|
# Reload container
|
|
echo -e "${YELLOW}Reloading Postiz container...${NC}"
|
|
docker exec "$CONTAINER_NAME" pm2 restart backend workers frontend --wait-ready 2>/dev/null || true
|
|
|
|
echo -e "${GREEN}✓${NC} Done! Credentials updated and services restarted"
|
|
echo ""
|
|
show_credentials
|
|
;;
|
|
*)
|
|
echo -e "${RED}✗${NC} Unknown command: $1"
|
|
echo ""
|
|
echo "Usage:"
|
|
echo " $0 list # Show current credentials"
|
|
echo " $0 youtube ID SECRET # Add/update YouTube"
|
|
echo " $0 facebook ID SECRET # Add/update Facebook"
|
|
echo " $0 tiktok ID SECRET # Add/update TikTok"
|
|
echo " $0 linkedin ID SECRET # Add/update LinkedIn"
|
|
echo " $0 x ID SECRET # Add/update X/Twitter"
|
|
echo " $0 telegram BOT_NAME BOT_TOKEN # Add/update Telegram"
|
|
exit 1
|
|
;;
|
|
esac
|