{{HERO_TITLE}}
{{HERO_SUBTITLE}}
{{HERO_TRUST}}
{{DEMO_HINT}}
{{MOCK_25}}
{{MOBILE_DEMO_TITLE}}
{{COMPAT_HEADING}}
{{WHY_TITLE}}
{{WHY_SUBTITLE}}
{{USE_CASE_1_TITLE}}
{{USE_CASE_1_DESC}}
{{USE_CASE_2_TITLE}}
{{USE_CASE_2_DESC}}
{{USE_CASE_3_TITLE}}
{{USE_CASE_3_DESC}}
{{NAV_FEATURES}}
{{FEATURE_6_TITLE}}
{{FEATURE_6_DESC}}
{{FEATURE_7_TITLE}}
{{FEATURE_7_DESC}}
{{FEATURE_4_TITLE}}
{{FEATURE_4_DESC}}
{{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}}
{{STEP_2_TITLE}}
{{STEP_2_DESC}}
{{STEP_3_TITLE}}
{{STEP_3_DESC}}
{{SELF_TITLE}}
{{SELF_SUBTITLE}}
{{SELF_SHOW_SETUP}} {{SELF_HIDE_SETUP}}
services:
koala-sync:
image: ghcr.io/shik3i/koalasync:latest
container_name: KoalaSync
restart: unless-stopped
environment:
TZ: Europe/Berlin
PORT: 3000
MIN_VERSION: 1.0.0
MAX_ROOMS: 100
MAX_PEERS_PER_ROOM: 25
# Required: replace before starting
SERVER_SALT: "REPLACE_WITH_OPENSSL_RAND_BASE64_32_OUTPUT"
# Optional: leave empty or replace with a 32+ character token
ADMIN_METRICS_TOKEN: ""
DEBUG_LOGGING: "0"
# Host Caddy reaches the relay only through this loopback binding
ports:
- "127.0.0.1:3000:3000"
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 localhost:3000
}
{{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}}