Fix permissions for history graph

This commit is contained in:
2026-01-14 15:58:07 -05:00
parent b3a906fd0c
commit 864ae5590a

226
installer
View File

@ -186,7 +186,6 @@ fi
echo "[***] Building ckpool..." echo "[***] Building ckpool..."
# Obtain the current source code # Obtain the current source code
git clone https://bitbucket.org/ckolivas/ckpool.git ckpool git clone https://bitbucket.org/ckolivas/ckpool.git ckpool
chown -R $service_user:$service_user ckpool
cd ckpool cd ckpool
# This simply sets the donation address to allow you to donate to Robbie Ferguson if you win # This simply sets the donation address to allow you to donate to Robbie Ferguson if you win
@ -240,7 +239,119 @@ cat > "$APP_ROOT/conf/ckpool.conf" <<EOF
} }
EOF EOF
echo "[***] Setting up SQLite Databases"
# Create SQLite DB for hashrate history
if [ ! -e "$APP_ROOT/db" ]; then
mkdir -p "$APP_ROOT/db"
fi
HISTDB="$APP_ROOT/db/hashrate_history.sqlite"
if [ ! -f "$HISTDB" ]; then
sqlite3 "$HISTDB" <<'EOSQL'
CREATE TABLE IF NOT EXISTS history (
id INTEGER PRIMARY KEY AUTOINCREMENT,
ts INTEGER NOT NULL,
address TEXT NOT NULL,
payload TEXT NOT NULL -- base64-encoded JSON from status.php
);
CREATE INDEX IF NOT EXISTS idx_history_addr_ts ON history(address, ts);
EOSQL
fi
chown -R "$CKPOOL_USER":"$CKPOOL_USER" "$APP_ROOT" chown -R "$CKPOOL_USER":"$CKPOOL_USER" "$APP_ROOT"
chown www-data:www-data "$HISTDB" || true
# Save history script
cat > /usr/local/sbin/btc-save-history.sh <<'EOF'
#!/bin/bash
APP_ROOT="/opt/btc-solo"
HISTDB="$APP_ROOT/db/hashrate_history.sqlite"
USERS_DIR="$APP_ROOT/logs/users"
CKPOOL_PHP="/var/www/btc-solo/ckpool_status.php"
# bail quietly if prerequisites are missing
for bin in sqlite3 jq php; do
command -v "$bin" >/dev/null 2>&1 || exit 0
done
[ -f "$HISTDB" ] || exit 0
[ -d "$USERS_DIR" ] || exit 0
[ -f "$CKPOOL_PHP" ] || exit 0
TS=$(date +%s)
insert_row() {
local ts="$1" addr="$2" json="$3" b64
if base64 --help 2>&1 | grep -q '\-w'; then
b64=$(printf '%s' "$json" | base64 -w0)
else
b64=$(printf '%s' "$json" | base64)
fi
sqlite3 "$HISTDB" \
"INSERT INTO history (ts,address,payload) VALUES ($ts,'$addr','$b64');" \
2>/dev/null || true
}
# 1) Pool snapshot (no addr = global pool)
POOL_JSON=$(php "$CKPOOL_PHP" 2>/dev/null)
if [ -n "$POOL_JSON" ]; then
ERR=$(printf '%s' "$POOL_JSON" | jq -r '.error // empty' 2>/dev/null)
if [ -z "$ERR" ]; then
insert_row "$TS" "__POOL__" "$POOL_JSON"
fi
fi
# 2) Per-address snapshots for worker history
for f in "$USERS_DIR"/*; do
[ -f "$f" ] || continue
ADDR=$(basename "$f")
[ -n "$ADDR" ] || continue
JSON=$(ADDR="$ADDR" php -r '$_GET["addr"] = getenv("ADDR"); include "/var/www/btc-solo/ckpool_status.php";' 2>/dev/null)
[ -n "$JSON" ] || continue
ERR=$(printf '%s' "$JSON" | jq -r '.error // empty' 2>/dev/null)
[ -n "$ERR" ] && continue
insert_row "$TS" "$ADDR" "$JSON"
done
exit 0
EOF
chmod 0755 /usr/local/sbin/btc-save-history.sh
echo "[***] Setting up Cron Jobs..."
# Cron job for hashrate history logging
cat > /etc/cron.d/btc-save-history <<'EOF'
* * * * * www-data /usr/local/sbin/btc-save-history.sh >/dev/null 2>&1
EOF
chmod 0644 /etc/cron.d/btc-save-history
echo "Configuring Log Rotation"
cat > /etc/logrotate.d/btc-solo <<'EOF'
/opt/btc-solo/logs/*.log {
weekly
rotate 8
compress
missingok
notifempty
copytruncate
}
EOF
cat > /etc/logrotate.d/nginx <<'EOF'
/var/log/nginx/*.log {
weekly
rotate 8
compress
missingok
notifempty
copytruncate
}
EOF
# make ckpmsg available to PHP # make ckpmsg available to PHP
ln -sf ${APP_ROOT}/${CKPOOL_USER}/src/ckpmsg /usr/local/bin/ckpmsg ln -sf ${APP_ROOT}/${CKPOOL_USER}/src/ckpmsg /usr/local/bin/ckpmsg
@ -3015,119 +3126,6 @@ ln -sf /etc/nginx/sites-available/btc-solo /etc/nginx/sites-enabled/btc-solo
rm -f /etc/nginx/sites-enabled/default || true rm -f /etc/nginx/sites-enabled/default || true
systemctl restart nginx systemctl restart nginx
echo "[***] Setting up SQLite Databases"
# Create SQLite DB for hashrate history
if [ ! -e "$APP_ROOT/db" ]; then
mkdir -p "$APP_ROOT/db"
fi
HISTDB="$APP_ROOT/db/hashrate_history.sqlite"
if [ ! -f "$HISTDB" ]; then
sqlite3 "$HISTDB" <<'EOSQL'
CREATE TABLE IF NOT EXISTS history (
id INTEGER PRIMARY KEY AUTOINCREMENT,
ts INTEGER NOT NULL,
address TEXT NOT NULL,
payload TEXT NOT NULL -- base64-encoded JSON from status.php
);
CREATE INDEX IF NOT EXISTS idx_history_addr_ts ON history(address, ts);
EOSQL
fi
chown www-data:www-data "$HISTDB" || true
# Save history script
cat > /usr/local/sbin/btc-save-history.sh <<'EOF'
#!/bin/bash
APP_ROOT="/opt/btc-solo"
HISTDB="$APP_ROOT/db/hashrate_history.sqlite"
USERS_DIR="$APP_ROOT/logs/users"
CKPOOL_PHP="/var/www/btc-solo/ckpool_status.php"
# bail quietly if prerequisites are missing
for bin in sqlite3 jq php; do
command -v "$bin" >/dev/null 2>&1 || exit 0
done
[ -f "$HISTDB" ] || exit 0
[ -d "$USERS_DIR" ] || exit 0
[ -f "$CKPOOL_PHP" ] || exit 0
TS=$(date +%s)
insert_row() {
local ts="$1" addr="$2" json="$3" b64
if base64 --help 2>&1 | grep -q '\-w'; then
b64=$(printf '%s' "$json" | base64 -w0)
else
b64=$(printf '%s' "$json" | base64)
fi
sqlite3 "$HISTDB" \
"INSERT INTO history (ts,address,payload) VALUES ($ts,'$addr','$b64');" \
2>/dev/null || true
}
# 1) Pool snapshot (no addr = global pool)
POOL_JSON=$(php "$CKPOOL_PHP" 2>/dev/null)
if [ -n "$POOL_JSON" ]; then
ERR=$(printf '%s' "$POOL_JSON" | jq -r '.error // empty' 2>/dev/null)
if [ -z "$ERR" ]; then
insert_row "$TS" "__POOL__" "$POOL_JSON"
fi
fi
# 2) Per-address snapshots for worker history
for f in "$USERS_DIR"/*; do
[ -f "$f" ] || continue
ADDR=$(basename "$f")
[ -n "$ADDR" ] || continue
JSON=$(ADDR="$ADDR" php -r '$_GET["addr"] = getenv("ADDR"); include "/var/www/btc-solo/ckpool_status.php";' 2>/dev/null)
[ -n "$JSON" ] || continue
ERR=$(printf '%s' "$JSON" | jq -r '.error // empty' 2>/dev/null)
[ -n "$ERR" ] && continue
insert_row "$TS" "$ADDR" "$JSON"
done
exit 0
EOF
chmod 0755 /usr/local/sbin/btc-save-history.sh
echo "[***] Setting up Cron Jobs..."
# Cron job for hashrate history logging
cat > /etc/cron.d/btc-save-history <<'EOF'
* * * * * www-data /usr/local/sbin/btc-save-history.sh >/dev/null 2>&1
EOF
chmod 0644 /etc/cron.d/btc-save-history
echo "Configuring Log Rotation"
cat > /etc/logrotate.d/btc-solo <<'EOF'
/opt/btc-solo/logs/*.log {
weekly
rotate 8
compress
missingok
notifempty
copytruncate
}
EOF
cat > /etc/logrotate.d/nginx <<'EOF'
/var/log/nginx/*.log {
weekly
rotate 8
compress
missingok
notifempty
copytruncate
}
EOF
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
echo "[***] Done" echo "[***] Done"
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------