This commit is contained in:
eric
2026-06-08 06:05:31 -05:00
parent ebfec37e47
commit 06ab949d81
77 changed files with 3646 additions and 358 deletions

View File

@@ -9,7 +9,7 @@ Windows / macOS 本地开发SSH 隧道把线上 MinIO/PocketBase 映射到本
用法:
python scripts/dev-tunnel.py
环境变量(可写在 .env.local
环境变量(推荐写在 cursor.env可写在 .env.local
DEV_SSH_HOST=82.157.112.245
DEV_SSH_USER=ubuntu
DEV_SSH_PASSWORD=你的密码
@@ -35,26 +35,7 @@ except ImportError:
ROOT = Path(__file__).resolve().parent.parent
def _read_env_file(path: Path) -> dict[str, str]:
values: dict[str, str] = {}
if not path.exists():
return values
for raw in path.read_text(encoding="utf-8").splitlines():
line = raw.strip()
if not line or line.startswith("#") or "=" not in line:
continue
key, value = line.split("=", 1)
values[key.strip()] = value.strip().strip('"').strip("'")
return values
def load_env() -> None:
merged: dict[str, str] = {}
for path in [ROOT / ".env.local", ROOT / ".env", ROOT / "backend" / ".env"]:
merged.update(_read_env_file(path))
for key, value in merged.items():
os.environ.setdefault(key, value)
from load_dev_env import load_dev_env as load_env # noqa: E402
def forward_tunnel(local_port: int, remote_host: str, remote_port: int, transport) -> None:

54
scripts/load_dev_env.py Normal file
View File

@@ -0,0 +1,54 @@
"""加载本地开发环境变量cursor.env 优先级最高)。"""
from __future__ import annotations
import os
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
ENV_FILES = (
ROOT / ".env",
ROOT / ".env.local",
ROOT / "backend" / ".env",
ROOT / "backend" / ".env.local",
ROOT / "cursor.env",
)
def read_env_file(path: Path) -> dict[str, str]:
values: dict[str, str] = {}
if not path.exists():
return values
for raw_line in path.read_text(encoding="utf-8").splitlines():
line = raw_line.strip()
if not line or line.startswith("#") or "=" not in line:
continue
key, value = line.split("=", 1)
key = key.strip()
value = value.strip().strip('"').strip("'")
if key:
values[key] = value
return values
def load_dev_env() -> dict[str, str]:
merged: dict[str, str] = {}
for path in ENV_FILES:
merged.update(read_env_file(path))
for key, value in merged.items():
os.environ[key] = value
return merged
def ssh_config() -> tuple[str, str, str]:
"""返回 (host, user, password),优先读 cursor.env。"""
merged = load_dev_env()
host = merged.get("NOMAD_SSH_HOST") or merged.get("DEV_SSH_HOST", "")
user = merged.get("NOMAD_SSH_USER") or merged.get("DEV_SSH_USER", "ubuntu")
password = merged.get("NOMAD_SSH_PASSWORD") or merged.get("DEV_SSH_PASSWORD", "")
if not host or not password:
raise RuntimeError(
"SSH 配置缺失:请在项目根目录 cursor.env 中设置 DEV_SSH_HOST / DEV_SSH_PASSWORD"
)
return host, user, password

View File

@@ -6,9 +6,11 @@ import sys
import paramiko
HOST = "82.157.112.245"
USER = "ubuntu"
PASSWORD = "Xiao4669805"
from load_dev_env import ssh_config
HOST, USER, PASSWORD = ssh_config()
REPO = "/home/ubuntu/gitlab-instance-0a899031_cnomadcna"
BUILD_CMD = (
f"cd {REPO} && "

View File

@@ -6,9 +6,11 @@ import sys
import paramiko
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "Xiao4669805")
from load_dev_env import ssh_config
HOST, USER, SSH_PASSWORD = ssh_config()
CMDS = [
"echo '{pw}' | sudo -S cat /etc/docker/daemon.json 2>/dev/null || echo 'no daemon.json'",

View File

@@ -6,9 +6,11 @@ import sys
import paramiko
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "Xiao4669805")
from load_dev_env import ssh_config
HOST, USER, SSH_PASSWORD = ssh_config()
CMDS = [
"docker ps -a | grep -i ntfy || true",

View File

@@ -8,9 +8,11 @@ from pathlib import Path
import paramiko
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "Xiao4669805")
from load_dev_env import ssh_config
HOST, USER, SSH_PASSWORD = ssh_config()
REMOTE_DIR = "/opt/nomadro-services/integrations"
NGINX_DIR = "/www/server/panel/vhost/nginx"
ROOT = Path(__file__).resolve().parent.parent

View File

@@ -6,9 +6,11 @@ import sys
import paramiko
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "Xiao4669805")
from load_dev_env import ssh_config
HOST, USER, SSH_PASSWORD = ssh_config()
CMDS = [
"echo '{pw}' | sudo -S ls /www/server/panel/vhost/nginx/ | grep nomadro",

View File

@@ -8,9 +8,11 @@ import paramiko
import os
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "")
from load_dev_env import ssh_config
HOST, USER, SSH_PASSWORD = ssh_config()
COMMANDS = [
"hostname",

View File

@@ -8,9 +8,11 @@ from pathlib import Path
import paramiko
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "Xiao4669805")
from load_dev_env import ssh_config
HOST, USER, SSH_PASSWORD = ssh_config()
NGINX_DIR = "/www/server/panel/vhost/nginx"
WEBROOT = "/www/wwwroot/www.nomadro.cn"
ROOT = Path(__file__).resolve().parent.parent

View File

@@ -7,9 +7,11 @@ import sys
import paramiko
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
SSH_PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "Xiao4669805")
from load_dev_env import ssh_config
HOST, USER, SSH_PASSWORD = ssh_config()
REPO = "/home/ubuntu/gitlab-instance-0a899031_cnomadcna"
GIT_USER = os.getenv("GIT_USER", "eric")
GIT_PASSWORD = os.getenv("GIT_PASSWORD", "")

