diff --git a/README.md b/README.md
index 823275fb..abba73b6 100644
--- a/README.md
+++ b/README.md
@@ -1,28 +1,27 @@
-
+# BBS-Proxy
+日本向けに軽量化して作ったWEBProxyです。
+## ~ 導入方法&起動方法 ~
-Ultraviolet-App
+```sudo curl -Ls https://raw.githubusercontent.com/hirotomoki12345/BBS-Proxy/main/set_pm2.sh -o set.sh```
+```bash ./set.sh```
-The deployable all-in-one bundle for [Ultraviolet](https://github.com/titaniumnetwork-dev/Ultraviolet), a highly sophisticated proxy used for evading internet censorship or accessing websites in a controlled sandbox using the power of service-workers and more!
+logの様子を見るには
-## Deployment
+```pm2 logs bbs-proxy```
-[![Run on Replit](https://binbashbanana.github.io/deploy-buttons/buttons/remade/replit.svg)](https://github.com/titaniumnetwork-dev/Ultraviolet-App/wiki/Run-on-Replit)
-[![Deploy on Railway](https://binbashbanana.github.io/deploy-buttons/buttons/remade/railway.svg)](https://github.com/titaniumnetwork-dev/Ultraviolet-App/wiki/Deploy-on-Railway)
-[![Remix on Glitch](https://binbashbanana.github.io/deploy-buttons/buttons/remade/glitch.svg)](https://github.com/titaniumnetwork-dev/Ultraviolet-App/wiki/Remix-on-Glitch)
-[![Deploy to Koyeb](https://binbashbanana.github.io/deploy-buttons/buttons/remade/koyeb.svg)](https://github.com/titaniumnetwork-dev/Ultraviolet-App/wiki/Deploy-to-Koyeb)
+で見れます
+### 終
+## 止めるには
+```pm2 stop bbs-proxy```
+## 削除するには
+```sudo curl -Ls https://raw.githubusercontent.com/hirotomoki12345/BBS-Proxy/main/delete.sh | sudo bash```
+## 注意
+~~debian linuxじゃないとできないです。(apt入れたらできるかも(試していません))~~
-If you are deploying to an alternative service or to a server, refer to [Deploy via terminal](https://github.com/titaniumnetwork-dev/Ultraviolet-App/wiki/Deploy-via-terminal).
+他のディストリビューションにも対応させました。
-Additional information such as [customizing your frontend](https://github.com/titaniumnetwork-dev/Ultraviolet-App/wiki/Customizing-your-frontend) can be found on the [wiki](https://github.com/titaniumnetwork-dev/Ultraviolet-App/wiki).
+localhost以外はHTTPSじゃないと使えません。
+## 使わせてもらったもの
+Ultraviolet:https://github.com/titaniumnetwork-dev/Ultraviolet
-Support and updates can be found in our [Discord Server](discord.gg/unblock).
-
-> [!IMPORTANT]
-> Until deployed on a domain with a valid SSL certificate, Firefox will not be able to load the site. Use chromium for testing on localhost
-
-### HTTP Transport
-The example uses [EpoxyTransport](https://github.com/MercuryWorkshop/EpoxyTransport) to fetch proxied data encrypted.
-
-You may also want to use [CurlTransport](https://github.com/MercuryWorkshop/CurlTransport), a different way of fetching encrypted data, or [Bare-Client](https://github.com/MercuryWorkshop/Bare-as-module3), the legacy (unencrypted!) transport.
-
-See the [bare-mux](https://github.com/MercuryWorkshop/bare-mux) documentation for more information.
+© BlogBooks Community
diff --git a/package.json b/package.json
index a868f679..16d77a7d 100644
--- a/package.json
+++ b/package.json
@@ -15,15 +15,15 @@
],
"author": "",
"license": "GPL-3.0-or-later",
- "dependencies": {
- "@mercuryworkshop/bare-mux": "^2.0.4",
- "@mercuryworkshop/epoxy-transport": "^2.1.8",
- "@titaniumnetwork-dev/ultraviolet": "^3.2.7",
- "express": "^4.18.2",
- "ultraviolet-static": "github:titaniumnetwork-dev/Ultraviolet-Static",
- "wisp-server-node": "^1.1.3",
- "ws": "^8.17.1"
- },
+"dependencies": {
+ "@mercuryworkshop/bare-mux": "^2.0.4",
+ "@mercuryworkshop/epoxy-transport": "^2.1.8",
+ "@titaniumnetwork-dev/ultraviolet": "^3.2.7",
+ "express": "^4.18.2",
+ "ultraviolet-static": "github:hirotomoki12345/Ultraviolet-psannetwork",
+ "wisp-server-node": "^1.1.3",
+ "ws": "^8.17.1"
+},
"devDependencies": {
"eslint": "^8.36.0",
"prettier": "^2.8.4"
diff --git a/set_pm2.sh b/set_pm2.sh
new file mode 100644
index 00000000..dd7b16fe
--- /dev/null
+++ b/set_pm2.sh
@@ -0,0 +1,193 @@
+
+#!/bin/bash
+
+if [ "$(id -u)" != "0" ]; then
+ echo "This script must be run as root"
+ exit 1
+fi
+
+install_debian() {
+ if ! dpkg -s "$1" &> /dev/null; then
+ if ! apt install -y "$1"; then
+ echo "Failed to install $1 on Debian-based system"
+ exit 1
+ fi
+ fi
+}
+
+install_arch() {
+ if ! pacman -Qi "$1" &> /dev/null; then
+ if ! pacman -S --noconfirm "$1"; then
+ echo "Failed to install $1 on Arch-based system"
+ exit 1
+ fi
+ fi
+}
+
+install_redhat() {
+ if ! rpm -q "$1" &> /dev/null; then
+ if ! yum install -y "$1"; then
+ echo "Failed to install $1 on RedHat-based system"
+ exit 1
+ fi
+ fi
+}
+
+install_packages() {
+ installer=$1
+ shift
+ for package in "$@"; do
+ $installer "$package"
+ done
+}
+
+install_and_start() {
+ if [ -f /etc/debian_version ]; then
+ if ! apt-get update -o Acquire::AllowInsecureRepositories=true 2>/dev/null; then
+ echo "Some repositories failed to update, but continuing..."
+ fi
+ install_packages install_debian git npm
+ elif [ -f /etc/arch-release ]; then
+ if ! pacman -Syu --noconfirm; then
+ echo "Failed to update package list on Arch-based system"
+ exit 1
+ fi
+ install_packages install_arch git npm
+ elif [ -f /etc/redhat-release ]; then
+ if ! yum update -y; then
+ echo "Failed to update package list on RedHat-based system"
+ exit 1
+ fi
+ install_packages install_redhat git npm
+ else
+ echo "Unsupported distribution"
+ exit 1
+ fi
+
+ if ! npm install pm2 -g; then
+ echo "Failed to install PM2 globally"
+ exit 1
+ fi
+
+ if [ ! -d "BBS-Proxy" ]; then
+ if ! git clone https://github.com/hirotomoki12345/BBS-Proxy.git; then
+ echo "Failed to clone the repository"
+ exit 1
+ fi
+ else
+ echo "Directory BBS-Proxy already exists, skipping clone"
+ fi
+
+ cd BBS-Proxy || { echo "Failed to change directory to BBS-Proxy"; exit 1; }
+
+ if [ ! -d "node_modules" ]; then
+ if ! npm install; then
+ echo "Failed to install npm dependencies"
+ exit 1
+ fi
+ else
+ echo "Dependencies already installed, skipping npm install"
+ fi
+
+ if ! pm2 start npm --name "bbs-proxy" -- start; then
+ echo "Failed to start the application with PM2"
+ exit 1
+ fi
+
+ pm2 save
+ sudo pm2 startup
+ sudo pm2 save
+
+ echo "BBS-Proxy application started successfully with PM2"
+}
+
+delete_application() {
+ if pm2 list | grep -q 'bbs-proxy'; then
+ pm2 stop bbs-proxy
+ pm2 delete bbs-proxy
+ echo "PM2 application 'bbs-proxy' stopped and deleted successfully."
+ else
+ echo "PM2 application 'bbs-proxy' not found."
+ fi
+
+ # BBS-Proxyディレクトリを削除
+ if [ -d "BBS-Proxy" ]; then
+ rm -rf BBS-Proxy
+ echo "Application directory BBS-Proxy deleted successfully."
+ else
+ echo "BBS-Proxy directory not found."
+ fi
+}
+
+
+show_logs() {
+ if [ -d "BBS-Proxy/logs" ]; then
+ cat BBS-Proxy/logs/*
+ else
+ echo "No logs found."
+ fi
+}
+
+show_details() {
+ echo "BBS-Proxy version: $(git -C BBS-Proxy describe --tags 2>/dev/null || echo 'N/A')"
+ echo "Node.js version: $(node -v)"
+ echo "npm version: $(npm -v)"
+ echo "PM2 version: $(pm2 -v)"
+}
+
+youtube() {
+ cd BBS-Proxy
+ sudo bash ./youtube-downloader.sh
+}
+
+show_license() {
+ if [ -f "BBS-Proxy/LICENSE" ]; then
+ cat BBS-Proxy/LICENSE
+ else
+ echo "No LICENSE file found."
+ fi
+}
+
+clear
+echo " ____ _ ____ _ "
+echo "| __ )| | ___ __ _ | __ ) ___ ___ | | _____ "
+echo "| _ \| |/ _ \ / _\` | | _ \ / _ \ / _ \| |/ / __|"
+echo "| |_) | | (_) | (_| | | |_) | (_) | (_) | <\__ \\"
+echo "|____/|_|\___/ \__, | |____/ \___/ \___/|_|\_\___/"
+echo " |___/ "
+
+echo "Please select an option:"
+echo "1) Start new installation"
+echo "2) Delete application"
+echo "3) Show logs"
+echo "4) Show details"
+echo "5) youtube"
+echo "6) Exit"
+
+read -rp "Enter your choice [1-6]: " choice
+
+case $choice in
+ 1)
+ install_and_start
+ ;;
+ 2)
+ delete_application
+ ;;
+ 3)
+ show_logs
+ ;;
+ 4)
+ show_details
+ ;;
+ 5)
+ youtube
+ ;;
+ 6)
+ echo "Exiting."
+ exit 0
+ ;;
+ *)
+ echo "Invalid option."
+ exit 1
+ ;;
+esac
diff --git a/src/local.js b/src/local.js
new file mode 100644
index 00000000..908cb112
--- /dev/null
+++ b/src/local.js
@@ -0,0 +1,78 @@
+import express from "express";
+import { createServer as createHttpServer } from "node:http";
+import { createServer as createHttpsServer } from "node:https"; // 追加
+import { publicPath } from "ultraviolet-static";
+import { uvPath } from "@titaniumnetwork-dev/ultraviolet";
+import { epoxyPath } from "@mercuryworkshop/epoxy-transport";
+import { baremuxPath } from "@mercuryworkshop/bare-mux/node";
+import { join } from "node:path";
+import { hostname } from "node:os";
+import wisp from "wisp-server-node";
+import fs from "fs"; // 追加
+
+const app = express();
+
+// Load our publicPath first and prioritize it over UV.
+app.use(express.static(publicPath));
+// Load vendor files last.
+// The vendor's uv.config.js won't conflict with our uv.config.js inside the publicPath directory.
+app.use("/uv/", express.static(uvPath));
+app.use("/epoxy/", express.static(epoxyPath));
+app.use("/baremux/", express.static(baremuxPath));
+
+// Error for everything else
+app.use((req, res) => {
+ res.status(404);
+ res.sendFile(join(publicPath, "404.html"));
+});
+
+// HTTPSのオプションを定義
+const httpsOptions = {
+ key: fs.readFileSync('server.key'), // 秘密鍵のパス
+ cert: fs.readFileSync('server.cert') // 証明書のパス
+};
+
+// HTTPSサーバーの作成
+const server = createHttpsServer(httpsOptions); // HTTPSサーバーに変更
+
+server.on("request", (req, res) => {
+ res.setHeader("Cross-Origin-Opener-Policy", "same-origin");
+ res.setHeader("Cross-Origin-Embedder-Policy", "require-corp");
+ app(req, res);
+});
+
+server.on("upgrade", (req, socket, head) => {
+ if (req.url.endsWith("/wisp/"))
+ wisp.routeRequest(req, socket, head);
+ else
+ socket.end();
+});
+
+let port = parseInt(process.env.PORT || "");
+
+if (isNaN(port)) port = 8080;
+
+server.on("listening", () => {
+ const address = server.address();
+
+ console.log("Listening on:");
+ console.log(`\thttps://localhost:${address.port}`);
+ console.log(`\thttps://${hostname()}:${address.port}`);
+ console.log(
+ `\thttps://${address.family === "IPv6" ? `[${address.address}]` : address.address
+ }:${address.port}`
+ );
+});
+
+process.on("SIGINT", shutdown);
+process.on("SIGTERM", shutdown);
+
+function shutdown() {
+ console.log("SIGTERM signal received: closing HTTPS server");
+ server.close();
+ process.exit(0);
+}
+
+server.listen({
+ port,
+});