From 9d5d147a9c847c63fb27d824d5657a5b6ba60ef0 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 24 Oct 2015 22:05:43 -0400 Subject: [PATCH 01/15] Use https url for cloning repository. Refs #976 Using git-based urls meant that the user must authenticate against github, which can fail in certain situations --- deb.mk | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/deb.mk b/deb.mk index 010989275..7bf11f0fc 100644 --- a/deb.mk +++ b/deb.mk @@ -69,7 +69,7 @@ deb-herokuish: deb-setup echo "sudo docker build -t gliderlabs/herokuish /var/lib/herokuish 1> /dev/null" >> /tmp/tmp/post-install echo "-> Cloning repository" - git clone -q "git@github.com:$(HEROKUISH_REPO_NAME).git" /tmp/tmp/herokuish > /dev/null + git clone -q "https://github.com/$(HEROKUISH_REPO_NAME).git" /tmp/tmp/herokuish > /dev/null rm -rf /tmp/tmp/herokuish/.git /tmp/tmp/herokuish/.gitignore echo "-> Copying files into place" @@ -121,7 +121,7 @@ deb-plugn: deb-setup mkdir -p /tmp/tmp /tmp/build echo "-> Cloning repository" - git clone -q "git@github.com:$(PLUGN_REPO_NAME).git" /tmp/tmp/plugn > /dev/null + git clone -q "https://github.com/$(PLUGN_REPO_NAME).git" /tmp/tmp/plugn > /dev/null rm -rf /tmp/tmp/plugn/.git /tmp/tmp/plugn/.gitignore echo "-> Copying files into place" @@ -141,7 +141,7 @@ deb-sshcommand: deb-setup mkdir -p /tmp/tmp /tmp/build echo "-> Cloning repository" - git clone -q "git@github.com:$(SSHCOMMAND_REPO_NAME).git" /tmp/tmp/sshcommand > /dev/null + git clone -q "https://github.com/$(SSHCOMMAND_REPO_NAME).git" /tmp/tmp/sshcommand > /dev/null rm -rf /tmp/tmp/sshcommand/.git /tmp/tmp/sshcommand/.gitignore echo "-> Copying files into place" From 79cc07d71b243a4532a0e69d1570accea97d5167 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 24 Oct 2015 22:07:10 -0400 Subject: [PATCH 02/15] Add sudo pre-dependency for herokuish. Refs #976 --- deb.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deb.mk b/deb.mk index 7bf11f0fc..19b5c68e8 100644 --- a/deb.mk +++ b/deb.mk @@ -77,7 +77,7 @@ deb-herokuish: deb-setup cp -rf /tmp/tmp/herokuish /tmp/build/var/lib/herokuish echo "-> Creating $(HEROKUISH_PACKAGE_NAME)" - sudo fpm -t deb -s dir -C /tmp/build -n herokuish -v $(HEROKUISH_VERSION) -a $(HEROKUISH_ARCHITECTURE) -p $(HEROKUISH_PACKAGE_NAME) --deb-pre-depends 'docker-engine | docker-engine-cs' --after-install /tmp/tmp/post-install --url "https://github.com/$(HEROKUISH_REPO_NAME)" --description $(HEROKUISH_DESCRIPTION) --license 'MIT License' . + sudo fpm -t deb -s dir -C /tmp/build -n herokuish -v $(HEROKUISH_VERSION) -a $(HEROKUISH_ARCHITECTURE) -p $(HEROKUISH_PACKAGE_NAME) --deb-pre-depends 'docker-engine | docker-engine-cs' --deb-pre-depends sudo --after-install /tmp/tmp/post-install --url "https://github.com/$(HEROKUISH_REPO_NAME)" --description $(HEROKUISH_DESCRIPTION) --license 'MIT License' . mv *.deb /tmp deb-dokku: deb-setup From 9878c0b6fa24bdc2ade15e61498e30df3a9692f0 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 24 Oct 2015 22:07:42 -0400 Subject: [PATCH 03/15] Ensure we have a directory for the dokku motd message. Refs #976 --- plugins/00_dokku-standard/install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/00_dokku-standard/install b/plugins/00_dokku-standard/install index 4c5efa8f1..dc08fc7e1 100755 --- a/plugins/00_dokku-standard/install +++ b/plugins/00_dokku-standard/install @@ -42,7 +42,7 @@ EOF ;; esac - +mkdir -p /etc/update-motd.d cat< /etc/update-motd.d/99-dokku #!/bin/sh From 8d0fbc0d1b1f2857ff9f1a49380db03e3d5457d1 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 24 Oct 2015 22:32:47 -0400 Subject: [PATCH 04/15] Switch to ruby-dev package over ruby1.9.1-dev This package is the version we use for as a dokku dependency, and thus there is no need to specify a *specific* version when building the deb packages. Refs #976 --- deb.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deb.mk b/deb.mk index 19b5c68e8..cc4432d6a 100644 --- a/deb.mk +++ b/deb.mk @@ -49,7 +49,7 @@ deb-all: deb-herokuish deb-dokku deb-gems deb-plugn deb-sshcommand deb-setup: echo "-> Updating deb repository and installing build requirements" sudo apt-get update -qq > /dev/null - sudo apt-get install -qq -y gcc git ruby1.9.1-dev > /dev/null 2>&1 + sudo apt-get install -qq -y gcc git ruby-dev > /dev/null 2>&1 command -v fpm > /dev/null || sudo gem install fpm --no-ri --no-rdoc ssh -o StrictHostKeyChecking=no git@github.com || true From f3959c38b02e93a4d1dd4dc62d744e7d77ab23b0 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 24 Oct 2015 22:44:10 -0400 Subject: [PATCH 05/15] Favor chgrp over chown to ensure proper group on logs Refs #976 --- plugins/20_events/install | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/20_events/install b/plugins/20_events/install index deed941d4..11dc4a218 100755 --- a/plugins/20_events/install +++ b/plugins/20_events/install @@ -10,12 +10,11 @@ flag_rsyslog_needs_restart=n # This can be done unconditionally as mkdir -p # exits gracefully if the path already exists mkdir -m 775 -p "$DOKKU_LOGS_DIR" -chown syslog:dokku "$DOKKU_LOGS_DIR" +chgrp dokku "$DOKKU_LOGS_DIR" if [[ ! -f "$DOKKU_EVENTS_LOGFILE" ]]; then touch "$DOKKU_EVENTS_LOGFILE" - # chown syslog:root might not work on SUSE - chown syslog:dokku "$DOKKU_EVENTS_LOGFILE" + chgrp dokku "$DOKKU_EVENTS_LOGFILE" chmod 664 "$DOKKU_EVENTS_LOGFILE" fi From 6674d7823e28562b6cba7e381bd7ff1c51a208e1 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 24 Oct 2015 23:12:14 -0400 Subject: [PATCH 06/15] Automatically detect whether dokku is running on debian vs ubuntu Refs #976 --- dokku | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/dokku b/dokku index 1bcf7459c..72084afbf 100755 --- a/dokku +++ b/dokku @@ -2,7 +2,15 @@ set -eo pipefail shopt -s nullglob -export DOKKU_DISTRO=${DOKKU_DISTRO:="ubuntu"} +case "$(lsb_release -si)" in + Debian) + export DOKKU_DISTRO=${DOKKU_DISTRO:="debian"} + ;; + *) + export DOKKU_DISTRO=${DOKKU_DISTRO:="ubuntu"} + ;; +esac + export DOKKU_IMAGE=${DOKKU_IMAGE:="gliderlabs/herokuish"} export DOKKU_ROOT=${DOKKU_ROOT:=~dokku} export DOKKU_LIB_ROOT=${DOKKU_LIB_PATH:="/var/lib/dokku"} From 18d6e1be3bf4d0dd3142eb197fe451f3f62b6885 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 24 Oct 2015 23:12:38 -0400 Subject: [PATCH 07/15] Add special case commands for instances where we are running dokku in debian Refs #976 --- docs/development/plugin-triggers.md | 5 +++-- plugins/00_dokku-standard/install | 2 +- plugins/nginx-vhosts/dependencies | 5 +++++ plugins/nginx-vhosts/functions | 4 ++++ plugins/nginx-vhosts/install | 8 ++++++++ plugins/nginx-vhosts/post-delete | 4 ++++ 6 files changed, 25 insertions(+), 3 deletions(-) diff --git a/docs/development/plugin-triggers.md b/docs/development/plugin-triggers.md index b0e77bded..7b695f175 100644 --- a/docs/development/plugin-triggers.md +++ b/docs/development/plugin-triggers.md @@ -62,9 +62,10 @@ fi set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x +export DEBIAN_FRONTEND=noninteractive + case "$DOKKU_DISTRO" in - ubuntu) - export DEBIAN_FRONTEND=noninteractive + debian|ubuntu) apt-get install --force-yes -qq -y nginx ;; diff --git a/plugins/00_dokku-standard/install b/plugins/00_dokku-standard/install index dc08fc7e1..818c27eb0 100755 --- a/plugins/00_dokku-standard/install +++ b/plugins/00_dokku-standard/install @@ -25,7 +25,7 @@ end script EOF ;; - opensuse) + debian|opensuse) cat< /etc/systemd/system/dokku-redeploy.service [Unit] Description=Dokku app redeploy service diff --git a/plugins/nginx-vhosts/dependencies b/plugins/nginx-vhosts/dependencies index eaac64887..2ce7e4e7f 100755 --- a/plugins/nginx-vhosts/dependencies +++ b/plugins/nginx-vhosts/dependencies @@ -2,6 +2,11 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x case "$DOKKU_DISTRO" in + debian) + export DEBIAN_FRONTEND=noninteractive + apt-get install -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes -qq -y nginx dnsutils + ;; + ubuntu) export DEBIAN_FRONTEND=noninteractive [[ -z "$CIRCLECI" ]] && apt-get install -qq -y software-properties-common python-software-properties diff --git a/plugins/nginx-vhosts/functions b/plugins/nginx-vhosts/functions index 8b4cb36a2..c8f1c1d40 100755 --- a/plugins/nginx-vhosts/functions +++ b/plugins/nginx-vhosts/functions @@ -114,6 +114,10 @@ validate_nginx() { restart_nginx() { case "$DOKKU_DISTRO" in + debian) + /usr/sbin/invoke-rc.d nginx reload > /dev/null + ;; + ubuntu) sudo /etc/init.d/nginx reload > /dev/null ;; diff --git a/plugins/nginx-vhosts/install b/plugins/nginx-vhosts/install index d4e751099..b7e508a48 100755 --- a/plugins/nginx-vhosts/install +++ b/plugins/nginx-vhosts/install @@ -2,6 +2,10 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x case "$DOKKU_DISTRO" in + debian) + echo "%dokku ALL=(ALL) NOPASSWD:/usr/sbin/invoke-rc.d nginx reload, /usr/sbin/nginx -t" > /etc/sudoers.d/dokku-nginx + ;; + ubuntu) echo "%dokku ALL=(ALL) NOPASSWD:/etc/init.d/nginx reload, /usr/sbin/nginx -t" > /etc/sudoers.d/dokku-nginx ;; @@ -41,6 +45,10 @@ chmod g+r /var/log/nginx [[ -f /etc/logrotate.d/nginx ]] && sed -i -e 's/invoke-rc.d/service/g' /etc/logrotate.d/nginx case "$DOKKU_DISTRO" in + debian) + /usr/sbin/invoke-rc.d nginx start + ;; + ubuntu) /etc/init.d/nginx start ;; diff --git a/plugins/nginx-vhosts/post-delete b/plugins/nginx-vhosts/post-delete index ab0578794..c4e7b2b9e 100755 --- a/plugins/nginx-vhosts/post-delete +++ b/plugins/nginx-vhosts/post-delete @@ -2,6 +2,10 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x case "$DOKKU_DISTRO" in + debian) + sudo /usr/sbin/invoke-rc.d nginx reload > /dev/null + ;; + ubuntu) sudo /etc/init.d/nginx reload > /dev/null ;; From 66833f12a034d9d66a4566b7ef3732777d07c9db Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sat, 24 Oct 2015 23:15:03 -0400 Subject: [PATCH 08/15] Ensure we have sudo installed when installing dokku debian packages Refs #976 --- debian/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/control b/debian/control index 1451c7545..49d745075 100644 --- a/debian/control +++ b/debian/control @@ -4,6 +4,6 @@ Section: base Priority: optional Architecture: amd64 Depends: locales, git, make, curl, software-properties-common, docker-engine | docker-engine-cs | lxc-docker, gcc, python-software-properties, man-db, herokuish, sshcommand -Pre-Depends: nginx, dnsutils, ruby, ruby-dev, rubygem-rack, rubygem-rack-protection, rubygem-sinatra, rubygem-tilt, apparmor, cgroupfs-mount | cgroup-lite, plugn +Pre-Depends: nginx, dnsutils, ruby, ruby-dev, rubygem-rack, rubygem-rack-protection, rubygem-sinatra, rubygem-tilt, apparmor, cgroupfs-mount | cgroup-lite, plugn, sudo Maintainer: Jose Diaz-Gonzalez Description: Docker powered mini-Heroku in around 100 lines of Bash From b3041661b30ea32b6fb05839cb5071f032d5d27a Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 25 Oct 2015 00:01:12 -0400 Subject: [PATCH 09/15] Correctly set syslog user as owner on dokku logs for non-debian systems On debian, rsyslog runs as root, so we don't want to force the non-existent syslog owner. Fix syntax error --- plugins/20_events/install | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/plugins/20_events/install b/plugins/20_events/install index 11dc4a218..c0be526c3 100755 --- a/plugins/20_events/install +++ b/plugins/20_events/install @@ -10,11 +10,26 @@ flag_rsyslog_needs_restart=n # This can be done unconditionally as mkdir -p # exits gracefully if the path already exists mkdir -m 775 -p "$DOKKU_LOGS_DIR" -chgrp dokku "$DOKKU_LOGS_DIR" +case "$DOKKU_DISTRO" in + debian) + chgrp dokku "$DOKKU_LOGS_DIR" + ;; + *) + chown syslog:dokku "$DOKKU_LOGS_DIR" + ;; +esac if [[ ! -f "$DOKKU_EVENTS_LOGFILE" ]]; then touch "$DOKKU_EVENTS_LOGFILE" - chgrp dokku "$DOKKU_EVENTS_LOGFILE" + case "$DOKKU_DISTRO" in + debian) + chgrp dokku "$DOKKU_EVENTS_LOGFILE" + ;; + *) + # chown syslog:root might not work on SUSE + chown syslog:dokku "$DOKKU_EVENTS_LOGFILE" + ;; + esac chmod 664 "$DOKKU_EVENTS_LOGFILE" fi From a11b46058e245b3b6aec447153ec823eb53457a0 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 25 Oct 2015 20:09:25 -0400 Subject: [PATCH 10/15] Add ruby1.9.1 as a dependency Debian systems do not have the proper ruby installed, so installing fpm fails. --- deb.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deb.mk b/deb.mk index cc4432d6a..d62e87a63 100644 --- a/deb.mk +++ b/deb.mk @@ -49,7 +49,7 @@ deb-all: deb-herokuish deb-dokku deb-gems deb-plugn deb-sshcommand deb-setup: echo "-> Updating deb repository and installing build requirements" sudo apt-get update -qq > /dev/null - sudo apt-get install -qq -y gcc git ruby-dev > /dev/null 2>&1 + sudo apt-get install -qq -y gcc git ruby-dev ruby1.9.1 > /dev/null 2>&1 command -v fpm > /dev/null || sudo gem install fpm --no-ri --no-rdoc ssh -o StrictHostKeyChecking=no git@github.com || true From b23e5d1cbb824014997e9f3526bb02e0bb37ff32 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 25 Oct 2015 20:09:37 -0400 Subject: [PATCH 11/15] Add support for vmware_fusion --- Vagrantfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Vagrantfile b/Vagrantfile index 13f8c0aa3..d88fbd0aa 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -27,6 +27,10 @@ Vagrant::configure("2") do |config| vb.customize ["modifyvm", :id, "--memory", BOX_MEMORY] end + config.vm.provider :vmware_fusion do |v, override| + v.vmx["memsize"] = BOX_MEMORY + end + config.vm.define "empty", autostart: false config.vm.define "dokku", primary: true do |vm| From 5a35c9a76c3afec3f652cecd871336fa47141ed5 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 25 Oct 2015 20:13:10 -0400 Subject: [PATCH 12/15] Run apt-get clean before calling apt-get update This ensures that we can call apt-get update after adding a new apt source. Debian needs a bit more time to refresh it's own caches, so we just force it's cache to be clean before calling apt-get update again. --- deb.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/deb.mk b/deb.mk index d62e87a63..cbda67226 100644 --- a/deb.mk +++ b/deb.mk @@ -126,6 +126,7 @@ deb-plugn: deb-setup echo "-> Copying files into place" mkdir -p /tmp/build/usr/local/bin $(GOPATH) + sudo apt-get clean sudo apt-get update -qq > /dev/null sudo apt-get install -qq -y git golang mercurial > /dev/null 2>&1 export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH) && cd /tmp/tmp/plugn && make deps From dcf34eb4d43ccc49f885ef2c5cd110c601cb3968 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 25 Oct 2015 20:19:35 -0400 Subject: [PATCH 13/15] Create a systemd service for dokku-installer --- contrib/dokku-installer.rb | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/contrib/dokku-installer.rb b/contrib/dokku-installer.rb index 906c6994c..638814c11 100755 --- a/contrib/dokku-installer.rb +++ b/contrib/dokku-installer.rb @@ -6,7 +6,18 @@ if ARGV[0] == "onboot" File.open("/etc/init/dokku-installer.conf", "w") do |f| f.puts "start on runlevel [2345]" f.puts "exec #{File.absolute_path(__FILE__)} selfdestruct" - end + end if File.directory?("/etc/init") + File.open("/etc/systemd/system/dokku-installer.service", "w") do |f| + f.puts "[Unit]" + f.puts "Description=Dokku web-installer" + f.puts "" + f.puts "[Service]" + f.puts "ExecStart=#{File.absolute_path(__FILE__)} selfdestruct" + f.puts "" + f.puts "[Install]" + f.puts "WantedBy=multi-user.target" + f.puts "WantedBy=graphical.target" + end if File.directory?("/etc/systemd/system") File.open("/etc/nginx/conf.d/dokku-installer.conf", "w") do |f| f.puts "upstream dokku-installer { server 127.0.0.1:2000; }" f.puts "server {" @@ -48,7 +59,7 @@ post "/setup" do end Thread.new { `rm /etc/nginx/conf.d/dokku-installer.conf && /etc/init.d/nginx stop && /etc/init.d/nginx start` - `rm /etc/init/dokku-installer.conf && stop dokku-installer` + `rm -f /etc/init/dokku-installer.conf /etc/systemd/system/dokku-installer.service && stop dokku-installer` }.run if ARGV[0] == "selfdestruct" end From c8bcd67498b27e5d224086239e3176d83f0e744d Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 25 Oct 2015 22:41:10 -0400 Subject: [PATCH 14/15] Fix warnings in building plugn binary --- deb.mk | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/deb.mk b/deb.mk index cbda67226..2842fea47 100644 --- a/deb.mk +++ b/deb.mk @@ -129,9 +129,10 @@ deb-plugn: deb-setup sudo apt-get clean sudo apt-get update -qq > /dev/null sudo apt-get install -qq -y git golang mercurial > /dev/null 2>&1 - export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH) && cd /tmp/tmp/plugn && make deps - export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH) && cd /tmp/tmp/plugn && go build -o plugn - mv /tmp/tmp/plugn/plugn /tmp/build/usr/local/bin/plugn + export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH):/tmp/tmp/plugn && go get github.com/progrium/plugn + export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH):/tmp/tmp/plugn && cd /home/vagrant/gocode/src/github.com/progrium/plugn && make deps + export PATH=$(PATH):$(GOROOT)/bin:$(GOPATH)/bin && export GOROOT=$(GOROOT) && export GOPATH=$(GOPATH):/tmp/tmp/plugn && cd /home/vagrant/gocode/src/github.com/progrium/plugn && go build -o plugn + mv /home/vagrant/gocode/src/github.com/progrium/plugn/plugn /tmp/build/usr/local/bin/plugn echo "-> Creating $(PLUGN_PACKAGE_NAME)" sudo fpm -t deb -s dir -C /tmp/build -n plugn -v $(PLUGN_VERSION) -a $(PLUGN_ARCHITECTURE) -p $(PLUGN_PACKAGE_NAME) --url "https://github.com/$(PLUGN_REPO_NAME)" --description $(PLUGN_DESCRIPTION) --license 'MIT License' . From d17cb43bd35196e114b52a627f01db8d28484f70 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Sun, 25 Oct 2015 22:56:48 -0400 Subject: [PATCH 15/15] Add missing sudo call to nginx reload --- plugins/nginx-vhosts/functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/nginx-vhosts/functions b/plugins/nginx-vhosts/functions index c8f1c1d40..49270ae9e 100755 --- a/plugins/nginx-vhosts/functions +++ b/plugins/nginx-vhosts/functions @@ -115,7 +115,7 @@ validate_nginx() { restart_nginx() { case "$DOKKU_DISTRO" in debian) - /usr/sbin/invoke-rc.d nginx reload > /dev/null + sudo /usr/sbin/invoke-rc.d nginx reload > /dev/null ;; ubuntu)