Welcome back

Sign in to access your stream dashboard

Incorrect username or password.
🔑 Forgot password? Upload recovery file

Upload your .cbkey recovery file to restore access.
This file was downloaded when you last changed your password.

Stream Not Started
Open Candy-Bot Streamer on your phone to go live
🖼️ Background
🖼️

Click or drag image here

OffDark
#000000
🎨 Colours
#eef6fc
#dceef8
#b8d8ee
#2d6a8f
#1c3a50
#5a7a8f
✍️ Content
🔤 Fonts Detecting system fonts...
⚙️ Options
Floating dove animations
Animated doves in background
Show service details card
Show dates (DOB / Passed)
Show portrait photo
Show floral decorations
🔡 Text Sizes
1.8rem
2.8rem
0.95rem
0.9rem
0.9rem
🖼️ Custom Decoration Images

🕊️ Click to upload a custom dove / bird image

🌸 Top decoration

🌸 Bottom decoration

Share this short link — theme is stored on the server:

Show full URL instead

Live Preview

Click Preview to refresh

🖥️ Server Status
Loading...
🔑 Change Password
⚠️ After saving, a .cbkey recovery file will automatically download. Keep it safe — it’s the only way to recover access if you forget your password.

Password is stored in this browser. Update it on each device you use.

🔑 Stream Key

Only devices using this key can send a live stream. Change it to immediately lock out any unauthorised streamer.

Current Key
loading...
RTMP URL (with key)
rtmp://187.77.152.189/live/stream
Set a Custom Key
Minimum 6 characters 0 / 32

⚠ After changing the key, update your Android app with the new RTMP URL above.

📱 Install Candy-Bot Streamer App
v1.3 · Latest

Scan the QR code to download the app on your Android phone

Android only  ·  No Play Store needed

⬇ Download APK Directly
▶️ Video Broadcast Playlist

Upload videos or paste direct web links to broadcast them as a "Live" stream. The system will play items in order.

Current Queue
Offline
Loading queue...
ℹ️ App Details
Version1.3
Min Android5.0 (API 21)
Size~6.6 MB
RTMP Streaming
Local Recording
Auto-Updates
⚠️ Danger Zone

This will wipe all customisations (colours, fonts, images, sizes, and text) and restore the original factory settings to both the dashboard and the live viewer.

Your Username and Password will NOT be changed.

🔍
📋 System Setup Progress
0%
0 of 0 steps complete
🏗️ System Architecture Overview
📱 Android App
Candy-Bot Streamer
──RTMP 1935──▶
🖥️ VPS
187.77.152.189
──HLS──▶
🌐 Viewer
livecastly.fun/
ComponentLocation on ServerURL
📺 Viewer Page/docker/live/index.htmllivecastly.fun/
⚙️ Admin Dashboard/opt/www/stream/index.htmllivecastly.fun/stream/
🐍 Python API/docker/api/server.pylivecastly.fun/api/…
📡 RTMP / HLS Server/docker/live/rtmp://187.77.152.189/live/
🗂️ Static Files/opt/downloads/livecastly.fun/downloads/
🎨 Saved Themes/opt/downloads/themes//api/theme/{key}
🔁 Reverse Proxy/docker/traefik/Handles SSL + routing
💡 All containers are managed with docker compose. Traefik auto-renews SSL certificates via Let's Encrypt.
🚀 Initial System Setup Checklist

Tick each step as you complete it. Progress is saved automatically.

🖥️ VPS & Server
🔁 Traefik (Reverse Proxy + SSL)
📡 RTMP / HLS Streaming
🐍 Python API
🗂️ Static Files
✅ First-Time Verification
🔄 Webpage / System Update Checklist

Run through this list every time you push an update to the system.

