#!/bin/sh post_install() { DOKKU_ROOT="/home/dokku" DOKKU_LIB_ROOT="/var/lib/dokku" echo "Create dokku user" sshcommand create dokku /usr/bin/dokku &>/dev/null echo "Add dokku user to docker group" (egrep -i "^docker" /etc/group || groupadd docker) &>/dev/null usermod -aG docker dokku echo "Setting up storage directories" mkdir -p "$DOKKU_LIB_ROOT/data/storage" chown dokku:dokku "$DOKKU_LIB_ROOT/data" "$DOKKU_LIB_ROOT/data/storage" echo "Setting up plugin directories" # should be replaced by `plugn init` mkdir -p "$DOKKU_LIB_ROOT/core-plugins/available" mkdir -p "$DOKKU_LIB_ROOT/plugins/available" mkdir -p "$DOKKU_LIB_ROOT/core-plugins/enabled" mkdir -p "$DOKKU_LIB_ROOT/plugins/enabled" touch "$DOKKU_LIB_ROOT/core-plugins/config.toml" touch "$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 "Ensure proper sshcommand path" echo /usr/bin/dokku > "$DOKKU_ROOT/.sshcommand" mkdir -p "$DOKKU_ROOT/.ssh" touch "$DOKKU_ROOT/.ssh/authorized_keys" 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 echo "Install all core plugins" dokku plugin:install --core 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 "Create nginx config folder" mkdir -p /etc/nginx/conf.d echo "Add sudoers rule for dokku control over nginx" echo "%dokku ALL=(ALL) NOPASSWD:/usr/bin/systemctl reload nginx, /usr/sbin/nginx -t" > /etc/sudoers.d/dokku-nginx 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 } 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/update-motd.d/99-dokku rm -f /etc/logrotate.d/dokku rm -f /etc/nginx/conf.d/dokku.conf systemctl reload nginx &>/dev/null rm -rf /var/lib/dokku rm -rf /var/log/dokku userdel -r dokku &>/dev/null rm -rf /home/dokku }