{"id":32873046,"url":"https://github.com/tsirysndr/dragonflybsd-up","last_synced_at":"2026-06-11T22:31:37.162Z","repository":{"id":321970450,"uuid":"1087576483","full_name":"tsirysndr/dragonflybsd-up","owner":"tsirysndr","description":"A convenient CLI tool to quickly spin up DragonflyBSD virtual machines using QEMU with sensible defaults.","archived":false,"fork":false,"pushed_at":"2025-11-16T14:39:01.000Z","size":223,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-06T01:29:13.838Z","etag":null,"topics":["bsd","cli","command-line-tool","deno","dragonflybsd","qemu","qemu-kvm","typescript","virtualization"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tsirysndr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-01T07:34:06.000Z","updated_at":"2025-11-16T14:37:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tsirysndr/dragonflybsd-up","commit_stats":null,"previous_names":["tsirysndr/dragonflybsd-up"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/tsirysndr/dragonflybsd-up","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Fdragonflybsd-up","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Fdragonflybsd-up/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Fdragonflybsd-up/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Fdragonflybsd-up/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsirysndr","download_url":"https://codeload.github.com/tsirysndr/dragonflybsd-up/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsirysndr%2Fdragonflybsd-up/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34221150,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-11T02:00:06.485Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bsd","cli","command-line-tool","deno","dragonflybsd","qemu","qemu-kvm","typescript","virtualization"],"created_at":"2025-11-09T13:01:45.860Z","updated_at":"2026-06-11T22:31:37.157Z","avatar_url":"https://github.com/tsirysndr.png","language":"TypeScript","funding_links":[],"categories":["TypeScript"],"sub_categories":[],"readme":"# dflybsd-up ≽༏≼\n\n[![release](https://github.com/tsirysndr/dragonflybsd-up/actions/workflows/release.yml/badge.svg)](https://github.com/tsirysndr/dragonflybsd-up/actions/workflows/release.yml)\n[![JSR](https://jsr.io/badges/@tsiry/dflybsd-up)](https://jsr.io/@tsiry/dflybsd-up)\n[![deno module](https://shield.deno.dev/x/dflybsdup)](https://deno.land/x/dflybsdup)\n![deno compatibility](https://shield.deno.dev/deno/^2.5.6)\n\nA convenient CLI tool to quickly spin up DragonflyBSD virtual machines using\nQEMU with sensible defaults. Includes comprehensive VM management capabilities\nwith database tracking, background execution, and flexible networking options.\n\n![Preview](./preview.png)\n\n## ✨ Features\n\n- **⚡ Quick Start**: Launch DragonflyBSD with a single command\n- **📥 Automatic ISO Download**: Fetches DragonflyBSD ISO images automatically\n  from official mirrors\n- **🔢 Version Support**: Specify any DragonflyBSD version (defaults to 6.4.2)\n- **🎯 Flexible Input**: Accepts version numbers, local ISO paths, or download\n  URLs\n- **💾 Smart Caching**: Skips re-downloading already downloaded ISOs\n- **🚀 KVM Acceleration**: Leverages KVM for optimal performance\n- **🔌 SSH Port Forwarding**: Automatically forwards port 2222 to guest port 22\n- **💻 Serial Console**: Direct terminal access without graphical overhead\n- **💿 Persistent Storage**: Optional disk image support for persistent\n  installations\n- **⚙️ Customizable Resources**: Configure CPU, memory, and disk settings\n- **🗃️ VM Management**: Track and manage multiple virtual machines with database\n  storage\n- **🌐 Bridge Networking**: Support for bridge networking configurations\n- **🔍 VM Inspection**: List, start, stop, restart, and inspect virtual machines\n- **📋 VM Operations**: Remove VMs, view logs with follow mode, and background\n  execution\n- **🏷️ Automatic MAC Assignment**: Unique MAC addresses generated for each VM\n- **🔧 Custom Port Forwarding**: Flexible port mapping with multiple forwards\n  support\n- **🔄 Background Mode**: Run VMs detached from terminal with logging support\n- **🐳 OCI Registry Support**: Push and pull VM images to/from OCI-compliant\n  registries (Docker Hub, GitHub Container Registry, etc.)\n- **📦 Image Management**: Tag, list, and remove local VM images\n- **⚙️ Configuration Files**: Define VM settings in a `vmconfig.toml` file for\n  reproducible setups\n- **🚀 Image-based VMs**: Run VMs directly from saved or pulled images\n- **🌐 HTTP API**: RESTful API for programmatic VM, image, and volume management\n  with bearer token authentication\n\n## 📋 Prerequisites\n\n- [Deno](https://deno.com) runtime\n- QEMU with KVM support (`qemu-system-x86_64`)\n- KVM kernel modules enabled\n\n## 📦 Installation\n\n```bash\ndeno install -A -g -r -f jsr:@tsiry/dflybsd-up\n```\n\n## 🚀 Usage\n\n### Basic Usage\n\n```bash\n# Launch with defaults (DragonflyBSD 6.4.2, 2 CPUs, 2GB RAM)\ndflybsd-up\n\n# Specify a version (automatically downloads the RELEASE ISO)\ndflybsd-up 6.4.2\n\n# Use a local ISO file\ndflybsd-up /path/to/dragonflybsd.iso\n\n# Download from a specific URL\ndflybsd-up https://mirror-master.dragonflybsd.org/iso-images/dfly-x86_64-6.4.2_REL.iso\n```\n\n### Advanced Options\n\n```bash\n# Custom CPU and memory configuration\ndflybsd-up --cpu host --cpus 4 --memory 4G\n\n# Specify output path for downloaded ISO\ndflybsd-up 6.4.2 --output ~/isos/dragonfly.iso\n\n# Use a persistent disk image with custom size\ndflybsd-up --image dragonfly.img --disk-format raw --size 30G\n\n# Use bridge networking\ndflybsd-up --bridge br0\n\n# Run VM in background (detached mode)\ndflybsd-up --detach\n\n# Custom port forwarding (forward host port 8080 to guest port 80)\ndflybsd-up --port-forward 8080:80\n\n# Multiple port forwards\ndflybsd-up --port-forward 8080:80,3000:3000\n\n# Combine options\ndflybsd-up 6.4.2 \\\n  --cpus 4 \\\n  --memory 8G \\\n  --image dragonfly.qcow2 \\\n  --disk-format qcow2 \\\n  --size 50G \\\n  --detach \\\n  --port-forward 2222:22,8080:80\n```\n\n### VM Management Commands\n\n```bash\n# List running virtual machines\ndflybsd-up ps\n\n# List all virtual machines (including stopped)\ndflybsd-up ps --all\n\n# Start a previously created VM\ndflybsd-up start my-vm\n\n# Start a VM in background (detached mode)\ndflybsd-up start my-vm --detach\n\n# Stop a running VM\ndflybsd-up stop my-vm\n\n# Restart a VM\ndflybsd-up restart my-vm\n\n# Remove a VM (delete from database)\ndflybsd-up rm my-vm\n\n# View VM logs\ndflybsd-up logs my-vm\n\n# Follow VM logs in real-time\ndflybsd-up logs my-vm --follow\n\n# Inspect VM details\ndflybsd-up inspect my-vm\n```\n\n### Configuration File Management\n\n```bash\n# Create a default VM configuration file (vmconfig.toml)\ndflybsd-up init\n\n# Edit the configuration file to customize VM settings\n# Then start the VM using the configuration\ndflybsd-up\n```\n\n### OCI Registry Operations\n\n```bash\n# Login to a registry (e.g., Docker Hub, GitHub Container Registry)\ndflybsd-up login ghcr.io --username your-username\n# or pipe password\necho $GITHUB_TOKEN | dflybsd-up login ghcr.io --username your-username\n\n# Tag a VM's disk image\ndflybsd-up tag my-vm ghcr.io/username/my-dragonfly-vm:latest\n\n# Push VM image to registry\ndflybsd-up push ghcr.io/username/my-dragonfly-vm:latest\n\n# Pull VM image from registry\ndflybsd-up pull ghcr.io/username/my-dragonfly-vm:latest\n\n# List local VM images\ndflybsd-up images\n\n# Remove a local VM image\ndflybsd-up rmi ghcr.io/username/my-dragonfly-vm:latest\n\n# Run a VM from a pulled image\ndflybsd-up run ghcr.io/username/my-dragonfly-vm:latest\n\n# Run with custom options\ndflybsd-up run ghcr.io/username/my-dragonfly-vm:latest --cpus 4 --memory 8G --detach\n\n# Logout from registry\ndflybsd-up logout ghcr.io\n```\n\n### HTTP API Server\n\n```bash\n# Start the HTTP API server (default port: 8893)\ndflybsd-up serve\n\n# Start on a custom port\ndflybsd-up serve --port 9000\n\n# Set a custom API token via environment variable\nexport DFLYBSD_UP_API_TOKEN=\"your-secure-token\"\ndflybsd-up serve\n\n# If no token is set, a random UUID will be generated and displayed\n```\n\nThe HTTP API provides RESTful endpoints for:\n\n- **Machines**: List, create, start, stop, restart, inspect, and remove VMs\n- **Images**: Create, list and remove VM images\n- **Volumes**: List, create, inspect, and remove volumes\n\nAll endpoints require bearer token authentication. See the API documentation\nsection below for detailed endpoint information.\n\n## 🌐 HTTP API\n\nThe HTTP API server provides programmatic access to all dflybsd-up functionality\nthrough RESTful endpoints.\n\n### Starting the API Server\n\n```bash\n# Start with default settings (port 8893)\ndflybsd-up serve\n\n# Custom port\ndflybsd-up serve --port 9000\n\n# Set custom token via environment variable\nexport DFLYBSD_UP_API_TOKEN=\"your-secure-token\"\ndflybsd-up serve\n```\n\n### Authentication\n\nAll API endpoints require bearer token authentication. Include the token in the\n`Authorization` header:\n\n```bash\ncurl -H \"Authorization: Bearer your-token\" http://localhost:8893/machines\n```\n\n### API Endpoints\n\n#### Machines\n\n- **GET `/machines`** - List all machines\n  - Query params: `?all=true` to include stopped machines\n- **POST `/machines`** - Create a new machine\n  - Body:\n    `{ \"image\": \"ghcr.io/tsirysndr/dragonflybsd:6.4.2\", \"cpus\": 4, \"memory\": \"4G\", \"bridge\": \"br0\", \"portForward\": [\"2222:22\"], \"volume\": \"volume-name\" }`\n- **GET `/machines/:id`** - Get machine details\n- **POST `/machines/:id/start`** - Start a machine\n  - Body (optional):\n    `{ \"cpus\": 4, \"memory\": \"4G\", \"cpu\": \"host\", \"portForward\": [\"2222:22\"] }`\n- **POST `/machines/:id/stop`** - Stop a machine\n- **POST `/machines/:id/restart`** - Restart a machine\n  - Body (optional):\n    `{ \"cpus\": 4, \"memory\": \"4G\", \"cpu\": \"host\", \"portForward\": [\"2222:22\"] }`\n- **DELETE `/machines/:id`** - Remove a machine (must be stopped)\n\n#### Images\n\n- **GET `/images`** - List all local images\n- **POST `/images/pull`** - Pull an image from registry\n  - Body: `{ \"image\": \"ghcr.io/user/image:tag\" }`\n- **POST `/images/push`** - Push an image to registry\n  - Body: `{ \"image\": \"ghcr.io/user/image:tag\" }`\n- **POST `/images/tag`** - Tag a machine's image\n  - Body: `{ \"vmName\": \"machine-name\", \"image\": \"ghcr.io/user/image:tag\" }`\n- **DELETE `/images/:ref`** - Remove an image\n  - Path param: URL-encoded image reference\n\n#### Volumes\n\n- **GET `/volumes`** - List all volumes\n- **POST `/volumes`** - Create a new volume\n  - Body: `{ \"name\": \"volume-name\", \"size\": \"20G\", \"format\": \"qcow2\" }`\n- **GET `/volumes/:name`** - Get volume details\n- **DELETE `/volumes/:name`** - Remove a volume\n\n### Example API Usage\n\n```bash\n# List all machines\ncurl -H \"Authorization: Bearer your-token\" \\\n  http://localhost:8893/machines?all=true\n\n# Create a new machine\ncurl -X POST \\\n  -H \"Authorization: Bearer your-token\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"image\":\"ghcr.io/tsirysndr/dragonflybsd:6.4.2\",\"cpus\":4,\"memory\":\"8G\"}' \\\n  http://localhost:8893/machines\n\n# Start a machine\ncurl -X POST \\\n  -H \"Authorization: Bearer your-token\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"cpus\":8,\"memory\":\"16G\"}' \\\n  http://localhost:8893/machines/clxy1234567890/start\n\n# Pull an image\ncurl -X POST \\\n  -H \"Authorization: Bearer your-token\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"image\":\"ghcr.io/tsirysndr/dragonfly:latest\"}' \\\n  http://localhost:8893/images/pull\n\n# Create a volume\ncurl -X POST \\\n  -H \"Authorization: Bearer your-token\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"name\":\"data-volume\",\"size\":\"50G\",\"format\":\"qcow2\"}' \\\n  http://localhost:8893/volumes\n```\n\n## ⚙️ Options\n\n| Option           | Short | Description                                 | Default                 |\n| ---------------- | ----- | ------------------------------------------- | ----------------------- |\n| `--output`       | `-o`  | Output path for downloaded ISO              | Auto-generated from URL |\n| `--cpu`          | `-c`  | CPU type to emulate                         | `host`                  |\n| `--cpus`         | `-C`  | Number of CPU cores                         | `2`                     |\n| `--memory`       | `-m`  | Amount of memory for VM                     | `2G`                    |\n| `--image`        | `-i`  | Path to VM disk image                       | None                    |\n| `--disk-format`  |       | Disk image format (qcow2, raw, etc.)        | `raw`                   |\n| `--size`         |       | Size of disk image to create                | `20G`                   |\n| `--bridge`       | `-b`  | Network bridge name for networking          | None (uses NAT)         |\n| `--detach`       | `-d`  | Run VM in the background                    | `false`                 |\n| `--port-forward` | `-p`  | Custom port forwarding (hostPort:guestPort) | `2222:22`               |\n| `--install`      |       | Persist changes to the VM disk image        | `false`                 |\n\n## 📝 Configuration File\n\nYou can create a `vmconfig.toml` file to define default VM settings:\n\n```bash\n# Initialize a configuration file\ndflybsd-up init\n```\n\nThis creates a configuration file with the following structure:\n\n```toml\n[vm]\niso = \"https://mirror-master.dragonflybsd.org/iso-images/dfly-x86_64-6.4.2_REL.iso\"\n# output = \"./dfly-x86_64-6.4.2_REL.iso\"\ncpu = \"host\"\ncpus = 2\nmemory = \"2G\"\n# image = \"dragonfly.qcow2\"\ndisk_format = \"qcow2\"\nsize = \"20G\"\n\n[network]\n# bridge = \"br0\"\nport_forward = \"2222:22\"\n\n[options]\ndetach = false\n```\n\nWhen you run `dflybsd-up` without arguments, it will use the settings from this\nfile. Command-line options override configuration file settings.\n\n## 🔢 Version Format\n\nSimply provide the version number (e.g., `6.4.2` or `6.2`), and the tool will\nautomatically construct the download URL for the corresponding RELEASE ISO.\n\nExamples:\n\n- `6.4.2` → downloads `dfly-x86_64-6.4.2_REL.iso`\n- `6.2` → downloads `dfly-x86_64-6.2_REL.iso`\n- `7.0` → downloads `dfly-x86_64-7.0_REL.iso`\n\n## 🖥️ Console Setup\n\nWhen DragonflyBSD boots, you'll see the boot menu. For the best experience with\nthe serial console:\n\n1. **Select option `9. Escape to loader prompt (also ESC)`**\n2. **Configure console output:**\n\n   ```\n   set console=comconsole\n   boot\n   ```\n\nThis enables proper console redirection to your terminal.\n\n## 🔍 VM Management \u0026 Background Execution\n\n### Background Mode (Detached)\n\nRun VMs in the background without blocking your terminal:\n\n```bash\n# Create and run VM in background\ndflybsd-up --detach\n\n# Start existing VM in background\ndflybsd-up start my-vm --detach\n\n# When running in background, you can:\ndflybsd-up logs my-vm --follow    # View real-time logs\ndflybsd-up stop my-vm             # Stop the VM\ndflybsd-up restart my-vm          # Restart the VM\n```\n\n### VM Lifecycle Management\n\n- **Automatic Tracking**: Each VM is assigned a unique name and tracked in a\n  local SQLite database\n- **Persistent State**: VM configurations are preserved between sessions\n- **Status Monitoring**: Track running and stopped VMs with process IDs\n- **Resource Information**: View CPU, memory, disk, and network configurations\n  for each VM\n- **Log Management**: Each VM maintains its own log file for debugging and\n  monitoring\n\n## � OCI Registry Integration\n\nThe tool supports pushing and pulling VM images to/from OCI-compliant registries\nlike Docker Hub, GitHub Container Registry (ghcr.io), and others.\n\n### Workflow\n\n1. **Create and configure a VM** with desired settings\n2. **Tag the VM's disk image** to create a reference\n3. **Login to a registry** with your credentials\n4. **Push the image** to share it with others\n5. **Pull images** created by you or others to run pre-configured VMs\n\n### Example: Sharing a VM Image\n\n```bash\n# Create a VM with persistent storage\ndflybsd-up 6.4.2 --image dragonfly.qcow2 --size 30G\n\n# Configure your DragonflyBSD installation as desired\n# (install packages, configure services, etc.)\n\n# Stop the VM and tag it\ndflybsd-up stop \u003cvm-name\u003e\ndflybsd-up tag \u003cvm-name\u003e ghcr.io/username/my-dragonfly-setup:v1\n\n# Login to GitHub Container Registry\necho $GITHUB_TOKEN | dflybsd-up login ghcr.io --username username\n\n# Push the image\ndflybsd-up push ghcr.io/username/my-dragonfly-setup:v1\n\n# Others can now pull and run your image\ndflybsd-up pull ghcr.io/username/my-dragonfly-setup:v1\ndflybsd-up run ghcr.io/username/my-dragonfly-setup:v1\n```\n\n### Supported Registries\n\n- **GitHub Container Registry**: `ghcr.io`\n- **Docker Hub**: `docker.io` or just the image name (e.g.,\n  `username/image:tag`)\n- Any OCI-compliant registry that supports the OCI Distribution Specification\n\n## �🗃️ Virtual Machine Management\n\nThe tool now includes database-backed VM management, allowing you to track and\nmanage multiple virtual machines:\n\n### VM Lifecycle\n\n- **Automatic Tracking**: Each VM is assigned a unique name and tracked in a\n  local SQLite database\n- **Persistent State**: VM configurations are preserved between sessions\n- **Status Monitoring**: Track running and stopped VMs with process IDs\n- **Resource Information**: View CPU, memory, and disk configurations for each\n  VM\n\n### VM Commands\n\n- `ps` - List virtual machines (use `--all` to include stopped VMs)\n- `start \u003cvm-name\u003e` - Start a previously created VM (use `--detach` to run in\n  background)\n- `stop \u003cvm-name\u003e` - Stop a running VM\n- `restart \u003cvm-name\u003e` - Restart a VM (stop and start again)\n- `rm \u003cvm-name\u003e` - Remove a VM from the database (does not delete disk images)\n- `logs \u003cvm-name\u003e` - View VM logs (use `--follow` for real-time logs)\n- `inspect \u003cvm-name\u003e` - View detailed VM information\n\n## 🌐 Networking Options\n\n### Default NAT Networking\n\nBy default, VMs use QEMU's user-mode networking with port forwarding:\n\n- Host port 2222 → Guest port 22 (SSH) by default\n- Custom port forwarding available with `--port-forward` option\n- No additional configuration required\n- Works without root privileges\n\n#### Custom Port Forwarding\n\nYou can specify custom port forwarding rules:\n\n```bash\n# Forward host port 8080 to guest port 80\ndflybsd-up --port-forward 8080:80\n\n# Multiple port forwards (comma-separated)\ndflybsd-up --port-forward 8080:80,3000:3000,2222:22\n\n# Use with other options\ndflybsd-up 6.4.2 --port-forward 8080:80 --memory 4G\n```\n\n### Advanced Bridge Networking\n\nFor more advanced networking scenarios, use bridge networking:\n\n```bash\n# Use an existing bridge\ndflybsd-up --bridge br0\n\n# The tool will create the bridge if it doesn't exist (requires sudo)\n```\n\nBenefits of bridge networking:\n\n- VMs get IP addresses on your local network\n- Direct network access without port forwarding\n- Better performance for network-intensive applications\n- Supports multiple VMs on the same network segment\n\n## 💿 Creating a Persistent Disk\n\nTo install DragonflyBSD persistently:\n\n```bash\n# Create a disk image (done automatically with --image if image doesn't exist)\ndflybsd-up 6.4.2 --image dragonfly.qcow2 --disk-format qcow2 --size 30G\n\n# Use --install flag to persist changes to the disk image\ndflybsd-up 6.4.2 --image dragonfly.qcow2 --disk-format qcow2 --install\n\n# Or manually create with qemu-img\nqemu-img create -f qcow2 dragonfly.qcow2 20G\n\n# Launch with the disk attached\ndflybsd-up 6.4.2 --image dragonfly.qcow2 --disk-format qcow2\n```\n\nThe `--install` option ensures that changes made during the VM session are\nwritten to the disk image, making them persistent across reboots.\n\n## 🔐 SSH Access\n\n### NAT Networking (Default)\n\nThe VM automatically forwards host port 2222 to guest port 22 by default. You\ncan customize port forwarding with the `--port-forward` option. After\nconfiguring SSH in your DragonflyBSD installation:\n\n```bash\n# Default SSH access (2222:22 forwarding)\nssh -p 2222 user@localhost\n\n# Custom port forwarding\ndflybsd-up --port-forward 2200:22\nssh -p 2200 user@localhost\n\n# Access other services with custom forwarding\ndflybsd-up --port-forward 2222:22,8080:80\n# SSH: ssh -p 2222 user@localhost\n# HTTP: http://localhost:8080\n```\n\n### Bridge Networking\n\nWith bridge networking, the VM gets its own IP address on your network. You can\nSSH directly to the VM's IP:\n\n```bash\nssh user@\u003cvm-ip-address\u003e\n```\n\n## 📄 License\n\nSee [LICENSE](LICENSE) file for details.\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit issues or pull requests.\n\n\u003e [!NOTE]\n\u003e\n\u003e This tool is designed for development and testing purposes. For production\n\u003e DragonflyBSD deployments, consider using proper installation methods.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsirysndr%2Fdragonflybsd-up","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsirysndr%2Fdragonflybsd-up","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsirysndr%2Fdragonflybsd-up/lists"}