Skywire Systemd Service - SkycoinProject/skywire GitHub Wiki
Skywire systemd service setup guide
This guide assumes that you have read and understood the readme.md and installed Skywire using one of the several guides on this wiki.
This guide also asumes that you've installed skywire on an armbian image and have the $GOPATH
set to /root/go
or it is installed on a raspberry image and have the $GOPATH
set to /home/pi/go
Table of Contents
- Introduction
- Requirements
- Usage
- Use official systemd service on Armbian image
- Use official systemd service on Raspberry Pi Raspbian
Introduction
This guide outlines the necessary steps to add the Skywire software to the systemd services so that it automatically starts at boot. This way you don't have to manually start the manager & node processes each time you reboot your boards.
Requirements
- Installed Skywire Software on the board and image of your choice.
- Stop the current skywire node and manager processes (if they are already running).
- Disable the currently autostart scripts that you are using (if you are using).
To install skywire check our Github page or use one fo the DIY Skywire guides.
If you are already running skywire manager and node processes you'll need to stop them as follow. Follow these steps to stop the manager process and to stop the node process here.
If you are using an autostart scripts from these three guides, follow the steps described to disable them.
- DIY Miner - A complete guide for Hardware/Software configuration - asxtree's guide
To stop and disable asxtree's systemd manager service do as follows only on the manager board:
systemctl stop skymanager.service
systemctl disable skymanager.service
To stop and disable asxtree's systemd node service do as follows only on all boards:
systemctl stop skynode.service
systemctl disable skynode.service
- Raspberry Pi Sky Miner Setup for noobs - TESTNET READY - adhaelon's guide
To stop and disable adhaelon's systemd manager service do as follows only on the manager board:
sudo systemctl stop manager.service
sudo systemctl disable manager.service
To stop and disable adhaelon's systemd node service do as follows only on all boards (on the manager board might not be needed):
sudo systemctl stop secondary.service
sudo systemctl disable secondary.service
- Build the Ronny’s Cheap Man’s Skyminer - ronny's guide
sudo -i
cd /etc
crontab -e
Now scroll to the end and comment the following line @reboot /etc/init.d/MyScript.sh
to look like #@reboot /etc/init.d/MyScript.sh
, notice the #
sign.
Press CTRL+x
then type y
and press ENTER
key to save and exit.
Then move MyScript.sh
from /etc/init.d/
to $HOME
with the following command mv -f /etc/init.d/MyScript.sh $HOME
.
Usage
Setting up the Systemd service for executing Skywire at boot.
Use official systemd service on Armbian image
.bashrc
and comment the initial env variables on all boards
Edit If you already installed skywire on your board and set the environment variables in .bashrc
file you'll need to comment them because the official systemd services use a special file for them, so start by typing:
nano /root/.bashrc
Find the following lines and comment them by writing #
in the beginning of each line, like:
#export GOROOT=/usr/local/go
#export GOPATH=$HOME/go
#export GOBIN=$GOPATH/bin
#export PATH=$PATH:$GOBIN
Press CTRL+x
then type y
and press ENTER
key to save and exit.
Pull the latest updates from github on all boards
In order to have the systemd service files we need to pull the latest update from github, so type:
cd /root/go/src/github.com/SkycoinProject/skywire/
git reset --hard
git pull origin master
Verify that you have the systemd service files by typing:
ls -al static/script/upgrade/
And you should see the folowing followings:
drwxr-xr-x 2 root root 4096 Dec 20 09:38 data
-rwxr-xr-x 1 root root 35429 Dec 20 09:38 one_time_upgrade
-rw-r--r-- 1 root root 4308 Dec 20 09:38 README.md
If you DON'T SEE those files do the followings. Delete the skywire folder and clone it again by typing:
cd ..
rm -rf skywire/
git clone https://github.com/SkycoinProject/skywire.git
cd skywire/cmd/
go install -v ./...
If you DO SEE those files continue with the update:
cd cmd/
go install -v ./...
Start adjusting the systemd service files for your environment
skywire.defaults
env file to /etc/skywire
on all boards
Create a symbolic link cd /etc/default
ln -s /root/go/src/github.com/SkycoinProject/skywire/static/script/skywire.defaults skywire
skywire.defaults
env file on all boards
Modify nano /etc/default/skywire
Now change this part of the file as follows:
# Default variables for the entire skywire work, this needs to be in
# the environment to make it work properly
# IP of the manager, by default 192.168.0.2
# if you use a custom IP set just change the manager IP
# here to apply it system wide.
- MANAGER_IP=192.168.0.2 - Change the IP with your manager IP
# Go related variables
GOROOT=/usr/local/go
- GOPATH=/usr/local/skywire/go - Replace with your actual GOPATH like ${HOME}/go
- PATH="/usr/local/go/bin:/usr/local/skywire/go/bin:${PATH}" - Replace with ${GOROOT}/bin:${GOPATH}/bin:${PATH}
# Runtime variables
- HOME=/root - Move in "Go related variables"
TMP_DIR=/tmp/skywire-info
In the end it should look like this but pay attention to your MANAGER_IP
, this is just an example and you should put your manager's node IP:
# Default variables for the entire skywire work, this needs to be in
# the environment to make it work properly
# IP of the manager, by default 192.168.0.2
# if you use a custom IP set just change the manager IP
# here to apply it system wide.
MANAGER_IP=192.168.2.2
# Go related variables
HOME=/root
GOROOT=/usr/local/go
GOPATH=${HOME}/go
PATH=${GOROOT}/bin:${GOPATH}/bin:${PATH}
# Runtime variables
TMP_DIR=/tmp/skywire-info
Press CTRL+x
then type y
and press ENTER
key to save and exit.
skywire.defaults
on all boards
Reload source /etc/default/skywire
Copy the official Systemd service files
Copy the manager service file only on the manager board
cp -r /root/go/src/github.com/SkycoinProject/skywire/static/script/upgrade/data/skywire-manager.service /etc/systemd/system/
Copy the node service file only on the node designated boards (not manager)
cp -r /root/go/src/github.com/SkycoinProject/skywire/static/script/upgrade/data/skywire-node.service /etc/systemd/system/
Modify the official systemd manager service file only on the manager board
nano /etc/systemd/system/skywire-manager.service
Now change this part of the file as follows:
...
[Service]
Type=oneshot
- ExecStart=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script/manager_start - Replace `/usr/local/skywire` with the folder where is `go` located like `/root`
- ExecStop=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script/stop - Replace `/usr/local/skywire` with the folder where is `go` located like `/root`
RemainAfterExit=yes
...
In the end, it should look like this but pay attention to your path where go
is located:
...
[Service]
Type=oneshot
ExecStart=/root/go/src/github.com/SkycoinProject/skywire/static/script/manager_start
ExecStop=/root/go/src/github.com/SkycoinProject/skywire/static/script/stop
RemainAfterExit=yes
...
Press CTRL+x
then type y
and press ENTER
key to save and exit.
Modify the official systemd node service file only on the node designated boards (not manager)
nano /etc/systemd/system/skywire-node.service
Now change this part of the file as follows:
...
[Service]
Type=oneshot
- ExecStart=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script/node_start - Replace `/usr/local/skywire` with the folder where is `go` located like `/root`
- ExecStop=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script/stop - Replace `/usr/local/skywire` with the folder where is `go` located like `/root`
RemainAfterExit=yes
...
In the end it should look like this but pay attention to your path where go
is located:
...
[Service]
Type=oneshot
ExecStart=/root/go/src/github.com/SkycoinProject/skywire/static/script/node_start
ExecStop=/root/go/src/github.com/SkycoinProject/skywire/static/script/stop
RemainAfterExit=yes
...
Press CTRL+x
then type y
and press ENTER
key to save and exit.
Enable the official Systemd service files
Reload the deamon and enable the systemd manager service only on the manager board by typing:
systemctl daemon-reload
systemctl enable skywire-manager.service
Reload the daemon and enable the systemd node service only on the node designated boards (not manager) by typing:
systemctl daemon-reload
systemctl enable skywire-node.service
Modify the official manager_start service file only on the manager board
nano /root/go/src/github.com/SkycoinProject/skywire/static/script/manager_start
Now change this part of the file as follows:
...
# local vars
- SKYWIRE_UNIX_SCRIPTS=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script - Replace `/usr/local/skywire` with the folder where is `go` located like `/root`
...
In the end, it should look like this but pay attention to your path where go
is located:
...
# local vars
SKYWIRE_UNIX_SCRIPTS=/root/go/src/github.com/SkycoinProject/skywire/static/script
...
Press CTRL+x
then type y
and press ENTER
key to save and exit.
Modify the official node_start service files only on the node designated boards (not manager)
nano /root/go/src/github.com/SkycoinProject/skywire/static/script/node_start
Now change this part of the file as follows:
...
# local vars
- SKYWIRE_UNIX_SCRIPTS=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script - Replace `/usr/local/skywire` with the folder where is `go` located like `/root`
...
In the end it should look like this but pay attention to your path where go
is located:
...
# local vars
SKYWIRE_UNIX_SCRIPTS=/root/go/src/github.com/SkycoinProject/skywire/static/script
...
Press CTRL+x
then type y
and press ENTER
key to save and exit.
start
, stop
and update
service files on all boards
Modify the official The start
service file:
nano /root/go/src/github.com/SkycoinProject/skywire/static/script/start
Now change this part of the file as follows:
...
# local vars
- SKYWIRE_UNIX_SCRIPTS=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script - Replace `/usr/local/skywire` with the folder where is `go` located like `/root`
...
In the end it should look like this but pay attention to your path where go
is located:
...
# local vars
SKYWIRE_UNIX_SCRIPTS=/root/go/src/github.com/SkycoinProject/skywire/static/script
...
Press CTRL+x
then type y
and press ENTER
key to save and exit.
The stop
service file
nano /root/go/src/github.com/SkycoinProject/skywire/static/script/stop
Now change this part of the file as follows:
...
# local vars
- SKYWIRE_UNIX_SCRIPTS=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script - Replace `/usr/local/skywire` with the folder where is `go` located like `/root`
...
In the end it should look like this but pay attention to your path where go
is located:
...
# local vars
SKYWIRE_UNIX_SCRIPTS=/root/go/src/github.com/SkycoinProject/skywire/static/script
...
Press CTRL+x
then type y
and press ENTER
key to save and exit.
The update
service file
nano /root/go/src/github.com/SkycoinProject/skywire/static/script/update
Now change this part of the file as follows:
...
# local vars
- SKYWIRE_UNIX_SCRIPTS=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script - Replace `/usr/local/skywire` with the folder where is `go` located like `/root`
...
In the end it should look like this but pay attention to your path where go
is located:
...
# local vars
SKYWIRE_UNIX_SCRIPTS=/root/go/src/github.com/SkycoinProject/skywire/static/script
...
Press CTRL+x
then type y
and press ENTER
key to save and exit.
Start manager and node services
To start the manager service on the manager board (this will also start the node service so no need to start also skywire-node.service) type:
systemctl start skywire-manager.service
To start the node service on the rest of the node boards excluding the manager board type:
systemctl start skywire-node.service
Use official systemd service on Raspberry Pi Raspbian
.bashrc
or .profile
and comment the initial env variables on all boards
Edit Depending on what guide you followed to install skywire on your Raspberry Pi you've set the env variables either in .bashrc
, or in .profile
If you already installed skywire on your board and set the environment variables in .bashrc
or .profile
file youll need to comment them because the official systemd services use a special file for them, so start by typing:
sudo nano ~/.bashrc
or
sudo nano ~/.profile
Find the following lines and comment them by writing #
in the beginning of each line, like:
#export GOROOT=/usr/local/go
#export GOPATH=$HOME/go
#export GOBIN=$GOPATH/bin
#export PATH=$PATH:$GOBIN
Press CTRL+x
then type y
and press ENTER
key to save and exit.
Pull the latest updates from GitHub on all boards
In order to have the systemd service files we need to pull the latest update from GitHub, so type:
cd /home/pi/go/src/github.com/SkycoinProject/skywire/
git reset --hard
git pull origin master
Verify that you have the systemd service files by typing:
ls -al static/script/upgrade/
And you should see the folowing followings:
drwxr-xr-x 2 root root 4096 Dec 20 09:38 data
-rwxr-xr-x 1 root root 35429 Dec 20 09:38 one_time_upgrade
-rw-r--r-- 1 root root 4308 Dec 20 09:38 README.md
If you DON'T SEE those files do the following. Delete the skywire folder and clone it again by typing:
cd ..
sudo rm -rf skywire/
git clone https://github.com/SkycoinProject/skywire.git
cd skywire/cmd/
go install -v ./...
If you DO SEE those files continue with the update:
cd cmd/
go install -v ./...
Start adjusting the systemd service files for your environment
skywire.defaults
env file to /etc/skywire
on all boards
Create a symbolic link cd /etc/default/
sudo ln -s /home/pi/go/src/github.com/SkycoinProject/skywire/static/script/skywire.defaults skywire
skywire.defaults
env file on all boards
Modify sudo nano /etc/default/skywire
Now change this part of the file as follows:
# Default variables for the entire skywire work, this needs to be in
# the environment to make it work properly
# IP of the manager, by default 192.168.0.2
# if you use a custom IP set just change the manager IP
# here to apply it system wide.
- MANAGER_IP=192.168.0.2 - Change the IP with your manager IP
# Go related variables
GOROOT=/usr/local/go
- GOPATH=/usr/local/skywire/go - Replace with your actual GOPATH like ${HOME}/go
- PATH="/usr/local/go/bin:/usr/local/skywire/go/bin:${PATH}" - Replace with ${GOROOT}/bin:${GOPATH}/bin:${PATH}
# Runtime variables
- HOME=/root - Move in "Go related variables"
TMP_DIR=/tmp/skywire-info
In the end it should look like this but pay attention to your MANAGER_IP
, this is just an example and you should use your manager's node IP:
# Default variables for the entire skywire work, this needs to be in
# the environment to make it work properly
# IP of the manager, by default 192.168.0.2
# if you use a custom IP set just change the manager IP
# here to apply it system wide.
MANAGER_IP=192.168.2.2
# Go related variables
HOME=/home/pi
GOROOT=/usr/local/go
GOPATH=${HOME}/go
PATH=${GOROOT}/bin:${GOPATH}/bin:${PATH}
# Runtime variables
TMP_DIR=/tmp/skywire-info
Press CTRL+x
then type y
and press ENTER
key to save and exit.
skywire.defaults
on all boards
Reload source /etc/default/skywire
Copy the official Systemd service files
Copy the manager service file only on the manager board
sudo cp -r /home/pi/go/src/github.com/SkycoinProject/skywire/static/script/upgrade/data/skywire-manager.service /etc/systemd/system/
Copy the node service file only on the node designated boards (not manager)
sudo cp -r /home/pi/go/src/github.com/SkycoinProject/skywire/static/script/upgrade/data/skywire-node.service /etc/systemd/system/
Modify the official systemd manager service file only on the manager board
sudo nano /etc/systemd/system/skywire-manager.service
Now change this part of the file as follows:
...
[Service]
Type=oneshot
- ExecStart=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script/manager_start - Replace `/usr/local/skywire` with the folder where is `go` located like `/home/pi`
- ExecStop=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script/stop - Replace `/usr/local/skywire` with the folder where is `go` located like `/home/pi`
RemainAfterExit=yes
...
In the end, it should look like this but pay attention to your path where go
is located:
...
[Service]
Type=oneshot
ExecStart=/home/pi/go/src/github.com/SkycoinProject/skywire/static/script/manager_start
ExecStop=/home/pi/go/src/github.com/SkycoinProject/skywire/static/script/stop
RemainAfterExit=yes
...
Press CTRL+x
then type y
and press ENTER
key to save and exit.
Modify the official systemd node service file only on the node designated boards (not manager)
sudo nano /etc/systemd/system/skywire-node.service
Now change this part of the file as follows:
...
[Service]
Type=oneshot
- ExecStart=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script/node_start - Replace `/usr/local/skywire` with the folder where is `go` located like `/home/pi`
- ExecStop=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script/stop - Replace `/usr/local/skywire` with the folder where is `go` located like `/home/pi`
RemainAfterExit=yes
...
In the end, it should look like this but pay attention to your path where go
is located:
...
[Service]
Type=oneshot
ExecStart=/home/pi/go/src/github.com/SkycoinProject/skywire/static/script/node_start
ExecStop=/home/pi/go/src/github.com/SkycoinProject/skywire/static/script/stop
RemainAfterExit=yes
...
Press CTRL+x
then type y
and press ENTER
key to save and exit.
Enable the official Systemd service files
Reload the daemon and enable the systemd manager service only on the manager board by typing:
sudo systemctl daemon-reload
sudo systemctl enable skywire-manager.service
Reload the daemon and enable the systemd node service only on the node designated boards (not the manager) by typing:
sudo systemctl daemon-reload
sudo systemctl enable skywire-node.service
Modify the official manager_start service file only on the manager board
sudo nano /home/pi/go/src/github.com/SkycoinProject/skywire/static/script/manager_start
Now change this part of the file as follows:
...
# local vars
- SKYWIRE_UNIX_SCRIPTS=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script - Replace `/usr/local/skywire` with the folder where is `go` located like `/home/pi`
...
In the end, it should look like this but pay attention to your path where go
is located:
...
# local vars
SKYWIRE_UNIX_SCRIPTS=/home/pi/go/src/github.com/SkycoinProject/skywire/static/script
...
Press CTRL+x
then type y
and press ENTER
key to save and exit.
Modify the official node_start service files only on the node designated boards (not the manager)
sudo nano /home/pi/go/src/github.com/SkycoinProject/skywire/static/script/node_start
Now change this part of the file as follows:
...
# local vars
- SKYWIRE_UNIX_SCRIPTS=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script - Replace `/usr/local/skywire` with the folder where is `go` located like `/home/pi`
...
In the end it should look like this but pay attention to your path where go
is located:
...
# local vars
SKYWIRE_UNIX_SCRIPTS=/home/pi/go/src/github.com/SkycoinProject/skywire/static/script
...
Press CTRL+x
then type y
and press ENTER
key to save and exit.
start
, stop
and update
service files on all boards
Modify the official The start
service file:
sudo nano /home/pi/go/src/github.com/SkycoinProject/skywire/static/script/start
Now change this part of the file as follows:
...
# local vars
- SKYWIRE_UNIX_SCRIPTS=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script - Replace `/usr/local/skywire` with the folder where is `go` located like `/home/pi`
...
In the end it should look like this but pay attention to your path where go
is located:
...
# local vars
SKYWIRE_UNIX_SCRIPTS=/home/pi/go/src/github.com/SkycoinProject/skywire/static/script
...
Press CTRL+x
then type y
and press ENTER
key to save and exit.
The stop
service file
sudo nano /home/pi/go/src/github.com/SkycoinProject/skywire/static/script/stop
Now change this part of the file as follows:
...
# local vars
- SKYWIRE_UNIX_SCRIPTS=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script - Replace `/usr/local/skywire` with the folder where is `go` located like `/home/pi`
...
In the end it should look like this but pay attention to your path where go
is located:
...
# local vars
SKYWIRE_UNIX_SCRIPTS=/home/pi/go/src/github.com/SkycoinProject/skywire/static/script
...
Press CTRL+x
then type y
and press ENTER
key to save and exit.
The update
service file
sudo nano /home/pi/go/src/github.com/SkycoinProject/skywire/static/script/update
Now change this part of the file as follows:
...
# local vars
- SKYWIRE_UNIX_SCRIPTS=/usr/local/skywire/go/src/github.com/SkycoinProject/skywire/static/script - Replace `/usr/local/skywire` with the folder where is `go` located like `/home/pi`
...
In the end, it should look like this but pay attention to your path where go
is located:
...
# local vars
SKYWIRE_UNIX_SCRIPTS=/home/pi/go/src/github.com/SkycoinProject/skywire/static/script
...
Press CTRL+x
then type y
and press ENTER
key to save and exit.
Start manager and node services
To start the manager service on the manager board (this will also start the node service so no need to start also skywire-node.service) type:
sudo systemctl start skywire-manager.service
To start the node service on the rest of the node boards excluding the manager board type:
sudo systemctl start skywire-node.service