Before You Start
Upload Files
Restart Containers
Verify
🐳 Server Dependencies
DependencyVersionPurposeInstall
Docker Engine24+Container runtime for all services
Docker Composev2Multi-container orchestration
nginx-rtmplatestReceives RTMP, serves HLS segmentsVia docker image
Python 33.10+API server (server.py)Via docker image
Traefikv2Reverse proxy + auto SSLVia docker image
All services run as Docker containers — no direct host installation needed beyond Docker itself.
Useful Docker commands
docker psList running containers
docker compose logs -fFollow container logs
docker compose up -dStart / update containers
docker compose restartRestart all in compose
docker compose downStop and remove containers
docker system prune -fClean unused images/cache
🌐 Web Pages Guide
PropertyValue
File location/docker/live/index.html
Public URLhttps://livecastly.fun/
Served bynginx-rtmp container (port 8080 internally)
After updateRestart live container
The viewer auto-loads the live default theme set by Apply to Viewer. Override per-service with ?s=SHORTKEY or ?t=BASE64 in the URL.
Upload viewer via SFTP
Restart after upload
🔌 API Reference
All authenticated endpoints require header: X-API-Token: Candy-Bot (matches your dashboard password).
MethodEndpointAuthDescription
GET/api/statusList all running Docker containers
GET/api/streamkeyGet current stream key
POST/api/streamkey/generateGenerate new random stream key
POST/api/streamkey/setSet a custom stream key {key}
POST/api/actionServer action {action, service}
GET/api/playbackGet current playback config
POST/api/playback/setSet playback URL + mode
POST/api/playback/clearClear playback, go offline
POST/api/theme/saveSave theme, get short key
POST/api/theme/set-defaultSet live default theme
GET/api/theme/live🔓Get live default theme (public)
GET/api/theme/{key}🔓Get saved theme by short key (public)
📱 Android App Setup
  1. Download Candy-Bot Streamer APK from livecastly.fun/downloads/candy-bot-streamer.apk or scan the QR code in the Admin tab.
  2. On your Android phone go to Settings → Apps → Install unknown apps and allow your browser.
  3. Open the downloaded APK and install it.
  4. In the app, set the RTMP URL to:
    rtmp://187.77.152.189/live/
  5. Set the Stream Key to match the key shown in the Admin tab → Stream Key.
  6. Tap Start Stream — the viewer page will automatically switch from offline to live within a few seconds.
⚠️ If you regenerate the stream key, update the app with the new key before streaming again.
🔧 Troubleshooting
▶ Viewer page shows offline but I'm streaming
  1. Check the stream key in the app matches what's shown in Admin → Stream Key.
  2. Verify the live container is running:
  3. Check nginx-rtmp logs:
  4. Confirm port 1935 is open in your VPS firewall.
▶ Dashboard API calls fail (red errors in server controls)
  1. Check the API container is running:
  2. Verify your password matches the API token — change password resets both.
  3. Test directly:
  4. Restart the API:
▶ Apply to Viewer doesn't seem to work

The viewer fetches /api/theme/live on load. Check:

  1. You are logged in — Apply requires a valid API token (your password).
  2. The theme file exists:
  3. Hard refresh the viewer page (Ctrl+Shift+R).
▶ Forgot password and lost .cbkey file

If you have SSH access to the server you can reset manually:

  1. SSH into the VPS.
  2. Edit /docker/api/server.py and set TOKEN = 'Candy-Bot'.
  3. Restart the API:
  4. Open dashboard in incognito — the default credentials admin / Candy-Bot will work.
▶ SSL certificate expired or not working
  1. Traefik auto-renews Let's Encrypt certs every 60 days. Check Traefik is running.
  2. Restart Traefik:
  3. Check logs:
▶ Viewer fonts look wrong or missing

The viewer loads Google Fonts dynamically. If offline or fonts blocked:

  1. The viewer will fall back to the browser's default serif/sans-serif font.
  2. Choose a System Font from the Fonts dropdowns in Customize Viewer — these don't require Google Fonts.
🗂️ Complete File Map
/
├── docker/
│   ├── live/                  ← RTMP/HLS container
│   │   ├── docker-compose.yml
│   │   ├── nginx.conf         ← RTMP + HLS config
│   │   └── index.html         ← PUBLIC VIEWER PAGE
│   ├── api/                   ← Python REST API
│   │   ├── docker-compose.yml
│   │   └── server.py          ← API logic (token, themes, actions)
│   ├── static/                ← Static file server
│   │   └── docker-compose.yml
│   └── traefik/               ← Reverse proxy + SSL
│       └── docker-compose.yml
│
└── opt/
    ├── www/
    │   └── stream/
    │       └── index.html     ← ADMIN DASHBOARD (this page)
    └── downloads/
        ├── candy-bot-icon.png ← Candy-Bot logo
        ├── candy-bot-streamer.apk
        ├── streamkey.json     ← Current stream key
        ├── playback.json      ← Playback mode config
        └── themes/
            ├── live.json      ← Active viewer theme (Apply to Viewer)
            └── xxxxxx.json    ← Saved short-link themes
⚡ Quick Reference
Viewer URLhttps://livecastly.fun/
Dashboard URLhttps://livecastly.fun/stream/
VPS IP187.77.152.189
RTMP Ingestrtmp://187.77.152.189/live/
HLS Streamhttps://livecastly.fun/hls/stream.m3u8
Default Loginadmin / Candy-Bot
SSH Accessssh root@187.77.152.189