What's New?

We're always adding new features and improvements to SpinupWP. See below for the latest enhancements and email us if there’s a feature you'd like to see next.

External databases

SpinupWP has always installed and configured MySQL or MariaDB when spinning up a new server. Starting today, you have the option to provide connection information for an external database server instead.

Choose external database.

Add external database.

Choosing this option will skip the installation of MySQL or MariaDB and use that external database server for all your sites on the web server.

When a web server is struggling to handle traffic to a site, most folks reach for the “upgrade server” lever first. Increasing CPU and memory (scaling vertically) is the quickest and easiest thing to do. However, at some point you’ll max out the CPU and memory limits. Then what?

Load balancing is often the next lever folks reach for, but the first step in scaling horizontally is to move MySQL/MariaDB onto a separate database server. Having a separate database server also makes moving sites between servers a lot easier because you don’t have to move the database. This benefit is a good reason to move MySQL/MariaDB to a separate database server well before maxing out CPU and memory limits on a single server.

In fact, we’ve been running deliciousbrains.com (WordPress + WooCommerce) with an external database (DigitalOcean Managed Database – MySQL 8) since August 2020 and it’s been working great.

For more details and our recommendations, see the External Databases doc.

We’re also working on two more docs with step-by-step instructions for creating a managed database on DigitalOcean and Amazon Lightsail, and then adding it to SpinupWP as an external database. Stay tuned for those.

Manage servers and sites from the command line

A command line interface is one of SpinupWP’s most frequently requested features. The wait is finally over!

Visit the SpinupWP CLI project on GitHub for complete installation and usage instructions. The first step is to require the package globally via Composer:

composer global require deliciousbrains/spinupwp-cli

Make sure the /vendor/bin directory in your global Composer home directory is in your system’s PATH. This could be ~/.composer/ or ~/.config/composer/, depending on your operating system. You can use the composer config --global home command to check this location.

Once you’ve finished installation, you’ll have access to the spinupwp command:

spinupwp <subcommand>

You will need to generate an API token to interact with the SpinupWP CLI. You can create a personal API access token in the “API” tab under “Account Settings” in SpinupWP. Team admins can also generate access tokens from the “API” tab on the “Team Settings” page of any team they manage. API tokens can only be used on resources associated with the team or personal account used to generate them.
Generating an API token for team use on SpinupWP.
After generating an API token, use the command below to configure your default profile. We strongly recommend configuring a default profile. Otherwise, you’ll need to specify a profile with every command, adding more keystrokes and slowing you down.

spinupwp configure

The same command can be used to configure multiple profiles by adding the --profile switch. This can be very useful if you’re a member of multiple teams.

abraham@macbookpro:~$ spinupwp configure --profile=hellfishmedia

SpinupWP API token:
>eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIxIiwianRpIjoiMjk4YjU2MTIzNzJlNGQyYWY4NzgwZjFiMTk3OWM3ZnE4YWIzZDg2YmEzMDkxYTEwMTZkOTYwYTI0O2UyZjBjMTdkMTEwYmZkYmRkMWMzMGEiLCJpYXQiOjE2NDk3NjQ4OTAsIm5iZiI6MTY0OTc2NDg5MCwiZXhwIjo0ODA1NDM4NDkwLCJzdWIiOiIxIiwic2NvcGVzIjpbInJlYWQtd3JpdGUiXX0.fmKjZ8p98JTnKfBPLT3SKo2rAXX-2cRb1M3iIR-Eafv4O8b3QNpDrWS6FrBoFI12B61vRl1iWb57x2Gx6dg2oalMqVgiNlsUz45HseUfX1aygOKmW_Jou0roWp50V-VRgIevevDWeCgXFVgoEksBIy-G4E8ECDV0uDW3P3mQxsMRhnFgaFAnEKz-7C6733e_sr7icMVYlnDjzzjTCDk2wzj2ZnB_pCvqhxvUeWPotTRy6aX1tGudSBYL1av25hbwQ91nZSCpMOI1-4WIOyShsCOiyCaA-Jz-7m7DJ3dACahwP224ihccwnj84-lbXOwsTyAbLnn8_cJ3SxYuQb-PQIiGBDy_AHLC_hbOjGw1vyj_MH3qnsnlBHNX4wHa4KcWQz_zsPlnIlu7MNJ0nP5ZgPv_SV_zQDiXVXzLe3aXFZyuZPVXm5E41jgRSe8o_fammnGeEfAO0ydn46umJbcSsqdjtgkaFVh4V8HmdF7E_SocGYu3p4eVtkRHg1T0H0Atckpw55-JXXtn-dhYInt39-zV6_9-W0SDvhNL577TWw512qG7MZrES_SqJQwgbcDKsPqqU--3-GfBMXjOMf8VDe-ATse01Es_hO8V4BRQOJ6OrSBFhTKkz9gKZuNLymHp7nVSk51iiJd4ql-XAjCmYczBJoAjgXv62kuiY89rCjM

