| Crates.io | holo-deck |
| lib.rs | holo-deck |
| version | 0.1.1 |
| created_at | 2025-11-10 11:53:41.049983+00 |
| updated_at | 2025-11-11 16:06:06.935993+00 |
| description | A simple HTTP file server with built-in reverse SSH tunneling for easy external access |
| homepage | https://github.com/aovestdipaperino/holodeck |
| repository | https://github.com/aovestdipaperino/holodeck |
| max_upload_size | |
| id | 1925234 |
| size | 166,763 |
A simple HTTP file server with built-in reverse SSH tunneling
cargo install holo-deck
# Start the server locally
holo-deck
# Or with cargo
cargo run
The server will automatically bind to a random available port (displayed on startup)
# Start with automatic external tunnel via localhost.run
SSH_SERVER=ssh.localhost.run holo-deck
The tunnel URL will be automatically displayed:
╔════════════════════════════════════════════════════════════════╗
║ TUNNEL ACTIVE ║
╠════════════════════════════════════════════════════════════════╣
║ External URL: https://abc123.lhr.life ║
╚════════════════════════════════════════════════════════════════╝
# Local (use the port displayed on startup, e.g., 59830)
curl http://localhost:59830/
# External (via tunnel)
curl https://abc123.lhr.life/
# Local (use your server's port)
curl -X POST --data-binary @myfile.txt http://localhost:59830/myfile.txt
# External
curl -X POST --data-binary @myfile.txt https://abc123.lhr.life/myfile.txt
# Local (use your server's port)
curl http://localhost:59830/myfile.txt
# External
curl https://abc123.lhr.life/myfile.txt
| Variable | Description | Default |
|---|---|---|
SSH_SERVER |
SSH server address (e.g., ssh.localhost.run) | None (local only) |
SSH_USER |
SSH username | localhost |
SSH_PORT |
SSH server port | 22 |
SSH_KEY_PATH |
Path to SSH private key | None (required for key auth) |
SSH_PASSWORD |
SSH password | None (alternative to key auth) |
REMOTE_PORT |
Remote port to listen on | 80 |
RUST_LOG |
Enable debug logging | None |
# Use a specific SSH key
SSH_SERVER=ssh.localhost.run SSH_KEY_PATH=~/.ssh/id_ed25519 holo-deck
# Use password authentication instead of key
SSH_SERVER=ssh.localhost.run SSH_PASSWORD=mypassword holo-deck
# Custom remote port
SSH_SERVER=ssh.localhost.run SSH_KEY_PATH=~/.ssh/id_ed25519 REMOTE_PORT=8080 holo-deck
# Enable debug logging
RUST_LOG=debug SSH_SERVER=ssh.localhost.run SSH_KEY_PATH=~/.ssh/id_ed25519 holo-deck
Holo-Deck is built with:
.. and / in filenames)Recommendation: Use Holo-Deck for temporary file sharing in trusted environments. For production use, add authentication and HTTPS.
git clone https://github.com/enzolombardi/holo-deck.git
cd holo-deck
cargo build --release
cargo test
holo-deck/
├── src/
│ └── main.rs # HTTP server and CLI
├── Cargo.toml
├── README.md
└── logo.png
Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/amazing-feature)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)This project is dual-licensed under:
You may choose either license for your use.
http.server and ngrokSee CHANGELOG.md for release history.
Made with Rust 🦀