Skip to main content

Server

Overview

The System view gives an overview of the Server:

Info

Realtime and historical graphs:

Cpu

Memory

Diskio

Networkio

Logs

The raw logs are located at /home/yellowtent/platformdata/logs/box.log. Up to 10MB of active logs is kept alongside 5 rotated logs. Logs older than 14 days are removed.

Disk usage

Disk usage is computed on demand.

Disk Usage

DirectoryNotes
dockerSize of docker images. Docker images take around 10GB. In addition, app images vary greatly in size and each app is typically around 2GB.
docker-volumesTemporary data of apps. If this is large, find the offending app with `docker ps -q
/apps.swapSystem swap. Usually same amount as system RAM, but limited to 4GB max.
boxdataPlatform code data.
maildataEmail data.
Everything else (Ubuntu, etc)System packages. Use system tools like du to investigate if this is more than say 20GB
platformdataThis contains logs, database directories (mysql, postgres, mongo, redis), and performance metrics.
AppPersistent data of app excluding database size
Excluding disks

If your disk is too slow, it can be excluded from periodic disk usage collection. Add the filesystem path (must match df output) per line to /home/yellowtent/platformdata/diskusage/exclude.

Server disk layout

Data and temporary/runtime data is sandboxed in /home/yellowtent (yellowtent was the code name). The subdirectories are:

  • box - Contains the platform code. The platform code does not run as root.
  • boxdata - Contains data generated by the platform, including certificates. Also stores all user emails in the mail/vmail directory (maildir format).
  • appsdata - Contains data generated by each app. Each subdirectory corresponds to an application ID.
  • platformdata - Contains runtime data for MySQL, PostgreSQL, MongoDB, and nginx.

boxdata, appsdata and platformdata are relocatable.

The other important locations on the server are:

  • /var/lib/docker - Contains Docker images. This is relocatable.
  • /etc/nginx - Contains the reverse proxy configuration. Do not edit manually.
  • /apps.swap - A swap file dynamically resized by the platform (max 4GB). Resize after initial setup or truncate to 0 to disable swap.

Docker images

Do not use a Volume

Do not use a Volume as storage location for Docker images. Set up fstab or systemd mount manually.

Docker images consume significant space and are stored at /var/lib/docker by default. To move them to external storage:

  • Stop docker and the box code:
systemctl stop docker box
systemctl mask docker
  • Create a systemd drop-in at /etc/systemd/system/docker.service.d/custom.conf to change the docker image location (e.g., to /mnt/docker):
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --log-driver=journald --exec-opt native.cgroupdriver=cgroupfs --storage-driver=overlay2 --data-root=/mnt/docker --experimental --ip6tables
  • Start docker
systemctl daemon-reload
systemctl unmask docker
systemctl start docker
systemctl status docker
docker network create --subnet=172.18.0.0/16 --ip-range=172.18.0.0/20 --gateway 172.18.0.1 cloudron --ipv6 --subnet=fd00:c107:d509::/64
  • Edit /home/yellowtent/platformdata/INFRA_VERSION and bump only the last digit of the version field (e.g., 48.18.0 to 48.18.1). This signals the platform to re-create containers.

  • Reboot the server. This is required for the docker network to work on many VPSes.

  • On reboot, addons and app images are recreated while preserving existing data. This can take a while. Monitor progress with tail -f /home/yellowtent/platformdata/logs/box.log.

  • After everything is running, remove the old Docker images:

rm -rf /var/lib/docker
Docker image size

The du -hcs /var/lib/docker command often returns incorrect output with the overlay2 driver due to how du works. Use docker system df instead.

Docker storage driver

Apps are tested only with the overlay2 graph driver. Other storage drivers like devicemapper may cause issues.

Default data directory

Do not use a Volume

Do not use a Volume as storage for the directories below. Set up fstab or systemd mount manually.

Unsupported

While symlinking directories works, it is not supported. Instead, move the Data Directory of high-storage apps to an external volume.

Create a complete backup before following this procedure.

Apps store data under /home/yellowtent/appsdata. Platform data (users, groups, certificates, emails) is stored under /home/yellowtent/boxdata.

To move these directories to another EXT4 disk:

    systemctl stop box
systemctl stop cloudron-syslog
systemctl stop docker
systemctl mask docker
DATA_DIR="/var/data" # this is the external disk location
mkdir -p "${DATA_DIR}"

# (optional) move out apps data to the external disk
mv /home/yellowtent/appsdata "${DATA_DIR}"
ln -s "${DATA_DIR}/appsdata" /home/yellowtent/appsdata

# (optional) move out box data to the external disk
mv /home/yellowtent/boxdata "${DATA_DIR}"
ln -s "${DATA_DIR}/boxdata" /home/yellowtent/boxdata

# (optional) move out app database storage to the external disk
mv /home/yellowtent/platformdata "${DATA_DIR}"
ln -s "${DATA_DIR}/platformdata" /home/yellowtent/platformdata

systemctl unmask docker
systemctl start docker
systemctl start cloudron-syslog
systemctl start box

If the disk graph does not display properly, do a systemctl restart collectd.

note

The data directory must use an EXT4 filesystem.

Server resize

For VPS providers that support it, resize the server (CPU/disk/memory) and the system automatically adapts after a restart.

Some providers do not automatically resize the disk after enlargement. Check the disk size with:

df -h

For example, if disk /dev/sda was enlarged and /dev/sda1 is the data partition:

resize2fs /dev/sda1

Check your provider's documentation for detailed steps.

IP changes

Some VPS providers change the IP address after a resize. Update DNS if this occurs.

AWS EBS

On AWS, resize the partition and filesystem after resizing the EBS volume. See the AWS Guide.

Swap

To add more swap space:

dd if=/dev/zero of=/extra.swap bs=1024 count=2097152
chmod 600 /extra.swap
mkswap /extra.swap
swapon /extra.swap

To persist the swap across reboots, add to /etc/fstab:

/extra.swap  none  swap  sw  0 0