Default output format (json/table) [table]:
> table

Profile configured successfully.
To use this profile, add the --profile option to your command:
`spinupwp servers:list --profile=hellfishmedia`

To run a command using a specific profile, pass the profile option:

$ spinupwp servers:list --profile=hellfishmedia

+-----+-----------------------------+---------------------+--------+-----------------+
| ID  | Name                        | IP Address          | Ubuntu | Database Server |
+-----+-----------------------------+---------------------+--------+-----------------+
| 246 | staging.hellfish.media      | 167.99.208.124      | 20.04  | mysql-8.0       |
| 245 | hellfish.media              | 68.183.3.238        | 20.04  | mysql-8.0       |
+-----+-----------------------------+---------------------+--------+-----------------+

The CLI tool is great for viewing details about your server and site resources. It also puts some powerful tools to your fingertips. With it, you can easily perform many common tasks, such as rebooting MySQL on any server with a single command:

abraham@macbookpro:~$ spinupwp services:mysql 245

Are you sure you want to restart MySQL on "hellfish.media"? (yes/no) [yes]:
> yes

==> Server queued for MySQL restart.
Event ID    Server
3184        hellfish.media

The same command allows you to reboot Nginx or PHP by replacing mysql with nginx or php. You can even apply the reboot to all of your servers at the same time by replacing the <server_id> with --all.

abraham@macbookpro:~$ spinupwp services:mysql --all

Are you sure you want to restart MySQL on all servers? (yes/no) [yes]:

> yes

==> Servers queued for MySQL restart.
Event ID    Server
3185        staging.hellfish.media 
3186        hellfish.media

You can also use the CLI to SSH into any of your servers:

abraham@macbookpro:~$ spinupwp servers:ssh

Which server would you like to start an SSH session for:
[246] staging.hellfish.media 
[245] hellfish.media

> 246

Which user would you like to connect as:

> abraham

Establishing a secure connection to [staging.hellfish.media] as [abraham]...
Last login: Thu Mar 31 14:31:46 2022 from 108.160.234.169
To run a command as administrator (user "root"), use "sudo ".
See "man sudo_root" for details.

The SpinupWP CLI also simplifies the process of adding sites to an existing server with interactive prompts to gather all the same details you’d normally provide:

abraham@macbookpro:~$ spinupwp sites:create 246

 Are you sure you want to deploy to "staging.hellfish.media "? (yes/no) [yes]:
 > yes

 What files would you like SpinupWP to install? [WordPress]:
  [wp   ] WordPress
  [blank] Don't Install Any Files
 > wp

 Primary Domain:
 > staging.hellfish.media

 Enable HTTPS (yes/no) [yes]:
 > no

 Site User [staginghellfishmedia]:
 > staging

 Database Name [staginghellfishmedia]:
 > staging

 Database Username [staginghellfishmedia]:
 > staging

 Database Password [XXXXXXXXXXXX]:
 >

 WordPress Title:
 > Hellfish Media

 WordPress Admin Email:
 > abraham@hellfish.media

 WordPress Admin Username:
 > abraham

 WordPress Admin Password [XXXXXXXXXXXX]:
 >

 PHP Version [8.0]:
  [0] 8.0
  [1] 7.4
 > 0

 Enable Page Cache (yes/no) [yes]:
 > yes

