KoalaSync LogoKoalaSync
{{VERSION}}
{{MOCK_01}} brave-eagle-80
{{MOCK_02}}
{{MOCK_03}}
{{MOCK_04}}
CoolUsername {{MOCK_05}}
Stranger Things - S4E1
0:55 • {{MOCK_06}}
KoalaPC {{MOCK_07}}
Stranger Things - S4E1
0:55 • {{MOCK_06}}
{{MOCK_14}}
PAUSE CoolUsername @ 12:44:32
🐨 KoalaPC
Episode Lobby
Stranger Things - S4E2
{{MOCK_16}}
CoolUsername {{MOCK_05}}
Stranger Things - S4E1
0:55 • {{MOCK_06}}
KoalaPC {{MOCK_07}}
Stranger Things - S4E1
0:55 • {{MOCK_06}}

{{MOCK_25}}

{{MOCK_27}}
readyState: HAVE_ENOUGH_DATA
seekDelta: 0.05s
buffered: 300.2s
engineState: SYNCED
CoolUsername: PAUSE 0:55
KoalaPC: PLAY 0:00
[18:37:32] EVENT: PLAY -> ACK
[18:37:32] FORCE_SYNC -> 0.05s diff
[18:37:38] EVENT: PAUSE -> BROADCAST
[18:37:42] content_heartbeat: active
GitHub Repository
{{VERSION}}
A cute koala juggling multiple browser tabs showing streaming platforms

{{COMPAT_HEADING}}

{{USE_CASES_TITLE}}

{{USE_CASES_SUBTITLE}}

{{USE_CASE_1_ALT}}

{{USE_CASE_1_TITLE}}

{{USE_CASE_1_DESC}}

{{USE_CASE_2_ALT}}

{{USE_CASE_2_TITLE}}

{{USE_CASE_2_DESC}}

{{USE_CASE_3_ALT}}

{{USE_CASE_3_TITLE}}

{{USE_CASE_3_DESC}}

A cute koala with a question mark above its head wondering why to choose KoalaSync

{{WHY_TITLE}}

{{WHY_SUBTITLE}}

{{FEATURE_1_TITLE}}

{{FEATURE_1_DESC}}

{{FEATURE_2_TITLE}}

{{FEATURE_2_DESC}}

{{FEATURE_3_TITLE}}

{{FEATURE_3_DESC}}

STATE: VOLATILE RAM-ONLY

{{FEATURE_4_TITLE}}

{{FEATURE_4_DESC}}

{{FEATURE_6_TITLE}}

{{FEATURE_6_DESC}}

{{FEATURE_5_TITLE}}

{{FEATURE_5_DESC}}

{{FEATURE_8_TITLE}}

{{FEATURE_8_DESC}}

{{FEATURE_7_TITLE}}

{{FEATURE_7_DESC}}

A cute koala weighing options in both hands to compare KoalaSync vs Teleparty

{{COMP_TITLE}}

{{COMP_SUBTITLE}}

{{COMP_COL_FEATURE}} KoalaSync Teleparty
{{COMP_FEAT_1_NAME}} {{COMP_FEAT_1_DESC}} {{COMP_FEAT_1_KOALA}} {{COMP_FEAT_1_TELE}} [1]
{{COMP_FEAT_2_NAME}} {{COMP_FEAT_2_DESC}} {{COMP_FEAT_2_KOALA}} {{COMP_FEAT_2_TELE}} [2]
{{COMP_FEAT_3_NAME}} {{COMP_FEAT_3_DESC}} {{COMP_FEAT_3_KOALA}} {{COMP_FEAT_3_TELE}} [2]
{{COMP_FEAT_4_NAME}} {{COMP_FEAT_4_DESC}} {{COMP_FEAT_4_KOALA}} {{COMP_FEAT_4_TELE}} [2]
{{COMP_FEAT_5_NAME}} {{COMP_FEAT_5_DESC}} {{COMP_FEAT_5_KOALA}}[3] {{COMP_FEAT_5_TELE}} [1]
{{COMP_FEAT_6_NAME}} {{COMP_FEAT_6_DESC}} {{COMP_FEAT_6_KOALA}} {{COMP_FEAT_6_TELE}}
{{COMP_FEAT_7_NAME}} {{COMP_FEAT_7_DESC}} {{COMP_FEAT_7_KOALA}} {{COMP_FEAT_7_TELE}}

