Jarno Rankinen revised this gist . Go to revision
1 file changed, 2 insertions, 2 deletions
create.sh
@@ -60,14 +60,14 @@ podman pod create -p 8081:80 --hostname "$NEXTCLOUD_HOSTNAME" --name nextcloud | |||
60 | 60 | ## Mariadb | |
61 | 61 | ## | |
62 | 62 | # | |
63 | - | # podman build -f ./mariadb-nextcloud.Containerfile -t oranki.net/mariadb:latest | |
63 | + | # podman build -f ./mariadb-nextcloud.Containerfile -t localhost/mariadb:latest | |
64 | 64 | # podman create --name nextcloud-db --pod nextcloud \ | |
65 | 65 | # -e MYSQL_ROOT_PASSWORD="$MYSQL_ROOT_PASSWD" \ | |
66 | 66 | # -e MYSQL_DATABASE='nextcloud' \ | |
67 | 67 | # -e MYSQL_USER='nextcloud' \ | |
68 | 68 | # -e MYSQL_PASSWORD="$MYSQL_PASSWD" \ | |
69 | 69 | # -v "$NEXTCLOUD_DB_DIR":/var/lib/mysql:Z \ | |
70 | - | # oranki.net/mariadb:latest | |
70 | + | # localhost/mariadb:latest | |
71 | 71 | ||
72 | 72 | ## | |
73 | 73 | ## Postgres |
Jarno Rankinen revised this gist . Go to revision
1 file changed, 190 insertions
create.sh(file created)
@@ -0,0 +1,190 @@ | |||
1 | + | #!/bin/bash | |
2 | + | ||
3 | + | set -e | |
4 | + | ||
5 | + | REQUIREMENTS=( curl jq podman ) | |
6 | + | for req in ${REQUIREMENTS[@]}; do | |
7 | + | if ! command -v $req > /dev/null; then | |
8 | + | echo "This script requires $req to run." | |
9 | + | exit 1 | |
10 | + | fi | |
11 | + | done | |
12 | + | ||
13 | + | # NEXTCLOUD_DIGEST= # NOT USED YET | |
14 | + | # MARIADB_DIGEST= # NOT USED YET | |
15 | + | # | |
16 | + | # MYSQL_ROOT_PASSWD='' | |
17 | + | # MYSQL_PASSWD='' #Used for Postgres too | |
18 | + | # | |
19 | + | # POSTGRES_USER='' | |
20 | + | # POSTGRES_DB='' | |
21 | + | # | |
22 | + | # | |
23 | + | # ADMIN_USER='' | |
24 | + | # ADMIN_PASSWD='' | |
25 | + | # NEXTCLOUD_DATA_DIR='' | |
26 | + | # NEXTCLOUD_DB_DIR='' | |
27 | + | # TRUSTED_DOMAINS='' | |
28 | + | # | |
29 | + | # CLAMAV_DB_DIR='' | |
30 | + | # CLAMAV_CONF_DIR='' | |
31 | + | ||
32 | + | ## Place the above configurations in a file called env in the same | |
33 | + | ## directory as this script | |
34 | + | ## | |
35 | + | ## A template env file is included in the repo | |
36 | + | [[ -f ./env ]] && . ./env || exit 1 | |
37 | + | ||
38 | + | ## Change this to 1 if you haven't enabled previews before | |
39 | + | ## Or this is a fresh installation | |
40 | + | APPEND_PREVIEW_CONFIG=0 | |
41 | + | ||
42 | + | ## Just in case to avoid file permission errors | |
43 | + | #sudo chown "$USER": "$NEXTCLOUD_DB_DIR" | |
44 | + | ||
45 | + | ## Remove old log file | |
46 | + | if [ "$UID" -ne 0 ]; then | |
47 | + | podman unshare rm -f "$NEXTCLOUD_DATA_DIR"/data/nextcloud.log | |
48 | + | else | |
49 | + | rm -f "$NEXTCLOUD_DATA_DIR"/data/nextcloud.log | |
50 | + | fi | |
51 | + | ||
52 | + | ||
53 | + | ## | |
54 | + | ## Create a pod for Nextcloud | |
55 | + | ## | |
56 | + | ||
57 | + | podman pod create -p 8081:80 --hostname "$NEXTCLOUD_HOSTNAME" --name nextcloud | |
58 | + | ||
59 | + | ## | |
60 | + | ## Mariadb | |
61 | + | ## | |
62 | + | # | |
63 | + | # podman build -f ./mariadb-nextcloud.Containerfile -t oranki.net/mariadb:latest | |
64 | + | # podman create --name nextcloud-db --pod nextcloud \ | |
65 | + | # -e MYSQL_ROOT_PASSWORD="$MYSQL_ROOT_PASSWD" \ | |
66 | + | # -e MYSQL_DATABASE='nextcloud' \ | |
67 | + | # -e MYSQL_USER='nextcloud' \ | |
68 | + | # -e MYSQL_PASSWORD="$MYSQL_PASSWD" \ | |
69 | + | # -v "$NEXTCLOUD_DB_DIR":/var/lib/mysql:Z \ | |
70 | + | # oranki.net/mariadb:latest | |
71 | + | ||
72 | + | ## | |
73 | + | ## Postgres | |
74 | + | ## | |
75 | + | # | |
76 | + | podman create --pod nextcloud --name nextcloud-postgres \ | |
77 | + | -e POSTGRES_USER=nextcloud \ | |
78 | + | -e POSTGRES_DB=nextcloud \ | |
79 | + | -e POSTGRES_PASSWORD="$MYSQL_PASSWD" \ | |
80 | + | -v "$NEXTCLOUD_DB_DIR":/var/lib/postgresql/data:Z \ | |
81 | + | docker.io/postgres:alpine | |
82 | + | ||
83 | + | ||
84 | + | ## | |
85 | + | ## Redis | |
86 | + | ## | |
87 | + | ||
88 | + | podman create --name nextcloud-redis --pod nextcloud docker.io/redis:alpine | |
89 | + | ||
90 | + | ## | |
91 | + | ## ClamAV | |
92 | + | ## | |
93 | + | ||
94 | + | ## No typos in the :z and :Z flags, NC data dir needs the small z | |
95 | + | ## which means shared with another container | |
96 | + | ||
97 | + | podman create --name nextcloud-clamav --pod nextcloud \ | |
98 | + | -v "$CLAMAV_DB_DIR":/var/lib/clamav:Z \ | |
99 | + | -v "$CLAMAV_CONF_DIR":/etc/clamav:Z \ | |
100 | + | clamav/clamav:latest | |
101 | + | ||
102 | + | ## Add the following: | |
103 | + | ## -v $NEXTCLOUD_DATA_DIR/data:/scandir:z \ | |
104 | + | ## to clamav to use ClamAV's clamd scanning as well | |
105 | + | ## (not tested) | |
106 | + | ||
107 | + | ||
108 | + | ## | |
109 | + | ## Nextcloud | |
110 | + | ## | |
111 | + | ||
112 | + | [ -n "$NEXTCLOUD_HOSTNAME" ] && sed -i "s|^ServerName.*$|ServerName $NEXTCLOUD_HOSTNAME|" apache2.conf | |
113 | + | podman build -f ./nextcloud-app.Containerfile -t nextcloud:latest | |
114 | + | podman create --name nextcloud-app --pod nextcloud \ | |
115 | + | -e POSTGRES_DB='nextcloud' \ | |
116 | + | -e POSTGRES_USER='nextcloud' \ | |
117 | + | -e POSTGRES_PASSWORD="$MYSQL_PASSWD" \ | |
118 | + | -e POSTGRES_HOST='127.0.0.1' \ | |
119 | + | -e NEXTCLOUD_ADMIN_USER="$ADMIN_USER" \ | |
120 | + | -e NEXTCLOUD_ADMIN_PASSWORD="$ADMIN_PASSWD" \ | |
121 | + | -e NEXTCLOUD_TRUSTED_DOMAINS="$TRUSTED_DOMAINS" \ | |
122 | + | -e PHP_MEMORY_LIMIT="$NEXTCLOUD_PHP_MEMORY_LIMIT" \ | |
123 | + | -e PHP_UPLOAD_LIMIT='10G' \ | |
124 | + | -e REDIS_HOST='127.0.0.1' \ | |
125 | + | -e REDIS_PORT='6379' \ | |
126 | + | -e APACHE_DISABLE_REWRITE_IP=1 \ | |
127 | + | -e TRUSTED_PROXIES="$TRUSTED_PROXIES" \ | |
128 | + | -v "$NEXTCLOUD_DATA_DIR":/var/www/html:z \ | |
129 | + | localhost/nextcloud:latest | |
130 | + | ||
131 | + | # -e MYSQL_DATABASE='nextcloud' \ | |
132 | + | # -e MYSQL_USER='nextcloud' \ | |
133 | + | # -e MYSQL_PASSWORD="$MYSQL_PASSWD" \ | |
134 | + | # -e MYSQL_HOST='127.0.0.1:3306' \ | |
135 | + | ||
136 | + | ## | |
137 | + | ## Enable previews | |
138 | + | ## | |
139 | + | ||
140 | + | if [[ "$APPEND_PREVIEW_CONFIG" -eq 1 ]]; then | |
141 | + | sudo sed -i '/^);$/d' "$NEXTCLOUD_DATA_DIR"/config/config.php; cat previews.conf | sudo tee -a "$NEXTCLOUD_DATA_DIR"/config/config.php > /dev/null | |
142 | + | podman restart nextcloud-app | |
143 | + | fi | |
144 | + | ||
145 | + | ## | |
146 | + | ## Generate systemd units | |
147 | + | ## | |
148 | + | ||
149 | + | if [[ "$1" == "--generate-systemd" ]]; then | |
150 | + | ||
151 | + | ## Added UID check in case using rootful containers (under LXC guest, for example) | |
152 | + | if [ "$UID" -ne 0 ]; then | |
153 | + | [[ ! -d "$HOME"/.config/systemd/user ]] && mkdir -p "$HOME"/.config/systemd/user | |
154 | + | cd "$HOME"/.config/systemd/user | |
155 | + | if [[ "$2" == "--new" ]]; then | |
156 | + | podman generate systemd --new -n -f nextcloud | |
157 | + | else | |
158 | + | podman generate systemd -n -f nextcloud | |
159 | + | fi | |
160 | + | systemctl --user daemon-reload | |
161 | + | ||
162 | + | systemctl --user enable --now pod-nextcloud | |
163 | + | else | |
164 | + | cd /etc/systemd/system | |
165 | + | if [[ "$2" == "--new" ]]; then | |
166 | + | podman generate systemd --new -n -f nextcloud | |
167 | + | else | |
168 | + | podman generate systemd -n -f nextcloud | |
169 | + | fi | |
170 | + | systemctl daemon-reload | |
171 | + | ||
172 | + | systemctl enable --now pod-nextcloud | |
173 | + | fi | |
174 | + | ||
175 | + | else | |
176 | + | echo "Not generating systemd units. Use --generate-systemd flag to do so automatically." | |
177 | + | podman pod start nextcloud | |
178 | + | fi | |
179 | + | ||
180 | + | echo "Waiting for nextcloud to initialize.." | |
181 | + | while [[ "$(curl -s localhost:8081/status.php | jq '.installed')" != "true" ]]; do | |
182 | + | sleep 1 | |
183 | + | done | |
184 | + | ||
185 | + | ## Tag images | |
186 | + | VERSION=$(curl -s localhost:8081/status.php | jq -r '.versionstring') | |
187 | + | echo "Tagging current image..." | |
188 | + | podman tag localhost/nextcloud:latest localhost/nextcloud:"$VERSION" | |
189 | + | echo "localhost/nextcloud version $VERSION is up!" | |
190 | + | exit 0 |