forked from juliusknorr/nextcloud-docker-dev
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbootstrap.sh
executable file
·147 lines (114 loc) · 3.54 KB
/
bootstrap.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
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
APPS_TO_INSTALL=(viewer recommendations files_pdfviewer profiler hmr_enabler)
NEXTCLOUD_AUTOINSTALL_APPS=(viewer profiler hmr_enabler)
# You can specify additional apps to install on the command line.
APPS_TO_INSTALL+=( "$@" )
NEXTCLOUD_AUTOINSTALL_APPS+=( "$@" )
indent() {
sed 's/^/ /'
}
indent_cli() {
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -l 's/^/ > /'
else
sed -u 's/^/ > /'
fi
}
function install_server() {
if [ -d workspace/server/.git ]; then
echo "🆗 Server is already installed." | indent
return
fi
mkdir -p workspace/
(
(
echo "🌏 Fetching server (this might take a while to finish)" &&
git clone https://github.com/nextcloud/server.git --depth 1 workspace/server 2>&1 | indent_cli &&
cd workspace/server && git submodule update --init 2>&1 | indent_cli
) || echo "❌ Failed to clone Nextcloud server code"
) | indent
}
function install_app() {
TARGET=workspace/server/apps-extra/"$1"
if [ -d "$TARGET"/.git ]; then
echo "🆗 App $1 is already installed." | indent
return
fi
(
echo "🌏 Fetching $1"
(git clone https://github.com/nextcloud/"$1".git "$TARGET" 2>&1 | indent_cli &&
echo "✅ $1 installed") ||
echo "❌ Failed to install $1"
) | indent
}
function is_installed() {
(
if [ -x "$(command -v "$1")" ]; then
echo "✅ $1 is properly installed"
else
echo "❌ Install $1 before running this script"
exit 1
fi
) | indent
}
echo
echo "⏩ Performing system checks"
is_installed docker
is_installed docker-compose
is_installed git
(
(docker ps 2>&1 >/dev/null && echo "✅ Docker is properly executable") ||
(echo "❌ Cannot run docker ps, you might need to check that your user is able to use docker properly" && exit 1)
) | indent
echo
echo "⏩ Setting up folder structure and fetching repositories"
install_server
mkdir -p workspace/server/apps-extra
for app in "${APPS_TO_INSTALL[@]}"
do
install_app "$app"
done
echo
echo
echo "⏩ Setup your environment in an .env file"
if [ ! -f ".env" ]; then
cat <<EOT >.env
COMPOSE_PROJECT_NAME=master
DOMAIN_SUFFIX=.local
REPO_PATH_SERVER=$PWD/workspace/server
STABLE_ROOT_PATH=$PWD/workspace
NEXTCLOUD_AUTOINSTALL_APPS="${NEXTCLOUD_AUTOINSTALL_APPS[@]}"
DOCKER_SUBNET=192.168.21.0/24
PORTBASE=821
XDEBUG_MODE=develop
EOT
fi
if [[ $(uname -m) == 'arm64' ]]; then
echo "Setting custom containers for arm platform"
echo "CONTAINER_ONLYOFFICE=onlyoffice/documentserver:latest-arm64" >> .env
echo "CONTAINER_KEYCLOAK=mihaibob/keycloak:15.0.1" >> .env
fi
cat <<EOF
╔═════════════════════════════════════════╗
║ oOo Ready to start developing 🎉 ║
╚═════════════════════════════════════════╝
🚀 Start the Nextcloud server by running
$ docker-compose up -d nextcloud
💤 Stop it with
$ docker-compose stop nextcloud
🗑 Fresh install and wipe all data
$ docker-compose down -v
Note that for performance reasons the server repository has been cloned with
--depth=1. To get the full history it is highly recommended to run:
$ cd workspace/server
$ git fetch --unshallow
$ git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
$ git fetch origin
This may take some time depending on your internet connection speed.
For more details about the individual setup options see
the README.md file or checkout the repo at
https://github.com/juliushaertl/nextcloud-docker-dev
EOF