Files
2026-05-28 06:56:46 -07:00

50 lines
2.5 KiB
Markdown

# gns3-remote-install-redux
Revised version of the OG [upstream GNS3 remote installer](https://github.com/GNS3/gns3-server/blob/master/scripts/remote-install.sh).
## What's different
- **Single primary apt pass**: packages, repos, and groups rolled up from flags before install runs (as much as possible)
- **Preflight**: checks root, OS, needed commands, ports, modules, CPU virt extensions. Reports every error condition at once
- **Auto-loads KVM**: `modprobe` + persist to `/etc/modules-load.d/`, unless `--without-kvm`
- **Retry + verify**: apt retries 3x with backoff; services verified with `systemctl is-active`; GNS3 API curled post-install
- **WireGuard**: adds modern VPN option
- **EC crypto**: P-384 by default for OpenVPN (faster keygen, no DH params). `--legacy-rsa` if needed
- **Encrypted configs**: VPN configs are encrypted with one-time passphrase. A copy+paste one-liner is printed to console to curl and decrypt the file at once. `--unsafe-configs` to skip
- **Scoped firewall**: UFW rules allow VPN from 0.0.0.0/0, others scoped to SSH source + local subnets
- **Sysctl hardening**: rp_filter, syncookies, ICMP redirect rejection, source route disable
- **Landing page**: ephemeral web page gives server info, version-matched client downloads, VPN configs, warnings, and resources. Auto-expires via systemd timer. Uses Python httpd.server module, instead of installing nginx package.
- **Reconfigure**: enhanced idempotence. detects prior install, stops services, re-runs cleanly
- **Testable**: `main()` guarded so functions can be sourced for BATS or plain bash tests
## Usage
```
sudo ./gns3-remote-install-redux.sh [OPTIONS]
```
## Flags
| Flag | Default | Description |
|---|---|---|
| `--with-openvpn` | off | Install and configure OpenVPN |
| `--with-wireguard` | off | Install and configure WireGuard |
| `--with-welcome` | off | Install GNS3-VM welcome console UI |
| `--without-kvm` | KVM on | Disable KVM hardware acceleration |
| `--without-docker` | Docker on | Skip Docker CE installation |
| `--without-firewall` | UFW on | Skip automatic UFW rule configuration |
| `--without-system-upgrade` | upgrade on | Skip `apt upgrade` |
| `--unsafe-configs` | encrypted | Serve VPN configs unencrypted |
| `--legacy-rsa` | EC P-384 | Use RSA-2048 + DH for OpenVPN |
| `--unstable` | stable PPA | Use the GNS3 unstable PPA |
| `--custom-repository REPO` | `ppa` | Use a custom GNS3 PPA name |
| `-h`, `--help` | | Show help |
## Requirements
Ubuntu Server 24.04 LTS (amd64). Run as root or with `sudo`.
## License
Based on the original GNS3 remote installer (GPLv3).