feat: 一键安装脚本 install.sh(NAS 上一条命令装好),README 补上一键命令
This commit is contained in:
1 parent
7608da8571
commit
428e5e6483
4 files changed
+118
-5
No files matched your search
@@ -58,12 +58,22 @@ node deploy.mjs
|
||||
|
||||
什么时候选它:想用 **Telegram 签到**(只有 Docker 版能跑),或想走**家里宽带的 IPv6**(NodeSeek 这类站点在 Cloudflare 机房网络下不稳定)。
|
||||
|
||||
**一键安装**(SSH 连上 NAS,粘贴这一行):
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/guoxpeng/daily-checkin-panel/master/install.sh | bash
|
||||
```
|
||||
|
||||
脚本会:检查 docker → 建 `~/daily-checkin-panel` 目录 → 下载最新配置 → 生成 `.env` → 拉镜像启动。装完浏览器打开 `http://你的NAS_IP:8787`,首次设置管理密码,之后用法和 Cloudflare 版完全一样。数据全在 `./data/checkin.sqlite` 一个文件里,备份拷走就行。**重复跑一遍就是更新**(数据不受影响)。
|
||||
|
||||
<details>
|
||||
<summary>手动安装(不想用脚本的话)</summary>
|
||||
|
||||
```bash
|
||||
cp .env.example .env # 可选:填 ENCRYPT_KEY(openssl rand -base64 32 生成;不填面板自动生成)
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
打开 `http://你的IP:8787`,首次设置管理密码,之后用法和 Cloudflare 版完全一样。数据全在 `./data/checkin.sqlite` 一个文件里,备份拷走就行。
|
||||
</details>
|
||||
|
||||
- 镜像:`nameguoguo/daily-checkin-panel`(amd64+arm64,NAS/树莓派能用),每次 push 代码后 CI 自动构建推送;
|
||||
- 更新:`docker compose pull && docker compose up -d`;
|
||||
|
||||
+3
-1
@@ -21,6 +21,8 @@ services:
|
||||
environment:
|
||||
# 不填也行(面板会自动生成存库);填了就用你的(openssl rand -base64 32)
|
||||
ENCRYPT_KEY: ${ENCRYPT_KEY:-}
|
||||
# host 网络模式下容器直接监听主机的这个端口
|
||||
PORT: ${PORT:-8787}
|
||||
TZ: ${TZ:-Asia/Shanghai}
|
||||
volumes:
|
||||
# 数据(SQLite + WAL)全在这个目录里,备份拷走就行
|
||||
@@ -29,7 +31,7 @@ services:
|
||||
- "com.centurylinklabs.watchtower.enable=true"
|
||||
restart: unless-stopped
|
||||
|
||||
# 全自动更新(可选):每 5 分钟检查 GHCR,有新镜像就拉取并重启 panel。
|
||||
# 全自动更新(可选):每 5 分钟检查 Docker Hub,有新镜像就拉取并重启 panel。
|
||||
# watchtower 只会更新打了 enable 标签的容器,不会动你机器上别的容器。
|
||||
# 启用:docker compose --profile auto-update up -d
|
||||
watchtower:
|
||||
|
||||
+12
-2
@@ -11,13 +11,23 @@
|
||||
|
||||
## 快速开始
|
||||
|
||||
**一键安装**(SSH 连上 NAS/主机,粘贴这一行;重复跑一遍就是更新,数据不受影响):
|
||||
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/guoxpeng/daily-checkin-panel/master/install.sh | bash
|
||||
```
|
||||
|
||||
装完打开 `http://你的IP:8787`,首次会让你设置管理密码,之后和 Cloudflare 版用法完全一样。
|
||||
|
||||
<details>
|
||||
<summary>手动安装(不想用脚本的话)</summary>
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# 可选:填 ENCRYPT_KEY(openssl rand -base64 32 生成;不填面板会自动生成存库)
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
打开 `http://你的IP:8787`,首次会让你设置管理密码,之后和 Cloudflare 版用法完全一样。
|
||||
</details>
|
||||
|
||||
## 配置说明(.env)
|
||||
|
||||
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
#!/usr/bin/env bash
|
||||
# 每日签到面板 — 一键安装 / 更新(家用 NAS / Linux 主机)
|
||||
#
|
||||
# 用法(SSH 连上 NAS 后粘贴这一行):
|
||||
# curl -fsSL https://raw.githubusercontent.com/guoxpeng/daily-checkin-panel/main/install.sh | bash
|
||||
#
|
||||
# 做了什么:
|
||||
# 1. 检查 docker、docker compose 是否可用
|
||||
# 2. 在 ~/daily-checkin-panel 建目录(改位置:INSTALL_DIR=/volume1/docker/checkin bash …)
|
||||
# 3. 下载最新的 docker-compose.yml(NAS 上没有源码,不需要 build,直接拉镜像)
|
||||
# 4. 没有 .env 就生成一个(ENCRYPT_KEY 留空,面板首次启动会自动生成存库)
|
||||
# 5. 建 data/ 目录(SQLite 数据全在这里,备份拷走就行)
|
||||
# 6. 拉最新镜像并启动(--pull always,保证拿到的是新版)
|
||||
# 重复执行 = 更新到最新版,账号数据不受影响。
|
||||
set -euo pipefail
|
||||
|
||||
REPO="guoxpeng/daily-checkin-panel"
|
||||
BRANCH="master"
|
||||
INSTALL_DIR="${INSTALL_DIR:-$HOME/daily-checkin-panel}"
|
||||
BASE_URL="https://raw.githubusercontent.com/${REPO}/${BRANCH}"
|
||||
|
||||
info() { echo "==> $*"; }
|
||||
die() { echo "❌ $*" >&2; exit 1; }
|
||||
|
||||
# 下载工具二选一
|
||||
fetch() {
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
curl -fsSL "$1" -o "$2"
|
||||
elif command -v wget >/dev/null 2>&1; then
|
||||
wget -qO "$2" "$1"
|
||||
else
|
||||
die "没找到 curl/wget,装一个再跑"
|
||||
fi
|
||||
}
|
||||
|
||||
# 1. 检查 docker
|
||||
command -v docker >/dev/null 2>&1 || die "没找到 docker:群晖去套件中心装 Container Manager;其他 Linux 按官网装 Docker"
|
||||
docker compose version >/dev/null 2>&1 || die "docker compose 不可用(要 v2;群晖 Container Manager 自带)"
|
||||
|
||||
# 2. 建目录
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
cd "$INSTALL_DIR"
|
||||
|
||||
# 3. 下载 compose 文件(已有先备份;NAS 上没有源码,去掉 build 只拉镜像)
|
||||
if [ -f docker-compose.yml ]; then
|
||||
cp docker-compose.yml "docker-compose.yml.bak.$(date +%Y%m%d%H%M%S)"
|
||||
info "已备份旧的 docker-compose.yml"
|
||||
fi
|
||||
fetch "${BASE_URL}/docker-compose.yml" docker-compose.yml
|
||||
sed -i '/^[[:space:]]*build: \.$/d' docker-compose.yml
|
||||
info "已下载最新 docker-compose.yml"
|
||||
|
||||
# 4. .env(没有才生成,绝不覆盖已有的)
|
||||
if [ ! -f .env ]; then
|
||||
{
|
||||
echo "# 由一键安装脚本生成($(date '+%F %T'))"
|
||||
echo "# ENCRYPT_KEY 留空:面板首次启动会自动生成并存进数据库;"
|
||||
echo "# 投入使用后不要改,改了已存账号的 Cookie 解不开。"
|
||||
echo "ENCRYPT_KEY="
|
||||
echo "PORT=8787"
|
||||
echo "TZ=Asia/Shanghai"
|
||||
} > .env
|
||||
info "已生成 .env(ENCRYPT_KEY 留空,面板会自动生成)"
|
||||
fi
|
||||
|
||||
# 5. 数据目录
|
||||
mkdir -p data
|
||||
|
||||
# 6. 拉镜像并启动
|
||||
info "正在拉取镜像并启动…"
|
||||
docker compose pull --quiet
|
||||
docker compose up -d --pull always --remove-orphans
|
||||
|
||||
# 7. 等一两秒确认容器活着
|
||||
sleep 2
|
||||
if ! docker compose ps --status running --quiet | grep -q .; then
|
||||
die "容器没跑起来,看日志:cd $INSTALL_DIR && docker compose logs"
|
||||
fi
|
||||
|
||||
# 8. 输出访问地址
|
||||
IP="$(hostname -I 2>/dev/null | awk '{print $1}')"
|
||||
IP="${IP:-你的NAS_IP}"
|
||||
PORT="$(grep -E '^PORT=' .env 2>/dev/null | cut -d= -f2 || true)"
|
||||
PORT="${PORT:-8787}"
|
||||
echo ""
|
||||
echo "✅ 完成!浏览器打开:http://${IP}:${PORT}"
|
||||
echo " 首次打开会让你设置管理密码(记到密码管理器里)。"
|
||||
echo ""
|
||||
echo " 更新:重新跑一遍安装命令即可(数据不受影响)"
|
||||
echo " 日志:cd ${INSTALL_DIR} && docker compose logs -f"
|
||||
echo " 停止:cd ${INSTALL_DIR} && docker compose down"
|
||||
Reference in new issue
Block a user