ServersManage Server

Maintain your Server

This article will introduce how to maintain your server registered with Zeabur.

💡

If you purchased a server from Zeabur, the operation and maintenance tasks are performed by us. Please submit a ticket to let us know which project you want to maintain, and our staff will handle it for you.

Space Cleanup

If you find that the disk space on your host is insufficient, you can try cleaning up the Docker images pulled by K3s on your host (this is usually done automatically).

# Check which images have been pulled (no need to type this line)
$ sudo k3s crictl images
 
# Remove all unused images
$ sudo k3s crictl rmi --prune

Sometimes, the logs recorded by K3s for each container can also take up a lot of space. You can try cleaning these logs in the K3s logs directory.

Recovering from OOM (Server Offline)

If your server runs out of memory (OOM), the K3s status indicator on the server dashboard may turn red, meaning Kubernetes is no longer running properly. When this happens, your services will become unreachable.

Server Info showing K3s status

To recover, go to Settings and click Reboot Server.

Reboot Server button in Settings

A dialog will appear listing all services that will automatically restart after the reboot. If K3s is red (offline), we recommend deselecting all services to prevent the server from immediately running out of memory again after restarting.

Reboot Server dialog with services listed

Click Deselect All to prevent any services from auto-starting, then click Reboot.

Reboot Server dialog with all services deselected

⚠️

The reboot process takes about 3–5 minutes. Once the server restarts, K3s should return to green. After confirming the server is healthy, you can re-enable services one by one from the Projects tab.

If your server frequently goes OOM, consider upgrading to a larger server or reducing the number of services deployed. You should also configure Resource Reservation (see below) to prevent the system from being completely starved of resources.

Resource Reservation

Resource Reservation allows you to reserve CPU and memory for Kubernetes and system processes, ensuring the server stays reachable even under heavy load. This prevents OOM situations where the operating system or Kubernetes itself gets killed.

Go to Settings > Advanced Settings > Resource Reservation.

Resource Reservation settings

There are two categories of reservation:

  • Kubernetes Reserved: Resources reserved for Kubernetes system components (kubelet, kube-proxy, etc.)
  • System Reserved: Resources reserved for OS-level processes (SSH, systemd, etc.)

Newly purchased servers default to 500m CPU / 512Mi memory for both Kubernetes and system reservations. We recommend keeping these defaults to ensure server stability. If you previously purchased a server without these defaults, consider setting them manually.

After adjusting the values, click Save to apply the changes.

Changing DNS Nameservers

By default, Zeabur’s servers use Cloudflare DNS as the DNS nameservers for the cluster (machines in mainland China use Alibaba Cloud Public DNS).

If you need to change the DNS nameservers used by the cluster (for example, to Tencent Cloud’s DNSPod Public DNS), you can edit /etc/resolv.kubelet.conf and change the nameserver to the DNS nameservers you want.

nameserver 119.29.29.29

Remember to restart the K3s service after making changes.

$ sudo systemctl restart k3s

Disabling Zeabur Services

If you own a server, you can disable all Zeabur services and use the VPS freely for other purposes, such as running Docker Compose services.

⚠️

Disabling Zeabur services means you will not be able to create projects and services from the Zeabur dashboard, and any services currently running on Zeabur will stop. However, you can still manage server settings such as firewall rules and reboots. Note that reinstalling the server from Zeabur will reinstall and re-enable Zeabur services.

Disable Zeabur Services

You can also click the SSH option in the Zeabur Dashboard sidebar to connect to your server directly from the browser, no local terminal required:

SSH into server from Zeabur Dashboard

Or connect via SSH and run:

sudo systemctl disable --now k3s containerd

Note: Stopping these services will cause all containers and services running on the server to stop. Please proceed with caution.

Re-enable Zeabur Services

If you want to bring Zeabur back online, connect via SSH and run:

sudo systemctl enable --now k3s containerd

Using VS Code for Remote Development

You can use VS Code Remote - SSH to connect to your server and directly edit files or operate containers in a familiar IDE environment.

Step 1: Install the Remote-SSH Extension

Open VS Code and install the Remote - SSH extension from the Extensions Marketplace.

Step 2: Set Up SSH Key Authentication

Generate an SSH key pair on your local machine (if you don’t have one) and add the public key to the server:

# Generate an SSH key pair on your local machine
$ ssh-keygen -t ed25519
 
# Copy the public key to the server
$ ssh-copy-id <username>@<server-ip>

If ssh-copy-id is not available, you can manually append the public key:

$ cat ~/.ssh/id_ed25519.pub | ssh <username>@<server-ip> "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Step 3: Connect via VS Code

Open the VS Code Command Palette (Ctrl+Shift+P / Cmd+Shift+P), select Remote-SSH: Connect to Host, and enter <username>@<server-ip> to connect.

Step 4: Locate the Service’s File Storage Path

After connecting, you will be at the server’s root directory. To find where your service’s files are stored, first locate the PVC (Persistent Volume Claim) for your service, then find the corresponding PV (Persistent Volume) and its host path.

The PVC name follows the format <volume-id>-service-<service-id>, located in the namespace environment-<environment-id>.

# List all PVCs to find your service's volume
$ kubectl get pvc -A
 
# Find the PV that the PVC is bound to
$ kubectl get pvc <pvc-name> -n <namespace> -o jsonpath='{.spec.volumeName}'
 
# Get the host path of the corresponding PV
$ kubectl get pv <pv-name> -o jsonpath='{.spec.local.path}'

You can then open this path in VS Code using File → Open Folder to start editing your service’s files.

Step 5: Access a Container Shell

To get a terminal environment inside your service’s container (equivalent to the Web Terminal on Zeabur):

# List pods in a namespace
$ kubectl get pods -n <namespace>
 
# Open a shell in a pod
$ kubectl exec -it <pod-name> -n <namespace> -- /bin/sh

Uninstallation

First, you need to remove the server and the services deployed on it from Zeabur.

Remove Server

The “Remove Server” step will not remove the infrastructure set up by Zeabur on your server. Zeabur’s infrastructure is primarily built on K3s, so the uninstallation steps follow the K3s uninstallation steps.

$ /usr/local/bin/k3s-uninstall.sh