View File

@@ -6,9 +6,11 @@ import sys
import paramiko
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "Xiao4669805")
from load_dev_env import ssh_config
HOST, USER, SSH_PASSWORD = ssh_config()
CMDS = [
"docker inspect nomadro-ntfy --format '{{json .Mounts}}'",

View File

@@ -5,9 +5,11 @@ import sys
import paramiko
HOST = "82.157.112.245"
USER = "ubuntu"
PASSWORD = "Xiao4669805"
from load_dev_env import ssh_config
HOST, USER, PASSWORD = ssh_config()
LOCAL = r"c:\Users\admin\Desktop\gitlab-instance-0a899031_cnomadcna\app\[locale]\join\page.tsx"
REMOTE = "/home/ubuntu/gitlab-instance-0a899031_cnomadcna/app/[locale]/join/page.tsx"
TMP = "/tmp/join-page.tsx"

View File

@@ -1,12 +1,11 @@
#!/usr/bin/env python3
from __future__ import annotations
import os
import paramiko
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "Xiao4669805")
from load_dev_env import ssh_config
HOST, USER, PASSWORD = ssh_config()
CMDS = [
"hostname; free -h | head -2; df -h / | tail -1",

View File

@@ -7,9 +7,11 @@ from pathlib import Path
import paramiko
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "Xiao4669805")
from load_dev_env import ssh_config
HOST, USER, SSH_PASSWORD = ssh_config()
REMOTE_DIR = "/opt/nomadro-services/integrations"
ROOT = Path(__file__).resolve().parent.parent

View File

@@ -6,9 +6,11 @@ import paramiko
import os
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "")
from load_dev_env import ssh_config
HOST, USER, SSH_PASSWORD = ssh_config()
INSPECT = [
"cat /var/lib/thelounge/config.js 2>&1 | head -20",

View File

@@ -9,9 +9,11 @@ import sys
import paramiko
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "Xiao4669805")
from load_dev_env import ssh_config
HOST, USER, SSH_PASSWORD = ssh_config()
def run(c: paramiko.SSHClient, cmd: str, timeout: int = 120) -> str:

View File

@@ -8,9 +8,11 @@ import sys
import paramiko
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "Xiao4669805")
from load_dev_env import ssh_config
HOST, USER, SSH_PASSWORD = ssh_config()
def run(c: paramiko.SSHClient, cmd: str) -> str:

View File

@@ -8,9 +8,11 @@ import sys
import paramiko
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "Xiao4669805")
from load_dev_env import ssh_config
HOST, USER, SSH_PASSWORD = ssh_config()
def run(c: paramiko.SSHClient, cmd: str) -> str:

View File

@@ -7,9 +7,11 @@ from pathlib import Path
import paramiko
HOST = os.getenv("NOMAD_SSH_HOST", "82.157.112.245")
USER = os.getenv("NOMAD_SSH_USER", "ubuntu")
PASSWORD = os.getenv("NOMAD_SSH_PASSWORD", "Xiao4669805")
from load_dev_env import ssh_config
HOST, USER, SSH_PASSWORD = ssh_config()
REPO = "/home/ubuntu/gitlab-instance-0a899031_cnomadcna"
ROOT = Path(__file__).resolve().parent.parent

View File

@@ -4,9 +4,11 @@ from __future__ import annotations
import paramiko
HOST = "82.157.112.245"
USER = "ubuntu"
PASSWORD = "Xiao4669805"
from load_dev_env import ssh_config
HOST, USER, PASSWORD = ssh_config()
REPO = "/home/ubuntu/gitlab-instance-0a899031_cnomadcna"
cmds = [