Skip to content

Instantly share code, notes, and snippets.

@USMortality
Created June 6, 2024 12:50
Show Gist options
  • Save USMortality/e7dfb39d1684d778f6e1bd5978ffc4c4 to your computer and use it in GitHub Desktop.
Save USMortality/e7dfb39d1684d778f6e1bd5978ffc4c4 to your computer and use it in GitHub Desktop.
Deploy latest SFTPGo on Dokku Server
# Variables
APP_NAME="sftpgo"
DOMAIN="ftp.example.com"
EMAIL="your-email@example.com"
ENABLE_LETS_ENCRYPT=true # Set to false to disable Let's Encrypt setup
# Create Dokku app
dokku apps:create $APP_NAME
# Set up domain
dokku domains:add $APP_NAME $DOMAIN
# Adjust ownership and permissions for storage
sudo chown -R dokku:dokku /var/lib/dokku/data/storage/$APP_NAME/srv/sftpgo
sudo chown -R dokku:dokku /var/lib/dokku/data/storage/$APP_NAME/var/lib/sftpgo
sudo chmod -R 755 /var/lib/dokku/data/storage/$APP_NAME/srv/sftpgo
sudo chmod -R 755 /var/lib/dokku/data/storage/$APP_NAME/var/lib/sftpgo
# Clean and recreate storage directories
rm -rf /var/lib/dokku/data/storage/$APP_NAME
sudo mkdir -p /var/lib/dokku/data/storage/$APP_NAME/srv/sftpgo
sudo mkdir -p /var/lib/dokku/data/storage/$APP_NAME/var/lib/sftpgo
sudo chown -R dokku:dokku /var/lib/dokku/data/storage/$APP_NAME/srv/sftpgo
sudo chown -R dokku:dokku /var/lib/dokku/data/storage/$APP_NAME/var/lib/sftpgo
sudo chmod -R 755 /var/lib/dokku/data/storage/$APP_NAME/srv/sftpgo
sudo chmod -R 755 /var/lib/dokku/data/storage/$APP_NAME/var/lib/sftpgo
# Mount storage directories
dokku storage:mount $APP_NAME /var/lib/dokku/data/storage/$APP_NAME/srv/sftpgo:/srv/sftpgo
dokku storage:mount $APP_NAME /var/lib/dokku/data/storage/$APP_NAME/var/lib/sftpgo:/var/lib/sftpgo
# Add docker options for ports
dokku docker-options:add $APP_NAME deploy "-p 8080:8080"
dokku docker-options:add $APP_NAME deploy "-p 2022:2022"
# Deploy from Docker image
dokku git:from-image $APP_NAME drakkan/sftpgo:latest
# Optional: Set up Let's Encrypt
if [ "$ENABLE_LETS_ENCRYPT" = true ]; then
dokku letsencrypt:set $APP_NAME email $EMAIL
dokku letsencrypt:enable $APP_NAME
dokku letsencrypt:cron-job --add
fi
# Add port mappings
dokku ports:add $APP_NAME http:80:8080 https:443:8080
dokku ports:add $APP_NAME tcp:2022:2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment