aboutsummaryrefslogtreecommitdiffstats
path: root/docs/basic-script-openrc/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/basic-script-openrc/README.md')
-rw-r--r--docs/basic-script-openrc/README.md180
1 files changed, 106 insertions, 74 deletions
diff --git a/docs/basic-script-openrc/README.md b/docs/basic-script-openrc/README.md
index 1de623b..73dd503 100644
--- a/docs/basic-script-openrc/README.md
+++ b/docs/basic-script-openrc/README.md
@@ -1,76 +1,108 @@
-## Basic init yt-local for openrc
+# Basic init yt-local for openrc
-1. Write `/etc/init.d/ytlocal` file.
+## Prerequisites
+
+- System with OpenRC installed and configured.
+- Administrative privileges (doas or sudo).
+- `ytlocal` script located at `/usr/sbin/ytlocal` and application files in an accessible directory.
+
+## Service Installation
+
+1. **Create the OpenRC service script** `/etc/init.d/ytlocal`:
+
+ ```sh
+ #!/sbin/openrc-run
+ # Distributed under the terms of the GNU General Public License v3 or later
+ name="yt-local"
+ pidfile="/var/run/ytlocal.pid"
+ command="/usr/sbin/ytlocal"
+
+ depend() {
+ use net
+ }
+
+ start_pre() {
+ if [ ! -f /usr/sbin/ytlocal ]; then
+ eerror "Please create script file of ytlocal in '/usr/sbin/ytlocal'"
+ return 1
+ else
+ return 0
+ fi
+ }
+
+ start() {
+ ebegin "Starting yt-local"
+ start-stop-daemon --start --exec "${command}" --pidfile "${pidfile}"
+ eend $?
+ }
+
+ reload() {
+ ebegin "Reloading ${name}"
+ start-stop-daemon --signal HUP --pidfile "${pidfile}"
+ eend $?
+ }
+
+ stop() {
+ ebegin "Stopping ${name}"
+ start-stop-daemon --quiet --stop --exec "${command}" --pidfile "${pidfile}"
+ eend $?
+ }
+ ```
+
+ > [!NOTE]
+ > Ensure the script is executable:
+ >
+ > ```sh
+ > doas chmod a+x /etc/init.d/ytlocal
+ > ```
+
+2. **Create the executable script** `/usr/sbin/ytlocal`:
+
+ ```bash
+ #!/usr/bin/env bash
+
+ # Change the working directory according to your installation path
+ # Example: if installed in /usr/local/ytlocal, use:
+ cd /home/your-path/ytlocal/ # <-- MODIFY TO YOUR PATH
+ source venv/bin/activate
+ python server.py > /dev/null 2>&1 &
+ echo $! > /var/run/ytlocal.pid
+ ```
+
+ > [!WARNING]
+ > Run this script only as root or via `doas`, as it writes to `/var/run` and uses network privileges.
+
+ > [!TIP]
+ > To store the PID in a different location, adjust the `pidfile` variable in the service script.
+
+ > [!IMPORTANT]
+ > Verify that the virtual environment (`venv`) is correctly set up and that `python` points to the appropriate version.
+
+ > [!CAUTION]
+ > Do not stop the process manually; use OpenRC commands (`rc-service ytlocal stop`) to avoid race conditions.
+
+ > [!NOTE]
+ > When run with administrative privileges, the configuration is saved in `/root/.yt-local`, which is root‑only.
+
+## Service Management
+
+- **Status**: `doas rc-service ytlocal status`
+- **Start**: `doas rc-service ytlocal start`
+- **Restart**: `doas rc-service ytlocal restart`
+- **Stop**: `doas rc-service ytlocal stop`
+- **Enable at boot**: `doas rc-update add ytlocal default`
+- **Disable**: `doas rc-update del ytlocal`
+
+## Post‑Installation Verification
+
+- Confirm the process is running: `doas rc-service ytlocal status`
+- Inspect logs for issues: `doas tail -f /var/log/ytlocal.log` (if logging is configured).
+
+## Troubleshooting Common Issues
-```
-#!/sbin/openrc-run
-# Distributed under the terms of the GNU General Public License v3 or later
-name="yt-local"
-pidfile="/var/run/ytlocal.pid"
-command="/usr/sbin/ytlocal"
-
-depend() {
- use net
-}
-
-start_pre() {
- if [ ! -f /usr/sbin/ytlocal ] ; then
- eerror "Please create script file of ytlocal in '/usr/sbin/ytlocal'"
- return 1
- else
- return 0
- fi
-}
-
-start() {
- ebegin "Starting yt-local"
- start-stop-daemon --start --exec "${command}" --pidfile "${pidfile}"
- eend $?
-}
-
-reload() {
- ebegin "Reloading ${name}"
- start-stop-daemon --signal HUP --pidfile "${pidfile}"
- eend $?
-}
-
-stop() {
- ebegin "Stopping ${name}"
- start-stop-daemon --quiet --stop --exec "${command}" --pidfile "${pidfile}"
- eend $?
-}
-```
-
-after, modified execute permissions:
-
- $ doas chmod a+x /etc/init.d/ytlocal
-
-
-2. Write `/usr/sbin/ytlocal` and configure path.
-
-```
-#!/usr/bin/env bash
-
-cd /home/your-path/ytlocal/ # change me
-source venv/bin/activate
-python server.py > /dev/null 2>&1 &
-echo $! > /var/run/ytlocal.pid
-```
-
-after, modified execute permissions:
-
- $ doas chmod a+x /usr/sbin/ytlocal
-
-
-3. OpenRC check
-
-- status: `doas rc-service ytlocal status`
-- start: `doas rc-service ytlocal start`
-- restart: `doas rc-service ytlocal restart`
-- stop: `doas rc-service ytlocal stop`
-
-- enable: `doas rc-update add ytlocal default`
-- disable: `doas rc-update del ytlocal`
-
-When yt-local is run with administrator privileges,
-the configuration file is stored in /root/.yt-local
+- **Service fails to start**: verify script permissions, correct `command=` path, and that the virtualenv exists.
+- **Port conflict**: adjust the server’s port configuration before launching.
+- **Import errors**: ensure all dependencies are installed in the virtual environment.
+
+[!IMPORTANT]
+Keep the service script updated when modifying startup logic or adding new dependencies.