@harry-kp/vortix 0.1.8 → 0.2.1
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/CHANGELOG.md +43 -0
- package/README.md +323 -9
- package/npm-shrinkwrap.json +2 -2
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,49 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.2.1] - 2026-04-04
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Detect missing `resolvconf` before WireGuard connect on Linux ([#186](https://github.com/Harry-kp/vortix/issues/186), [#187](https://github.com/Harry-kp/vortix/pull/187)) — Vortix now shows clear install instructions instead of cryptic wg-quick errors when DNS is configured but resolvconf isn't available on Arch/Fedora
|
|
15
|
+
- Add CLI dependency check to catch missing tools before connection attempts
|
|
16
|
+
|
|
17
|
+
### Documentation
|
|
18
|
+
|
|
19
|
+
- Add comprehensive Arch Linux troubleshooting FAQ and distribution-specific guidance in README
|
|
20
|
+
- Add WireGuard configuration guide explaining AllowedIPs, cloud provider limitations, and routing best practices
|
|
21
|
+
- Add quick error reference table for common connection issues
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## [0.2.0] - 2026-03-31
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
|
|
29
|
+
- Add a CLI-first headless mode with structured JSON output for scripting, automation, and AI-agent workflows, including `vortix status` for scriptable connection and kill-switch visibility ([#156](https://github.com/Harry-kp/vortix/issues/156), [#176](https://github.com/Harry-kp/vortix/pull/176)).
|
|
30
|
+
- Add the new flip-panel dashboard interaction with animated card transitions ([#165](https://github.com/Harry-kp/vortix/pull/165)).
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
- VPN sessions can now keep running after the TUI or CLI exits, so leaving the interface no longer tears down an active connection unexpectedly ([#155](https://github.com/Harry-kp/vortix/issues/155), [#176](https://github.com/Harry-kp/vortix/pull/176)).
|
|
35
|
+
- Make `vortix down` wait for the OpenVPN daemon to fully exit before reporting success ([#176](https://github.com/Harry-kp/vortix/pull/176)).
|
|
36
|
+
|
|
37
|
+
### Fixed
|
|
38
|
+
|
|
39
|
+
- Remove the stale quit confirmation now that active connections can continue independently of the UI process ([#179](https://github.com/Harry-kp/vortix/issues/179), [#182](https://github.com/Harry-kp/vortix/pull/182)).
|
|
40
|
+
- Fix help overlay scrolling edge cases, including opening before the first resize and clamping scroll correctly after keyboard and mouse input ([#180](https://github.com/Harry-kp/vortix/issues/180), [#182](https://github.com/Harry-kp/vortix/pull/182)).
|
|
41
|
+
- Harden CLI lifecycle handling around disconnect flow, error paths, and config isolation ([#176](https://github.com/Harry-kp/vortix/pull/176)).
|
|
42
|
+
|
|
43
|
+
### Documentation
|
|
44
|
+
|
|
45
|
+
- Clarify current Linux support expectations and improve Linux bug-reporting guidance for distro-specific issues ([#185](https://github.com/Harry-kp/vortix/pull/185)).
|
|
46
|
+
|
|
47
|
+
### CI
|
|
48
|
+
|
|
49
|
+
- Add Fedora 41 CI coverage for `cargo check`, `cargo clippy`, `cargo test`, and `cargo doc`, including unprivileged test execution for Linux-specific validation ([#160](https://github.com/Harry-kp/vortix/issues/160), [#183](https://github.com/Harry-kp/vortix/pull/183)).
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
10
53
|
## [0.1.8] - 2026-03-19
|
|
11
54
|
|
|
12
55
|
### Features
|
package/README.md
CHANGED
|
@@ -49,6 +49,14 @@ Existing options (`wg show`, NetworkManager, Tunnelblick) either lack real-time
|
|
|
49
49
|
- **Config Viewer** — Inspect profile configurations directly within the TUI
|
|
50
50
|
- **Keyboard-driven** — No mouse required
|
|
51
51
|
|
|
52
|
+
## Platform Support
|
|
53
|
+
|
|
54
|
+
Vortix is actively developed and used primarily on macOS.
|
|
55
|
+
|
|
56
|
+
Linux support is a current focus and is improving quickly, with CI coverage for Ubuntu and Fedora. Linux environments still vary a lot across distributions, firewall backends, DNS tooling, and privilege models, so distro-specific issues may still exist.
|
|
57
|
+
|
|
58
|
+
If you use Vortix on Linux and hit a problem, please open an issue and include `vortix report` output when possible. Ubuntu, Fedora, and Arch users are especially helpful when testing release candidates and validating fixes before release. If you want to help test Linux support, join the [Linux tester discussion](https://github.com/Harry-kp/vortix/discussions/184).
|
|
59
|
+
|
|
52
60
|
## Requirements
|
|
53
61
|
|
|
54
62
|
### Runtime dependencies
|
|
@@ -58,11 +66,17 @@ Existing options (`wg show`, NetworkManager, Tunnelblick) either lack real-time
|
|
|
58
66
|
| `curl` | Pre-installed | `apt install curl` | Telemetry and IP detection |
|
|
59
67
|
| `openvpn` | `brew install openvpn` | `apt install openvpn` | OpenVPN sessions |
|
|
60
68
|
| `wireguard-tools` | `brew install wireguard-tools` | `apt install wireguard-tools` | WireGuard sessions |
|
|
69
|
+
| `resolvconf` / `systemd-resolved` | N/A (uses native DNS) | `systemd-resolvconf` or `openresolv` | WireGuard DNS management (optional, needed if DNS in config) |
|
|
61
70
|
| `iptables` or `nftables` | N/A (uses `pfctl`) | Pre-installed | Kill switch |
|
|
62
71
|
| `iproute2` | N/A (uses `ifconfig`) | Pre-installed | Interface detection |
|
|
63
72
|
|
|
64
73
|
> Vortix checks for missing tools at startup and shows a warning toast with install instructions.
|
|
65
74
|
|
|
75
|
+
**DNS tools note:** If your WireGuard profile includes a `DNS =` directive, Vortix will automatically detect and warn about missing DNS tools. Install accordingly:
|
|
76
|
+
- **Arch/Fedora (systemd-based):** `sudo pacman -S systemd-resolvconf` or `sudo dnf install systemd-resolved`
|
|
77
|
+
- **Debian/Ubuntu:** `sudo apt install systemd-resolved` (usually pre-installed)
|
|
78
|
+
- **Alpine/Void (OpenRC):** Vortix falls back to `/etc/resolv.conf` editing automatically
|
|
79
|
+
|
|
66
80
|
### Build dependencies (source installs only)
|
|
67
81
|
|
|
68
82
|
- Rust 1.75+
|
|
@@ -72,20 +86,20 @@ Existing options (`wg show`, NetworkManager, Tunnelblick) either lack real-time
|
|
|
72
86
|
|
|
73
87
|
**Ubuntu/Debian:**
|
|
74
88
|
```bash
|
|
75
|
-
sudo apt install curl wireguard-tools openvpn iptables iproute2
|
|
89
|
+
sudo apt install curl wireguard-tools openvpn iptables iproute2 systemd-resolved
|
|
76
90
|
```
|
|
77
91
|
|
|
78
92
|
**Fedora/RHEL:**
|
|
79
93
|
```bash
|
|
80
|
-
sudo dnf install curl wireguard-tools openvpn iptables iproute
|
|
94
|
+
sudo dnf install curl wireguard-tools openvpn iptables iproute systemd-resolved
|
|
81
95
|
```
|
|
82
96
|
|
|
83
97
|
**Arch Linux** (only needed for source builds — `pacman -S vortix` handles deps automatically):
|
|
84
98
|
```bash
|
|
85
|
-
sudo pacman -S curl wireguard-tools openvpn iptables iproute2
|
|
99
|
+
sudo pacman -S curl wireguard-tools openvpn iptables iproute2 systemd-resolvconf
|
|
86
100
|
```
|
|
87
101
|
|
|
88
|
-
> **DNS
|
|
102
|
+
> **DNS management:** Vortix uses `resolvconf` (via `systemd-resolvconf` or `openresolv`) to manage DNS when your WireGuard profile contains `DNS =`. On systemd distros (most modern Linux), this is automatic via systemd-resolved. Non-systemd distros (Alpine, Void, Gentoo OpenRC) will use `/etc/resolv.conf` editing as a fallback.
|
|
89
103
|
|
|
90
104
|
## Installation
|
|
91
105
|
|
|
@@ -154,16 +168,88 @@ After this, `sudo vortix` works as expected.
|
|
|
154
168
|
- Nix (`nix profile install`) — **no**, installs to Nix profile bin
|
|
155
169
|
- macOS — **no**, sudo preserves user PATH
|
|
156
170
|
|
|
171
|
+
### Linux support note
|
|
172
|
+
|
|
173
|
+
Most day-to-day development happens on macOS. Linux support is continuously tested in CI, but real-world distro coverage is still growing. If something behaves differently on your Linux setup, please treat that as useful signal and report it rather than assuming it is expected.
|
|
174
|
+
|
|
157
175
|
## Usage
|
|
158
176
|
|
|
177
|
+
Vortix has two modes: an interactive TUI dashboard (default) and a headless CLI for scripting, automation, and AI agents.
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
sudo vortix # Launch TUI dashboard (default)
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### CLI Commands
|
|
184
|
+
|
|
185
|
+
Every subcommand supports `--json` for machine-readable output and `--quiet` for silent operation (exit code only).
|
|
186
|
+
|
|
187
|
+
**Connection:**
|
|
188
|
+
```bash
|
|
189
|
+
sudo vortix up work-vpn # Connect to a profile
|
|
190
|
+
sudo vortix down # Disconnect (graceful)
|
|
191
|
+
sudo vortix down --force # Force-disconnect (SIGKILL)
|
|
192
|
+
sudo vortix reconnect # Reconnect to last used profile
|
|
193
|
+
vortix status # Show connection state + telemetry
|
|
194
|
+
vortix status --brief # One-line: "● Connected to work-vpn"
|
|
195
|
+
vortix status --watch # Live updates every 2s
|
|
196
|
+
vortix status --watch --json # NDJSON stream for monitoring
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**Profile Management:**
|
|
159
200
|
```bash
|
|
160
|
-
|
|
161
|
-
vortix
|
|
162
|
-
vortix
|
|
163
|
-
vortix
|
|
164
|
-
vortix
|
|
201
|
+
vortix list # List all imported profiles
|
|
202
|
+
vortix list --names-only # Profile names for scripting
|
|
203
|
+
vortix list --sort last-used # Most recently used first
|
|
204
|
+
vortix import ./work.conf # Import a WireGuard profile
|
|
205
|
+
vortix import ./configs/ # Bulk import from directory
|
|
206
|
+
vortix show work-vpn # Display profile configuration
|
|
207
|
+
vortix show work-vpn --raw # Raw config file contents
|
|
208
|
+
vortix delete old-vpn --yes # Delete without confirmation
|
|
209
|
+
vortix rename old-vpn new-vpn # Rename a profile
|
|
165
210
|
```
|
|
166
211
|
|
|
212
|
+
**Security:**
|
|
213
|
+
```bash
|
|
214
|
+
sudo vortix killswitch auto # Set kill switch to auto mode
|
|
215
|
+
sudo vortix killswitch always # Always-on kill switch
|
|
216
|
+
vortix killswitch # Show current mode
|
|
217
|
+
sudo vortix release-killswitch # Emergency firewall release
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**System:**
|
|
221
|
+
```bash
|
|
222
|
+
vortix info # Config paths, versions, profile count
|
|
223
|
+
vortix update # Self-update from crates.io
|
|
224
|
+
vortix report # Generate bug report
|
|
225
|
+
vortix completions bash >> ~/.bashrc # Shell completions
|
|
226
|
+
vortix completions zsh > ~/.zfunc/_vortix
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
**JSON output for AI agents / scripts:**
|
|
230
|
+
```bash
|
|
231
|
+
# Structured JSON envelope on every command
|
|
232
|
+
vortix status --json
|
|
233
|
+
# {"ok":true,"command":"status","data":{...},"next_actions":[...]}
|
|
234
|
+
|
|
235
|
+
vortix list --json | jq '.data[].name' # Extract profile names
|
|
236
|
+
|
|
237
|
+
# NDJSON stream for monitoring
|
|
238
|
+
vortix status --watch --json
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**Exit codes** are semantic and scriptable:
|
|
242
|
+
|
|
243
|
+
| Code | Meaning |
|
|
244
|
+
|------|---------|
|
|
245
|
+
| 0 | Success |
|
|
246
|
+
| 1 | General error |
|
|
247
|
+
| 2 | Permission denied (needs sudo) |
|
|
248
|
+
| 3 | Not found (profile doesn't exist) |
|
|
249
|
+
| 4 | State conflict (already connected) |
|
|
250
|
+
| 5 | Missing dependency |
|
|
251
|
+
| 6 | Timeout |
|
|
252
|
+
|
|
167
253
|
### Keybindings
|
|
168
254
|
|
|
169
255
|
| Key | Action |
|
|
@@ -318,6 +404,18 @@ ip_api_fallbacks = ["https://api.ipify.org", "https://icanhazip.com", "https://i
|
|
|
318
404
|
|
|
319
405
|
## Troubleshooting
|
|
320
406
|
|
|
407
|
+
### Quick Reference: Common Errors
|
|
408
|
+
|
|
409
|
+
| Error Message | Cause | Solution |
|
|
410
|
+
|---------------|-------|----------|
|
|
411
|
+
| `Missing dependencies: resolvconf (systemd)` | WireGuard profile has DNS but `resolvconf` not installed | Run `sudo pacman -S systemd-resolvconf` (Arch) or `sudo dnf install systemd-resolved` (Fedora) |
|
|
412
|
+
| `iptables-restore: unable to initialize table` | Cloud kernel doesn't support iptables; profile uses `AllowedIPs = 0.0.0.0/0` | Change `AllowedIPs` to `10.0.0.0/8` or disable kill switch |
|
|
413
|
+
| `wg-quick: The config file must be a valid interface name` | Profile name > 15 characters | Rename: `vortix rename long-name short-name` |
|
|
414
|
+
| `Connection succeeded but no internet` | `AllowedIPs` doesn't include your target | Add target IP to `AllowedIPs` in config |
|
|
415
|
+
| `connection timed out` or `Connection refused` | Can't reach VPN endpoint | Check firewall/cloud provider port restrictions |
|
|
416
|
+
|
|
417
|
+
### General Issues
|
|
418
|
+
|
|
321
419
|
**Profiles missing after upgrade (Linux)**
|
|
322
420
|
|
|
323
421
|
If you previously ran vortix with `sudo` and profiles were stored in `/root/.config/vortix/`, the app will offer a one-time migration prompt. Accept it to move your data to `~/.config/vortix/` under your real user account.
|
|
@@ -336,6 +434,222 @@ If config files are owned by root, fix ownership:
|
|
|
336
434
|
sudo chown -R $(whoami) ~/.config/vortix/
|
|
337
435
|
```
|
|
338
436
|
|
|
437
|
+
### Arch Linux & Distribution-Specific FAQ
|
|
438
|
+
|
|
439
|
+
#### Q: Connection fails with "Missing dependencies: resolvconf (systemd)"
|
|
440
|
+
|
|
441
|
+
**A:** This happens on Arch, Fedora, and NixOS when your WireGuard profile has DNS settings but `resolvconf` isn't installed. These distros don't include DNS management tools by default.
|
|
442
|
+
|
|
443
|
+
**Fix:**
|
|
444
|
+
```bash
|
|
445
|
+
# Arch Linux (systemd-based)
|
|
446
|
+
sudo pacman -S systemd-resolvconf
|
|
447
|
+
|
|
448
|
+
# Fedora (systemd-based)
|
|
449
|
+
sudo dnf install systemd-resolved
|
|
450
|
+
|
|
451
|
+
# Debian/Ubuntu (should be pre-installed)
|
|
452
|
+
sudo apt install systemd-resolved
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
Vortix will now automatically detect `resolvconf` and proceed with the connection. No restart needed.
|
|
456
|
+
|
|
457
|
+
#### Q: Connection fails with "iptables-restore: unable to initialize table"
|
|
458
|
+
|
|
459
|
+
**A:** Your system doesn't have the `ip_tables` kernel module. This typically happens on:
|
|
460
|
+
- **Cloud providers** (DigitalOcean, AWS Lambda, Google Cloud Run, etc.) that intentionally disable netfilter
|
|
461
|
+
- **Containers** with minimal kernel capabilities
|
|
462
|
+
- **Custom kernels** built without netfilter support
|
|
463
|
+
|
|
464
|
+
This is **not a Vortix issue** — it's a system limitation that affects all Linux VPN tools, specifically:
|
|
465
|
+
- **Vortix's kill switch** (requires iptables/nftables for firewall rules)
|
|
466
|
+
- **wg-quick's automatic routing** (when `AllowedIPs = 0.0.0.0/0` is set in the WireGuard config)
|
|
467
|
+
|
|
468
|
+
**Workaround 1: Disable the kill switch (doesn't help on cloud providers):**
|
|
469
|
+
```bash
|
|
470
|
+
sudo vortix killswitch off
|
|
471
|
+
sudo vortix up your-profile
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
This only works if your WireGuard profile doesn't use `AllowedIPs = 0.0.0.0/0`. If it does, wg-quick will still try to configure iptables.
|
|
475
|
+
|
|
476
|
+
**Workaround 2: Modify your WireGuard profile for cloud providers:**
|
|
477
|
+
|
|
478
|
+
If your profile has `AllowedIPs = 0.0.0.0/0` (route all traffic through VPN), wg-quick automatically configures firewall rules. On cloud providers, change it to a more restrictive setting:
|
|
479
|
+
|
|
480
|
+
```ini
|
|
481
|
+
# ❌ This requires iptables (will fail on cloud providers)
|
|
482
|
+
AllowedIPs = 0.0.0.0/0
|
|
483
|
+
|
|
484
|
+
# ✅ This only routes VPN subnet (no iptables needed)
|
|
485
|
+
AllowedIPs = 10.0.0.0/8
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
Edit your profile with `vortix show <profile> --raw` to see the current `AllowedIPs` setting.
|
|
489
|
+
|
|
490
|
+
**Verify if your system supports iptables:**
|
|
491
|
+
```bash
|
|
492
|
+
modprobe ip_tables && echo "✓ Supported" || echo "✗ Not available on this kernel"
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
**Best practice for cloud providers:**
|
|
496
|
+
If you need to route all traffic through the VPN on a cloud provider, you'll need an instance with a standard kernel (not a restricted cloud kernel). Alternatively, use a home server, dedicated host, or bare metal with full kernel support.
|
|
497
|
+
|
|
498
|
+
#### Q: How do I know what DNS resolver my system uses?
|
|
499
|
+
|
|
500
|
+
**A:** Run this to check which method Vortix will use:
|
|
501
|
+
|
|
502
|
+
```bash
|
|
503
|
+
# Systemd (most modern Linux distros)
|
|
504
|
+
resolvectl status 2>/dev/null && echo "✓ Using systemd-resolved"
|
|
505
|
+
|
|
506
|
+
# NetworkManager
|
|
507
|
+
nmcli dev show 2>/dev/null | grep DNS && echo "✓ Using NetworkManager"
|
|
508
|
+
|
|
509
|
+
# Fallback check
|
|
510
|
+
cat /etc/resolv.conf | head -3
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
Vortix automatically detects and respects your system's DNS setup.
|
|
514
|
+
|
|
515
|
+
#### Q: Can I use Vortix on non-systemd distros?
|
|
516
|
+
|
|
517
|
+
**A:** Yes, but with limitations on DNS management:
|
|
518
|
+
- **Arch, Fedora, Ubuntu, Debian** → Full support (systemd or alternatives available)
|
|
519
|
+
- **Alpine, Void, Gentoo (OpenRC)** → Vortix falls back to editing `/etc/resolv.conf` directly
|
|
520
|
+
- **NixOS** → Works, but DNS may require custom configuration
|
|
521
|
+
|
|
522
|
+
If you use a non-systemd distro and hit issues, please [open an issue](https://github.com/Harry-kp/vortix/issues) with `vortix report` output.
|
|
523
|
+
|
|
524
|
+
#### Q: Why does the connection succeed but DNS doesn't work?
|
|
525
|
+
|
|
526
|
+
**A:** If `vortix up` succeeds but you can't resolve domains, it means:
|
|
527
|
+
|
|
528
|
+
1. **The VPN tunnel is active** (IP changing works)
|
|
529
|
+
2. **DNS configuration failed** (resolvconf not working properly)
|
|
530
|
+
|
|
531
|
+
**Debug steps:**
|
|
532
|
+
```bash
|
|
533
|
+
# Check if resolvconf is working
|
|
534
|
+
resolvconf --version
|
|
535
|
+
|
|
536
|
+
# Check active DNS servers
|
|
537
|
+
resolvectl status | grep -A5 "DNS Servers"
|
|
538
|
+
|
|
539
|
+
# Manually test DNS through the VPN
|
|
540
|
+
dig @8.8.8.8 google.com
|
|
541
|
+
|
|
542
|
+
# Check the system's resolv.conf symlink
|
|
543
|
+
ls -la /etc/resolv.conf
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
If `/etc/resolv.conf` is not managed by systemd (not a symlink to `/run/systemd/`), you may need to install `systemd-resolvconf` or `openresolv`.
|
|
547
|
+
|
|
548
|
+
#### Q: WireGuard interface name is too long
|
|
549
|
+
|
|
550
|
+
**A:** Linux WireGuard interfaces have a 15-character name limit. If your profile name is longer, wg-quick will fail with "invalid interface name".
|
|
551
|
+
|
|
552
|
+
**Fix:** Rename your profile to something shorter:
|
|
553
|
+
```bash
|
|
554
|
+
vortix rename my-very-long-profile-name work-vpn
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
WireGuard interface names should contain only alphanumeric characters, hyphens, and underscores.
|
|
558
|
+
|
|
559
|
+
#### Q: How do I report a distro-specific issue?
|
|
560
|
+
|
|
561
|
+
**A:** Include this information when opening an issue:
|
|
562
|
+
|
|
563
|
+
```bash
|
|
564
|
+
vortix report # Generates a complete report
|
|
565
|
+
uname -a # Kernel version
|
|
566
|
+
cat /etc/os-release # Distro info
|
|
567
|
+
systemctl --version # Init system
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
Tested and supported Linux distros in CI: **Ubuntu 20.04/22.04**, **Fedora 40+**, **Arch Linux**. If you use a different distro and hit issues, that's valuable signal for the project.
|
|
571
|
+
|
|
572
|
+
### WireGuard Configuration Guide
|
|
573
|
+
|
|
574
|
+
#### Understanding AllowedIPs
|
|
575
|
+
|
|
576
|
+
The `AllowedIPs` setting in your WireGuard config determines what traffic goes through the VPN:
|
|
577
|
+
|
|
578
|
+
```ini
|
|
579
|
+
# Route ALL traffic through VPN (requires iptables/nftables for firewall rules)
|
|
580
|
+
AllowedIPs = 0.0.0.0/0 # ⚠️ May fail on cloud providers, containers
|
|
581
|
+
|
|
582
|
+
# Route only VPN subnet traffic (no special firewall rules needed)
|
|
583
|
+
AllowedIPs = 10.0.0.0/8 # ✅ Works everywhere, even cloud providers
|
|
584
|
+
|
|
585
|
+
# Route specific traffic only
|
|
586
|
+
AllowedIPs = 192.168.1.0/24 # ✅ Route only corporate network
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
**Why this matters:**
|
|
590
|
+
- When `AllowedIPs = 0.0.0.0/0`, wg-quick automatically configures firewall rules via iptables/nftables
|
|
591
|
+
- Cloud providers (DigitalOcean, AWS Lambda, Google Cloud Run) disable iptables kernel modules
|
|
592
|
+
- Restrictive `AllowedIPs` avoids firewall configuration entirely
|
|
593
|
+
|
|
594
|
+
**Recommendation for cloud servers:**
|
|
595
|
+
If you're running Vortix on a cloud provider and need to route traffic through the VPN, use `AllowedIPs = 10.0.0.0/8` or another private subnet instead of `0.0.0.0/0`.
|
|
596
|
+
|
|
597
|
+
#### Common WireGuard Configuration Issues
|
|
598
|
+
|
|
599
|
+
**Issue: Connection succeeds but no internet access**
|
|
600
|
+
|
|
601
|
+
Check your `AllowedIPs` setting:
|
|
602
|
+
```bash
|
|
603
|
+
vortix show your-profile --raw | grep AllowedIPs
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
- If it's `10.0.0.0/8` or similar, only traffic to that subnet goes through VPN
|
|
607
|
+
- Add your target IP/subnet to `AllowedIPs` to route it through the tunnel
|
|
608
|
+
- Example: `AllowedIPs = 10.0.0.0/8, 192.168.0.0/16`
|
|
609
|
+
|
|
610
|
+
**Issue: Can't reach VPN server from cloud provider**
|
|
611
|
+
|
|
612
|
+
Some cloud providers block outbound UDP 51820 or other ports. Try:
|
|
613
|
+
```bash
|
|
614
|
+
# Check if you can reach the endpoint
|
|
615
|
+
ping -c 1 138.197.3.155
|
|
616
|
+
|
|
617
|
+
# Test specific port (replace with your endpoint)
|
|
618
|
+
nc -zu 138.197.3.155 51820 && echo "✓ Port open" || echo "✗ Port blocked"
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
If blocked, contact your cloud provider to allow WireGuard ports.
|
|
622
|
+
|
|
623
|
+
**Issue: DNS works but only for some domains**
|
|
624
|
+
|
|
625
|
+
This usually means:
|
|
626
|
+
1. VPN DNS servers are configured but not all traffic routes through VPN
|
|
627
|
+
2. Your system's DNS fallback is resolving some queries locally
|
|
628
|
+
|
|
629
|
+
Check if `DNS =` is in your config and matches your VPN provider's DNS servers.
|
|
630
|
+
|
|
631
|
+
#### Testing Your WireGuard Profile
|
|
632
|
+
|
|
633
|
+
After creating/importing a profile, test the configuration:
|
|
634
|
+
|
|
635
|
+
```bash
|
|
636
|
+
# View the profile
|
|
637
|
+
vortix show my-profile --raw
|
|
638
|
+
|
|
639
|
+
# Check required fields
|
|
640
|
+
vortix show my-profile --raw | grep -E "^(PrivateKey|PublicKey|AllowedIPs|Endpoint|Address|DNS)"
|
|
641
|
+
|
|
642
|
+
# Expected output:
|
|
643
|
+
# PrivateKey = (base64)
|
|
644
|
+
# Address = 10.0.0.2/24
|
|
645
|
+
# Endpoint = 1.2.3.4:51820
|
|
646
|
+
# AllowedIPs = 10.0.0.0/8 (or 0.0.0.0/0)
|
|
647
|
+
# PublicKey = (base64)
|
|
648
|
+
# DNS = 8.8.8.8, 8.8.4.4 (optional)
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
All fields above are required except `DNS` (optional).
|
|
652
|
+
|
|
339
653
|
## Roadmap
|
|
340
654
|
|
|
341
655
|
See the [project board](https://github.com/users/Harry-kp/projects/6) for what's being explored. Have an idea? [Join the discussion](https://github.com/Harry-kp/vortix/discussions/34).
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"hasInstallScript": true,
|
|
24
24
|
"license": "MIT",
|
|
25
25
|
"name": "@harry-kp/vortix",
|
|
26
|
-
"version": "0.1
|
|
26
|
+
"version": "0.2.1"
|
|
27
27
|
},
|
|
28
28
|
"node_modules/@isaacs/balanced-match": {
|
|
29
29
|
"engines": {
|
|
@@ -515,5 +515,5 @@
|
|
|
515
515
|
}
|
|
516
516
|
},
|
|
517
517
|
"requires": true,
|
|
518
|
-
"version": "0.1
|
|
518
|
+
"version": "0.2.1"
|
|
519
519
|
}
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"artifactDownloadUrl": "https://github.com/Harry-kp/vortix/releases/download/v0.1
|
|
2
|
+
"artifactDownloadUrl": "https://github.com/Harry-kp/vortix/releases/download/v0.2.1",
|
|
3
3
|
"author": "Harry KP <harrykp@users.noreply.github.com>",
|
|
4
4
|
"bin": {
|
|
5
5
|
"vortix": "run-vortix.js"
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
"zipExt": ".tar.xz"
|
|
101
101
|
}
|
|
102
102
|
},
|
|
103
|
-
"version": "0.1
|
|
103
|
+
"version": "0.2.1",
|
|
104
104
|
"volta": {
|
|
105
105
|
"node": "18.14.1",
|
|
106
106
|
"npm": "9.5.0"
|