A cute koala juggling multiple browser tabs showing streaming platforms

{{COMPAT_HEADING}}

{{WHY_TITLE}}

{{WHY_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}}

{{FEATURE_6_TITLE}}

{{FEATURE_6_DESC}}

{{FEATURE_7_TITLE}}

{{FEATURE_7_DESC}}

{{FEATURE_4_TITLE}}

{{FEATURE_4_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}}

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_2_TITLE}}

{{STEP_2_DESC}}

KoalaSync Logo KoalaSync
{{VERSION}}
{{STEP_2_ILLUS_ROOM}}
{{STEP_2_ILLUS_SYNC}}
{{STEP_2_ILLUS_SETTINGS}}

{{STEP_3_TITLE}}

{{STEP_3_DESC}}

🐱 ChillCat PLAYING
42:15
{{STEP_3_ILLUS_IN_SYNC}}
🐶 HappyDog PLAYING
42:15

{{SELF_TITLE}}

{{SELF_SUBTITLE}}

{{SELF_MASCOT_ALT}}
{{SELF_SHOW_SETUP}} {{SELF_HIDE_SETUP}}
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
}
A cute koala holding a question mark wondering about KoalaSync

{{FAQ_TITLE}}

{{FAQ_SUBTITLE}}

{{FAQ_SHOW_ALL}} {{FAQ_HIDE_ALL}}
{{FAQ_Q1}}

{{FAQ_A1}}

{{FAQ_Q_VIDEO_ACCESS}}

{{FAQ_A_VIDEO_ACCESS}}

{{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}}