User: WebVM
Discord server Issues

This repository hosts the source code for https://webvm.io, a Linux virtual machine that runs in your browser.

Try out the new Alpine / Xorg / i3 graphical environment: https://webvm.io/alpine.html



WebVM is a server-less virtual environment running fully client-side in HTML5/WebAssembly. It's designed to be Linux ABI-compatible. It runs an unmodified Debian distribution including many native development toolchains.

WebVM is powered by the CheerpX virtualization engine, and enables safe, sandboxed client-side execution of x86 binaries on any browser. CheerpX includes an x86-to-WebAssembly JIT compiler, a virtual block-based file system, and a Linux syscall emulator.

Enable networking
Modern browsers do not provide APIs to directly use TCP or UDP. WebVM provides networking support by integrating with Tailscale, a VPN network that supports WebSockets as a transport layer.

Open the "Networking" panel from the side-bar
Click "Connect to Tailscale" from the panel
Log in to Tailscale (create an account if you don't have one)
Click "Connect" when prompted by Tailscale
If you are unfamiliar with Tailscale or would like additional information see WebVM and Tailscale.
Fork, deploy, customize
deploy_instructions_gif

Fork the repository.
Enable Github pages in settings.
Click on Settings.
Go to the Pages section.
Select Github Actions as the source.
If you are using a custom domain, ensure Enforce HTTPS is enabled.
Run the workflow.
Click on Actions.
Accept the prompt. This is required only once to enable Actions for your fork.
Click on the workflow named Deploy.
Click Run workflow and then once more Run workflow in the menu.
After a few seconds a new Deploy workflow will start, click on it to see details.
After the workflow completes, which takes a few minutes, it will show the URL below the deploy_to_github_pages job.


You can now customize dockerfiles/debian_mini to suit your needs, or make a new Dockerfile from scratch. Use the Path to Dockerfile workflow parameter to select it.

Local deployment
From a local git clone

Download the debian_mini Ext2 image from https://github.com/leaningtech/webvm/releases/
You can also build your own by selecting the "Upload GitHub release" workflow option
Place the image in the repository root folder
Edit config_github_terminal.js
Uncomment the default values for CMD, ARGS, ENV and CWD
Replace IMAGE_URL with the URL (absolute or relative) for the Ext2 image. For example "/debian_mini_20230519_5022088024.ext2"
Build WebVM using npm, output will be placed in the build directory
npm install
npm run build
Start NGINX, it automatically points to the build directory just created
nginx -p . -c nginx.conf
Visit http://127.0.0.1:8081 and enjoy your local WebVM
Example customization: Python3 REPL
The Deploy workflow takes into account the CMD specified in the Dockerfile. To build a REPL you can simply apply this patch and deploy.

diff --git a/dockerfiles/debian_mini b/dockerfiles/debian_mini
index 2878332..1f3103a 100644
--- a/dockerfiles/debian_mini
+++ b/dockerfiles/debian_mini
@@ -15,4 +15,4 @@ WORKDIR /home/user/
 # We set env, as this gets extracted by Webvm. This is optional.
 ENV HOME="/home/user" TERM="xterm" USER="user" SHELL="/bin/bash" EDITOR="vim" LANG="en_US.UTF-8" LC_ALL="C"
 RUN echo 'root:password' | chpasswd
-CMD [ "/bin/bash" ]
+CMD [ "/usr/bin/python3" ]
Bugs and Issues
Please use Issues to report any bug. Or come to say hello / share your feedback on Discord.

More links
WebVM: server-less x86 virtual machines in the browser
WebVM: Linux Virtualization in WebAssembly with Full Networking via Tailscale
Mini.WebVM: Your own Linux box from Dockerfile, virtualized in the browser via WebAssembly
Reference GitHub Pages deployment: Mini.WebVM
Crafting the Impossible: X86 Virtualization in the Browser with WebAssembly Talk at JsNation 2022
Thanks to...
This project depends on:

CheerpX, made by Leaning Technologies for x86 virtualization and Linux emulation
xterm.js, https://xtermjs.org/, for providing the Web-based terminal emulator
Tailscale, for the networking component
lwIP, for the TCP/IP stack, compiled for the Web via Cheerp
Versioning
WebVM depends on the CheerpX x86-to-WebAssembly virtualization technology, which is included in the project via NPM.

The NPM package is updated on every release.

Every build is immutable, if a specific version works well for you today, it will keep working forever.

License
WebVM is released under the Apache License, Version 2.0.

You are welcome to use, modify, and redistribute the contents of this repository.

The public CheerpX deployment is provided as-is and is free to use for technological exploration, testing and use by individuals. Any other use by organizations, including non-profit, academia and the public sector, requires a license. Downloading a CheerpX build for the purpose of hosting it elsewhere is not permitted without a commercial license.

Read more about CheerpX licensing

If you wa



这是啥项目？
Assistant: WebVM 是一个允许你在浏览器中运行完整 Linux 虚拟环境的项目。它通过 HTML5 和 WebAssembly 技术实现完全在客户端执行，无需服务器支持。其设计目标是与 Linux ABI 兼容，并运行未经修改的 Debian 发行版，其中包括许多原生开发工具链。

以下是 WebVM 项目的几个关键特点：

1. **技术支持**：WebVM 使用 CheerpX 虚拟化引擎，支持安全、沙盒化的 x86 二进制文件在浏览器上的执行。CheerpX 包括一个 x86 到 WebAssembly 的即时编译器、虚拟块级文件系统，以及 Linux 系统调用仿真器。

2. **网络支持**：由于现代浏览器不直接提供 TCP 或 UDP 的 API，WebVM 通过集成 Tailscale（一个支持 WebSockets 传输层的 VPN 网络）提供网络支持。

3. **自定义和部署**：用户可以通过 GitHub Pages 部署自己的 WebVM 实例，或者本地部署。用户也可以自定义 Dockerfile，以创建个性化的虚拟机环境。

4. **开源和授权**：WebVM 在 Apache 2.0 许可证下发布，用户可以自由使用、修改和再分发。不过，CheerpX 的公用部署仅限于个人技术探索、测试和使用，其他用途需要商业授权。

整体来说，WebVM 是一个旨在于提升浏览器内虚拟化能力的创新项目，可以用于技术探索和开发环境搭建。不过，项目的某些功能（如商业用途）可能需要特别注意相关的许可协议。
User: 如何部署？
Assistant: 要在本地或通过 GitHub Pages 部署 WebVM，你可以按照以下步骤进行：

### 1. 使用 GitHub Pages 部署

1. **Fork 仓库：**
   - 登录 GitHub，访问 [WebVM 的 GitHub 仓库](https://github.com/leaningtech/webvm)，并点击 "Fork" 以创建你自己的仓库副本。

2. **启用 GitHub Pages：**
   - 进入你 fork 的仓库，点击 "Settings"（设置）。
   - 在左侧菜单中找到并点击 "Pages"。
   - 在 "Build and Deployment" 的 "Source" 中选择 "GitHub Actions" 作为来源。

3. **运行部署 Workflow：**
   - 点击 "Actions" 选项卡以访问 GitHub Actions。
   - 可能会有启用 Actions 的提示，接受此提示，这只需要在你的 fork 首次使用时执行。
   - 找到名为 "Deploy" 的工作流程，点击进入。
   - 点击页面上的 "Run workflow" 按钮，再次点击确认运行。
   - 等待几分钟，部署工作流程完成后，将会显示部署的 URL。

### 2. 本地部署

1. **下载或构建 Ext2 镜像：**
   - 从 [GitHub Releases](https://github.com/leaningtech/webvm/releases) 页面下载 `debian_mini` Ext2 镜像。
   - 或者，你可以通过选择 “Upload GitHub release” 工作流程方法构建你自己的镜像。

2. **准备项目文件：**
   - 将下载的镜像放置在项目的根目录中。
   - 编辑 `config_github_terminal.js` 文件。
     - 取消注释默认值的 CMD, ARGS, ENV 和 CWD。
     - 替换 IMAGE_URL 为 Ext2 镜像的 URL（可以是绝对路径或相对路径，例如 "/debian_mini_20230519_5022088024.ext2"）。

3. **构建项目：**
   - 确保已安装 Node.js 和 npm。
   - 在项目根目录中运行下列命令，以安装依赖并构建项目：
     ```bash
     npm install
     npm run build
     ```

4. **启动 NGINX 服务器：**
   - 使用以下命令启动 NGINX 服务器，它会自动指向刚刚创建的 build 目录：
     ```bash
     nginx -p . -c nginx.conf
     ```
   - 打开浏览器访问 `http://127.0.0.1:8081`，即可在本地使用 WebVM。

只需根据这些步骤，你就可以在云端（通过 GitHub Pages）或本地搭建 WebVM 环境。如果需要修改 Dockerfile 以满足特定需求，也可以在 `dockerfiles/debian_mini` 文件中进行更改。
User: 详细一点，比如我要在debian上原生运行
Assistant: 要在 Debian 上原生运行 WebVM 的本地部署，你需要准备环境，使 WebVM 的 x86 虚拟化能力在你的本地系统上正常工作。以下是详细说明，如何在本地获取和运行 WebVM：

### 环境准备

1. **安装 Node.js 和 npm：**
   WebVM 使用 npm 构建和管理依赖项。首先，你需要在 Debian 上安装 Node.js 和 npm。如果系统中尚未安装，可以通过以下命令进行安装：

   ```bash
   sudo apt update
   sudo apt install nodejs npm
   ```

2. **安装 NGINX：**
   WebVM 使用 NGINX 作为服务器来提供它构建的文件，因此，你还需要安装 NGINX：

   ```bash
   sudo apt install nginx
   ```

### 获取并构建 WebVM

1. **克隆 WebVM 仓库：**

   首先，在你想要存放项目的目录中克隆 WebVM 仓库：

   ```bash
   git clone https://github.com/leaningtech/webvm.git
   cd webvm
   ```

2. **下载或构建 Ext2 镜像：**

   你需要一个 Ext2 镜像来提供虚拟机的文件系统。你可以从官方的 GitHub Releases 页面下载 `debian_mini` Ext2 镜像文件：

   - 访问 [WebVM Releases](https://github.com/leaningtech/webvm/releases) 页面，下载最新的 `debian_mini.ext2` 镜像。
   - 将下载的镜像文件放置于项目的根目录。

3. **配置 WebVM：**

   编辑 `config_github_terminal.js` 文件，设置镜像文件路径。

   - 打开 `config_github_terminal.js`。
   - 取消注释相关配置项（CMD, ARGS, ENV 和 CWD）。
   - 将 `IMAGE_URL` 替换为你的 Ext2 镜像文件路径，例如 `"./debian_mini.ext2"`。

4. **安装项目依赖并构建项目：**

   使用 npm 下载项目依赖并构建：

   ```bash
   npm install
   npm run build
   ```

   运行上述命令后，WebVM 的构建文件将放置于 `build` 目录中。

### 启动 WebVM

1. **配置并启动 NGINX：**

   编辑项目目录中的 `nginx.conf` 文件，使其指向构建目录。检查配置文件以确保其指向正确的构建文件路径，然后启动 NGINX：

   ```bash
   sudo nginx -p . -c nginx.conf
   ```

2. **访问 WebVM：**

   打开浏览器并访问 `http://127.0.0.1:8081`，你应该可以看到 WebVM 的界面，并能够在其中运行 Linux 虚拟环境。

如果遇到任何问题，可以检查 NGINX 的配置和 Node.js 依赖项安装是否正确，并确保镜像路径设置无误。通过这些步骤，你可以在 Debian 系统上体验 WebVM 的功能，完全在你的本地环境中运行该程序。
User: freqtrade
Freqtrade CI DOI Coverage Status Documentation Maintainability

Freqtrade is a free and open source crypto trading bot written in Python. It is designed to support all major exchanges and be controlled via Telegram or webUI. It contains backtesting, plotting and money management tools as well as strategy optimization by machine learning.

freqtrade

Disclaimer
This software is for educational purposes only. Do not risk money which you are afraid to lose. USE THE SOFTWARE AT YOUR OWN RISK. THE AUTHORS AND ALL AFFILIATES ASSUME NO RESPONSIBILITY FOR YOUR TRADING RESULTS.

Always start by running a trading bot in Dry-run and do not engage money before you understand how it works and what profit/loss you should expect.

We strongly recommend you to have coding and Python knowledge. Do not hesitate to read the source code and understand the mechanism of this bot.

Supported Exchange marketplaces
Please read the exchange specific notes to learn about eventual, special configurations needed for each exchange.

 Binance
 Bitmart
 BingX
 Bybit
 Gate.io
 HTX (Former Huobi)
 Hyperliquid (A decentralized exchange, or DEX)
 Kraken
 OKX (Former OKEX)
 potentially many others. (We cannot guarantee they will work)
Supported Futures Exchanges (experimental)
 Binance
 Gate.io
 Hyperliquid (A decentralized exchange, or DEX)
 OKX
 Bybit
Please make sure to read the exchange specific notes, as well as the trading with leverage documentation before diving in.

Community tested
Exchanges confirmed working by the community:

 Bitvavo
 Kucoin
Documentation
We invite you to read the bot documentation to ensure you understand how the bot is working.

Please find the complete documentation on the freqtrade website.

Features
 Based on Python 3.10+: For botting on any operating system - Windows, macOS and Linux.
 Persistence: Persistence is achieved through sqlite.
 Dry-run: Run the bot without paying money.
 Backtesting: Run a simulation of your buy/sell strategy.
 Strategy Optimization by machine learning: Use machine learning to optimize your buy/sell strategy parameters with real exchange data.
 Adaptive prediction modeling: Build a smart strategy with FreqAI that self-trains to the market via adaptive machine learning methods. Learn more
 Edge position sizing Calculate your win rate, risk reward ratio, the best stoploss and adjust your position size before taking a position for each specific market. Learn more.
 Whitelist crypto-currencies: Select which crypto-currency you want to trade or use dynamic whitelists.
 Blacklist crypto-currencies: Select which crypto-currency you want to avoid.
 Builtin WebUI: Builtin web UI to manage your bot.
 Manageable via Telegram: Manage the bot with Telegram.
 Display profit/loss in fiat: Display your profit/loss in fiat currency.
 Performance status report: Provide a performance status of your current trades.
Quick start
Please refer to the Docker Quickstart documentation on how to get started quickly.

For further (native) installation methods, please refer to the Installation documentation page.

Basic Usage
Bot commands
usage: freqtrade [-h] [-V]
                 {trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis}
                 ...

Free, open source crypto trading bot

positional arguments:
  {trade,create-userdir,new-config,show-config,new-strategy,download-data,convert-data,convert-trade-data,trades-to-ohlcv,list-data,backtesting,backtesting-show,backtesting-analysis,edge,hyperopt,hyperopt-list,hyperopt-show,list-exchanges,list-markets,list-pairs,list-strategies,list-freqaimodels,list-timeframes,show-trades,test-pairlist,convert-db,install-ui,plot-dataframe,plot-profit,webserver,strategy-updater,lookahead-analysis,recursive-analysis}
    trade               Trade module.
    create-userdir      Create user-data directory.
    new-config          Create new config
    show-config         Show resolved config
    new-strategy        Create new strategy
    download-data       Download backtesting data.
    convert-data        Convert candle (OHLCV) data from one format to
                        another.
    convert-trade-data  Convert trade data from one format to another.
    trades-to-ohlcv     Convert trade data to OHLCV data.
    list-data           List downloaded data.
    backtesting         Backtesting module.
    backtesting-show    Show past Backtest results
    backtesting-analysis
                        Backtest Analysis module.
    edge                Edge module.
    hyperopt            Hyperopt module.
    hyperopt-list       List Hyperopt results
    hyperopt-show    


这是什么项目
Assistant: