# DigitalOcean Virtual Machine Configuration
This DigitalOcean configuration documentation is related to the DigitalOcean One-click installation guide. It should guide you through the handling of the DigitalOcean virtual machine running the Strapi application.
You can click below for more information about the installed software and the Nginx server configuration.
Installed software
The Strapi application running on the droplet has the following softwares installed and configured:
Software | Version | Comments |
---|---|---|
Node.js | 12 | Installed via the offical apt repository (opens new window)) |
Yarn | latest stable version | Installed via the official apt repository (opens new window)) |
Nginx | latest version | Installed via Ubuntu default repository |
UFW (Uncomplicated Firewall) | latest stable version | Configured to only allow incoming ports 80 (HTTP), 443 (HTTPS), and 22 (SSH) |
PostgreSQL | latest version | Installed via Ubuntu default repository |
PM2 | latest version | Installed globally using Yarn |
Nginx default configuration
The DigitalOcean one-click application uses Nginx to proxy http on port 80 to Strapi. This is to ensure the system is secure as running any application on ports below 1024 require root permissions.
Here are the config files included by default:
💡 TIP
To learn more about the Nginx proxy options you can view the Nginx proxy documentation (opens new window).
# Strapi service account
For security purposes, the DigitalOcean virtual machine hosting the Strapi application uses a service user. This user is extremely limited into what it can do and access.
The service user home directory is located at /srv/strapi
. The actual Strapi application is located within this home directory at /srv/strapi/strapi-development
.
The Strapi application runs in the development
environment to allow for creating content-types. It is not recommended to use it directly in production. For staging and production environments, it's recommended to configure a private git repository to commit changes into, and create a new application directory within the service user's home (e.g. /srv/strapi/strapi-production
).
To run the new production
or staging
environments you can refer to the PM2 Documentation (opens new window)
# Accessing the service account
To access your service account:
- SSH into the
root
user. Depending on your Operating System or your SSH client, there may be multiple ways to do this. You should refer to your SSH client documentation for clarification on using SSH keys. - Run the
sudo su strapi
command. This will take you to thestrapi
user's shell.
To go back to the root
user, run exit
.
️❗️ WARNING
Please note that by default the strapi user cannot run sudo
commands. This is intended.
# Controlling the Strapi service and viewing logs
While identified as the service user on the DigitalOcean virtual machine, PM2 (opens new window) can be used to control the Strapi process and view logs with the following commands:
pm2 list
: Show a list of all running processes. The default service is called "strapi-development" and should be running with an ID of 0.pm2 restart strapi-development
: Restart the Strapi process manually.pm2 stop strapi-development
: Stop the Strapi process.pm2 start strapi-development
: Start the Strapi process. Strapi will automatically start if the virtual machine is rebooted.pm2 logs strapi-development
: Show the logs in real time; to exit, use Ctrl+C.
💡 TIP
You can also manually view the log files under /srv/strapi/.pm2/logs
if you encounter any errors during the bootup.
# Strapi application access with ssh
To ssh into your Strapi application, run the following command:
ssh root@<public-ipv4-address>
where <public-ipv4-address>
should be replaced with the address found by clicking on the droplet name in the droplets list on DigitalOcean (opens new window).
There is no password for SSH as DigitalOcean uses SSH keys by default with password authentication disabled.
# PostgreSQL Password
To change the PostgreSQL password and update Strapi's config:
- Log into the
strapi
service user. - Run the
pm2 stop strapi-development
command to stop the current strapi process. - Run this command to change the password for the
strapi
database user:
psql -c "ALTER USER strapi with password '<your-new-password>';"
where <your-new-password>
should be replaced by the password you want to use.
- Update the
/srv/strapi/strapi-development/.env
file with the new password:
DATABASE_PASSWORD=<your-new-password>
- Restart Strapi and confirm the password change was successful by running these commands:
pm2 start strapi-development
pm2 logs strapi-development