==> Site queued for creation.
    Event ID    Site                      Database Password    WordPress Admin Password
    3190        staging.hellfish.media    XXXXXXXXXXXX         XXXXXXXXXXXX
spinupwp sites:create 

The same site creation can be achieved using arguments instead of interactive prompts:

abraham@macbookpro:~$ spinupwp sites:create 246  --installation-method=”wp” --domain="staging.hellfish.media" --https-enabled --site-user="staging" --db-name="staging" --db-user="staging" --db-pass="XXXXXXXXXXXX" --wp-title="Hellfish Media" --wp-admin-email="abraham@hellfish.media" --wp-admin-user="abraham" --wp-admin-pass="XXXXXXXXXXXX" --php-version="8.0" --page-cache-enabled –force

Deleting sites is just as easy:

abraham@macbookpro:~$ spinupwp sites:delete 1204
***********************************************************
*     You're about to delete "staging.hellfish.media"     *
***********************************************************

 Do you wish to continue? (yes/no) [no]:
 > yes

==> Site queued for deletion.
    Event ID    Domain
    3191        staging.hellfish.media

Currently, the SpinupWP CLI also has commands for purging page and object caches, running Git deployments, and more. For a full list of commands, please visit the documentation on GitHub.

We’ll continue to build on the SpinupWP CLI and add functionality. Let us know about features you’d like to see!

PHP 8.1

WARNING: WordPress core is not yet compatible with PHP 8.1. Many themes and plugins are currently incompatible as well. We strongly recommend testing thoroughly on staging before switching any of your production sites to PHP 8.1.

SpinupWP now supports PHP 8.1. WP-CLI has been updated on all customer servers to version 2.6.0, which introduces PHP 8.1 compatibility.

You can now select PHP 8.1 when creating a new site and update existing sites to use PHP 8.1 via the SpinupWP dashboard. From a site’s dashboard, select “Settings” on the left menu, then select the version you want from the PHP dropdown menu.

The settings page in SpinupWP allows you to select the version of PHP you wish to use.

Post-provision script

We’ve added the ability to run a post-provision script every time you set up a new server. All post-provision scripts run as the root user once your server has been successfully provisioned.

Post-provision scripts can be added when spinning up a new server. Clicking in the text box provided will allow you to enter the desired scripts.

Post-provision scripts can be added when spinning up a new server in SpinupWP.

Installing custom software on your server is the most typical use-case for post-provision scripts, such as installing Node.js and npm so you can compile frontend assets on the server. To do that, you would run these scripts:

apt-get install -q -y nodejs;
apt-get install -q -y npm;

Account switching

We’ve implemented a new design for the desktop navigation dropdown menu, simplifying the view for most users. You’ll now only see teams displayed if you already have a team set up. Having teams visible by default led to some confusion among the users who only had personal accounts.

The old “Teams” dropdown menu has been removed, with those links and functionality now in the main navigation. Your avatar at the top right of the screen indicates the team you’re currently using. Clicking on your avatar opens a dropdown menu from which you can select another team.

Account switching has been moved to the main SpinupWP navigation.

We’ve also added an account switcher function to the Settings, Team Settings, and Billing pages. This new dropdown menu clearly shows the account you’re viewing, whether that’s your personal account or the account of one of the teams you’re managing. This makes it easier to manage team settings, and ensures you can always tell which is which.

Account switching is also available on Subscription and other pages.

Dark mode

Dark mode has arrived in SpinupWP! This has been one of our most requested features to date.

SpinupWP will automatically detect if your browser is running dark mode, and switch accordingly. You can also change this manually in your account settings.

The first step is to log into your SpinupWP dashboard. Next, click your avatar in the top-right corner and click “Account Settings” from the drop-down menu to access your account settings.

