Managing Disk Space With "ncdu"

Managing Disk Space With "ncdu"

Linux ships with a useful command named du (Disk Usage), which is used to determine the size of files and directories. When provisioning your server, Forge installs ncdu which is an advanced version of du that allows you to easily navigate your directories via an ncurses interface. This makes it much quicker to identify large files and directories.

Sometimes, you may find that Forge was unable to perform an operation on your server because there is no free disk spaces available. This is often caused by one or two large files that can be removed; however, locating these files is sometimes tricky.

To find large files on your server, you may use ncdu to navigate around common directories on our server. As the root user, you should cd / and run ncdu. The command will scan the directory and its children. Once it's done scanning you will see a list of directories and their sizes.

The ncdu interface

Notice at the bottom of the terminal window we’re also shown total disk usage, apparent size, and the number of items.

To navigate the interface we can use the up and down arrows to select a directory, then right (or return) to enter the directory, and left to move back up.

In the screenshot above we can see that the server’s /var directory is the largest directory at 2.0 GiB. Let’s move into that directory by hitting return.

Switching directory

We’re now shown all of the files and directories within /var ordered by size. Next, we’ll move into the log directory as it’s looking bigger than the rest.

The /var/log directory

The /var/log/journal directory is the biggest. It’s safe to delete files within this directory but do not delete the directory itself.

To delete a file, first select it using the arrow keys and then press d. You’ll be asked to confirm that you want to delete the file.

Deleting a file

If your log directory is small in size and you’re still seeing errors related to disk usage, you may also want to navigate to the /home/forge directory.

When Forge executes an action on your server it first uploads a script to your server. You can find these script files in directories such as /root/.forge and /home/forge/.forge. When the script is executed, Forge will pipe and store the output to a .output file.

Forge configures your server to periodically remove these files to save disk space automatically.

Sometimes it may be necessary to remove these .output files earlier than the scheduled clean up. Thankfully, ncdu makes this really easy to do.

Keep reading

General April 4, 2024

Encryption and the In-between

Last year, we introduced a simple but surprisingly useful feature to Laravel Forge: the ability to add notes to servers. While checking the uptake of this feature, we noticed that customers were often storing sensitive data in the field. We hadn’t designed notes to store sensitive information, so we found ourselves in a situation where we now needed to encrypt existing unencrypted data, while also allowing for new data to be inserted as encrypted data - at the same time, the dashboard needed to be able to show the notes correctly whether they had been encrypted or not. Our migration process looked like this: 1. Run a command that encrypts all existing unencrypted server notes. 2. Update our model to cast the `notes` field, encrypting or decrypting as required. To do this, we leaned on [Laravel’s custom casts](https://laravel.com/docs/11.x/eloquent-mutators#custom-casts) feature to handle this “sometimes encrypted” data. We created a new cast `SometimesEncrypted` that allowed us to gracefully decrypt the encrypted notes, or simply return the plaintext version which may have been available during the migration: ```php

James Brooks

General December 19, 2022

Laravel Loves PHP 8.2

Last week saw the official release of PHP 8.2, bringing with it features such as read-only classes, DNF types, and much more. As you may have noticed, we've been busy preparing the Laravel framework, first-party packages, and the surrounding ecosystem to provide support for this exciting new release of PHP. ## Laravel If you want to use PHP 8.2 with your Laravel project, you should update your dependencies to use the latest versions of the framework as well as the latest versions of all first-party packages such as Cashier, Passport, Scout, etc. ![image](https://laravel-blog-assets.s3.amazonaws.com/cuNz2q7vmF8us0h934JhSY5hprK8lAAZPXw0siF4.png "image") Of course, you should also ensure you update any third-party packages accordingly. ## Forge If you use Forge to provision servers and deploy your applications, you may now select PHP 8.2 when creating a server. ![image](https://laravel-blog-assets.s3.amazonaws.com/yB1Yo6zGuJFpwyQIJeOW1SoD5ZWwiU7Tdh23c1cC.png "image") You may also install PHP 8.2 on existing servers from the "PHP" tab of your server's management dashboard. ![image](https://laravel-blog-assets.s3.amazonaws.com/PeQjgVeQlbYkqJGMyEw4N6eZVb8Q8nfVL7wAdzlR.png "image") ## Vapor We have also updated Vapor to provide PHP 8.2 support for our native and Docker runtimes. To update your native runtime to PHP 8.2, set the `runtime` option of your application's `vapor.yml` file to `php-8.2:al2` and redeploy your application. ![image](https://laravel-blog-assets.s3.amazonaws.com/O3QpHQ2GEvCxUCvkw59b8xiDvInhFqsOwIHd5PfV.png "image") If you are using the Docker runtime, you may update the base image in your Dockerfile to `laravelphp/vapor:php82` and redeploy your application. ![image](https://laravel-blog-assets.s3.amazonaws.com/6Lfm3nfio9eUHv9z0oNdEzfdrZH5NOyuOHxbps9I.png "image") ## Envoyer If you use Envoyer to manage your application's deployments, you may now select PHP 8.2 from your server's settings. ![image](https://laravel-blog-assets.s3.amazonaws.com/FswmEfdErIUr7iFQKQZkKM5TyEWEs3jbNawQOQfI.png "image") At Laravel, we're committed to providing you with the most robust, modern, and developer-friendly PHP experience. We hope you're as eager as we are to get started with PHP 8.2. With these updates to the ecosystem, it really couldn't be simpler!

Joe Dixon

General August 9, 2022

Laravel: New DB Commands

Following last week's release, which again focused on Artisan, this week Laravel v9.24 introduces three new DB commands and more.

Taylor Otwell

Stay connected with the latest Laravel news