# ClipCascade
**ClipCascade** is a lightweight, open-source utility that automatically syncs your clipboard across multiple devicesβno manual input required. It ensures seamless sharing with robust end-to-end encryption, providing a secure and reliable clipboard experience across workstations.
**No Server? No Problem!** Instantly sync your clipboard using the **Live Community Server** at **[clipcascade.sathvik.dev](http://clipcascade.sathvik.dev/)**β**no setup needed**. Just create an account and start sharing your clipboard across devices in seconds!
|
|
|
| Type | Windows | MacOS | Linux GUI | Linux CLI | Android |
|---|---|---|---|---|---|
| Text | β | β | β | β | β |
| Image | β | β | β | β | β |
| Files | β | β | β | β | β |
| Environment Variable | Extended Description | Default Value |
|---|---|---|
| CC_MAX_MESSAGE_SIZE_IN_MiB |
Defines the maximum message size (in MiB) that the server can handle.
Note: - Android typically supports larger clipboard sizes for images and files but limits text to ~1 MiB. - Desktop supports larger clipboard sizes across text, images, and files. Additional Notes: - Clients can set their own limits via the "Extra Config" on the login page. - If CC_P2P_ENABLED is true, this setting is ignored.
|
1 |
| CC_MAX_MESSAGE_SIZE_IN_BYTES |
Provides finer control over message size by specifying a limit in bytes.
Note: If set above zero, it overrides CC_MAX_MESSAGE_SIZE_IN_MiB.Ignored if CC_P2P_ENABLED is true.
|
0 |
| CC_P2P_ENABLED |
Toggles the Peer-to-Peer (P2P) feature, allowing direct device-to-device communication.
Advantages: - Reduces server load. - Removes size restrictions, enabling unlimited data transfer. Important Notes: - If enabled, CC_MAX_MESSAGE_SIZE_IN_MiB and CC_MAX_MESSAGE_SIZE_IN_BYTES are ignored.- Some network configurations may not support P2P. |
false |
| CC_P2P_STUN_URL |
Defines the STUN server URL used for P2P communication, helping devices discover each other across NAT.
Note: Required when CC_P2P_ENABLED is true.You can use a public STUN server or host your own. |
stun:stun.l.google.com:19302 |
| CC_ALLOWED_ORIGINS |
Specifies which domain is permitted to access the WebSocket server (CORS policy).
Security Note: - Leaving this unset allows all origins (not recommended for security-sensitive deployments). - To restrict access, specify your domain (e.g., https://clipcascade.example.com).
|
* |
| CC_SIGNUP_ENABLED |
Determines whether new users can sign up.
Default: false (public signups are disabled).
|
false |
| CC_MAX_USER_ACCOUNTS |
Defines the maximum number of user accounts allowed on the server.
Note: -1 means no limit.
|
-1 |
| CC_ACCOUNT_PURGE_TIMEOUT_SECONDS |
Specifies the duration (in seconds) after which inactive accounts are deleted.
Example: 63115200 (equivalent to 2 years).Note: -1 disables automatic purging.
|
-1 |
| CC_PORT |
Defines the internal port where the ClipCascade server listens for connections.
Default: 8080, but can be changed if necessary. |
8080 |
| CC_SESSION_TIMEOUT |
Specifies the duration before user sessions expire, using minute-based formatting ([number]m).
Default: 525960m (~1 year).
|
525960m |
| CC_MAX_UNIQUE_IP_ATTEMPTS | Sets the maximum number of failed login attempts from different IP addresses before an account is blocked. | 15 |
| CC_MAX_ATTEMPTS_PER_IP | Limits the number of failed login attempts allowed per IP before temporarily blocking that IP. | 30 |
| CC_LOCK_TIMEOUT_SECONDS | Defines the initial lockout duration (in seconds) after too many failed login attempts. | 60 |
| CC_LOCK_TIMEOUT_SCALING_FACTOR |
Determines how the lockout time increases with each consecutive failed attempt.
Examples: - Factor 1: 60, 120, 180β¦ - Factor 2: 120, 240, 360β¦ - Factor 3: 180, 360, 540β¦ |
2 |
| CC_BFA_CACHE_ENABLED | Controls whether brute force attack (BFA) data is cached in memory and disk. | false |
| CC_BFA_TRACKER_CACHE_MAX_JVM_ENTRIES |
Specifies the maximum number of entries in the BFA tracker cache, stored in JVM memory.
Note: Only used if CC_BFA_CACHE_ENABLED is true.
|
50 |
| CC_BFA_TRACKER_CACHE_RAM_PERCENTAGE |
Defines the percentage of the BFA tracker cache allocated to off-heap RAM.
Note: Only used if CC_BFA_CACHE_ENABLED is true.
|
0 |
| CC_BFA_TRACKER_CACHE_DISK_PERCENTAGE |
Defines the percentage of the BFA tracker cache allocated to disk.
Note: Only used if CC_BFA_CACHE_ENABLED is true.
|
40 |
| CC_SERVER_DB_USERNAME | Specifies the username for the database connection. | clipcascade |
| CC_SERVER_DB_PASSWORD |
Defines the password used for encrypting the user database.
Note: - (H2) Replace <file password> <user password> with secure values.- Once set, you must use the same password whenever you migrate the database. |
QjuGlhE3uwylBBANMkX1 o2MdEoFgbU5XkFvTftky |
| CC_SERVER_DB_URL |
Defines the JDBC URL used to connect to the database.
Examples: - PostgreSQL: jdbc:postgresql://localhost:5432/clipcascade
|
jdbc:h2:file:./database/clipcascade;CIPHER=AES;MODE=PostgreSQL |
| CC_SERVER_DB_DRIVER |
Specifies the JDBC driver class used by the database connection.
Example: org.postgresql.Driver for PostgreSQL.
|
org.h2.Driver |
| CC_SERVER_DB_HIBERNATE_DIALECT |
Sets the Hibernate dialect for the chosen database.
Example: org.hibernate.dialect.PostgreSQLDialect for PostgreSQL.
|
org.hibernate.dialect.H2Dialect |
| CC_SERVER_LOGGING_LEVEL | Sets the logging verbosity level (TRACE, DEBUG, INFO). | INFO |
| CC_SERVER_LOG_HISTORY_MAX_DAYS | Specifies how many days of logs to retain before they are rotated or removed. | 30 |
| CC_SERVER_LOG_MAX_CAPACITY | Defines the maximum total size of logs to keep before older files are purged. | 1GB |
| CC_LOG_BRUTE_FORCE_TRACKER_ENABLED |
Enables detailed logging of each login attempt in the Brute Force Attack (BFA) tracker.
Useful for diagnosing repeated login failures. |
false |
| CC_EXTERNAL_BROKER_ENABLED | Determines whether an external STOMP broker is used for message handling. | false |
| CC_BROKER_HOST |
Specifies the STOMP broker host for external message handling.
Note: Only used if CC_EXTERNAL_BROKER_ENABLED is true.
|
localhost |
| CC_BROKER_PORT |
Specifies the STOMP broker port for external message handling.
Note: Only used if CC_EXTERNAL_BROKER_ENABLED is true.
|
61613 |
| CC_BROKER_USERNAME |
Defines the STOMP broker username for external message handling.
Note: Only used if CC_EXTERNAL_BROKER_ENABLED is true.
|
admin |
| CC_BROKER_PASSWORD |
Defines the STOMP broker password for external message handling.
Note: Only used if CC_EXTERNAL_BROKER_ENABLED is true.
|
admin |
| CC_MAX_WS_GLOBAL_CONNECTIONS |
Maximum number of global WebSocket connections allowed.
Supported Mode: Only applies when CC_P2P_ENABLED is true.
Note: - This value represents the total number of active WebSocket connections allowed across all users. - -1 means unlimited.
|
-1 |
| CC_MAX_WS_CONNECTIONS_PER_USER |
Maximum number of WebSocket connections allowed per user.
Supported Mode: Only applies when CC_P2P_ENABLED is true.
Note: - This value limits how many simultaneous WebSocket connections a single user can have. - -1 means unlimited.
|
-1 |
| Desktop | Mobile |
| Desktop | Mobile |
| Type | Send | Receive | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Windows | MacOS | Linux GUI | Linux CLI | Android | Windows | MacOS | Linux GUI | Linux CLI | Android | |
| Text | β± | β± | β± | β± | β± / share | β± | β± | β± | β± | β± |
| Image | β± | β± | β± | β± | β± / share | β± | β± | β± | β± | β± |
| Files | β± | β± | β± | β± | share | click | click | click | click | click |