{{COMP_FOOTNOTE_1}}

[1] {{COMP_FOOTNOTE_2}} teleparty.com/premium

[2] {{COMP_FOOTNOTE_3}} teleparty.com/privacy

[3] {{COMP_FOOTNOTE_4}}

{{STEPS_TITLE}}

{{STEP_1_TITLE}}

{{STEP_1_DESC}}

https://sync.koalastuff.net
KoalaSync Extension
KoalaSync
{{STEP_1_ILLUS_DESC}}
Chrome Logo {{STEP_1_ILLUS_DL_CHROME}}
Firefox Logo {{STEP_1_ILLUS_DL_FIREFOX}}

{{STEP_2_TITLE}}

{{STEP_2_DESC}}

KoalaSync Logo KoalaSync
{{VERSION}}
{{STEP_2_ILLUS_ROOM}}
{{STEP_2_ILLUS_SYNC}}
{{STEP_2_ILLUS_SETTINGS}}
{{STEP_2_ILLUS_CREATE}}
{{STEP_2_ILLUS_MANUAL}}
{{STEP_2_ILLUS_COPIED}}

{{STEP_3_TITLE}}

{{STEP_3_DESC}}

🐨 KoalaPC PLAYING
42:15
{{STEP_3_ILLUS_IN_SYNC}}
💻 LaptopKoala PLAYING
42:15

{{SELF_TITLE}}

{{SELF_SUBTITLE}}

{{SELF_MASCOT_ALT}}
services:
  koala-sync:
    image: ghcr.io/shik3i/koalasync:latest
    container_name: KoalaSync
    restart: always
    # Access internally by proxying to container port 3000
    environment:
      - TZ=Europe/Berlin
      - PORT=3000
      - MIN_VERSION=1.0.0
      - MAX_ROOMS=100
      - MAX_PEERS_PER_ROOM=50
    pids_limit: 2048
sync.koalastuff.net {
    root * /var/www/koalasync/website/www
    encode zstd gzip
    
    # Clean URLs support (no .html required)
    try_files {path} {path}.html {path}/
    file_server
}

syncserver.koalastuff.net {
    reverse_proxy localhost:3000
}
(security_headers) {
    header {
        # Enable HTTP Strict Transport Security (HSTS)
        Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
        # Prevent clickjacking attacks (Sameorigin)
        X-Frame-Options "SAMEORIGIN"
        # Prevent MIME-sniffing
        X-Content-Type-Options "nosniff"
        # Enable browser XSS protection
        X-XSS-Protection "1; mode=block"
        # Control referrer information
        Referrer-Policy "strict-origin-when-cross-origin"
        # Hide Caddy server stamp signature
        -Server
    }
}

sync.koalastuff.net {
    encode zstd gzip
    root * /var/www/koalasync/website/www

    # Clean URLs: Resolves paths without .html in the URL
    try_files {path} {path}.html {path}/
    file_server

    # Static Caching for high performance
    @static {
        file
        path *.ico *.css *.js *.png *.svg *.webp *.avif
    }
    header @static Cache-Control "public, max-age=31536000, must-revalidate"

    # Hardened Security & Permission Policies
    import security_headers
    header {
        Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; connect-src 'self'; img-src 'self' data:; object-src 'none'; frame-ancestors 'none'; base-uri 'none'; form-action 'none';"
        Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=(), usb=()"
    }
}

syncserver.koalastuff.net {
    import security_headers
    encode zstd gzip
    reverse_proxy KoalaSync:3000
}

{{FAQ_TITLE}}

{{FAQ_SUBTITLE}}

{{FAQ_Q1}}

{{FAQ_A1}}

{{FAQ_Q2}}

{{FAQ_A2}}

{{FAQ_Q3}}

{{FAQ_A3}}

{{FAQ_Q4}}

{{FAQ_A4}}

{{FAQ_Q5}}

{{FAQ_A5}}

{{FAQ_Q6}}

{{FAQ_A6}}

{{FAQ_Q7}}

{{FAQ_A7}}

{{BOTTOM_TITLE}}

{{BOTTOM_SUBTITLE}}

{{BOTTOM_MASCOT_ALT}}