mirror of
https://github.com/alexgo-io/stacks-puppet-node.git
synced 2026-01-12 22:43:42 +08:00
- shellcheck adjustments for sysv init script - launchd/systemd disabled respawn - updated docs to reflect changes
96 lines
3.9 KiB
Markdown
96 lines
3.9 KiB
Markdown
# Sample init scripts and service configuration for stacks-blockchain
|
|
|
|
Sample scripts and configuration files for systemd and SysVinit
|
|
can be found in the [contrib/init](../contrib/init) folder.
|
|
|
|
contrib/init/stacks.service: systemd service unit configuration
|
|
contrib/init/stacks.init: SysV style init script
|
|
|
|
## Service User
|
|
|
|
All Linux startup configurations assume the existence of a "stacks" user
|
|
and group. They must be created before attempting to use these scripts.
|
|
The MacOS configuration assumes stacks-blockchain will be set up for the current user.
|
|
|
|
## Configuration
|
|
|
|
For an example configuration file that describes the configuration settings,
|
|
see [mainnet-follower-conf.toml](../testnet/stacks-node/conf/mainnet-follower-conf.toml).
|
|
Available configuration options are documented here: https://docs.stacks.co/references/stacks-node-configuration
|
|
|
|
## Paths
|
|
|
|
### Linux
|
|
|
|
All three configurations assume several paths that might need to be adjusted.
|
|
|
|
Binary: /usr/local/bin/stacks-node
|
|
Configuration file: /etc/stacks-blockchain/Config.toml
|
|
Data directory: /stacks-blockchain
|
|
PID file: /run/stacks-blockchain/stacks.pid
|
|
Lock file: /var/lock/subsys/stacks (SysVinit)
|
|
|
|
The PID directory and data directory should both be owned by the
|
|
stacks user and group. It is advised for security reasons to make the
|
|
configuration file and data directory only readable by the stacks user and
|
|
group.
|
|
|
|
NOTE: When using the systemd .service file, the creation of the aforementioned
|
|
directories and the setting of their permissions is automatically handled by
|
|
systemd. Directories are given a permission of 710, giving the stacks group
|
|
access to files under it _if_ the files themselves give permission to the
|
|
stacks group to do so. This does not allow for the listing of files under the directory.
|
|
|
|
```bash
|
|
$ mkdir -p /etc/stacks-blockchain/
|
|
$ mkdir -p /stacks-blockchain
|
|
$ useradd stacks
|
|
$ chown -R stacks:stacks /stacks-blockchain/
|
|
$ chgrp -R stacks /etc/stacks-blockchain
|
|
```
|
|
|
|
### macOS
|
|
|
|
Binary: /usr/local/bin/stacks-node
|
|
Configuration file: /etc/stacks-blockchain/Config.toml
|
|
|
|
The Config.toml file is presumed to have group ownership by the `wheel` group, with the current user having membership to that group. The data directory defined in the config is required to be writable by the current user. Logs (stdout & stderr) are saved under `/tmp/stacks-blockchain.log`
|
|
|
|
## Installing Service Configuration
|
|
|
|
### systemd
|
|
|
|
Installing this .service file consists of just copying it to
|
|
/usr/lib/systemd/system directory, followed by the command
|
|
`systemctl daemon-reload` in order to update running systemd configuration.
|
|
|
|
To test, run `systemctl start stacks` and to enable for system startup run
|
|
`systemctl enable stacks`
|
|
|
|
NOTE: When installing for systemd in Debian/Ubuntu the .service file needs to be copied to the /lib/systemd/system directory instead.
|
|
|
|
### SysVinit
|
|
|
|
Copy stacks.init to /etc/init.d/stacks. Test by running `service stacks start`.
|
|
|
|
Using this script, you can adjust the config path and log location to the stacks-node program by
|
|
setting the STACKS_BLOCKCHAIN_CONFIG and STACKS_BLOCKCHAIN_LOG environment variables in the file
|
|
/etc/sysconfig/stacks-blockchain.
|
|
|
|
### MacOS
|
|
|
|
Copy org.stacks.stacks-blockchain.plist into ~/Library/LaunchAgents. Load the launch agent by
|
|
running `launchctl load ~/Library/LaunchAgents/org.stacks.stacks-blockchain.plist`.
|
|
|
|
This Launch Agent will **not** start the stacks-blockchain whenever the user logs in.
|
|
|
|
To start the service, you'll need to manually run the start command: `launchctl start org.stacks.stacks-blockchain`
|
|
|
|
NOTE: This approach is intended for those wanting to run stacks-blockchain as the current user.
|
|
You will need to modify org.stacks.stacks-blockchain.plist if you intend to use it as a
|
|
Launch Daemon with a dedicated stacks user.
|
|
|
|
## Auto-respawn
|
|
|
|
Auto respawning is currently disabled.
|