instbyte 1.9.0 → 1.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +360 -230
- package/bin/instbyte.js +27 -27
- package/client/assets/lucide.min.js +12 -0
- package/client/css/app.css +1972 -1972
- package/client/index.html +94 -94
- package/client/js/app.js +1648 -1584
- package/package.json +8 -5
- package/server/cleanup.js +27 -26
- package/server/config.js +69 -69
- package/server/db.js +60 -59
- package/server/server.js +867 -812
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 Mohit Gauniyal
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Mohit Gauniyal
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,230 +1,360 @@
|
|
|
1
|
-
<p align="center">
|
|
2
|
-
<img src="client/assets/logo.png" alt="Instbyte Logo" width="100">
|
|
3
|
-
</p>
|
|
4
|
-
|
|
5
|
-
<h1 align="center">Instbyte</h1>
|
|
6
|
-
|
|
7
|
-
<p align="center">
|
|
8
|
-
<a href="https://www.npmjs.com/package/instbyte"><img src="https://img.shields.io/npm/v/instbyte" alt="npm version"></a>
|
|
9
|
-
<a href="https://github.com/mohitgauniyal/instbyte/blob/main/LICENSE">
|
|
10
|
-
<img src="https://img.shields.io/github/license/mohitgauniyal/instbyte" alt="license">
|
|
11
|
-
</a>
|
|
12
|
-
</p>
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
<p align="center">
|
|
17
|
-
<img src="assets/instbyte-ad.png" width="900">
|
|
18
|
-
</p>
|
|
19
|
-
|
|
20
|
-
```bash
|
|
21
|
-
npx instbyte
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
**Instbyte** is a high-speed, real-time, short-lived LAN sharing utility built for teams and developers who need to move snippets, links, files, and structured notes across devices instantly — without cloud accounts, logins, or external services.
|
|
25
|
-
|
|
26
|
-
It operates entirely on your local network, acting as a lightweight "digital dead-drop" for frictionless collaboration.
|
|
27
|
-
|
|
28
|
-
Instbyte can also be fully white-labelled — the difference between ***a tool you use*** and ***a tool you own***.
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## Install & Run
|
|
33
|
-
|
|
34
|
-
**Requires Node.js 18 or higher.**
|
|
35
|
-
|
|
36
|
-
The fastest way — no installation needed:
|
|
37
|
-
```bash
|
|
38
|
-
npx instbyte
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Or install globally and run from anywhere:
|
|
42
|
-
```bash
|
|
43
|
-
npm install -g instbyte
|
|
44
|
-
instbyte
|
|
45
|
-
```
|
|
46
|
-
Data and config live in the directory you run the command from. To keep a permanent instance, always run from the same folder or use a process manager like pm2.
|
|
47
|
-
|
|
48
|
-
That's it. Open the displayed URL in any browser on the same network.
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## How It Works
|
|
53
|
-
|
|
54
|
-
One person runs the server — everyone else on the same WiFi opens the URL in their browser. No accounts, no setup on client devices.
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
[Your Machine] — runs: npx instbyte
|
|
58
|
-
↓
|
|
59
|
-
http://192.168.x.x:3000
|
|
60
|
-
↓
|
|
61
|
-
[Phone] [Laptop] [Tablet] — open URL in browser
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
**Sharing is instant:**
|
|
65
|
-
- Type or paste text → hit Send
|
|
66
|
-
- Paste anywhere on the page → auto-sends text or uploads images directly
|
|
67
|
-
- Drag a file anywhere onto the page → uploads
|
|
68
|
-
- Click any text item → copies to clipboard
|
|
69
|
-
- Click any file item → downloads
|
|
70
|
-
|
|
71
|
-
Everything syncs in real time across all connected devices. Content auto-deletes after 24 hours.
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
## For Teams
|
|
76
|
-
|
|
77
|
-
### Quick Setup (No Config)
|
|
78
|
-
Run `npx instbyte` on the machine that will act as the server. Share the displayed network URL with your team. Done.
|
|
79
|
-
|
|
80
|
-
### With Config File
|
|
81
|
-
For teams who want auth, custom retention, or branding — create `instbyte.config.json` in the directory where you run the command:
|
|
82
|
-
|
|
83
|
-
```json
|
|
84
|
-
{
|
|
85
|
-
"server": {
|
|
86
|
-
"port": 3000
|
|
87
|
-
},
|
|
88
|
-
"auth": {
|
|
89
|
-
"passphrase": "yourteampassword"
|
|
90
|
-
},
|
|
91
|
-
"storage": {
|
|
92
|
-
"maxFileSize": "2GB",
|
|
93
|
-
"retention": "24h"
|
|
94
|
-
},
|
|
95
|
-
"branding": {
|
|
96
|
-
"appName": "Team Hub",
|
|
97
|
-
"primaryColor": "#7c3aed",
|
|
98
|
-
"logoPath": "./logo.png"
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
Then run `npx instbyte` in the same directory. The config is picked up automatically.
|
|
104
|
-
|
|
105
|
-
### Keeping It Running
|
|
106
|
-
For persistent team use, run it as a background process:
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
# using pm2
|
|
110
|
-
npm install -g pm2
|
|
111
|
-
pm2 start "npx instbyte" --name instbyte
|
|
112
|
-
pm2 save
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
Or use any process manager you already have — systemd, screen, tmux.
|
|
116
|
-
|
|
117
|
-
---
|
|
118
|
-
|
|
119
|
-
##
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="client/assets/logo.png" alt="Instbyte Logo" width="100">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">Instbyte</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/instbyte"><img src="https://img.shields.io/npm/v/instbyte" alt="npm version"></a>
|
|
9
|
+
<a href="https://github.com/mohitgauniyal/instbyte/blob/main/LICENSE">
|
|
10
|
+
<img src="https://img.shields.io/github/license/mohitgauniyal/instbyte" alt="license">
|
|
11
|
+
</a>
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
<p align="center">
|
|
17
|
+
<img src="assets/instbyte-ad.png" width="900">
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npx instbyte
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Instbyte** is a high-speed, real-time, short-lived LAN sharing utility built for teams and developers who need to move snippets, links, files, and structured notes across devices instantly — without cloud accounts, logins, or external services.
|
|
25
|
+
|
|
26
|
+
It operates entirely on your local network, acting as a lightweight "digital dead-drop" for frictionless collaboration.
|
|
27
|
+
|
|
28
|
+
Instbyte can also be fully white-labelled — the difference between ***a tool you use*** and ***a tool you own***.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Install & Run
|
|
33
|
+
|
|
34
|
+
**Requires Node.js 18 or higher.**
|
|
35
|
+
|
|
36
|
+
The fastest way — no installation needed:
|
|
37
|
+
```bash
|
|
38
|
+
npx instbyte
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Or install globally and run from anywhere:
|
|
42
|
+
```bash
|
|
43
|
+
npm install -g instbyte
|
|
44
|
+
instbyte
|
|
45
|
+
```
|
|
46
|
+
Data and config live in the directory you run the command from. To keep a permanent instance, always run from the same folder or use a process manager like pm2.
|
|
47
|
+
|
|
48
|
+
That's it. Open the displayed URL in any browser on the same network.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## How It Works
|
|
53
|
+
|
|
54
|
+
One person runs the server — everyone else on the same WiFi opens the URL in their browser. No accounts, no setup on client devices.
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
[Your Machine] — runs: npx instbyte
|
|
58
|
+
↓
|
|
59
|
+
http://192.168.x.x:3000
|
|
60
|
+
↓
|
|
61
|
+
[Phone] [Laptop] [Tablet] — open URL in browser
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Sharing is instant:**
|
|
65
|
+
- Type or paste text → hit Send
|
|
66
|
+
- Paste anywhere on the page → auto-sends text or uploads images directly
|
|
67
|
+
- Drag a file anywhere onto the page → uploads
|
|
68
|
+
- Click any text item → copies to clipboard
|
|
69
|
+
- Click any file item → downloads
|
|
70
|
+
|
|
71
|
+
Everything syncs in real time across all connected devices. Content auto-deletes after 24 hours.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## For Teams
|
|
76
|
+
|
|
77
|
+
### Quick Setup (No Config)
|
|
78
|
+
Run `npx instbyte` on the machine that will act as the server. Share the displayed network URL with your team. Done.
|
|
79
|
+
|
|
80
|
+
### With Config File
|
|
81
|
+
For teams who want auth, custom retention, or branding — create `instbyte.config.json` in the directory where you run the command:
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"server": {
|
|
86
|
+
"port": 3000
|
|
87
|
+
},
|
|
88
|
+
"auth": {
|
|
89
|
+
"passphrase": "yourteampassword"
|
|
90
|
+
},
|
|
91
|
+
"storage": {
|
|
92
|
+
"maxFileSize": "2GB",
|
|
93
|
+
"retention": "24h"
|
|
94
|
+
},
|
|
95
|
+
"branding": {
|
|
96
|
+
"appName": "Team Hub",
|
|
97
|
+
"primaryColor": "#7c3aed",
|
|
98
|
+
"logoPath": "./logo.png"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Then run `npx instbyte` in the same directory. The config is picked up automatically.
|
|
104
|
+
|
|
105
|
+
### Keeping It Running
|
|
106
|
+
For persistent team use, run it as a background process:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
# using pm2
|
|
110
|
+
npm install -g pm2
|
|
111
|
+
pm2 start "npx instbyte" --name instbyte
|
|
112
|
+
pm2 save
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Or use any process manager you already have — systemd, screen, tmux.
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Docker
|
|
120
|
+
|
|
121
|
+
The fastest way to run Instbyte with Docker:
|
|
122
|
+
```bash
|
|
123
|
+
docker compose up -d
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Or with plain Docker:
|
|
127
|
+
```bash
|
|
128
|
+
docker run -d \
|
|
129
|
+
-p 3000:3000 \
|
|
130
|
+
-v $(pwd)/instbyte-data:/data \
|
|
131
|
+
-e INSTBYTE_DATA=/data \
|
|
132
|
+
-e INSTBYTE_UPLOADS=/data/uploads \
|
|
133
|
+
--name instbyte \
|
|
134
|
+
mohitgauniyal/instbyte
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Data persists in `./instbyte-data` on your host. The same folder used by `npx instbyte` — so switching between the two preserves all your data.
|
|
138
|
+
|
|
139
|
+
### With a config file
|
|
140
|
+
|
|
141
|
+
Mount your config file into the container:
|
|
142
|
+
```yaml
|
|
143
|
+
services:
|
|
144
|
+
instbyte:
|
|
145
|
+
image: mohitgauniyal/instbyte
|
|
146
|
+
ports:
|
|
147
|
+
- "3000:3000"
|
|
148
|
+
volumes:
|
|
149
|
+
- ./instbyte-data:/data
|
|
150
|
+
- ./instbyte.config.json:/app/instbyte.config.json
|
|
151
|
+
environment:
|
|
152
|
+
- INSTBYTE_DATA=/data
|
|
153
|
+
- INSTBYTE_UPLOADS=/data/uploads
|
|
154
|
+
restart: unless-stopped
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Changing the port
|
|
158
|
+
|
|
159
|
+
Edit the host port in `docker-compose.yml`:
|
|
160
|
+
```yaml
|
|
161
|
+
ports:
|
|
162
|
+
- "8080:3000" # now runs on port 8080
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
> **Note:** File uploads may not work correctly on Windows Docker Desktop due to network limitations. For Windows, use `npx instbyte` directly or deploy on a Linux server.
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Reverse Proxy
|
|
170
|
+
|
|
171
|
+
For teams who want to access Instbyte over HTTPS or from outside their local network, running it behind a reverse proxy is the standard approach.
|
|
172
|
+
|
|
173
|
+
> **Important:** Instbyte uses WebSockets for real-time sync. Your proxy must be configured to forward WebSocket connections — otherwise the app will load but live updates will stop working.
|
|
174
|
+
|
|
175
|
+
### Nginx
|
|
176
|
+
```nginx
|
|
177
|
+
server {
|
|
178
|
+
listen 80;
|
|
179
|
+
server_name instbyte.yourdomain.com;
|
|
180
|
+
|
|
181
|
+
# Redirect HTTP to HTTPS
|
|
182
|
+
return 301 https://$host$request_uri;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
server {
|
|
186
|
+
listen 443 ssl;
|
|
187
|
+
server_name instbyte.yourdomain.com;
|
|
188
|
+
|
|
189
|
+
ssl_certificate /etc/letsencrypt/live/instbyte.yourdomain.com/fullchain.pem;
|
|
190
|
+
ssl_certificate_key /etc/letsencrypt/live/instbyte.yourdomain.com/privkey.pem;
|
|
191
|
+
|
|
192
|
+
# Increase max upload size to match Instbyte's limit
|
|
193
|
+
client_max_body_size 2G;
|
|
194
|
+
|
|
195
|
+
location / {
|
|
196
|
+
proxy_pass http://localhost:3000;
|
|
197
|
+
proxy_http_version 1.1;
|
|
198
|
+
|
|
199
|
+
# Required for WebSocket support
|
|
200
|
+
proxy_set_header Upgrade $http_upgrade;
|
|
201
|
+
proxy_set_header Connection "upgrade";
|
|
202
|
+
|
|
203
|
+
proxy_set_header Host $host;
|
|
204
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
205
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
206
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
207
|
+
|
|
208
|
+
# Prevent proxy timeouts on large uploads
|
|
209
|
+
proxy_read_timeout 300s;
|
|
210
|
+
proxy_send_timeout 300s;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Get a free SSL certificate with Certbot:
|
|
216
|
+
```bash
|
|
217
|
+
certbot --nginx -d instbyte.yourdomain.com
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### Caddy
|
|
221
|
+
|
|
222
|
+
Caddy automatically handles HTTPS certificates — no Certbot needed.
|
|
223
|
+
```caddy
|
|
224
|
+
instbyte.yourdomain.com {
|
|
225
|
+
reverse_proxy localhost:3000
|
|
226
|
+
}
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
Caddy handles WebSocket forwarding and HTTPS automatically. That's all you need.
|
|
230
|
+
|
|
231
|
+
### With Docker
|
|
232
|
+
|
|
233
|
+
If running Instbyte via Docker, proxy to the mapped host port:
|
|
234
|
+
```nginx
|
|
235
|
+
proxy_pass http://localhost:3000;
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Or use Docker's internal network — replace `localhost` with the container name:
|
|
239
|
+
```nginx
|
|
240
|
+
proxy_pass http://instbyte:3000;
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
### Keeping it LAN-only
|
|
244
|
+
|
|
245
|
+
If you don't want external access but still want HTTPS on your local network, tools like [Tailscale](https://tailscale.com) or [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/) are good options that require no open ports.
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Configuration
|
|
250
|
+
|
|
251
|
+
Instbyte works out of the box with zero configuration. All options are optional — only include what you want to override.
|
|
252
|
+
|
|
253
|
+
| Key | Default | Description |
|
|
254
|
+
|---|---|---|
|
|
255
|
+
| `server.port` | `3000` | Port to run on. Overridden by `PORT` env var if set |
|
|
256
|
+
| `auth.passphrase` | `""` | Shared passphrase for access. Empty = no auth |
|
|
257
|
+
| `storage.maxFileSize` | `"2GB"` | Max upload size. Accepts `KB`, `MB`, `GB` |
|
|
258
|
+
| `storage.retention` | `"24h"` | How long before items auto-delete. Accepts `h`, `d`, or `"never"` to disable cleanup entirely |
|
|
259
|
+
| `branding.appName` | `"Instbyte"` | App name in header and browser tab |
|
|
260
|
+
| `branding.primaryColor` | `"#111827"` | Primary brand color in hex. Full palette auto-derived |
|
|
261
|
+
| `branding.logoPath` | — | Path to your logo file relative to where you run the command |
|
|
262
|
+
| `branding.faviconPath` | — | Path to custom favicon. Auto-generated from logo if omitted |
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Branding
|
|
267
|
+
|
|
268
|
+
Instbyte can be fully white-labelled — no code changes required. Set a name, a color, and a logo and the entire UI updates automatically including the login page, favicon, buttons, and active states.
|
|
269
|
+
|
|
270
|
+
```json
|
|
271
|
+
{
|
|
272
|
+
"branding": {
|
|
273
|
+
"appName": "Team Hub",
|
|
274
|
+
"primaryColor": "#7c3aed",
|
|
275
|
+
"logoPath": "./my-logo.png"
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
The difference between *a tool you use* and *a tool you own.*
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## Features
|
|
285
|
+
|
|
286
|
+
**Real-time sync** — every action is instantly reflected across all connected devices via WebSockets.
|
|
287
|
+
|
|
288
|
+
**Channels** — organise shared content into named channels. Create, rename, pin, and delete channels on the fly. Pinned channels are protected from accidental deletion.
|
|
289
|
+
|
|
290
|
+
**Rich content** — markdown rendering, syntax highlighting for code, inline image preview, video and audio playback, PDF preview, and text file viewing — all without downloading.
|
|
291
|
+
|
|
292
|
+
**Search** — full-text search across all channels.
|
|
293
|
+
|
|
294
|
+
**Smart port handling** — if port 3000 is busy, Instbyte finds the next available port automatically.
|
|
295
|
+
|
|
296
|
+
**Short-lived by design** — content auto-deletes after 24 hours by default. Configure retention per your needs, or disable cleanup entirely.
|
|
297
|
+
|
|
298
|
+
**QR join** — built-in QR code so phones can join instantly without typing the URL.
|
|
299
|
+
|
|
300
|
+
**Dark mode** — follows system preference automatically. Override with the toggle in the header.
|
|
301
|
+
|
|
302
|
+
**Undo delete** — recover accidentally removed items instantly before they’re gone.
|
|
303
|
+
|
|
304
|
+
**New drop alerts** — get a notification sound when something is added in your current channel and visual indicators for activity in others.
|
|
305
|
+
|
|
306
|
+
**Presence awareness** — see how many people are currently connected in real time.
|
|
307
|
+
|
|
308
|
+
**Read receipts** — see how many devices have viewed each shared item. Updates live as teammates open the page.
|
|
309
|
+
|
|
310
|
+
**Item management** — add optional titles to label any item for future reference. Edit text items inline without deleting and re-pasting. Pinned items are protected from both manual deletion and auto-cleanup.
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
## Keyboard Shortcuts
|
|
314
|
+
|
|
315
|
+
| Key | Action |
|
|
316
|
+
|---|---|
|
|
317
|
+
| `/` | Focus search |
|
|
318
|
+
| `Escape` | Close previews, menus, or blur input |
|
|
319
|
+
| `Ctrl/Cmd + Enter` | Send message |
|
|
320
|
+
| `Ctrl/Cmd + K` | Jump to message input |
|
|
321
|
+
| `Tab` | Cycle channels |
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## Manual / Self-hosted from Source
|
|
326
|
+
|
|
327
|
+
```bash
|
|
328
|
+
git clone https://github.com/mohitgauniyal/instbyte
|
|
329
|
+
cd instbyte
|
|
330
|
+
npm install
|
|
331
|
+
node server/server.js
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
---
|
|
335
|
+
|
|
336
|
+
## Use Cases
|
|
337
|
+
|
|
338
|
+
- Moving content between your phone and laptop over WiFi
|
|
339
|
+
- Sharing API payloads, logs, or screenshots during a sprint
|
|
340
|
+
- A lightweight team clipboard during standups or pair sessions
|
|
341
|
+
- Home lab file sharing without setting up NAS or cloud sync
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## Versioning
|
|
346
|
+
|
|
347
|
+
Instbyte follows [Semantic Versioning](https://semver.org). See [Releases](https://github.com/mohitgauniyal/instbyte/releases) for full changelog.
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
351
|
+
## Contributing
|
|
352
|
+
|
|
353
|
+
Instbyte is intentionally lightweight and LAN-first. If you want to extend it — CLI tools, themes, integrations — open an issue or submit a pull request.
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
## License
|
|
358
|
+
|
|
359
|
+
This project is licensed under the MIT License — see the [LICENSE](LICENSE) file for details.
|
|
360
|
+
|