farfarfun 内部开发/测试环境的一键初始化与 code-server 服务管理脚本集合。
init.sh:在/farfarfun下安装 Miniconda。scripts/init.sh:初始化 Git 全局配置并拉取 submodule。scripts/env/init.sh:配置 SSH 免密登录相关的 sshd 参数。scripts/setup.sh:code-server 服务的统一启停入口。configs/code-server.yaml:code-server 配置模板,密码通过环境变量注入,不写进文件。tests/test_setup.sh:scripts/setup.sh的行为测试(参数解析、凭据处理、监听地址优先级、PID 生命周期)。
git clone https://github.com/farfarfun/funenv.git
cd funenv
# 可选:安装 Miniconda
./init.sh
# 启动 code-server(必须先设置密码环境变量)
CODE_SERVER_PASSWORD=<your-password> ./scripts/setup.sh start dev统一管理 code-server 生命周期。start/run/stop/restart 必须指定 dev 或 prod;
status 的环境参数可省略,省略时报告全部环境:
CODE_SERVER_PASSWORD=<password> ./scripts/setup.sh <start|run|stop|restart> <dev|prod>
./scripts/setup.sh status [dev|prod]| action | 说明 |
|---|---|
start |
后台启动;确认进程真的起来了才报成功,起不来则输出日志尾部并以非 0 退出 |
run |
前台启动(exec),便于调试,Ctrl+C 可直接结束,退出码原样透传 |
stop |
停止本脚本托管的进程,等它真正退出(必要时 SIGKILL),再清理运行时文件 |
restart |
先 stop(等端口释放)再 start |
status |
非交互查看运行状态,不修改任何状态;能区分「运行中」与「陈旧 PID 文件」 |
密码只能通过 CODE_SERVER_PASSWORD 环境变量传入,configs/code-server.yaml 里不含任何
password / hashed-password 字段。启动时脚本把密码渲染进 .run/code-server-<env>.yaml:
- 该文件权限为
0600,不会被同机其他用户读到; - 密码全程只经 Bash 内建命令写入,不会作为命令行参数出现在
/proc/<pid>/cmdline(即ps aux读不到); - 含
#、&、\、'等字符的密码按 YAML 单引号标量转义,原样生效。
默认只监听回环地址 127.0.0.1:8443(见 configs/code-server.yaml 的 bind-addr)。
优先级为 环境变量 > 配置文件 > 脚本内默认值;不设置任何环境变量时脚本不下发
--bind-addr,配置文件里的值生效:
| 环境变量 | 作用 |
|---|---|
CODE_SERVER_BIND_ADDR |
整体覆盖,如 0.0.0.0:8443 |
CODE_SERVER_HOST |
只覆盖主机部分 |
CODE_SERVER_PORT |
只覆盖端口部分 |
CODE_SERVER_BIN |
code-server 可执行文件,默认 code-server |
要把服务暴露到公网需显式设置 CODE_SERVER_BIND_ADDR=0.0.0.0:<port>,并自行确保前置
反向代理与 TLS 到位。
日志、PID、启动时刻记录、渲染后的配置统一位于 .run/(已在 .gitignore 中),
不同 env 相互隔离,拒绝重复启动。若存在 configs/code-server.<env>.yaml,
该环境会优先使用它,否则回落到 configs/code-server.yaml。
./tests/test_setup.shfarfarfun 是一个专注于实用工具库的开源组织, 涵盖云存储、数据处理、AI、多媒体与开发工具链等方向。
- 🏠 组织主页:https://github.com/farfarfun
- 📧 联系:farfarfun@qq.com
本项目基于 MIT 协议开源。