Quellcode durchsuchen

feature: added installation command and service files

frosty vor 1 Tag
Ursprung
Commit
0317ff26d5
8 geänderte Dateien mit 158 neuen und 2 gelöschten Zeilen
  1. 112 1
      Makefile
  2. 1 1
      example-config.ini
  3. 19 0
      init/openrc/omnisearch
  4. 2 0
      init/runit/log/run
  5. 2 0
      init/runit/run
  6. 2 0
      init/s6/log/run
  7. 3 0
      init/s6/run
  8. 17 0
      init/systemd/omnisearch.service

+ 112 - 1
Makefile

@@ -44,4 +44,115 @@ info:
 	@echo "Object files to generate:"
 	@echo "$(OBJS)" | tr ' ' '\n'
 
-.PHONY: all run clean rebuild info
+PREFIX      ?= /usr
+INSTALL_BIN_DIR := $(PREFIX)/bin
+DATA_DIR    := /etc/omnisearch
+CONF_DIR    := /etc/omnisearch
+VAR_DIR     := /var/lib/omnisearch
+LOG_DIR     := /var/log/omnisearch
+CACHE_DIR   := /var/cache/omnisearch
+USER        := omnisearch
+GROUP       := omnisearch
+
+SYSTEMD_DIR := /etc/systemd/system
+OPENRC_DIR  := /etc/init.d
+
+install:
+	@echo "Available install targets:"
+	@echo "  make install-systemd"
+	@echo "  make install-openrc"
+	@echo "  make install-runit"
+	@echo "  make install-s6"
+	@echo ""
+	@echo "Example: doas/sudo make install-openrc"
+
+install-systemd: $(TARGET)
+	@mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(LOG_DIR) $(CACHE_DIR)
+	@cp -rf templates/* $(DATA_DIR)/templates/
+	@cp -rf static/* $(DATA_DIR)/static/
+	@cp example-config.ini $(DATA_DIR)/config.ini
+	install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
+	@echo "Setting up user '$(USER)'..."
+	@(grep -q '^$(GROUP):' /etc/group || groupadd $(GROUP)) 2>/dev/null || true
+	@id -u $(USER) >/dev/null 2>&1 || useradd --system --home $(DATA_DIR) --shell /usr/sbin/nologin -g $(GROUP) $(USER)
+	@chown -R $(USER):$(GROUP) $(LOG_DIR) $(CACHE_DIR) $(VAR_DIR) $(DATA_DIR) 2>/dev/null || true
+	@chown $(USER):$(GROUP) $(DATA_DIR)/config.ini 2>/dev/null || true
+	install -m 644 init/systemd/omnisearch.service $(SYSTEMD_DIR)/omnisearch.service
+	@echo ""
+	@echo "Config: $(DATA_DIR)/config.ini"
+	@echo "Edit config with: nano $(DATA_DIR)/config.ini"
+	@echo "Installed systemd service to $(SYSTEMD_DIR)/omnisearch.service"
+	@echo "Run 'systemctl enable --now omnisearch' to start"
+
+install-openrc: $(TARGET)
+	@mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(LOG_DIR) $(CACHE_DIR)
+	@cp -rf templates/* $(DATA_DIR)/templates/
+	@cp -rf static/* $(DATA_DIR)/static/
+	@cp example-config.ini $(DATA_DIR)/config.ini
+	install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
+	@echo "Setting up user '$(USER)'..."
+	@(grep -q '^$(GROUP):' /etc/group || groupadd $(GROUP)) 2>/dev/null || true
+	@id -u $(USER) >/dev/null 2>&1 || useradd --system --home $(DATA_DIR) --shell /usr/sbin/nologin -g $(GROUP) $(USER)
+	@chown -R $(USER):$(GROUP) $(LOG_DIR) $(CACHE_DIR) $(VAR_DIR) $(DATA_DIR) 2>/dev/null || true
+	@chown $(USER):$(GROUP) $(DATA_DIR)/config.ini 2>/dev/null || true
+	install -m 755 init/openrc/omnisearch $(OPENRC_DIR)/omnisearch
+	@echo ""
+	@echo "Config: $(DATA_DIR)/config.ini"
+	@echo "Edit config with: nano $(DATA_DIR)/config.ini"
+	@echo "Installed openrc service to $(OPENRC_DIR)/omnisearch"
+	@echo "Run 'rc-update add omnisearch default' to enable"
+
+install-runit: $(TARGET)
+	@mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(LOG_DIR) $(CACHE_DIR)
+	@cp -rf templates/* $(DATA_DIR)/templates/
+	@cp -rf static/* $(DATA_DIR)/static/
+	@cp example-config.ini $(DATA_DIR)/config.ini
+	install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
+	@echo "Setting up user '$(USER)'..."
+	@(grep -q '^$(GROUP):' /etc/group || groupadd $(GROUP)) 2>/dev/null || true
+	@id -u $(USER) >/dev/null 2>&1 || useradd --system --home $(DATA_DIR) --shell /usr/sbin/nologin -g $(GROUP) $(USER)
+	@chown -R $(USER):$(GROUP) $(LOG_DIR) $(CACHE_DIR) $(VAR_DIR) $(DATA_DIR) 2>/dev/null || true
+	@chown $(USER):$(GROUP) $(DATA_DIR)/config.ini 2>/dev/null || true
+	@mkdir -p /etc/service/omnisearch/log/supervise/control
+	install -m 755 init/runit/run /etc/service/omnisearch/run
+	install -m 755 init/runit/log/run /etc/service/omnisearch/log/run
+	install -m 755 init/runit/log/run /etc/service/omnisearch/log/supervise/control
+	@echo ""
+	@echo "Config: $(DATA_DIR)/config.ini"
+	@echo "Edit config with: nano $(DATA_DIR)/config.ini"
+	@echo "Installed runit service to /etc/service/omnisearch"
+	@echo "Service will start automatically"
+
+install-s6: $(TARGET)
+	@mkdir -p $(DATA_DIR)/templates $(DATA_DIR)/static $(LOG_DIR) $(CACHE_DIR)
+	@cp -rf templates/* $(DATA_DIR)/templates/
+	@cp -rf static/* $(DATA_DIR)/static/
+	@cp example-config.ini $(DATA_DIR)/config.ini
+	install -m 755 $(TARGET) $(INSTALL_BIN_DIR)/omnisearch
+	@echo "Setting up user '$(USER)'..."
+	@(grep -q '^$(GROUP):' /etc/group || groupadd $(GROUP)) 2>/dev/null || true
+	@id -u $(USER) >/dev/null 2>&1 || useradd --system --home $(DATA_DIR) --shell /usr/sbin/nologin -g $(GROUP) $(USER)
+	@chown -R $(USER):$(GROUP) $(LOG_DIR) $(CACHE_DIR) $(VAR_DIR) $(DATA_DIR) 2>/dev/null || true
+	@chown $(USER):$(GROUP) $(DATA_DIR)/config.ini 2>/dev/null || true
+	@mkdir -p /var/service/omnisearch/log/supervise/control
+	install -m 755 init/s6/run /var/service/omnisearch/run
+	install -m 755 init/s6/log/run /var/service/omnisearch/log/run
+	install -m 755 init/s6/log/run /var/service/omnisearch/log/supervise/control
+	@echo ""
+	@echo "Config: $(DATA_DIR)/config.ini"
+	@echo "Edit config with: nano $(DATA_DIR)/config.ini"
+	@echo "Installed s6 service to /var/service/omnisearch"
+	@echo "Service will start automatically"
+
+uninstall:
+	rm -f $(INSTALL_BIN_DIR)/omnisearch
+	rm -rf $(DATA_DIR)
+	rm -f $(SYSTEMD_DIR)/omnisearch.service
+	rm -f $(OPENRC_DIR)/omnisearch
+	rm -rf /etc/service/omnisearch
+	rm -rf /var/service/omnisearch
+	@id -u $(USER) >/dev/null 2>&1 && userdel $(USER) 2>/dev/null || true
+	@grep -q '^$(GROUP):' /etc/group 2>/dev/null && groupdel $(GROUP) 2>/dev/null || true
+	@echo "Uninstalled omnisearch"
+
+.PHONY: all run clean rebuild info install install-systemd install-openrc install-runit install-s6 uninstall

+ 1 - 1
example-config.ini

@@ -1,6 +1,6 @@
 [server]
 host = 0.0.0.0
-port = 8000
+port = 8087
 
 [proxy]
 # Single proxy (comment out to use list_file instead)

+ 19 - 0
init/openrc/omnisearch

@@ -0,0 +1,19 @@
+#!/sbin/openrc-run
+
+name=omnisearch
+description="Omnisearch Web Search Server"
+command="/usr/bin/omnisearch"
+command_background=yes
+pidfile="/run/${RC_SVCNAME}.pid"
+output_log="/var/log/omnisearch/omnisearch.log"
+error_log="/var/log/omnisearch/omnisearch.err"
+user=omnisearch
+group=omnisearch
+directory=/etc/omnisearch
+respawn_delay=5
+respawn_max=10
+
+depend() {
+    need net
+    after firewall
+}

+ 2 - 0
init/runit/log/run

@@ -0,0 +1,2 @@
+#!/bin/sh
+exec chpst -u omnisearch:omnisearch svlogd -tt /var/log/omnisearch

+ 2 - 0
init/runit/run

@@ -0,0 +1,2 @@
+#!/bin/sh
+exec chpst -u omnisearch:omnisearch /usr/bin/omnisearch 2>&1

+ 2 - 0
init/s6/log/run

@@ -0,0 +1,2 @@
+#!/bin/execlineb -P
+exec -c chpst -u omnisearch:omnisearch s6-log -d 3 /var/log/omnisearch

+ 3 - 0
init/s6/run

@@ -0,0 +1,3 @@
+#!/bin/execlineb -P
+foreground { s6-setsid -g }
+exec -c chpst -u omnisearch:omnisearch /usr/bin/omnisearch

+ 17 - 0
init/systemd/omnisearch.service

@@ -0,0 +1,17 @@
+[Unit]
+Description=Omnisearch Web Search Server
+After=network.target
+
+[Service]
+Type=simple
+User=omnisearch
+Group=omnisearch
+WorkingDirectory=/etc/omnisearch
+ExecStart=/usr/bin/omnisearch
+Restart=always
+RestartSec=5
+PrivateTmp=yes
+NoNewPrivileges=yes
+
+[Install]
+WantedBy=multi-user.target