Introduction

To test Tabunganku in a production environment, I build a home server. Why? Because I can experiment easier with more applications in the future. I also don’t have to worry about excessive bill unlike cloud providers. What I needed from the server is it should not take a lot of space and it should be powerful enough to do basic operations.

Home Server Spec

Home Server Pic

After searching for options, I bought a DeskMini X300 Series. It is small enough (smaller than a laptop actually) and relatively cheap in terms of price and electricity usage. Hardware specification for my home server is:

  • RAM: 2x16 GB
  • Storage: 1TB
  • CPU: Ryzen 5600G

About Proxmox VE

Proxmox VE is a open source software to create and run Virtual Machines. I use it to run VMs, which will run Tabunganku and other applications later. To install Proxmox VE, follow the instructions to prepare the installation media and instructions to install Proxmox VE. Please note that the server machine’s storage content will be wiped upon installing Proxmox.

I choose Proxmox VE for several reasons. Learning about server is a new experience from me. Coming from web development background, managing a server is a different field from what I have learned. Learning it could open a new opportunity for me. It is also open source and free. There is an option to buy support subscription, but it is entirely optional to do that.

Proxmox VE Deplyoment

There are two types of deployment available in Proxmox: containers or virtual machines. Proxmox container is not the same as containers in Docker. A Proxmox container(or Linux Container) is a lightweight alternative of Virtual Machine. It uses kernel of the host system instead of emulating a full operating system. Characteristics of Linux container is:

  • Consumes lighter resource than VMs
  • Only able to run Linux distributions
  • Cannot do live migration between clusters

When to use VM instead of container?

  • If you want to use operating systems that are not supported by container (e.g: Windows)
  • If you cannot afford any downtime when a migration is needed
  • If you want to run Docker containers, it is better to use VM. Containers can achieve the same thing, but they need workarounds and unstable compared to using VM.

Deploying Tabunganku

I use a Debian 12 VM as a target deployment. Inside the VM, I install Docker, Git, and Java. First, I clone the repository using Git. Then I build the backend project using Java and Maven. To build the image, I run command docker compose up in the project’s main directory.

Image of VM Spec

Image of Debian VM Running Docker

Image of Accessing Tabunganku Server from Browser

To know the IP address of the server, run command ip a. In browser, hit http://[ipaddress]:3000/ to access Tabunganku in the server.

Retrospective

This is what I’ve learned when I set the home server and deploy the application:

  • x300 Deskmini doesn’t include a WiFi module so I use LAN cable instead. Proxmox doesn’t support Wifi either.
  • pgAdmin is removed from docker compose script because it is not essential to run Tabunganku with it.
  • I also found out that the validation had been implemented incorrectly. The @Min validation in add transaction function was set to 0 instead of 1, so I could insert transactions with 0 amount before.
  • In the future, the deployment proceess can be simplified by simply pulling Docker images from a remote host.
  • Prepare Installation Media for Proxmox: link
  • Guide to Install Proxmox: link
  • Learn Linux TV’s video guide to install Proxmox: link
  • Linux Container: link
  • Proxmox VE Helpful Scripts: link