mirror of
https://github.com/fankes/komari-agent.git
synced 2025-10-18 18:49:23 +08:00
fix:fix agent support for alpine
This commit is contained in:
112
install.sh
112
install.sh
@@ -389,8 +389,57 @@ log_success "Komari-agent installed to ${GREEN}$komari_agent_path${NC}"
|
|||||||
# Detect init system and configure service
|
# Detect init system and configure service
|
||||||
log_step "Configuring system service..."
|
log_step "Configuring system service..."
|
||||||
|
|
||||||
# Check if running on NixOS
|
# Function to detect actual init system
|
||||||
if [ -f /etc/NIXOS ]; then
|
detect_init_system() {
|
||||||
|
# Check if running on NixOS (special case)
|
||||||
|
if [ -f /etc/NIXOS ]; then
|
||||||
|
echo "nixos"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for Alpine Linux or other OpenRC-based systems
|
||||||
|
if [ -f /etc/alpine-release ] || [ -f /sbin/openrc-run ]; then
|
||||||
|
if command -v rc-service >/dev/null 2>&1; then
|
||||||
|
echo "openrc"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if systemd is actually PID 1 (not just installed)
|
||||||
|
if [ -d /run/systemd/system ] && command -v systemctl >/dev/null 2>&1; then
|
||||||
|
# Additional check: verify systemd is actually running
|
||||||
|
if systemctl --version >/dev/null 2>&1 && [ "$(ps -p 1 -o comm=)" = "systemd" ]; then
|
||||||
|
echo "systemd"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for OpenRC (generic check)
|
||||||
|
if command -v rc-service >/dev/null 2>&1 && [ -d /etc/init.d ]; then
|
||||||
|
echo "openrc"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for OpenWrt's procd
|
||||||
|
if command -v uci >/dev/null 2>&1 && [ -f /etc/rc.common ]; then
|
||||||
|
echo "procd"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check for macOS launchd
|
||||||
|
if [ "$os_name" = "darwin" ] && command -v launchctl >/dev/null 2>&1; then
|
||||||
|
echo "launchd"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "unknown"
|
||||||
|
}
|
||||||
|
|
||||||
|
init_system=$(detect_init_system)
|
||||||
|
log_info "Detected init system: ${GREEN}$init_system${NC}"
|
||||||
|
|
||||||
|
# Handle each init system
|
||||||
|
if [ "$init_system" = "nixos" ]; then
|
||||||
log_warning "NixOS detected. System services must be configured declaratively."
|
log_warning "NixOS detected. System services must be configured declaratively."
|
||||||
log_info "Please add the following to your NixOS configuration:"
|
log_info "Please add the following to your NixOS configuration:"
|
||||||
echo ""
|
echo ""
|
||||||
@@ -409,32 +458,7 @@ if [ -f /etc/NIXOS ]; then
|
|||||||
echo ""
|
echo ""
|
||||||
log_info "Then run: sudo nixos-rebuild switch"
|
log_info "Then run: sudo nixos-rebuild switch"
|
||||||
log_warning "Service not started automatically on NixOS. Please rebuild your configuration."
|
log_warning "Service not started automatically on NixOS. Please rebuild your configuration."
|
||||||
elif command -v systemctl >/dev/null 2>&1; then
|
elif [ "$init_system" = "openrc" ]; then
|
||||||
# Systemd service configuration
|
|
||||||
log_info "Using systemd for service management"
|
|
||||||
service_file="/etc/systemd/system/${service_name}.service"
|
|
||||||
cat > "$service_file" << EOF
|
|
||||||
[Unit]
|
|
||||||
Description=Komari Agent Service
|
|
||||||
After=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
ExecStart=${komari_agent_path} ${komari_args}
|
|
||||||
WorkingDirectory=${target_dir}
|
|
||||||
Restart=always
|
|
||||||
User=root
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=multi-user.target
|
|
||||||
EOF
|
|
||||||
|
|
||||||
# Reload systemd and start service
|
|
||||||
systemctl daemon-reload
|
|
||||||
systemctl enable ${service_name}.service
|
|
||||||
systemctl start ${service_name}.service
|
|
||||||
log_success "Systemd service configured and started"
|
|
||||||
elif command -v rc-service >/dev/null 2>&1; then
|
|
||||||
# OpenRC service configuration
|
# OpenRC service configuration
|
||||||
log_info "Using OpenRC for service management"
|
log_info "Using OpenRC for service management"
|
||||||
service_file="/etc/init.d/${service_name}"
|
service_file="/etc/init.d/${service_name}"
|
||||||
@@ -462,7 +486,32 @@ EOF
|
|||||||
rc-update add ${service_name} default
|
rc-update add ${service_name} default
|
||||||
rc-service ${service_name} start
|
rc-service ${service_name} start
|
||||||
log_success "OpenRC service configured and started"
|
log_success "OpenRC service configured and started"
|
||||||
elif command -v uci >/dev/null 2>&1; then
|
elif [ "$init_system" = "systemd" ]; then
|
||||||
|
# Systemd service configuration
|
||||||
|
log_info "Using systemd for service management"
|
||||||
|
service_file="/etc/systemd/system/${service_name}.service"
|
||||||
|
cat > "$service_file" << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=Komari Agent Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=${komari_agent_path} ${komari_args}
|
||||||
|
WorkingDirectory=${target_dir}
|
||||||
|
Restart=always
|
||||||
|
User=root
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Reload systemd and start service
|
||||||
|
systemctl daemon-reload
|
||||||
|
systemctl enable ${service_name}.service
|
||||||
|
systemctl start ${service_name}.service
|
||||||
|
log_success "Systemd service configured and started"
|
||||||
|
elif [ "$init_system" = "procd" ]; then
|
||||||
# procd service configuration (OpenWrt)
|
# procd service configuration (OpenWrt)
|
||||||
log_info "Using procd for service management"
|
log_info "Using procd for service management"
|
||||||
service_file="/etc/init.d/${service_name}"
|
service_file="/etc/init.d/${service_name}"
|
||||||
@@ -502,7 +551,7 @@ EOF
|
|||||||
/etc/init.d/${service_name} enable
|
/etc/init.d/${service_name} enable
|
||||||
/etc/init.d/${service_name} start
|
/etc/init.d/${service_name} start
|
||||||
log_success "procd service configured and started"
|
log_success "procd service configured and started"
|
||||||
elif [ "$os_name" = "darwin" ] && command -v launchctl >/dev/null 2>&1; then
|
elif [ "$init_system" = "launchd" ]; then
|
||||||
# macOS launchd service configuration
|
# macOS launchd service configuration
|
||||||
log_info "Using launchd for service management"
|
log_info "Using launchd for service management"
|
||||||
|
|
||||||
@@ -581,7 +630,8 @@ EOF
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
log_error "Unsupported init system (systemd, openrc, procd, or launchd not found)"
|
log_error "Unsupported or unknown init system detected: $init_system"
|
||||||
|
log_error "Supported init systems: systemd, openrc, procd, launchd"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user