DEV Community

Cover image for Report-Tutorial: Installing and Compiling u2vpodcast on an Oracle Linux VM (ARM64)
Ivaj O'Franc
Ivaj O'Franc

Posted on

Report-Tutorial: Installing and Compiling u2vpodcast on an Oracle Linux VM (ARM64)

Report-Tutorial: Installing and Compiling u2vpodcast on an Oracle Linux VM (ARM64)

🇪🇸 Lee también este post en español

This tutorial documents how the u2vpodcast project was prepared, compiled, and installed inside an ARM64 virtual machine running Oracle Linux.

It is written as a didactic guide and reference for future installations.


1️⃣ Technical Details of the Virtual Machine

  • OS: Oracle Linux Server 8.10
  • Kernel: Linux 5.4.x
  • Architecture: ARM64 (aarch64)
  • CPU: 1 Neoverse-N1 core (ARMv8)
  • RAM: 5.6 GiB
  • Swap: 4 GiB
  • Disk: 46 GiB total (~50% free)

👉 Interpretation:

  • RAM is sufficient to compile and run containers.
  • The single CPU is the main bottleneck (compilation and video conversion take longer).
  • Disk space is adequate.

2️⃣ Initial System Preparation

Update packages and install basic tools:

sudo dnf update -y
sudo dnf install -y git curl wget unzip tar
Enter fullscreen mode Exit fullscreen mode

3️⃣ Install Docker and Docker Compose

sudo dnf install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
Enter fullscreen mode Exit fullscreen mode

Verify:

docker --version
docker compose version
Enter fullscreen mode Exit fullscreen mode

4️⃣ Clone the u2vpodcast Project

git clone https://github.com/user/u2vpodcast.git
cd u2vpodcast
Enter fullscreen mode Exit fullscreen mode

5️⃣ Initial Problem: Architecture Incompatibility

  • The official Docker image was built for amd64.
  • The VM is ARM64 (aarch64).
  • Result: exec format error when trying to run the image.

6️⃣ Solution: Native ARM64 Build

Compile directly inside the VM:

cd ~/u2vpodcast
docker build -t u2vpodcast:arm64 .
Enter fullscreen mode Exit fullscreen mode

👉 Notes:

  • 5.6 GB RAM was enough to complete the build.
  • The single CPU made compilation slower, but it finished successfully.
  • The result: a native ARM64 image ready to run.

7️⃣ Docker Compose Configuration

Two files are provided:

  • docker-compose.yml → main service
  • docker-compose.proxy.yml → reverse proxy with Caddy (automatic HTTPS)

Run both:

docker compose -f docker-compose.yml -f docker-compose.proxy.yml up -d
Enter fullscreen mode Exit fullscreen mode

8️⃣ Verifying Operation

Check running containers:

docker ps
Enter fullscreen mode Exit fullscreen mode

View logs:

docker logs -f u2vpodcast
Enter fullscreen mode Exit fullscreen mode

Query the database:

docker exec -it u2vpodcast sqlite3 /app/db/u2vpodcast.db   "select count(*), coalesce(sum(listen),0) from episodes;"
Enter fullscreen mode Exit fullscreen mode

List processed audios:

docker exec -it u2vpodcast sh -lc 'find /app/audios -type f | sort | tail -n 20'
Enter fullscreen mode Exit fullscreen mode

9️⃣ Hardware Limitations

  • RAM (5.6 GB): more than enough for Docker, SQLite, and ffmpeg.
  • CPU (1 Neoverse-N1 core):
    • Long compilations
    • Slow video conversions
    • High CPU usage with yt-dlp and ffmpeg
    • Configured with -N 1 to process tasks sequentially.

👉 Recommendation: keep downloads and conversions serial to avoid overload.


✅ Conclusions

  • The VM works well thanks to sufficient RAM.
  • The single CPU is the only real bottleneck.
  • Native ARM64 build solved architecture incompatibility.
  • Final setup: u2vpodcast running behind Caddy with automatic HTTPS.

🙌 Créditos y enlaces útiles

El proyecto u2vpodcast es desarrollado por Lorenzo Carbonell (Atareao).

Top comments (0)