instbyte 1.9.3 → 1.10.0
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/README.md +49 -132
- package/bin/instbyte.js +1 -0
- package/client/css/app.css +522 -0
- package/client/index.html +38 -1
- package/client/js/app.js +557 -18
- package/client/sw.js +10 -0
- package/package.json +1 -1
- package/server/server.js +237 -7
package/README.md
CHANGED
|
@@ -102,147 +102,19 @@ For teams who want auth, custom retention, or branding — create `instbyte.conf
|
|
|
102
102
|
|
|
103
103
|
Then run `npx instbyte` in the same directory. The config is picked up automatically.
|
|
104
104
|
|
|
105
|
-
|
|
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.
|
|
105
|
+
For persistent deployment options including pm2, systemd, and Docker, see the [Deployment Guide](docs/deployment.md).
|
|
116
106
|
|
|
117
107
|
---
|
|
118
108
|
|
|
119
109
|
## Docker
|
|
120
110
|
|
|
121
|
-
|
|
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.
|
|
111
|
+
For Docker setup, persistent data, and config file mounting, see [Deployment Guide](docs/deployment.md).
|
|
166
112
|
|
|
167
113
|
---
|
|
168
114
|
|
|
169
115
|
## Reverse Proxy
|
|
170
116
|
|
|
171
|
-
For
|
|
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.
|
|
117
|
+
For Nginx, Caddy, and HTTPS setup, see [Deployment Guide](docs/deployment.md).
|
|
246
118
|
|
|
247
119
|
---
|
|
248
120
|
|
|
@@ -305,13 +177,47 @@ The difference between *a tool you use* and *a tool you own.*
|
|
|
305
177
|
|
|
306
178
|
**Presence awareness** — see how many people are currently connected in real time.
|
|
307
179
|
|
|
180
|
+
**Live broadcast** — share your screen in real time with everyone on the network. Viewers join instantly from their browser, no plugins or installs needed. Built on WebRTC for smooth, low-latency video. Includes mic audio, viewer mute/unmute, raise hand, and screen capture to channel.
|
|
181
|
+
|
|
308
182
|
**Read receipts** — see how many devices have viewed each shared item. Updates live as teammates open the page.
|
|
309
183
|
|
|
310
184
|
**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.
|
|
185
|
+
|
|
186
|
+
**Mobile ready** — install as a PWA directly from your browser. Add to Home Screen on iOS or Android for a native app feel without the App Store.
|
|
187
|
+
|
|
188
|
+
**Security hardened** — rate limiting on all write endpoints, magic number file validation, filename sanitisation, and forced download for executable file types.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Broadcasting
|
|
193
|
+
|
|
194
|
+
One person shares their screen — everyone else on the network watches live in their browser. No plugins, no accounts, no external services. Built on WebRTC for smooth, low-latency video.
|
|
195
|
+
|
|
196
|
+
### How to broadcast
|
|
197
|
+
|
|
198
|
+
Click **📡 Broadcast** in the composer. Your browser will ask you to choose a screen, window, or tab to share. Once you pick one, a live bar appears at the top for all connected devices — teammates click **Join** to watch.
|
|
199
|
+
|
|
200
|
+
While broadcasting you can still use Instbyte normally — send text, drop files, switch channels. The broadcast runs in the background.
|
|
201
|
+
|
|
202
|
+
To stop, click **⏹ Stop** in the composer or use the browser's built-in "Stop sharing" bar.
|
|
203
|
+
|
|
204
|
+
### As a viewer
|
|
205
|
+
|
|
206
|
+
When a broadcast is live, a bar appears at the top of the page. Click **Join** to open the viewer panel. The panel is draggable and resizable — move it anywhere on your screen.
|
|
207
|
+
|
|
208
|
+
- **📸 Capture** — saves the current frame as an image to the active channel
|
|
209
|
+
- **✋ Raise hand** — notifies the broadcaster with a sound and toast
|
|
210
|
+
- **🔇 / 🔊** — mute and unmute audio
|
|
211
|
+
- **─** — minimize the panel without leaving the broadcast
|
|
212
|
+
- **✕** — leave the broadcast entirely
|
|
213
|
+
|
|
214
|
+
For HTTPS setup, enabling broadcast for all devices, and advanced network configuration, see the [Deployment Guide](docs/deployment.md#broadcasting).
|
|
215
|
+
|
|
311
216
|
---
|
|
312
217
|
|
|
313
218
|
## Keyboard Shortcuts
|
|
314
219
|
|
|
220
|
+
```
|
|
315
221
|
| Key | Action |
|
|
316
222
|
|---|---|
|
|
317
223
|
| `/` | Focus search |
|
|
@@ -335,10 +241,19 @@ node server/server.js
|
|
|
335
241
|
|
|
336
242
|
## Use Cases
|
|
337
243
|
|
|
338
|
-
- Moving content between your phone and laptop over WiFi
|
|
244
|
+
- Moving content between your phone and laptop, or just any device over WiFi
|
|
339
245
|
- Sharing API payloads, logs, or screenshots during a sprint
|
|
340
246
|
- A lightweight team clipboard during standups or pair sessions
|
|
341
247
|
- Home lab file sharing without setting up NAS or cloud sync
|
|
248
|
+
- Piping build logs or stack traces from CI or terminal directly into a shared channel
|
|
249
|
+
- Sharing sensitive credentials or config files over LAN without leaving a cloud trail
|
|
250
|
+
- Live screen sharing during standups, design reviews, or debugging sessions — no Zoom link needed
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Terminal Usage
|
|
255
|
+
|
|
256
|
+
Push content from your terminal using curl — no browser needed. See [Terminal Usage Guide](docs/terminal-usage.md).
|
|
342
257
|
|
|
343
258
|
---
|
|
344
259
|
|
|
@@ -352,6 +267,8 @@ Instbyte follows [Semantic Versioning](https://semver.org). See [Releases](https
|
|
|
352
267
|
|
|
353
268
|
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
269
|
|
|
270
|
+
The codebase has a full test suite (195 tests across unit and integration). Run `npm test` before submitting anything. Issues tagged **good first issue** are a good starting point.
|
|
271
|
+
|
|
355
272
|
---
|
|
356
273
|
|
|
357
274
|
## License
|