blob: 4fd781f7e39292195248a35f476002ba2ad91419 (
plain)
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
|
#!/bin/bash
readonly DOKKU_ROOT="${DOKKU_ROOT:-/home/dokku}"
readonly DOKKU_LIB_ROOT="${DOKKU_LIB_PATH:-/var/lib/dokku}"
readonly DOKKU_LOGS_DIR="${DOKKU_LOGS_DIR:-/var/log/dokku}"
setup-user() {
echo "Setting up dokku user"
/usr/bin/sshcommand create dokku /usr/bin/dokku
(grep -i -E "^docker" /etc/group || groupadd docker) &>/dev/null
usermod -aG docker dokku
mkdir -p "${DOKKU_ROOT}/.ssh" "${DOKKU_ROOT}/.dokkurc"
touch "${DOKKU_ROOT}/.ssh/authorized_keys"
chown -R dokku:dokku "${DOKKU_ROOT}/.ssh" "${DOKKU_ROOT}/.dokkurc"
}
setup-storage() {
echo "Setting up storage directories"
mkdir -p "${DOKKU_LIB_ROOT}/data" "${DOKKU_LIB_ROOT}/data/storage"
chown dokku:dokku "${DOKKU_LIB_ROOT}/data"
}
setup-plugins() {
echo "Setting up plugin directories"
mkdir -p "${DOKKU_LIB_ROOT}/core-plugins/available" "${DOKKU_LIB_ROOT}/plugins/available"
mkdir -p "${DOKKU_LIB_ROOT}/core-plugins/enabled" "${DOKKU_LIB_ROOT}/plugins/enabled"
touch "${DOKKU_LIB_ROOT}/core-plugins/config.toml" "${DOKKU_LIB_ROOT}/plugins/config.toml"
echo "Migrating old plugins"
find "${DOKKU_LIB_ROOT}/plugins" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do
if [ "${plugin}" = "available" ] || [ "${plugin}" = "enabled" ]; then
continue
elif [ -f "${DOKKU_LIB_ROOT}/plugins/${plugin}/.core" ]; then
rm -rf "${DOKKU_LIB_ROOT}/plugins/${plugin}"
elif [ ! -d "${DOKKU_LIB_ROOT}/plugins/available/${plugin}" ]; then
mv "${DOKKU_LIB_ROOT}/plugins/${plugin}" "${DOKKU_LIB_ROOT}/plugins/available"
fi
done
echo "Enabling all core plugins"
find "${DOKKU_LIB_ROOT}/core-plugins/available" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do
if [ ! -d "${DOKKU_LIB_ROOT}/plugins/available/${plugin}" ]; then
ln -s "${DOKKU_LIB_ROOT}/core-plugins/available/${plugin}" "${DOKKU_LIB_ROOT}/plugins/available/${plugin}"
PLUGIN_PATH="${DOKKU_LIB_ROOT}/core-plugins" plugn enable "${plugin}"
PLUGIN_PATH="${DOKKU_LIB_ROOT}/plugins" plugn enable "${plugin}"
fi
done
find -L "${DOKKU_LIB_ROOT}" -type l -delete
chown dokku:dokku -R "${DOKKU_LIB_ROOT}/plugins" "${DOKKU_LIB_ROOT}/core-plugins"
echo "Install all core plugins"
# dokku plugin:install-dependencies --core # Disabled since not usefull and pacman lock error
dokku plugin:install --core
rm -f /etc/update-motd.d/99-dokku
sed -i 's/ syslog dokku$/ root dokku/g' /etc/logrotate.d/dokku
}
setup-sshcommand() {
echo "Ensure proper sshcommand path"
echo '/usr/bin/dokku' > "${DOKKU_ROOT}/.sshcommand"
if [[ -f .ssh/authorized_keys ]]; then
sed -i.bak 's#/usr/local/bin/dokku#/usr/bin/dokku#' "${DOKKU_ROOT}/.ssh/authorized_keys"
rm "${DOKKU_ROOT}/.ssh/authorized_keys"
fi
}
post_install() {
setup-user
setup-storage
setup-plugins
setup-sshcommand
echo "Update version file"
rm -f "${DOKKU_ROOT}/VERSION"
cp "${DOKKU_LIB_ROOT}/VERSION" "${DOKKU_ROOT}/VERSION"
echo "Update hostname"
hostname -f > "${DOKKU_ROOT}/HOSTNAME"
echo "
Please add your ssh pubkey like:
$ cat ~/.ssh/id_rsa.pub | sudo sshcommand acl-add dokku default
To enable nginx autoconfiguration, add to your /etc/nginx/nginx.conf in http section:
include /etc/nginx/conf.d/*.conf;
And reload nginx:
$ sudo systemctl reload nginx
"
}
post_upgrade() {
post_install "$1"
}
pre_remove() {
echo "Destroying deployed applications"
for app in $(DOKKU_QUIET_OUTPUT=1 dokku apps); do
dokku --force apps:destroy "${app}"
done
dokku cleanup
}
post_remove() {
rm -f /var/cache/dokku-completion
rm -f /etc/systemd/system/dokku-redeploy.service
rm -f /etc/systemd/system/dokku-retire.timer
rm -f /etc/systemd/system/dokku-retire.service
rm -f /etc/logrotate.d/dokku
# Remove nginx configuration
rm -f /etc/nginx/conf.d/dokku.conf
# Remove data and logs
rm -rf "${DOKKU_LIB_ROOT}"
rm -rf "${DOKKU_LOGS_DIR}"
# Remove dokku user and group
userdel -r dokku &>/dev/null
groupdel dokku &>/dev/null
echo "
Please remove to your /etc/nginx/nginx.conf in http section:
include /etc/nginx/conf.d/*.conf;
And reload nginx:
$ sudo systemctl reload nginx
"
}
|