The setting defaults to “Auto,” where SpinupWP matches the light/dark mode of your browser. You can force SpinupWP to use a different mode by clicking on Light or Dark and then clicking Save.

Activating Dark Mode in SpinupWP.

Redis 6.2 for new servers

Newly provisioned servers will now use Redis 6.2. Existing servers will not be updated to Redis 6.2 by SpinupWP.

Responsive UI improvements

We’ve rolled out new, responsive improvements to SpinupWP’s user interface. This update gives SpinupWP users an improved user experience on mobile devices, making it easier to manage your servers and sites on the go.

While the majority of SpinupWP users continue to access the app from a desktop or laptop, a small but growing contingent has been asking for these improvements to smaller screens. The improvements allow you to access your SpinupWP dashboard from a phone or tablet, with all the same functionality found in the desktop version. You can spin up new servers and reboot existing ones, create new sites, make changes to your account, and contact support when needed.

SpinupWP in responsive UI mode.

MariaDB 10.6 for new servers

You can now select MariaDB 10.6 when provisioning a new server. SpinupWP will not update MariaDB to 10.6 on existing servers.

Screenshot of selecting MariaDB 10.6 when provisioning a server in SpinupWP.

Path redirects

The ability to create path redirects is the latest improvement to SpinupWP. Path redirects let you redirect from a specific URL path to a different path. This is typically a path on the same domain, but it’s easily possible to redirect the user to a URL on a different domain.

This new functionality means it’s now ludicrously simple to create redirects and link old pages to updated versions.

Screenshot of the Path Redirects functionality in SpinupWP.

DigitalOcean OAuth

We’ve added support for DigitalOcean OAuth, making it easier than ever to connect SpinupWP to your DigitalOcean account. It also makes the connection process more secure.

You no longer need to visit the DigitalOcean dashboard, generate a personal access token, copy it, and paste it in SpinupWP. The OAuth flow takes you from SpinupWP to DigitalOcean, asks you to authorize SpinupWP to use your DigitalOcean account, and then takes you back to SpinupWP. Much smoother and no messing with tokens.

To authorize SpinupWP with your DigitalOcean account, you only need to provision a new DigitalOcean server, and SpinupWP will handle the rest. Click Authorize on DigitalOcean during the server provisioning process, and you’ll be redirected to DigitalOcean, to authorize your account. It’s that easy!

Authorizing your DigitalOcean account in SpinupWP.

If you’ve previously set up DigitalOcean as a server provider using the API Token method, you can visit the “Server Providers” screen in SpinupWP, and upgrade the existing token to use OAuth.

Upgrading an existing token to use OAuth in SpinupWP.

Quicker backups on multi-core servers

We’ve decreased the amount of time it takes to back up sites on multi-core servers. Backups are compressed using gzip to decrease the time it takes to transfer a backup to the backup storage location and reduce required storage space.

Running gzip in parallel leverages the capabilities of multi-core servers by distributing the compression tasks across multiple processors, utilizing all available CPU cores. This considerably shortens the time needed to create backups. Between this and other backup improvements, we’ve reduced the total queue time per day from around 500 hours to under 200 hours!

Subscribe to get the latest news, updates and optimizations in performance and security.

Thanks for subscribing 👍

To receive awesome stuff, you'll need to head to your inbox and click on the verification link we sent you.
Make sure to check your "spam" folder or your "promotions" tab (if you have Gmail).
If you're still having trouble, then message us at sudo@spinupwp.com.

You are already logged in

It looks like you are already logged in to SpinupWP.

Please log out of this account to continue.

Registration Successful

Thanks for registering for a new
SpinupWP account.

Before getting started, could you verify your email address by clicking on the link we just emailed to you?

SpinupWP

Free Trial

Start Your 7-Day Free Trial

No credit card required. All features included.

By signing up to SpinupWP, you agree to our Terms and Conditions.
For privacy related information, view our Privacy Policy.