-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathinstall.sh
216 lines (166 loc) · 5.66 KB
/
install.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
#!/usr/bin/env bash
set -euxo pipefail
: ${CONFIG_PATH:="$HOME/config"}
: ${GCODE_PATH:="$HOME/gcode"}
: ${KLIPPER_REPO:="https://github.com/KevinOConnor/klipper.git"}
: ${KLIPPER_PATH:="$HOME/klipper"}
: ${KLIPPY_VENV_PATH:="$HOME/venv/klippy"}
: ${MOONRAKER_REPO:="https://github.com/Arksine/moonraker"}
: ${MOONRAKER_PATH:="$HOME/moonraker"}
: ${MOONRAKER_VENV_PATH:="$HOME/venv/moonraker"}
: ${CLIENT:="fluidd"}
: ${CLIENT_PATH:="$HOME/www"}
if [ $(id -u) = 0 ]; then
echo "This script must not run as root"
exit 1
fi
################################################################################
# PRE
################################################################################
sudo apk add git unzip python2 python2-dev libffi-dev make gcc g++ \
ncurses-dev avrdude gcc-avr binutils-avr avr-libc \
python3 py3-virtualenv \
python3-dev freetype-dev fribidi-dev harfbuzz-dev jpeg-dev lcms2-dev openjpeg-dev tcl-dev tiff-dev tk-dev zlib-dev \
jq udev
sudo rc-update del mdev sysinit
sudo setup-udev
case $CLIENT in
fluidd)
CLIENT_RELEASE_URL=`curl -s https://api.github.com/repos/cadriel/fluidd/releases | jq -r ".[0].assets[0].browser_download_url"`
;;
mainsail)
CLIENT_RELEASE_URL=`curl -s https://api.github.com/repos/meteyou/mainsail/releases | jq -r ".[0].assets[0].browser_download_url"`
;;
*)
echo "Unknown client $CLIENT (choose fluidd or mainsail)"
exit 2
;;
esac
################################################################################
# KLIPPER
################################################################################
mkdir -p $CONFIG_PATH $GCODE_PATH
test -d $KLIPPER_PATH || git clone $KLIPPER_REPO $KLIPPER_PATH
test -d $KLIPPY_VENV_PATH || virtualenv -p python2 $KLIPPY_VENV_PATH
$KLIPPY_VENV_PATH/bin/python -m pip install --upgrade pip
$KLIPPY_VENV_PATH/bin/pip install -r $KLIPPER_PATH/scripts/klippy-requirements.txt
sudo tee /etc/init.d/klipper <<EOF
#!/sbin/openrc-run
command="$KLIPPY_VENV_PATH/bin/python"
command_args="$KLIPPER_PATH/klippy/klippy.py $CONFIG_PATH/printer.cfg -l /tmp/klippy.log -a /tmp/klippy_uds"
command_background=true
command_user="$USER"
pidfile="/run/klipper.pid"
EOF
sudo chmod +x /etc/init.d/klipper
sudo rc-update add klipper
sudo service klipper start
################################################################################
# MOONRAKER
################################################################################
sudo apk add libsodium curl-dev
test -d $MOONRAKER_PATH || git clone $MOONRAKER_REPO $MOONRAKER_PATH
test -d $MOONRAKER_VENV_PATH || virtualenv -p python3 $MOONRAKER_VENV_PATH
$MOONRAKER_VENV_PATH/bin/python -m pip install --upgrade pip
$MOONRAKER_VENV_PATH/bin/pip install -r $MOONRAKER_PATH/scripts/moonraker-requirements.txt
sudo tee /etc/init.d/moonraker <<EOF
#!/sbin/openrc-run
command="$MOONRAKER_VENV_PATH/bin/python"
command_args="$MOONRAKER_PATH/moonraker/moonraker.py"
command_background=true
command_user="$USER"
pidfile="/run/moonraker.pid"
depend() {
before klipper
}
EOF
sudo chmod a+x /etc/init.d/moonraker
cat > $HOME/moonraker.conf <<EOF
[server]
host: 0.0.0.0
config_path: $CONFIG_PATH
[authorization]
trusted_clients:
192.168.1.0/24
[octoprint_compat]
[update_manager]
[update_manager client fluidd]
type: web
repo: cadriel/fluidd
path: ~/www
EOF
sudo rc-update add moonraker
sudo service moonraker start
################################################################################
# MAINSAIL/FLUIDD
################################################################################
sudo apk add caddy curl
sudo tee /etc/caddy/Caddyfile <<EOF
:80
encode gzip
root * $CLIENT_PATH
@moonraker {
path /server/* /websocket /printer/* /access/* /api/* /machine/*
}
route @moonraker {
reverse_proxy localhost:7125
}
route /webcam {
reverse_proxy localhost:8081
}
route {
try_files {path} {path}/ /index.html
file_server
}
EOF
test -d $CLIENT_PATH && rm -rf $CLIENT_PATH
mkdir -p $CLIENT_PATH
(cd $CLIENT_PATH && wget -q -O $CLIENT.zip $CLIENT_RELEASE_URL && unzip $CLIENT.zip && rm $CLIENT.zip)
sudo rc-update add caddy
sudo service caddy start
################################################################################
# AUTO DELETE OLD GCODE
################################################################################
sudo tee /etc/periodic/15min/klipper <<END
#!/bin/sh
find $GCODE_PATH -mtime +5 -type f -delete
END
sudo chmod a+x /etc/periodic/15min/klipper
sudo service crond start
sudo rc-update add crond
# UPDATE SCRIPT
cat > $HOME/update <<EOF
#!/usr/bin/env bash
set -exo pipefail
: \${CLIENT:="$CLIENT"}
: \${CLIENT_PATH:="$CLIENT_PATH"}
case \$CLIENT in
fluidd)
CLIENT_RELEASE_URL=`curl -s https://api.github.com/repos/cadriel/fluidd/releases | jq -r ".[0].assets[0].browser_download_url"`
;;
mainsail)
CLIENT_RELEASE_URL=`curl -s https://api.github.com/repos/meteyou/mainsail/releases | jq -r ".[0].assets[0].browser_download_url"`
;;
*)
echo "Unknown client \$CLIENT (choose fluidd or mainsail)"
exit 2
;;
esac
# KLIPPER
sudo service klipper stop
(cd $KLIPPER_PATH && git fetch && git rebase origin/master)
$KLIPPY_VENV_PATH/bin/pip install -r $KLIPPER_PATH/scripts/klippy-requirements.txt
test -z "\$FLASH_DEVICE" || (cd $KLIPPER_PATH && make && make flash)
sudo service klipper start
# MOONRAKER
sudo service moonraker stop
(cd $MOONRAKER_PATH && git fetch && git rebase origin/master)
$MOONRAKER_VENV_PATH/bin/pip install -r ~/moonraker/scripts/moonraker-requirements.txt
sudo service moonraker start
# CLIENT
rm -Rf \$CLIENT_PATH
mkdir -p \$CLIENT_PATH
(cd \$CLIENT_PATH && wget -q -O \$CLIENT.zip \$CLIENT_RELEASE_URL && unzip \$CLIENT.zip && rm \$CLIENT.zip)
sudo service caddy start
EOF
chmod a+x $HOME/update