-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathentrypoint.sh
More file actions
122 lines (101 loc) · 2.89 KB
/
entrypoint.sh
File metadata and controls
122 lines (101 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/usr/bin/env bash
set -euo pipefail
# Standardwerte
DATADIR=${DATADIR:-/data}
CONF_FILE="${DATADIR}/bit.conf"
CONFIG_TEMPLATE="/config/bit.conf"
USER_ID=${PUID:-1000}
GROUP_ID=${PGID:-1000}
# Benutzerumschaltung vorbereiten
if ! id -u bit >/dev/null 2>&1; then
groupadd -g "$GROUP_ID" bit || true
useradd -u "$USER_ID" -g "$GROUP_ID" -d "$DATADIR" -s /usr/sbin/nologin bit || true
fi
mkdir -p "$DATADIR"
chown -R "$USER_ID":"$GROUP_ID" "$DATADIR"
# Config erzeugen oder aktualisieren
if [ ! -f "$CONF_FILE" ] || [ "$CONF_FILE" -ot "$CONFIG_TEMPLATE" ]; then
if [ -f "$CONFIG_TEMPLATE" ]; then
echo "Kopiere Konfigurationsvorlage von $CONFIG_TEMPLATE nach $CONF_FILE"
cp "$CONFIG_TEMPLATE" "$CONF_FILE"
# Ersetze Platzhalter mit Umgebungsvariablen
RPC_USER=${RPC_USER:-user}
RPC_PASSWORD=${RPC_PASSWORD:-$(openssl rand -hex 16)}
RPC_ALLOW_IP=${RPC_ALLOW_IP:-0.0.0.0/0}
NETWORK=${NETWORK:-mainnet}
# Erstelle neue Konfiguration mit Umgebungsvariablen
cat > "$CONF_FILE" <<EOF
# Bit Core Configuration
# Generated from template with environment variables
# Network settings
server=1
daemon=0
txindex=1
addressindex=1
timestampindex=1
spentindex=1
# RPC settings
rpcuser=${RPC_USER}
rpcpassword=${RPC_PASSWORD}
rpcallowip=${RPC_ALLOW_IP}
rpcbind=0.0.0.0
rpcport=8332
# Network connectivity
listen=1
port=8333
maxconnections=125
# Logging
debug=0
printtoconsole=1
# Performance
dbcache=256
maxmempool=300
# Network mode
EOF
if [ "$NETWORK" = "testnet" ]; then
echo "testnet=1" >> "$CONF_FILE"
elif [ "$NETWORK" = "regtest" ]; then
echo "regtest=1" >> "$CONF_FILE"
fi
echo "Konfiguration erstellt: RPC_USER=${RPC_USER}, NETWORK=${NETWORK}"
else
echo "Warnung: Keine Konfigurationsvorlage gefunden unter $CONFIG_TEMPLATE"
echo "Erstelle minimale Standardkonfiguration..."
RPC_USER=${RPC_USER:-user}
RPC_PASSWORD=${RPC_PASSWORD:-$(openssl rand -hex 16)}
RPC_ALLOW_IP=${RPC_ALLOW_IP:-0.0.0.0/0}
NETWORK=${NETWORK:-mainnet}
cat > "$CONF_FILE" <<EOF
server=1
daemon=0
txindex=1
rpcuser=${RPC_USER}
rpcpassword=${RPC_PASSWORD}
rpcallowip=${RPC_ALLOW_IP}
rpcbind=0.0.0.0
listen=1
EOF
fi
echo "Erstellte Konfiguration unter $CONF_FILE"
fi
# Prüfen, ob Binärdateien vorhanden sind
if ! command -v bitd >/dev/null 2>&1; then
echo "Fehler: 'bitd' wurde nicht gefunden. Stelle sicher, dass die Dockerfile-Installation erfolgreich war." >&2
exit 1
fi
# Argumente zusammenbauen
EXTRA_ARGS=()
if [ "${NETWORK:-mainnet}" = "testnet" ]; then
EXTRA_ARGS+=("-testnet")
fi
if [ "${NETWORK:-mainnet}" = "regtest" ]; then
EXTRA_ARGS+=("-regtest")
fi
EXTRA_ARGS+=("-conf=${CONF_FILE}")
EXTRA_ARGS+=("-datadir=${DATADIR}")
# Optional: weitergereichte Argumente an bitd anhängen
if [ $# -gt 0 ]; then
EXTRA_ARGS+=("$@")
fi
echo "Starte bitd mit Datenverzeichnis ${DATADIR}"
exec gosu "$USER_ID":"$GROUP_ID" bitd "${EXTRA_ARGS[@]}"