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
3️⃣ Install Docker and Docker Compose
sudo dnf install -y docker-ce docker-ce-cli containerd.io
sudo systemctl enable --now docker
Verify:
docker --version
docker compose version
4️⃣ Clone the u2vpodcast Project
git clone https://github.com/user/u2vpodcast.git
cd u2vpodcast
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 .
👉 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
8️⃣ Verifying Operation
Check running containers:
docker ps
View logs:
docker logs -f u2vpodcast
Query the database:
docker exec -it u2vpodcast sqlite3 /app/db/u2vpodcast.db "select count(*), coalesce(sum(listen),0) from episodes;"
List processed audios:
docker exec -it u2vpodcast sh -lc 'find /app/audios -type f | sort | tail -n 20'
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
andffmpeg
- 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)