diff --git a/community-solutions/copyparty-file-manager/addhttp.png b/community-solutions/copyparty-file-manager/addhttp.png new file mode 100644 index 00000000..79cb9fc9 Binary files /dev/null and b/community-solutions/copyparty-file-manager/addhttp.png differ diff --git a/community-solutions/copyparty-file-manager/directory.png b/community-solutions/copyparty-file-manager/directory.png new file mode 100644 index 00000000..ea0c414f Binary files /dev/null and b/community-solutions/copyparty-file-manager/directory.png differ diff --git a/community-solutions/copyparty-file-manager/download.png b/community-solutions/copyparty-file-manager/download.png new file mode 100644 index 00000000..cdcc7c1f Binary files /dev/null and b/community-solutions/copyparty-file-manager/download.png differ diff --git a/community-solutions/copyparty-file-manager/edit.png b/community-solutions/copyparty-file-manager/edit.png new file mode 100644 index 00000000..1a05db07 Binary files /dev/null and b/community-solutions/copyparty-file-manager/edit.png differ diff --git a/community-solutions/copyparty-file-manager/labsterminal.png b/community-solutions/copyparty-file-manager/labsterminal.png new file mode 100644 index 00000000..19b8f590 Binary files /dev/null and b/community-solutions/copyparty-file-manager/labsterminal.png differ diff --git a/community-solutions/copyparty-file-manager/overview.mdx b/community-solutions/copyparty-file-manager/overview.mdx new file mode 100644 index 00000000..b9b10147 --- /dev/null +++ b/community-solutions/copyparty-file-manager/overview.mdx @@ -0,0 +1,146 @@ +--- +title: CopyParty file manager +description: Web-based GUI for easy file browsing, uploading, downloading, and media viewing on Runpod +icon: "party-horn" +--- + +# Setting up CopyParty on Runpod + +CopyParty provides a webbased GUI that makes file management simple on Runpod instances. With its intuitive interface, you can browse directories, upload/download files, preview images and videos, and manage your Pod's filesystem without complex command-line operations. + +## About CopyParty + +CopyParty is an open-source project created that provides a portable file server with a web UI. It's perfect for managing files on cloud GPU instances where traditional file transfer methods might be cumbersome. + +For a video demonstration, you can watch the [creator's YouTube tutorial](https://youtu.be/15_-hgsX2V0?si=AXArKvI79LEscpNn). + + +Check the repository for additional features, updates, and documentation: [github.com/9001/copyparty](https://github.com/9001/copyparty) + + +## Requirements + +To use CopyParty on Runpod, you need: +- **Terminal access to your Pod** - Either through web terminal or Jupyter Labs terminal. +- An available HTTP port on your Pod. + +### Verifying terminal access + +You can access the terminal in two ways: + +#### Option 1: Web terminal +If you see this option when clicking "Connect" on your Pod page, you have web terminal access: +![Web Terminal Access](webterminal.png) + +#### Option 2: JupyterLab terminal +If you have JupyterLab installed on your Pod, you can access the terminal there: +![JupyterLab Terminal](labsterminal.png) + +## Installation steps + +### Step 1: Access your Pod settings + +Navigate to your Pod page and locate the settings: +![Edit Pod Settings](edit.png) + +### Step 2: Add an HTTP port + + +**Adding a new port will restart your Pod and erase any data not stored in `/workspace`** + +Before proceeding, ensure all important files are saved in `/workspace` or backed up elsewhere. Any installed libraries or files outside of `/workspace` will be lost. + + +Add a dedicated HTTP port for the CopyParty interface. If port 8888 is already in use (common for Jupyter), try port 8000 or another available port. + +![Add HTTP Port](addhttp.png) + +### Step 3: Install and run CopyParty + +Open your terminal (web terminal or Jupyter terminal) and run one of the following commands: + +#### Option 1: Standard installation +Run CopyParty directly (the session will end if you close the terminal): + +```bash +curl -LsSf https://astral.sh/uv/install.sh | sh && source $HOME/.local/bin/env && uv tool run copyparty -p 8000 --allow-csrf +``` + +Replace `-p 8000` with your chosen port number if different. + +#### Option 2: Background installation with tmux + +To keep CopyParty running even after closing the terminal, use `tmux`: + +```bash +apt-get update && apt-get install tmux -y && tmux new-session -d -s copyparty 'curl -LsSf https://astral.sh/uv/install.sh | sh && source $HOME/.local/bin/env && uv tool run copyparty -p 8000 --allow-csrf' && tmux attach -t copyparty +``` + + +**What is tmux?** + +`tmux` (terminal multiplexer) is a tool that lets you run terminal sessions in the background. Think of it as a way to keep programs running even after you close your terminal window, like minimizing an app instead of closing it. This is particularly useful on Runpod where you want CopyParty to keep running even if you disconnect. + +For a more in-depth tmux tutorial, check out this [comprehensive video guide](https://youtu.be/nTqu6w2wc68?si=OcI3qbh2kGH7_3fh). + + +This command: +1. Installs tmux (a terminal multiplexer) +2. Creates a new tmux session named "copyparty" +3. Runs CopyParty in the background +4. Attaches you to the session to see the output + + +**Quick tmux Commands** +- To detach from tmux and leave CopyParty running: Press `Ctrl+B` then `D` +- To reattach to the session later: `tmux attach -t copyparty` +- To stop CopyParty: Reattach and press `Ctrl+C` + + +### Step 4: Access the CopyParty interface + +Once CopyParty is running, click on the port number in your Runpod dashboard: +![Access Port](port.png) + +## Using CopyParty + +### File navigation + +The interface displays your file system on the left side: +![Directory View](directory.png) + +### Uploading files + +Simply drag and drop files into the interface to upload them: +![Upload Files](upload.png) + +### Downloading files + +To download files: +1. Click on files to select them (they'll be highlighted in pink) +2. Use the buttons in the bottom right: + - **"dl"** - Download individual files + - **"zip"** - Download multiple files as a zip archive + +![Download Files](download.png) + +## Tips and best practices + +1. **Data Persistence**: Always store important files in `/workspace` to survive pod restarts +2. **Port Selection**: Choose a port that doesn't conflict with other services (avoid 8888 if using Jupyter) +3. **Large Files**: CopyParty handles large file transfers well, making it ideal for model weights and datasets + +## Troubleshooting + +### Session ends when terminal closes +Use the tmux option (Option 2) to keep CopyParty running in the background + +## Alternative file transfer methods + +While CopyParty provides an excellent web-based solution, Runpod also supports: +- Direct SSH/SCP transfers (if SSH is enabled) +- JupyterLab file browser +- [Runpod CLI](/runpodctl/overview) tool +- [Cloud storage integration](/pods/storage/cloud-sync) (S3, Google Drive, etc.) + +Choose the method that best fits your workflow and security requirements. \ No newline at end of file diff --git a/community-solutions/copyparty-file-manager/port.png b/community-solutions/copyparty-file-manager/port.png new file mode 100644 index 00000000..1ac7ea35 Binary files /dev/null and b/community-solutions/copyparty-file-manager/port.png differ diff --git a/community-solutions/copyparty-file-manager/upload.png b/community-solutions/copyparty-file-manager/upload.png new file mode 100644 index 00000000..8bb97835 Binary files /dev/null and b/community-solutions/copyparty-file-manager/upload.png differ diff --git a/community-solutions/copyparty-file-manager/webterminal.png b/community-solutions/copyparty-file-manager/webterminal.png new file mode 100644 index 00000000..a1900bef Binary files /dev/null and b/community-solutions/copyparty-file-manager/webterminal.png differ diff --git a/community-solutions/ohmyrunpod/overview.mdx b/community-solutions/ohmyrunpod/overview.mdx new file mode 100644 index 00000000..84767879 --- /dev/null +++ b/community-solutions/ohmyrunpod/overview.mdx @@ -0,0 +1,156 @@ +--- +title: "OhMyRunPod" +description: "Community solution for easy (SFTP) setup on Runpod" +icon: "rocket" +--- + +## What is OhMyRunPod? + +OhMyRunPod is a Python package that solves one of the most common Runpod user challenges: **easily transferring files to and from your Pod**. + +While OhMyRunPod includes various features, **the SFTP setup functionality** is the one we want to highlight to help get you started with file transfer software such as FileZilla or similar tools. + + +Check the repository for additional features, updates, and documentation: [github.com/kodxana/OhMyRunPod-python](https://github.com/kodxana/OhMyRunPod-python) + + +## Key features + + + + Simplified file transfer between your local machine and Runpod instances using SFTP or Croc + + + Automatically configures SSH access with secure key generation and password management + + + +## Requirements + +Before getting started with OhMyRunPod, make sure you have: + +- An active Runpod account with a running Pod. +- Python 3.6 or higher installed on your local machine. +- Port 22 exposed in your Pod's TCP ports configuration (for SFTP transfers). + +## Installation + +Install OhMyRunPod using pip: + +```bash +pip install OhMyRunPod +``` + +## Quick start: file transfer + +The most common use case for OhMyRunPod is transferring files between your local machine and Runpod instances. + + + + Before starting, make sure port 22 is exposed in your Pod. This is required for SFTP transfers. + + To expose port 22: + 1. Go to your Pod in the Runpod console + 2. Click **Edit Pod** + 3. Under the **TCP Ports** section, add port `22` + 4. Save the changes + + + **Data loss warning**: Changing TCP ports will restart your pod and **erase all data outside of `/workspace`**. Ensure all important files are in `/workspace` (the default persistent directory) before making port changes. + + + + + Execute the file transfer command: + ```bash + OhMyRunpod --file-transfer + ``` + + + + You'll be presented with transfer options: + + + File transfer selection menu showing Croc and SFTP options + + + - **Croc**: Easy peer-to-peer file transfer (recommended for quick transfers) + - **SFTP**: Traditional file transfer via SSH/SFTP clients (recommended for persistent connections) + + Use arrow keys to navigate and Enter to select. + + + + If you choose SFTP, OhMyRunpod will automatically: + - Install and configure SSH server + - Set up SSH keys + - Generate a secure password + - Create connection scripts for your operating system + + + SFTP setup confirmation showing connection details and instructions + + + The tool provides: + - Complete connection information (server address, port, username, password) + - Platform-specific connection instructions for FileZilla, WinSCP, Command Line, and VS Code + - Password saved to `/workspace/root_password.txt` for reference + + + +## What can you do after setup? + +Once SFTP is configured, you can: + +- **Upload datasets**: Transfer training data directly to `/workspace/` +- **Download models**: Pull trained checkpoints back to your local machine +- **Sync code**: Use VS Code Remote-SSH for live editing +- **Backup files**: Regular backups of important work +- **Use any SFTP client**: FileZilla, WinSCP, or command line tools + + +## Troubleshooting + + + + **Problem:** Cannot connect via SFTP, getting "Connection refused" error + + **Solution:** + 1. Ensure port 22 is exposed in your Pod (Pod > Edit Pod > TCP Ports > Add 22) + 2. Restart your Pod after adding the port + 3. Re-run `OhMyRunpod --file-transfer` to reconfigure SSH + + + + **Problem:** Getting "Permission denied" when trying to connect via SFTP + + **Solution:** + 1. Check that you're using the correct password from `/workspace/root_password.txt` + 2. Ensure you're using username `root` + 3. Verify the port number matches what's shown in the connection details + + + + **Problem:** SFTP client cannot resolve the host address + + **Solution:** + 1. Verify your Pod is running and not stopped + 2. Check that you're using the correct IP address and port from the connection details + 3. Ensure your network allows outbound connections to the Runpod IP range + + + +## Tips + +- The password is automatically saved to `/workspace/root_password.txt` for your reference. +- For large file transfers, use a dedicated SFTP client like FileZilla or WinSCP instead of the command line. + +## More community solutions + +Have a tool that solves common Runpod problems? Community contributions are welcome! Share your solutions in the [Runpod Discord](https://discord.gg/runpod) community. + +## Related Runpod documentation + +- [SSH Configuration Guide](/pods/configuration/use-ssh) +- [Managing Pods](/pods/manage-pods) +- [Connecting to Pods](/pods/connect-to-a-pod) \ No newline at end of file diff --git a/community-solutions/overview.mdx b/community-solutions/overview.mdx new file mode 100644 index 00000000..dd46e4e0 --- /dev/null +++ b/community-solutions/overview.mdx @@ -0,0 +1,49 @@ +--- +title: "Introduction" +description: "Community-created tools and solutions by and for Runpod users" +icon: "flask" +--- + +This section showcases innovative tools and solutions created by the Runpod community. These are tools and workflows developed by users who encountered common challenges and built creative solutions to share with others. + +While these tools and solutions are not officially maintained by Runpod, we highlight them here because they demonstrate the ingenuity of our community and can be valuable resources for users facing similar challenges. + +## Using community solutions + +Community tools and solutions are provided as-is and maintained by their creators. While we showcase them for their utility, please note that you should test in a development environment first, review the source code when available, report issues to the tool creators, and ultimately use them at your own discretion. + +## Featured tools & solutions + +Explore these community-created tools that can enhance your Runpod workflow: + + + + Python package for easy SFTP setup and file transfers. Simplifies connecting to your Pods with file transfer software like FileZilla. + + + + Bash and Python scripts for migrating data between Runpod instances when you need to move Pods or backup data. + + + + Web-based GUI for easy file browsing, uploading, downloading, and media viewing on Runpod without complex command-line operations. + + + +Browse through our community tools section in the sidebar for detailed documentation on each tool's purpose, installation, and usage. + +## Contributing + +Built something useful on Runpod? The community would love to learn about it! Share your tools and get feedback in the [Runpod Discord](https://discord.gg/runpod). diff --git a/community-solutions/ssh-password-migration/overview.mdx b/community-solutions/ssh-password-migration/overview.mdx new file mode 100644 index 00000000..7ee2165e --- /dev/null +++ b/community-solutions/ssh-password-migration/overview.mdx @@ -0,0 +1,114 @@ +--- +title: "SSH password setup & migration tools" +description: "Simple tools for migrating data between Runpod instances" +icon: "arrows-rotate" +--- + +## What are these tools? + +These are simple bash and Python scripts that solve a critical problem: **migrating data between Runpod instances when you need to move Pods** (e.g., when your Pod gets stuck with zero GPUs or you need to switch to a different instance). + + +Check the repository for additional features, updates, and documentation: [github.com/justinwlin/Runpod-SSH-Password](https://github.com/justinwlin/Runpod-SSH-Password) + + +## The problem it solves + +When Runpod users encounter issues like: +- Pod stuck with **zero GPUs allocated**. +- Need to **migrate to a different GPU type**. +- Want to **transfer data between Pods**. +- Need to **backup data before terminating a Pod**. + +This tool provides a simple solution for transferring your files to a new Pod. + +## Requirements + +Before using these tools, make sure you have: + +1. **Terminal access** on your Runpod instances: + - Web Terminal in Runpod's interface, or + - Terminal in Jupyter Notebook/Lab + +2. **Port 22 exposed** on destination Pod / source Pod: + - Go to: **Pod > Edit Pod > TCP Ports** + - Add port `22` if not present + + + **Important**: Changing TCP ports will restart your Pod and **erase all data outside of `/workspace`**. Make sure all important files are stored in `/workspace` (the default persistent directory) before making port changes. + + +3. **Linux-based template**: Works on Ubuntu/Debian images (most Runpod templates) + +## Quick migration workflow + + + + On your **destination Pod** (where you're migrating to): + ```bash + wget https://raw.githubusercontent.com/justinwlin/Runpod-SSH-Password/main/passwordrunpod.sh && chmod +x passwordrunpod.sh && ./passwordrunpod.sh + ``` + + The script will prompt you to set a password. After setup, it displays your connection details: + ``` + You can now connect using: ssh root@213.173.105.86 -p 17958 + Password: [the password you just set] + ``` + + **Save these details** - you'll need them in Step 4. + + + + On your **source Pod** (where your files currently are): + ```bash + wget https://raw.githubusercontent.com/justinwlin/Runpod-SSH-Password/refs/heads/main/SCPMigration -O scp_migration.py && python3 scp_migration.py + ``` + + + + The tool provides an interactive interface: + + **Navigation Mode** - Browse directories: + ``` + Current directory: /workspace + + Navigate by entering a number: + 1. models/ + 2. data/ + 3. ComfyUI/ + + Navigate to: 1 (enters models folder) + Navigate to: s (switch to selection mode) + ``` + + **Selection Mode** - Choose what to transfer: + ``` + Select item: 1 (selects folder/file) + ``` + + + + Enter the SSH details from Step 1: + ``` + Enter SSH command: ssh root@213.173.105.86 -p 17958 + Enter password: [the password you set in Step 1] + ``` + + The tool will: + - **Files**: Transfer directly via SCP + - **Folders**: Compress to ZIP, transfer, then extract automatically + + + +## Key features + +- **Interactive navigation**: Browse files with simple number selection +- **Smart compression**: Automatically zips folders for reliable transfer +- **Mode switching**: Press `s` for selection, `n` for navigation +- **Clean transfer**: Auto-extracts and cleans up on destination + +## Related resources + +- [Managing Pods](/pods/manage-pods) +- [Pod storage overview](/pods/storage/types) +- [Network volumes](/pods/storage/create-network-volumes) \ No newline at end of file diff --git a/docs.json b/docs.json index 861ba904..145d433c 100644 --- a/docs.json +++ b/docs.json @@ -228,6 +228,7 @@ } ] }, + { "tab": "Tutorials", "groups": [ @@ -319,6 +320,21 @@ } ] }, + { + "tab": "Community", + "groups": [ + { + "group": "Community solutions", + "pages": [ + "community-solutions/overview", + "community-solutions/ohmyrunpod/overview", + "community-solutions/ssh-password-migration/overview", + "community-solutions/copyparty-file-manager/overview" + + ] + } + ] + }, { "tab": "SDKs", "groups": [ diff --git a/images/ohmyrunpod-file-transfer-selection.png b/images/ohmyrunpod-file-transfer-selection.png new file mode 100644 index 00000000..45a346e2 Binary files /dev/null and b/images/ohmyrunpod-file-transfer-selection.png differ diff --git a/images/ohmyrunpod-sftp-confirm.png b/images/ohmyrunpod-sftp-confirm.png new file mode 100644 index 00000000..460dd920 Binary files /dev/null and b/images/ohmyrunpod-sftp-confirm.png differ diff --git a/overview.mdx b/overview.mdx index 3e0f9a75..149ef09a 100644 --- a/overview.mdx +++ b/overview.mdx @@ -63,6 +63,25 @@ Pods allow you to run containerized workloads on dedicated GPU or CPU instances. +## Community Lab + +Explore community-created tools and solutions that enhance your Runpod experience. + + + + Python package for easy SFTP setup and simplified file transfers to your Pods. + + + Scripts for migrating data between Pods when you need to move or backup. + + + Web-based GUI for file browsing, uploading, and downloading without CLI. + + + Discover all community tools and solutions in the Community Lab. + + + ## Support